ckubwr.txt
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:165k
源码类别:

通讯/手机编程

开发平台:

Windows_Unix

  1. CKUBWR.TXT         "Beware File" for C-Kermit Version 7.0         -*- text -*-
  2.       C-KERMIT FOR UNIX
  3. As of C-Kermit version:  7.0.197
  4. This file last updated:  8 February 2000
  5. Authors: Frank da Cruz and Christine M. Gianone, Columbia University.
  6.   Copyright (C) 1985, 2000,
  7.     Trustees of Columbia University in the City of New York.
  8.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  9.     copyright text in the ckcmai.c module for disclaimer and permissions.
  10. WHAT IS IN THIS FILE
  11. This is the "beware file" for the UNIX version of C-Kermit.  It contains hints
  12. and tips, frequently asked questions (and answers), troubleshooting advice,
  13. limitations and restrictions, known bugs, unresolved reports, etc, that apply
  14. to all UNIX variations, as well as to specific ones like HP-UX, AIX, Solaris,
  15. SunOS, Unixware, NeXTSTEP, etc etc.
  16. This file should be read in conjunction with the system-independent C-Kermit
  17. beware file, ckcbwr.txt, which contains similar information, but applying to
  18. all versions of C-Kermit (VMS, OS/2, AOS/VS, VOS, etc, as well as to UNIX).
  19. CONTENTS
  20.   (0)  DOCUMENTATION AND TECHNICAL SUPPORT
  21.   (0.1)  THE C-KERMIT USER MANUAL
  22.   (0.2)  TECHNICAL SUPPORT
  23.   (0.3)  THE YEAR 2000
  24.   (0.4)  THE EURO SYMBOL
  25.   (1)  IMPORTANT FILES
  26.   (2)  BINARIES
  27.   (3)  NOTES ON SPECIFIC UNIX VERSIONS
  28.   (3.0)  C-KERMIT ON PC-BASED UNIXES
  29.   (3.1)  C-KERMIT AND AIX
  30.   (3.2)  C-KERMIT AND HP-UX
  31.  3.2.0. Common Problems
  32.  3.2.1. Building C-Kermit on HP-UX
  33.  3.2.2. Performance
  34.  3.2.3. Dialing Out and UUCP Lockfiles in HP-UX
  35.  3.2.4. HP-UX 5.00
  36.  3.2.5. HP-UX 8.00
  37.  3.2.6. HP-UX 9.00 AND LATER
  38.  3.2.7. HP-UX 10.10 AND LATER
  39.  3.2.8. HP-UX and X.25
  40.   (3.3)  C-KERMIT AND LINUX
  41.  3.3.1. Problems Building C-Kermit for Linux
  42.  3.3.2. Problems with Serial Devices in Linux
  43.  3.3.3. Terminal Emulation in Linux
  44.  3.3.4. Dates and Times
  45.          3.3.5. Startup Errors
  46.   (3.4)  C-KERMIT AND NEXTSTEP
  47.   (3.5)  C-KERMIT AND QNX
  48.   (3.6)  C-KERMIT AND SCO UNIX, XENIX, ODT, AND OPENSERVER
  49.   (3.7)  C-KERMIT AND SOLARIS
  50.   (3.8)  C-KERMIT AND SUNOS
  51.   (3.9)  C-KERMIT AND ULTRIX
  52.   (3.10) C-KERMIT AND UNIXWARE
  53.   (3.11) C-KERMIT AND APOLLO SR10
  54.   (3.12) C-KERMIT AND TANDY XENIX 3.0
  55.   (3.13) C-KERMIT AND OSF/1 (DIGITAL UNIX)
  56.   (3.14) C-KERMIT AND SGI IRIX
  57.   (3.15) C-KERMIT AND THE BEBOX
  58.   (3.16) C-KERMIT AND DG/UX
  59.   (3.17) C-KERMIT AND SEQUENT DYNIX
  60.   (3.18) C-KERMIT AND {FREE,OPEN,NET}BSD
  61.   (4)  GENERAL UNIX-SPECIFIC LIMITATIONS AND BUGS
  62.   (5)  INITIALIZATION AND COMMAND FILES
  63.   (6)  COMMUNICATION SPEED SELECTION
  64.   (7)  COMMUNICATIONS AND DIALING
  65.   (8)  HARDWARE FLOW CONTROL
  66.   (9)  TERMINAL CONNECTION AND KEY MAPPING
  67.   (10) FILE TRANSFER
  68.   (11) EXTERNAL FILE TRANSFER PROTOCOLS
  69.   (11.1) C-KERMIT AS AN EXTERNAL PROTOCOL
  70.   (11.2) INVOKING EXTERNAL PROTOCOLS FROM C-KERMIT
  71.   (11.3) USING C-KERMIT WITH TERM
  72.   (12) SECURITY
  73.   (13) MISCELLANEOUS USER REPORTS
  74.   (14) THIRD-PARTY DRIVERS
  75. (0) DOCUMENTATION AND TECHNICAL SUPPORT
  76. (0.1) THE C-KERMIT USER MANUAL
  77. C-Kermit is documented in the book "Using C-Kermit" by Frank da Cruz and
  78. Christine M. Gianone, Digital Press, Burlington, MA, USA, ISBN 1-55558-164-1.
  79. Price: US $44.95.  To order, call Columbia University, New York City, at
  80. +1 (212) 854-3703, or Digital Press / Butterworth-Heinemann at:
  81.   +1 800 366-2665  (Massachusetts office for USA & Canada)
  82.   +441 1993 414414 (Rushden, England office for Europe)
  83.   +61 2 372-5511   (Chatswood, NSW, office for Australia & New Zealand)
  84.   +65 220-3684     (Singapore office for Asia)
  85. Or visit the Kermit website at http://www.columbia.edu/kermit/.
  86. A German edition is available from Verlag Heinz Heise in Hannover, Germany,
  87. Tel. +49 (05 11) 53 52-0, Fax. +49 (05 11) 53 52-1 29.
  88. If you do not have the manual, please purchase it.  It explains how to use
  89. C-Kermit, from getting started through advanced use and scripting, and sales
  90. of the manual are the primary source of funding for C-Kermit development and
  91. support.
  92. New features added since "Using C-Kermit", 2nd Ed, was published are
  93. documented in the ckermit2.txt file, which should be used as a supplement to
  94. the manual until the 3rd edition is published.
  95. (0.2) TECHNICAL SUPPORT
  96. Please consult the manual, plus the ckcbwr.txt file and this file itself,
  97. before submitting questions, reporting problems, etc, to:
  98.   E-Mail: kermit-support@columbia.edu
  99.     Web:  http://www.columbia.edu/kermit/support.html
  100.     News: comp.protocols.kermit.misc
  101.     Post: The Kermit Project
  102.           Columbia University
  103.           612 West 115th Street
  104.           New York NY  10025-7799
  105.           USA
  106.     Fax: +1 212 663-8202
  107. Telephone support is also available:
  108.   +1 212 854-5126, cost: $25.00 per call, payable via Visa or MC.
  109. (0.3) THE YEAR 2000
  110. The UNIX version of C-Kermit, release 6.0 and later, is "Year 2000 compliant",
  111. but only if the underlying operating system is too.  Contact your UNIX
  112. operating system vendor to find out which operating system versions, patches,
  113. hardware, and/or updates are required.
  114. As of C-Kermit 6.0, post-millenium file dates are recognized, transmitted,
  115. received, and reproduced correctly during the file transfer process in
  116. C-Kermit's File Attribute packets.  If post-millenium dates are not processed
  117. correctly on the other end, file transfer will still take place, but the
  118. modification or creation date of the received file might be incorrect.  The
  119. only exception would be if the "file collision update" feature is being used
  120. to prevent unnecessary transfer of files that have not changed since the last
  121. time a transfer took place; in this case, a file might be transferred
  122. unnecessarily, or it might not be transferred when it should have been.
  123. Correct operation of the update feature depends on both Kermit programs having
  124. the correct date and time.
  125. Of secondary importance are the time stamps in the transaction and/or debug
  126. logs, and the date-related script programming constructs, such as v(date),
  127. v(ndate), v(day), v(nday), and perhaps also the time-related ones, v(time)
  128. and v(ntime), insofar as they might be affected by the date.  The v(ndate)
  129. is a numeric-format date of the form yyyymmdd, suitable for both lexical and
  130. numeric comparison and sorting: e.g. 19970208 or 20011231.  If the underlying
  131. operating system returns the correct date information, these variables will
  132. have the proper values.  If not, then scripts that make decisions based on
  133. these variables might not operate correctly.
  134. Most date-related code is based upon the C Library asctime() string, which
  135. always has a four-digit year.  In UNIX, the one bit of code in C-Kermit that
  136. is an exception to this rule is several calls to localtime(), which returns a
  137. pointer to a tm struct, in which the year is presumed to be expressed as
  138. "years since 1900".  The code depends on this assumption.  Any platforms that
  139. violate it will need special coding.  As of this writing, no such platforms
  140. are known.
  141. Command and script programming functions that deal with dates use C-Kermit
  142. specific code that always uses full years.
  143. (0.4) THE EURO SYMBOL
  144. C-Kermit 7.0 and later support Unicode (ISO 10646), ISO 8859-15 Latin Alphabet
  145. 9, PC Code Page 858, Windows Code Pages 1250 and 1251, and perhaps other
  146. character sets, that encode the Euro symbol, and can translate among them
  147. as long as no intermediate character-set is involved that does not include
  148. the Euro.
  149. (1) IMPORTANT FILES
  150. In addition to the published documentation, the following files are useful
  151. in troubleshooting:
  152.     ckaaaa.txt:     Overview, file naming conventions, list of files, etc.
  153.     ckuins.txt:     Installation instructions for UNIX C-Kermit.
  154.     ckccfg.txt:     C-Kermit program configuration information.
  155.     ckcbwr.txt:     C-Kermit "beware file" for all platforms.
  156.     ckubwr.txt:     C-Kermit "beware file" for UNIX (this file).
  157.     ckcplm.txt:     C-Kermit program logic manual.
  158.     ckermit2.txt:   User documentation for features added since 6.0.192, and
  159.                     since the 2nd Edition of "Using C-Kermit" was published.
  160.     ckcXXX.txt:     Program edit history for edit XXX, e.g. ckc196.txt.
  161.     ckuker.mak:     (or makefile) Makefile for UNIX C-Kermit.
  162.     ck[cuw]*.[chw]: Source code for UNIX C-Kermit.
  163. Note that all of the *.txt files are renamed from their pre-7.0 names due
  164. to Microsoft's usurpation of traditional text filetypes like .hlp and .doc
  165. for its own purposes.
  166. (2) BINARIES
  167. It is often dangerous to run a binary C-Kermit (or any other) program built
  168. on a different computer.  Particularly if that computer had a different C
  169. compiler, libraries, operating system version, processor features, etc, and
  170. especially if the program was built with shared libraries, because as soon as
  171. you update the libraries on your system, they no longer match the ones
  172. referenced in the binary, and the binary refuses to load when you run it,
  173. in which case you'll see error messages similar to:
  174.   Could not load program kermit
  175.   Member shr4.o not found or file not an archive
  176.   Could not load library libcurses.a[shr4.o]
  177.   Error was: No such file or directory
  178. (These samples are from AIX.)  To avoid this problem, we try to build C-Kermit
  179. with statically linked libraries whenever we can, but many of the binaries are
  180. contributed from elsewhere (after all, we don't have several hundred different
  181. machines in-house to build them on), and in any case some platforms do not
  182. even offer the option of static linking.
  183. It is often OK to run a binary built on an earlier OS version, but it is
  184. rarely possible (or safe) to run a binary built on a later one, for example
  185. to run a binary built under SunOS 4.1.2 on a SunOS 4.1.1 system.  Sometimes
  186. even the system-or-library patch/ECO level makes a difference.
  187. A particularly insidious problem occurs when a binary was built on a version
  188. of the OS that has patches from the vendor (e.g. to libraries); in most cases
  189. you won't be able to run such a binary on an unpatched version of the same
  190. platform.
  191. When in doubt, build C-Kermit from the source code on the system where it is
  192. to be run (if possible!).  If not, ask us for a binary specific to your
  193. configuration.  We might have one, and if we don't, we might be able to find
  194. somebody who will build one for you.
  195. (3) NOTES ON SPECIFIC UNIX VERSIONS
  196. The following sections apply to specific UNIX versions.
  197. One thread that runs through many of them, and implicitly perhaps through all,
  198. concerns the problems that occur when trying to dial out on a serial device
  199. that is (also) enabled for dialing in.  The "solutions" to this problem are
  200. many, varied, diverse, and usually gross, involving configuring the device for
  201. bidirectional use.  This is done in a highly system-dependent and often
  202. obscure manner, and the effects (good or evil) are also highly system-
  203. dependent.  Many examples are given in the system-specific sections below.
  204. An important point to keep in mind is that C-Kermit is a CROSS-PLATFORM,
  205. PORTABLE program.  It was not designed specifically and only for your
  206. particular UNIX version, or for that matter, for UNIX in particular at all.
  207. It also runs on VMS, AOS/VS, VOS, and many other non-UNIX platforms.  All
  208. the UNIX versions of C-Kermit share common i/o modules, with compile-time
  209. #ifdef constructions used to account for the differences among the many UNIX
  210. products and releases.  If you think that C-Kermit is behaving badly, or
  211. missing something, on your particular UNIX version, you might be right -- we
  212. can't claim to be expert in 700+ different platforms.  If you're a programmer,
  213. take a look at the source code and send us your suggested fixes or changes.
  214. Or else just send us a report about what seems to be wrong (see the TECHNICAL
  215. SUPPORT section above for details).
  216. (3.0) C-KERMIT ON PC-BASED UNIXES
  217. PCs are not the best platform for real operating systems like UNIX.  The
  218. architecture suffers from numerous deficiencies, not the least of which is the
  219. stiflingly small number of hardware interrupts (either 7 or 15, most of which
  220. are preallocated).  Thus adding devices, using multiple serial ports, etc, is
  221. always a challenge and usually a nightmare.  The free-for-all nature of the PC
  222. market and the lack of standards combined with the diversity of UNIX OS
  223. versions makes it difficult to find drivers for any particular device on any
  224. particular version of UNIX.
  225. Of special interest to Kermit users is the fact that there is no standard
  226. provision in the PC architecture for more than 2 communication (serial) ports.
  227. COM3 and COM4 (or higher) will not work unless you (a) find out the hardware
  228. address and interrupt for each, (b) find out how to provide your UNIX version
  229. with this information, and (c) actually set up the configuration in the UNIX
  230. startup files (or whatever other method is used).  Watch out for interrupt
  231. conflicts, and don't expect to be able to use more than two serial ports at
  232. the same time.
  233. Here is a typical tale from a Linux user (Fred Smith) about installing a third
  234. serial port: "...problems can come from a number of causes. The one I fought
  235. with for some time, and finally conquered, was that my modem is on an add-in
  236. serial port, cua3/IRQ5.  By default IRQ5 has a very low priority, and does not
  237. get enough service in times when the system is busy to prevent losing
  238. data. This in turn causes many resends. There are two 'fixes' that I know of,
  239. one is to relax hard disk interrupt hogging by using the correct parameter to
  240. hdparm, but I don't like that one because the hdparm man page indicates it is
  241. risky to use. The other one, the one I used, was to get 'irqtune' and use it
  242. to give IRQ5 the highest priority instead of nearly the lowest. Completely
  243. cured the problem."
  244. To complicate matters, the PC platform is becoming increasingly and inexorably
  245. Windows-oriented.  More and more add-on devices are "Windows only" -- meaning
  246. they are incomplete and rely on proprietary Windows-based software drivers to
  247. do the jobs that you would expect the device itself to do.  PCMCIA or
  248. "Plug-n-Play" devices are rarely supported on PC-based UNIX versions such as
  249. SCO; Winmodems, Winprinters, and the like are not supported at all on any UNIX
  250. to our knowledge (except Lucent has released a Linux-only driver for one of
  251. its PCI "software" modems).  The self-proclaimed Microsoft PC 97 (or later)
  252. standard will probably only make matters worse since its only purpose to
  253. ensure that PCs are "optimized to run Windows 95 and Windows NT 4.0 and future
  254. versions of these operating systems".
  255. With the exception noted (the Lucent modem), drivers for "Win" devices are
  256. available only for Windows, since the Windows market dwarfs that of any
  257. particular UNIX brand, and for that matter all UNIXes (or for that matter, all
  258. non-Windows operating systems) combined.  If your version of UNIX (SCO, Linux,
  259. BSDI, FreeBSD, etc) does not support a particular device, then C-Kermit can't
  260. use it either.  C-Kermit, like any UNIX application, must access all devices
  261. through drivers and not directly.
  262. Don't waste time thinking that you, or anybody else, could write a Linux (or
  263. other UNIX) driver for a Winmodem or other "Win" device.  First of all, these
  264. devices generally require realtime control, but since UNIX (unlike Windows) is
  265. a true multitasking system, realtime device control is not possible outside
  266. the kernel.  Second, the specifications for these devices are secret and
  267. proprietary, and each one (and each version of each one) is potentially
  268. different.  Third, a Winmodem driver would be enormously complex; it would
  269. take years to write and debug, by which time it would be obsolete.
  270. Before you buy a new PC or add-on equipment, especially serial ports, internal
  271. modems, or printers, make sure they are compatible with your version of UNIX.
  272. This is becoming an ever-greater challenge; only a huge company like Microsoft
  273. can afford to be constantly cranking out and/or verifying drivers for the
  274. thousands of video boards, sound cards, network adapters, SCSI adapters,
  275. buses, etc, that spew forth in an uncontrolled manner from all corners of the
  276. world on a daily basis.  With very few exceptions, makers of PCs assemble the
  277. various components and then verify them only with Windows, which they must do
  278. since they are, no doubt, preloading the PC with Windows.  To find a modern PC
  279. that is capable of running a variety of non-Windows operating systems
  280. (e.g. Linux, SCO OpenServer, Unixware, and Solaris) is a formidable challenge
  281. requiring careful study of each vendor's "compatibility lists" and precise
  282. attention to exact component model numbers and revision levels.
  283. Modems: External modems are recommended.  Internal PC modems (even when they
  284. are not Winmodems, which is increasingly unlikely in new PCs) are always
  285. trouble, especially in UNIX.  Even when they work for dialing out, they might
  286. not work for dialing in, etc.  Problems that occur when using an internal
  287. modem can almost always be eliminated by switching to an external one.  Even
  288. when an internal modem is not a Winmodem or Plug-n-Play, it is often a no-name
  289. model of unknown quality -- not the sort of thing you want sitting directly on
  290. your computer's bus.  (Even if it does not cause hardware problems, it
  291. probably came without a command list, so no UNIX software will know how to
  292. control it.)  For more about UNIX compatible modems, see:
  293.   http://www.o2.net/~gromitkc/winmodem.html
  294. Multiple modems: Remember that PCs, even now -- 2 decades after the PC was
  295. first introduced -- are not (in general) capable of supporting more than 2
  296. serial devices.  Here's a short success story from a recent newsgroup posting:
  297. "I have a Diamond SupraSonic II dual modem in my machine. What I had to end up
  298. doing is buying a PS/2 mouse and port and install it. Had to get rid of my
  299. serial mouse. I also had to disable PnP in my computer bios. I was having IRQ
  300. conflicts between my serial mouse and "com 3". Both modems work fine for me.
  301. My first modem is ttyS0 and my second is ttyS1."  Special third-party
  302. multiport boards such as DigiBoard are available for certain UNIX platforms
  303. (typically SCO, maybe Linux) that come with special platform-specific drivers.
  304. Character sets: PCs generally have PC code pages such as CP437 or CP850, and
  305. these are often used by PC-based UNIX operating systems, particularly on the
  306. console.  These are supported directly by C-Kermit's SET FILE CHARACTER-SET
  307. and SET TERMINAL CHARACTER-SET commands.  Some PC-based UNIX versions, such as
  308. recent Red Hat Linux releases, might also support Microsoft Windows code pages
  309. such as CP1252, or even Latin Alphabet 1 itself (perhaps displayed with CP437
  310. glyphs).
  311. Certain Windows code pages are not supported directly by C-Kermit, but since
  312. they are ISO Latin Alphabets with nonstandard "extensions" in the C1 control
  313. range, you can substitute the corresponding Latin alphabet (or other character
  314. set) in any C-Kermit character-set related commands:
  315.   Windows Code Page    Substitution
  316.    CP 1004              Latin-1
  317.    CP 1051              HP Roman-8
  318. Other Windows code pages are mostly (or totally) incompatible with their
  319. Latin Alphabet counterparts (e.g. CP1250 and Latin-2), but several of these
  320. are supported by C-Kermit 7.0 (1250, 1251, and 1252).
  321. Finally, note that as a real operating system, UNIX (unlike Windows) does not
  322. provide the intimate connection to the PC keyboard, screen, and mouse that you
  323. might expect.  UNIX applications can not "see" the keyboard, and therefore can
  324. not be programmed to understand F-keys, Editing keys, Alt-key combinations,
  325. and the like.  This is because (a) UNIX is a portable operating system, not
  326. only for PCs; and (b) UNIX sessions can come from anywhere, not just the PC's
  327. keyboard and screen.
  328. (3.1) C-KERMIT AND AIX
  329. For additional information see the AIX FAQ:
  330.   http://www.emerson.emory.edu/services/aix-faq/
  331.   http://www.faqs.org/faqs/by-newsgroup/comp/comp.unix.aix.html
  332.   http://www.cis.ohio-state.edu/hypertext/faq/usenet/aix-faq/top.html
  333.   http://aixpdslib.seas.ucla.edu/
  334.   ftp://rtfm.mit.edu/pub/usenet/news.answers/aix-faq/part1
  335.   ftp://mirrors.aol.com/pub/rtfm/usenet-by-hierarchy/comp/unix/aix
  336. and/or read the comp.unix.aix newsgroup.
  337. C-Kermit won't be able to "set line /dev/tty0" (or any other dialout device)
  338. if you haven't installed "cu" or "uucp" on your system, because installing
  339. these is what creates the UUCP lockfile directory.  If SET LINE commands
  340. always result in "Sorry, access to lock denied", even when C-Kermit has been
  341. given the same owner, group, and permissions as cu:
  342.   -r-sr-xr-x   1 uucp     uucp       67216 Jul 27 1999  cu
  343. and even when you run it as root, then you must go back and install "cu" from
  344. your AIX installation media.
  345. Streaming transfers into AIX 4.2 or 4.3 (through the AIX Telnet server) have
  346. been observed to fail, when exactly the same kind of transfers into AIX 4.1
  347. work without incident.  The error reported by AIX is "interrupted system
  348. call".  Streaming transfers work perfectly, however, if the AIX Telnet server
  349. is removed from the picture (e.g, by using "set host * 3000" on AIX, or by
  350. using Rlogin instead of Telnet).  They also work perfectly if the Telnet
  351. connection is forced into binary mode (C-Kermit command "set telopt requested
  352. requested").  In case of file-transfer failure on a Telnet connection to AIX
  353. 4.2 or 4.3, tell AIX C-Kermit to "set streaming off" and/or tell the file
  354. sender to prefix all control characters ("set prefixing all").  Also be sure
  355. that the AIX C-Kermit on the remote end has "set flow none" (which is the
  356. default).
  357. About AIX version numbers:  "uname -a" tells the two-digit version number,
  358. such as 3.2 or 4.1.  The three-digit form can be seen with the "oslevel"
  359. command (this information is unavailable at the API level and is reportedly
  360. obtained by scanning the installed patch list).  Supposedly all three-digit
  361. versions within the same two-digit version (e.g. 4.3.1, 4.3.2) are binary
  362. compatible; i.e. a binary built on any one of them should run on all others,
  363. but this is not verified.
  364. IMPORTANT: Do NOT try to run AIX 3.x C-Kermit binaries on AIX 4.x (or vice
  365. versa).  Obtain -- or build -- the C-Kermit binary that is appropriate for
  366. your AIX version.  In general, it is always better to build from source code.
  367. According to IBM's "From Strength to Strength" document (21 April 1998),
  368. in AIX 4.2 and later "Async supports speeds on native serial ports up to
  369. 115.2kbps".  However, no API is documented to achieve serial speeds higher
  370. than 38400 bps.  Apparently the way to do this -- which might or might not
  371. work only on the IBM 128-port multiplexer -- is:
  372.   cxma-stty fastbaud /dev/tty0
  373. which, according to "man cxma-stty":
  374.   fastbaud Alters the baud rate table, so 50 baud becomes 57600 baud.
  375.   -fastbaud Restores the baud rate table, so 57600 baud becomes 50 baud.
  376. Presumably (but not certainly) this extrapolates to 110 "baud" becomes
  377. 76800 bps, and 150 becomes 115200 bps.  So to use high serial speeds in AIX
  378. 4.2 or 4.3, the trick would be to give the "cxma-stty fastbaud" command for
  379. the desired tty device before starting Kermit, and then use "set speed 50",
  380. "set speed 110", or "set speed 150" to select 56700, 76800, or 115200 bps.
  381. It is not known whether cxma-stty requires privilege.
  382. According to one report, "Further investigation with IBM seems to indicate
  383. that the only hardware capable of doing this is the 128-port multiplexor with
  384. one (or more) of the 16 port breakout cables (Enhanced Remote Async Node
  385. 16-Port EIA-232). We are looking at about CDN$4,000 in hardware just to hang a
  386. 56kb modem on there. Of course, we can then hang 15 more, if we want. This
  387. hardware combo is described to be good to 230.4kbps."
  388. Another report says (quote from AIX newsgroup, March 1999):
  389.   The machine type and the adapter determine the speed that one can actually
  390.   run at.  The older microchannel machines have much slower crystal
  391.   frequencies and may not go beyond 76,800.  A feature put into AIX 421
  392.   allows one to key in non-POSIX baud rates and if the uart can support that
  393.   speed, it will get set. this applies also to 43p's and beyond.  115200 is
  394.   the max for the 43P's native serial port.  As crytal frequencies continue
  395.   to increase, the built-in serial ports speeds will improve.  To use 'uucp'
  396.   or 'ate' at the higher baud rates, configure the port for the desired
  397.   speed, but set the speed of uucp or ate to 50.  Any non-POSIX speeds set
  398.   in the ttys configuration will the be used.  In the case of the 128-port
  399.   adapters or the ISA 8-port or PCI 8-port adapter, there are only a few
  400.   higher baud rates.
  401.    a. Change the port  to enable high baud rates:
  402.       B50 for 57600
  403.       B75 for 76800
  404.       B110 for 115200
  405.       B200 for 230000
  406.    b. chdev -l ttyX -a fastbaud=enable
  407.   For the 128 ports original style rans, only 57600 bps is supported.
  408.   For the new enhanced RANs, up to 230Kbps is supported.
  409. (end quote)
  410. Note that some RS/6000s (e.g. the IBM PowerServer 320) have nonstandard
  411. rectangular 10-pin serial ports; the DB-25 connector is NOT a serial port;
  412. it is a parallel printer port.  IBM cables are required for the serial ports,
  413. (The IBM RT PC also had rectangular serial ports -- perhaps the same as these,
  414. perhaps different.)
  415. If you dial in to AIX through a modem that is connected directly to an AIX
  416. port (e.g. on the 128-port multiplexer) and find that data is lost, especially
  417. when uploading files to the AIX system (and system error logs report buffer
  418. overruns on the port):
  419.  1. Make sure the port and modem are BOTH configured for hardware (RTS/CTS)
  420.     flow control.  The port is configured somewhere in the system
  421.     configuration, outside of Kermit.
  422.  2. Tell C-Kermit to "set flow keep"; experimentation shows that SET FLOW
  423.     RTS/CTS has no effect when used in remote mode (i.e. on /dev/tty, as
  424.     opposed to a specify port device).
  425. Several people have reported that C-Kermit (version unspecified) causes
  426. AIX 4.2 (or later) to "freeze" or "hang" or "halt".  No further details are
  427. known at this time.  However:
  428.  1. No user-mode application should ever be able to make AIX or any other
  429.     version of UNIX freeze, hang, or halt; if it does, this indicates a
  430.     serious bug in AIX, which should be reported immediately to IBM.
  431.  2. Fixes for bugs in the original AIX 4.2 tty (serial i/o) support
  432.     and other AIX bugs are available from IBM at:
  433.       http://service.software.ibm.com/rs6000/
  434.     Downloads -> Software Fixes -> Download FixDist gets an application
  435.     for looking up known problems.
  436. Other people have reported that after upgrading AIX from 4.1 to 4.2, the "ttys
  437. hang" when they try to use Kermit.  Again, so far no further details are
  438. available.  However, others report that C-Kermit 6.0 works fine on both AIX
  439. 4.2 and 4.3 if it is rebuilt from source code.  Still others report that the
  440. original C-Kermit 6.0 binaries, built under AIX 4.1, work perfectly in AIX
  441. 4.2 and 4.3.
  442. More recently, people have reported various kinds of problems running a
  443. C-Kermit binary built under AIX 4.1 or 4.2 on AIX 4.3.  There has been some
  444. speculation on the newsgroups about a new round binary incompatibility between
  445. AIX 4.3 and earlier versions -- some even suggest renumbered syscalls, but
  446. that seems unlikely.  Example: a user in Germany reported that the C-Kermit
  447. 6.0 AIX 4.1 binary would crash during file transfer when run on AIX 4.2, but
  448. the problems disappeared when running a binary that was built on AIX 4.2.
  449. C-Kermit 6.0.192 and earlier were built by default without "BIGBUFOK" defined
  450. for AIX, and this limits the maximum size of macros, etc.  In particular, it
  451. affects the alphanumeric page macro (TAPMSG) distributed with C-Kermit 6.0.
  452. BIGBUFOK should be defined, and it is in C-Kermit 6.1 and later.  In the
  453. meantime use:
  454.   make clean ; make aix???  KFLAGS=-DBIGBUFOK
  455. Reportedly, telnet from AIX 4.1-point-something to non-Telnet ports does not
  456. work unless the port number is in the /etc/services file; it's not clear from
  457. the report whether this is a problem with AIX Telnet (in which case it would
  458. not affect Kermit), or with the sockets library (in which case it would).  The
  459. purported fix is IBM APAR IX61523.
  460. Many problems reported with bidirectional terminal lines on AIX 3.2.x on the
  461. RS/6000.  Workaround: don't use bidirectional terminal lines, or write a
  462. shell-script wrapper for Kermit that turns getty off on the line before
  463. starting Kermit, or before Kermit attempts to do the SET LINE.  (But note:
  464. These problems MIGHT be fixed in C-Kermit 6.0 and later.)  The commands for
  465. turning getty off and on (respectively) are /usr/sbin/pdisable and
  466. /usr/sbin/penable.
  467. Reportedly, all versions of IBM AIX use the same (undocumented) lockfile
  468. conventions as RTAIX.  If this is true, the "makes" for PS/2 AIX and AIX/370
  469. will have to be changed to use the RTAIX convention (it may be sufficient to
  470. simply add -DRTAIX to the make entry).  This should not be an issue in
  471. C-Kermit 7.0 or later, which now calls the AIX ttlock() family of library
  472. functions to create, check, and remove lockfiles.  (But it is not known
  473. which versions of AIX prior to 4.1 have working ttlock() functions; for
  474. example, the functions are present in AIX 3.2 but do not seem to work).
  475. C-Kermit SET HOST or TELNET from one AIX 3.1 (or earlier) system to another
  476. won't work right unless you set your local terminal type to something other
  477. than AIXTERM.  When your terminal type is AIXTERM, AIX TELNET sends two
  478. escapes whenever you type one, and the AIX telnet server swallows one of them.
  479. This has something to do with the "hft" device.  This behavior seems to be
  480. removed in AIX 3.2 and later.
  481. Transfer of binary -- and maybe even text -- files can fail on AIX 3.x.  The
  482. problem was traced to a facility in AIX whereby a particular port can have
  483. character-set translation done for it by the tty driver.  The following
  484. advice from a knowledgeable AIX user:
  485.   (begin quote...)  [This feature] has to be checked (and set/cleared) with
  486.   a separate command, unfortunately stty doesn't handle this.  To check:
  487.     $ setmaps
  488.     input map: none installed
  489.     output map: none installed
  490.   If it says anything other than "none installed" for either one, it is likely
  491.   to cause a problem with kermit.  To get rid of installed maps:
  492.     $ setmaps -t NOMAP
  493.   However, I seem to recall that with some versions of AIX before 3.2.5, only
  494.   root could change the setting.  I'm not sure what versions - it might have
  495.   only been under AIX 3.1 that this was true.  At least with AIX 3.2.5 an
  496.   ordinary user can set or clear the maps.  (...end quote) And this would
  497.   imply that Kermit itself cannot be coded to take care of this, because it
  498.   would have to run as root.  On the same problem, another knowledgeable AIX
  499.   user says:
  500.   The way to get information on the NLS mapping under AIX (3.2.5 anyway) is
  501.   as follows.  From the command line type:
  502.     lsattr -l tty# -a imap -a omap -E -H
  503.   Replace the tty number for the number sign above. This will give a human
  504.   readable output of the settings that looks like this;
  505.     # lsattr -l tty2 -a imap -a omap -E -H
  506.     attribute value description     user_settable
  507.     imap      none  INPUT map file  True
  508.     omap      none  OUTPUT map file True
  509.   If you change the -H to a -O, you get output that can easily be processed
  510.   by another program or a shell script, for example:
  511.     # lsattr -l tty2 -a imap -a omap -E -O
  512.     #imap:omap
  513.     none:none
  514.   To change the settings from the command line, the chdev command is used
  515.   with the following syntax.
  516.     chdev -l tty# -a imap='none' -a omap='none'
  517.   Again substituting the appropriate tty port number for the number sign,
  518.   "none" being the value we want for C-Kermit.  Of course, the above can also
  519.   be changed by using the SMIT utility and selecting devices - tty.
  520.   (...end quote)
  521. About AIX versions and hardware platforms (from the AIX FAQ):
  522.   If you are using IBM's xlc (cc) compiler, the default is to use the common
  523.   instruction set, so the same binary will run on both RS/6000 and PowerPC.
  524.   The option -mcpu=common makes GCC use the common instruction set.  Please
  525.   note that (unlike xlc) this is *not* the default with GCC on AIX.
  526. A couple of other gotcha's:
  527.   Use shared libraries.  The C runtime can and does change as IBM introduces
  528.   patches.  Also this avoids "Netscape syndrome."  They bound AIX 3 libraries
  529.   into their browser.  Although AIX 3 binaries will run on AIX 4, the AIX 3
  530.   libraries aren't totally compatible.
  531.   AIX 4.2 changed the C runtime radically.  AIX 4.2 binaries won't run on AIX
  532.   4.1 or 3.anything.  AIX 3 binaries run on AIX 4.1 and AIX 4.2.
  533. Of course, the moment you take any of this as gospel,  you'll get into big
  534. trouble, but my own experience has pretty much jibed with the above.
  535. (end quote)
  536. "Is AIX Year 2000 Compliant?"  According to a comp.unix.aix newsgroup posting
  537. from IBM Austin, version 4.2 is; earlier versions such as 4.1.x and 3.2.5
  538. require PTFs (which, as of Jan 1997, have not yet been issued).
  539. Here is a sample configuration for setting up an xterm keyboard for VT220 or
  540. higher terminal emulation on AIX, courtesy of Bruce Momjian, Drexel Hill, PA.
  541. Xterm can be started like this:
  542. xterm $XTERMFLAGS +rw +sb +ls $@ -tm 'erase ^? intr ^c' -name vt220 
  543.         -title vt220 -tn xterm-220 "$@" &
  544. ---------------------------------------------------------------------------
  545. XTerm*VT100.Translations: #override n
  546. <Key>Home: string(0x1b) string("[3~") n 
  547. <Key>End: string(0x1b) string("[4~") n
  548. vt220*VT100.Translations: #override n
  549. Shift <Key>F1: string("[23~") n 
  550. Shift <Key>F2: string("[24~") n 
  551. Shift <Key>F3: string("[25~") n 
  552. Shift  <Key>F4: string("[26~") n 
  553. Shift <Key>F5: string("~") n 
  554. Shift <Key>F6: string("[31~") n 
  555. Shift <Key>F7: string("[31~") n 
  556. Shift <Key>F8: string("[32~") n 
  557. Shift <Key>F9: string("[33~") n 
  558. Shift <Key>F10: string("[34~") n 
  559. Shift <Key>F11: string("[28~") n 
  560. Shift <Key>F12: string("[29~") n 
  561. <Key>Print: string(0x1b) string("[32~") n
  562. <Key>Cancel: string(0x1b) string("[33~") n
  563. <Key>Pause: string(0x1b) string("[34~") n
  564. <Key>Insert: string(0x1b) string("[2~") n
  565. <Key>Delete: string(0x1b) string("[3~") n
  566. <Key>Home: string(0x1b) string("[1~") n
  567. <Key>End: string(0x1b) string("[4~") n
  568. <Key>Prior: string(0x1b) string("[5~") n
  569. <Key>Next: string(0x1b) string("[6~") n
  570. <Key>BackSpace: string(0x7f) n
  571. <Key>Num_Lock: string(0x1b) string("OP") n
  572. <Key>KP_Divide: string(0x1b) string("Ol") n
  573. <Key>KP_Multiply: string(0x1b) string("Om") n
  574. <Key>KP_Subtract: string(0x1b) string("OS") n
  575. <Key>KP_Add: string(0x1b) string("OM") n
  576. <Key>KP_Enter: string(0x1b) string("OM") n
  577. <Key>KP_Decimal: string(0x1b) string("On") n
  578. <Key>KP_0: string(0x1b) string("Op") n
  579. <Key>KP_1: string(0x1b) string("Oq") n
  580. <Key>KP_2: string(0x1b) string("Or") n
  581. <Key>KP_3: string(0x1b) string("Os") n
  582. <Key>KP_4: string(0x1b) string("Ot") n
  583. <Key>KP_5: string(0x1b) string("Ou") n
  584. <Key>KP_6: string(0x1b) string("Ov") n
  585. <Key>KP_7: string(0x1b) string("Ow") n
  586. <Key>KP_8: string(0x1b) string("Ox") n
  587. <Key>KP_9: string(0x1b) string("Oy") n
  588. ! <Key>Up: string(0x1b) string("[A") n
  589. ! <Key>Down: string(0x1b) string("[B") n
  590. ! <Key>Right: string(0x1b) string("[C") n
  591. ! <Key>Left: string(0x1b) string("[D") n
  592. *visualBell: true
  593. *saveLines: 1000
  594. *cursesemul: true
  595. *scrollKey: true
  596. *scrollBar: true
  597. (3.2) C-KERMIT AND HP-UX
  598. For further information, read the comp.sys.hp.hpux newsgroup.
  599. 3.2.0. Common Problems
  600. The following sequence:
  601.   set line /dev/cua0p0 ; or other device
  602.   set speed 19200      ; or other normal speed
  603. produces the message "?Unsupported line speed".  This means the port is not
  604. configured for dialout.  Go into SAM and configure the port for dialout.
  605. Some HP workstations have a BREAK/RESET key.  If you hit this key while
  606. C-Kermit is running, it might kill or suspend the C-Kermit process.  C-Kermit
  607. arms itself against these signals, but evidently the BREAK/RESET key is -- at
  608. least in some circumstances, on certain HP-UX versions -- too powerful to be
  609. caught.  (Some report that the first BREAK/RESET shows up as SIGINT and is
  610. caught by C-Kermit's *former* SIGINT handler even when SIGINT is currently set
  611. to SIG_IGN; the second kills Kermit; other reports suggest the first
  612. BREAK/RESET sends a SIGTSTP (suspend) signal to Kermit, which it catches and
  613. suspends itself.)  You can tell C-Kermit to ignore suspend signals with SET
  614. SUSPEND OFF.  You can tell C-Kermit to ignore SIGINT with SET COMMAND
  615. INTERRUPTION OFF.  It is not known whether these commands also grant immunity
  616. to the BREAK/RESET key (one report states that with SET SUSPEND OFF, the
  617. BREAK/RESET key is ignored the first four times, but kills Kermit the 5th
  618. time).  In any case:
  619.  1. If this key is mapped to SIGINT or SIGTSTP, C-Kermit catches or ignores
  620.     it, depending on which mode (CONNECT, command, etc) Kermit is in.
  621.  2. If it causes HP-UX to kill C-Kermit, there is nothing C-Kermit can do to
  622.     prevent it.
  623. When HP-UX is on the remote end of the connection, it is essential that HP-UX
  624. C-Kermit be configured for Xon/Xoff flow control (this is the default, but in
  625. case you change it and then experience file-transfer failures, this is a
  626. likely reason).
  627. 3.2.1. Building C-Kermit on HP-UX
  628. During the C-Kermit 6.0 Beta cycle, something happened to ckcpro.w (or, more
  629. precisely, the ckcpro.c file that is generated from it) which causes HP
  630. optimizing compilers under HP-UX versions 7.0 and 8.0 (apparently on all
  631. platforms) as well as under HP-UX 9.0 on Motorola platforms only, to blow up.
  632. In versions 6.1 and 7.0 the problem has spread to other modules.
  633. The symptoms vary from the system grinding to a halt, to the compiler
  634. crashing, to the compilation of the ckcpro.c module taking very long periods
  635. of time, like 9 hours.  This problem is handled by compiling the modules
  636. that tickle it without optimization; the new C-Kermit makefile takes care of
  637. this, and shows how to do it in case the same thing begins happening with
  638. other modules.
  639. On HP-UX 9.0, a kernel parameter, maxdsiz (maximum process data segment size),
  640. seems to be important.  On Motorola systems, it is 16MB by default, whereas on
  641. RISC systems the default is much bigger.  Increasing maxdsiz to about 80MB
  642. seems to make the problem go away, but only if the system also has a lot of
  643. physical memory -- otherwise it swaps itself to death.
  644. The optimizing compiler might complain about "some optimizations skipped" on
  645. certain modules, due to lack of space available to the optimizer.  You can
  646. increase the space (the incantation depends on the particular compiler version
  647. -- see the makefile), but doing so tends to make the compilations take a much
  648. longer time.  For example, the "hpux100o+" makefile entry adds the "+Onolimit"
  649. compiler flag, and about an hour to the compile time on an HP-9000/730.  But
  650. it *does* produce an executable that is about 10K smaller :-)
  651. In the C-Kermit 7.0 makefile, all HP-UX entries automatically skip
  652. optimization of problematic modules.
  653. 3.2.2. Performance
  654. An unexpected slowness has been noted when transferring files over local
  655. Ethernet connections when an HP-UX system (9.0 or later, perhaps also earlier
  656. versions) is on the remote end.   The following experiment was conducted to
  657. determine the cause.  C-Kermit 6.0 was used; the situation is slightly better
  658. using C-Kermit 7.0's streaming feature.
  659. The systems were HP-UX 10.00 (on 715/33) and SunOS 4.1.3 (on Sparc-20), both
  660. on the same local 10Mbps Ethernet, packet length 4096, parity none, control
  661. prefixing "cautious", using only local disks on each machine -- no NFS.  In
  662. the C-Kermit 6.0 (ACK/NAK) case, the window size was 20; in the streaming case
  663. there is no window size.  The test file was C-Kermit executable, transferred
  664. in binary mode.  Conditions were relatively poor: the Sun and the local net
  665. heavily loaded; the HP system is old, slow, and memory-constrained.
  666.                    C-Kermit 6.0...    C-Kermit 7.0...
  667.  Local    Remote   ACK/NAK........    Streaming......
  668.  Client   Server   Send    Receive    Send    Receive
  669.   Sun      HP       36       18        64       18
  670.   HP       HP       25       15        37       16
  671.   HP       Sun      77       83       118       92
  672.   Sun      Sun      60       60       153      158
  673. So whenever HP is the remote we have poor performance.  Why?
  674.  . Changing file display to CRT has no effect (so it's not the curses
  675.    library on the client side).
  676.  . Changing TCP RECV-BUFFER or SEND-BUFFER has little effect.
  677.  . Telling the client to make a binary-mode connection (SET TELNET BINARY
  678.    REQUESTED, which successfully negotiates a binary connection) has no
  679.    effect on throughput.
  680. BUT...  If I start C-Kermit as a TCP server:
  681.   set host * 3000
  682.   server
  683. and then from the client "set host blah 3000", I get:
  684.                    C-Kermit 6.0...    C-Kermit 7.0...
  685.  Local    Remote   ACK/NAK........    Streaming......
  686.  Client   Server   Send    Receive    Send    Receive
  687.   Sun      HP       77       67       106      139
  688.   HP       HP       50       50        64       62
  689.   HP       Sun      57       85       155      105
  690.   Sun      Sun      57       50       321      314
  691. Therefore the HP-UX telnet server or pty driver seems to be adding more
  692. overhead than the SunOS one, and most others.  When going through this type of
  693. connection (a remote telnet server) there is little Kermit can do improve
  694. matters, since the telnet server and pty driver are between the two Kermits,
  695. and neither Kermit program can have any influence over them (except putting
  696. the Telnet connection in binary mode, but that doesn't help).
  697. (The numbers for the HP-HP transfers are lower than the others since both
  698. Kermit processes are running on the same slow CPU.)
  699. 3.2.3. Dialing Out and UUCP Lockfiles in HP-UX
  700. Before you can use serial ports on the HP-9000, you must configure them as
  701. either "terminals" or "modems" with SAM ("peripheral devices"..."terminals and
  702. modems"), as described in the HP manual, "Configuring HP-UX for Peripherals:
  703. HP 9000".  If you attempt to use a serial device before it has been configured
  704. this way, it will not work properly; typical symptoms are (a) no communication
  705. at all; (b) nonfunctional modem signals; and/or (c) massive amounts of
  706. character loss in both directions.
  707. In HP-UX 9.0, serial device names began to change.  The older names looked
  708. like "/dev/cua00", "/dev/tty01", etc (sometimes with only one digit).
  709. The newer names have two digits with the letter "p" in between.  HP-UX 8.xx
  710. and earlier have the older form, HP-UX 10.00 and later have the newer form.
  711. HP-UX 9.xx has the newer form on Series 800 machines, and the older form on
  712. other hardware models.  The situation is summarized in the following table:
  713.   Converged HP-UX Serial I/O Filenames : TTY Mux Naming
  714.   ---------------------------------------------------------------------
  715.   General meaning      Old Form     S800 9.0           Convio 10.0
  716.   ---------------------------------------------------------------------
  717.   tty* hardwired ports  tty<YY>     tty<X>p<Y>         tty<D>p<p>
  718.                     diag:mux<X>        diag:mux<D>
  719.   ---------------------------------------------------------------------
  720.   ttyd* dial-in modems  ttyd<YY>    ttyd<X>p<Y>        ttyd<D>p<p>
  721.                     diag:ttyd<X>p<Y>   diag:ttyd<D>p<p>
  722.   ---------------------------------------------------------------------
  723.   cua* auto-dial out    cua<YY>     cua<X>p<Y>         cua<D>p<p>
  724.                     diag:cua<X>p<Y>
  725.   ---------------------------------------------------------------------
  726.   cul* dial-out         cul<YY>     cul<X>p<Y>         cul<D>p<p>
  727.                     diag:cul<X>p<Y>
  728.   ---------------------------------------------------------------------
  729.    <X>= LU (Logical Unit)  <D>= Devspec (decimal card instance)
  730.    <Y> or <YY> = Port      <p>= Port
  731. For dialing out, you should use the cua or cul devices.  When C-Kermit's
  732. CARRIER setting is AUTO or ON, C-Kermit should pop back to its prompt
  733. automatically if the carrier signal drops, e.g. when you log out from the
  734. remote computer or service.  If you use the tty<D>p<d> (e.g. tty0p0) device,
  735. the carrier signal should be ignored.  The tty<D>p<d> device should be used
  736. for direct connections where the carrier signal does not follow RS-232
  737. conventions (use the cul device for hardwired connections through a true null
  738. modem).  Do not use the ttyd<D>p<d> device for dialing out.
  739. Kermit's access to serial devices is controlled by "UUCP lockfiles", which are
  740. intended to prevent different users using different software programs (Kermit,
  741. cu, etc, and UUCP itself) from accessing the same serial device at the same
  742. time.  When a device is in use by a particular user, a file with a special
  743. name is created in:
  744.   /var/spool/locks  (HP-UX 10.00 and later)
  745.   /usr/spool/uucp   (HP-UX 9.xx and earlier)
  746. The file's name indicates the device that is in use, and its contents
  747. indicates the process ID (pid) of the process that is using the device.  Since
  748. serial devices and the locks directory are not both publicly readable and
  749. writable, Kermit and other communication software must be installed setuid to
  750. the owner (bin) of the serial device and setgid to the group (daemon) of the
  751. /var/spool/locks directory.  Kermit's setuid and setgid privileges are enabled
  752. only when opening the device and accessing the lockfiles.
  753. Let's say "unit" means a string of decimal digits (the interface instance
  754. number) followed (in HP-UX 10.00 and later) by the letter "p" (lowercase),
  755. followed by another string of decimal digits (the port number on the
  756. interface), e.g.:
  757.   "0p0", "0p1", "1p0", etc       (HP-UX 10.00 and later)
  758.   "0p0", "0p1", "1p0", etc       (HP-UX 9.xx on Series 800)
  759.   "00",  "01",  "10",  "0", etc  (HP-UX 9.xx not on Series 800)
  760.   "00",  "01",  "10",  "0", etc  (HP-UX 8.xx and earlier)
  761. Then a normal serial device (driver) name consists of a prefix ("tty", "ttyd",
  762. "cua", "cul", or possibly "cuad" or "culd") followed by a unit, e.g. "cua0p0".
  763. Kermit's treatment of UUCP lockfiles is as close as possible to that of the
  764. HP-UX "cu" program.  Here is a table of the lockfiles that Kermit creates for
  765. unit 0p0:
  766.   Selection      Lockfile 1     Lockfile 2
  767.   ------------   ------------   ------------
  768.   /dev/tty0p0    LCK..tty0p0    (none)
  769. * /dev/ttyd0p0   LCK..ttyd0p0   (none)
  770.   /dev/cua0p0    LCK..cua0p0    LCK..ttyd0p0
  771.   /dev/cul0p0    LCK..cul0p0    LCK..ttyd0p0
  772.   /dev/cuad0p0   LCK..cuad0p0   LCK..ttyd0p0
  773.   /dev/culd0p0   LCK..culd0p0   LCK..ttyd0p0
  774.   <other>        LCK..<other>   (none)
  775. (* = Dialin device, should not be used.)
  776. In other words, if the device name begins with "cu", a second lockfile for
  777. the "ttyd" device, same unit, is created, which should prevent dialin access
  778. on that device.
  779. The <other> case allows for symbolic links, etc, but of course it is not
  780. foolproof since we have no way of telling which device is really being used.
  781. When C-Kermit tries to open a dialout device whose name ends with a "unit", it
  782. searches the lockfile directory for all possible names for the same unit.  For
  783. example, if user selects /dev/cul2p3, Kermit looks for lockfiles named:
  784.   LCK..tty2p3
  785.   LCK..ttyd2p3
  786.   LCK..cua2p3
  787.   LCK..cul2p3
  788.   LCK..cuad2p3
  789.   LCK..culd2p3
  790. If any of these files are found, Kermit opens them to find out the ID (pid) of
  791. the process that created them; if the pid is still valid, the process is still
  792. active, and so the SET LINE command fails and the user is informed of the pid
  793. so s/he can use "ps" to find out who is using the device.
  794. If the pid is not valid, the file is deleted.  If all such files (i.e. with
  795. same "unit" designation) are successfully removed, then the SET LINE command
  796. succeeds; up to six messages are printed telling the user which "stale
  797. lockfiles" are being removed.
  798. When the "set line" command succeeds in HP-UX 10.00 and later, C-Kermit also
  799. creates a UNIX System V R4 "advisory lock" as a further precaution (but not
  800. guarantee) against any other process obtaining access to the device while
  801. you are using it.
  802. If the selected device was in use by "cu", Kermit can't open it, because "cu"
  803. has changed its ownership, so we never get as far as looking at the lockfiles.
  804. In the normal case, we can't even look at the device to see who the owner is
  805. because it is visible only to its (present) owner.  In this case, Kermit says
  806. (for example):
  807.   /dev/cua0p0: Permission denied
  808. When Kermit releases a device it has successfully opened, it removes all the
  809. lockfiles that it created.  This also happens whenever Kermit exits "under its
  810. own power".
  811. If Kermit is killed with a device open, the lockfile(s) are left behind.  The
  812. next Kermit program that tries to assign the device, under any of its various
  813. names, will automatically clean up the stale lockfiles because the pids they
  814. contain are invalid.  The behavior of cu and other communication programs
  815. under these conditions should be the same.
  816. 3.2.4. HP-UX 5.00
  817. The HP-UX 5.00 version of C-Kermit does not include the fullscreen
  818. file-transfer because of problems with the curses library.
  819. If HP-UX 5.21 with Wollongong TCP/IP is on the remote end of a Telnet
  820. connection, streaming transfers to HP-UX invariably fail.  Workaround:
  821. SET STREAMING OFF.  Packets longer than about 1000 should not be used.
  822. Transfers from these systems, however, can use streaming and/or longer
  823. packets.
  824. Reportedly, "[there is] a bug in C-Kermit using HP-UX version 5.21 on the
  825. HP-9000 series 500 computers.  It only occurs when the controlling terminal
  826. is using an HP-27140 six-port modem mux.  The problem is not present if the
  827. controlling terminal is logged into an HP-27130 eight-port mux.  The symptom
  828. is that just after dialing successfully and connecting Kermit locks up and
  829. the port is unusable until both forks of Kermit and the login shell are
  830. killed."  (This report predates C-Kermit 6.0 and might no longer apply.)
  831. 3.2.5. HP-UX 8.00
  832. To make C-Kermit work on HP-UX 8.05 on a model 720, obtain and install HP-UX
  833. patch PHNE_0899.  This patch deals with a lot of driver issues, particularly
  834. related to communication at higher speeds.
  835. And this report just in:
  836. "On HP-UX 8 DON'T install 'tty patch' PHKL_4656, install PHKL_3047 instead!
  837. Yesterday I tried this latest tty patch PHKL_4656 and had terrible problems.
  838. This patch should fix RTS/CTS problems. With text transver all looks nice.
  839. But when I switched over to binary files the serial interface returned only
  840. rubish to C-Kermit. All sorts of protocol, CRC and packed errors I had. After
  841. several tests and after uninstalling that patch, all transvers worked fine.
  842. MB's of data without any errors.  So keep your fingers away from that patch.
  843. If anybody needs the PHKL_3047 patch I have it here. It is no longer availabel
  844. from HP's patch base."
  845. 3.2.6. HP-UX 9.00 AND LATER
  846. HP-UX 9.00 and 9.01 need patch PHNE_10572 (note: this replaces PHNE_3641)
  847. for hptt0.o, asio0.o, and ttycomn.o in libhp-ux.a.  Contact Hewlett Packard
  848. if you need this patch.  Without it, the dialout device (tty) will be hung
  849. after first use; subsequent attempts to use will return an error like "device
  850. busy".  (There are also equivalent patches for s700 9.03 9.05 9.07
  851. (PHNE_10573) and s800 9.00 9.04 (PHNE_10416).
  852. When C-Kermit is in server mode, it might have trouble executing REMOTE HOST
  853. commands.  This problem happens under HP-UX 9.00 (Motorola) and HP-UX 9.01
  854. (RISC) IF the C-Shell is the login shell AND with the C-Shell Revision 70.15.
  855. Best thing is to install HP's Patch PHCO_4919 for Series 300/400 and PHCO_5015
  856. for the Series 700/800.  PHCO_5015 is called "s700_800 9.X cumulative csh(1)
  857. patch with memory leak fix" which works for HP-UX 9.00, 9.01, 9.03, 9.04, 9.05
  858. and 9.07.  At least you need C-Shell Revision 72.12!
  859. C-Kermit works fine -- including its curses-based file-transfer display -- on
  860. the console terminal, in a remote session (e.g. when logged in to the HP 9000
  861. on a terminal port or when telnetted or rlogin'd), and in an HP-VUE hpterm
  862. window or an xterm window.
  863. 3.2.7. HP-UX 10.10 AND LATER
  864. C-Kermit is included as part of the HP-UX operating system by contract between
  865. Hewlett Packard and Columbia University for all HP-UX releases 10.00 and
  866. later.  Each level of HP-UX includes a freshly built C-Kermit binary in
  867. /bin/kermit, which should work correctly.  However, if you are building your
  868. own or downloading from Columbia, you should be aware that you can only use a
  869. binary that was built under the same OS level as you are running.  As of
  870. C-Kermit version 6.0, HP-UX 10.xx / 11.xx binaries announce, in the startup
  871. herald and the VERSION command, the explicit HP-UX version they were built
  872. for: HP-UX 10.00, 10.01, 10.10, 10.20, 10.30, or 11.00.  If there is a version
  873. mismatch, HP-UX (not Kermit) is very likely to do something like "Invalid
  874. version for shared lib /usr/lib/libc.1, IOT trap (core dumped)" during program
  875. load.
  876. Beginning in 10.10, libcurses is linked to libxcurses, the new UNIX95 (X/Open)
  877. version of curses, which has some serious bugs; some routines, when called,
  878. would hang and never return, some would dump core.  Evidently libxcurses
  879. contains a select() routine, and whenever C-Kermit calls what it thinks is the
  880. regular (sockets) select(), it gets the curses one, causing a segmentation
  881. fault.  There is a patch for this from HP, PHCO_8086, "s700_800 10.10
  882. libcurses patch", "shared lib curses program hangs on 10.10", "10.10 enhanced
  883. X/Open curses core dumps due to using wrong select call", 96/08/02 (you can
  884. tell if the patch is installed with "what /usr/lib/libxcurses.1"; the unpatched
  885. version is 76.20, the patched one is 76.20.1.2).  It has been verified that
  886. C-Kermit works OK with the patched library, but results are not definite for
  887. HP-UX 10.20 or higher.
  888. To ensure that C-Kermit works even on non-patched HP-UX 10.10 systems,
  889. separate makefile entries are provided for HP-UX 10.00/10.01, 10.10, 10.20,
  890. etc, in which the entries for 10.10 and above link with libHcurses, which is
  891. "HP curses", the one that was used in 10.00/10.01.
  892. 3.2.8. HP-UX and X.25
  893. Although C-Kermit presently does not include built-in support for HP-UX X.25
  894. (as it does for the Sun and IBM X.25 products), it can still be used to make
  895. X.25 connections as follows: start Kermit and then telnet to localhost.  After
  896. logging back in, start padem as you would normally do to connect over X.25.
  897. Padem acts as a pipe between Kermit and X.25.  In C-Kermit 7.0, you might also
  898. be able to avoid the "telnet localhost" step by using:
  899.   C-Kermit> pty padem <address>
  900. This will work if padem uses standard i/o (see Section 2.7 of ckermit2.txt).
  901. (3.3) C-KERMIT AND LINUX
  902. For further information, read the comp.os.linux.misc, comp.os.linux.answers,
  903. and other Linux-oriented newsgroups, and:
  904.  The Linux Document Project (LDP):
  905.   . http://sunsite.unc.edu/LDP/
  906.  The Linux FAQ:
  907.   . http://sunsite.unc.edu/LDP/FAQ/Linux-FAQ.html
  908.  The Linux HOWTOs (especially the Serial HOWTO):
  909.   . http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html
  910.   . ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
  911.   . ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO
  912.   . http://sunsite.unc.edu/LDP/HOWTO/
  913.   . http://sunsite.unc.edu/LDP/hmirrors.html
  914. Also see general comments on PC-based UNIXes in Section 3.0.
  915. Did you know: DECnet is available for Linux?  See:
  916.   http://linux.dreamtime.org/decnet/
  917. (But there is no support for it in C-Kermit -- anybody interested in adding
  918. it, please let me know.)
  919. Before proceeding, let's handle the two most frequently asked question in
  920. the Linux newsgroups:
  921.  1. Neither C-Kermit not any other Linux application can use Winmodems
  922.     (with one exception).  See section 3.0 for details.
  923.  2. "Why does it take such a long time to make a telnet connection to (or
  924.     from) my Linux PC?" (this applies to C-Kermit or to regular Telnet).
  925.     Most telnet servers these days perform reverse DNS lookups on the client
  926.     (for security and/or logging reasons).  If the Telnet client cannot be
  927.     found by the local DNS server, the DNS request goes out to the Internet
  928.     at large, and this can take quite some time.  The solution to this
  929.     problem is to make sure that both client and host are registered in DNS.
  930.     C-Kermit itself performs reverse DNS lookups unless you tell it not to.
  931.     This is to allow C-Kermit to let you know which host it is actually
  932.     connected to in case you have made a connection to a "host pool"
  933.     (multihomed host).  You can disable C-Kermit's reverse DNS lookup with
  934.     SET TCP REVERSE-DNS-LOOKUP OFF.
  935. 3.3.1.  Problems Building C-Kermit for Linux
  936. Modern Linux distributions like Red Hat give you a choice at installation
  937. whether to include "developer tools".  Obviously, you can't build C-Kermit or
  938. any other C program from source code if you have not installed the developer
  939. tools.  Note that you might also have to choose (separately) to install the
  940. "curses" or "ncurses" terminal control library -- it is possible to install
  941. the C compiler and linker, but omit the (n)curses library and headers.  If
  942. curses is not installed, you will not be able to build a version of C-Kermit
  943. that supports the fullscreen file-transfer display, in which case you'll need
  944. to use the "linuxnc" makefile target (nc = No Curses) or else install ncurses
  945. before building.
  946. Be sure to read the comments in the "linux:" makefile entry.  There are all
  947. sorts of confusing issues caused by the many and varied Linux distributions.
  948. Some of the worst involve the curses library and header files: where are they,
  949. what are they called, which ones are they really?  Other vexing questions
  950. involve libc5 vs libc6 vs glibc vs glibc2 (C libraries), gcc vs egcs vs lcc
  951. (compilers), plus using or avoiding features that were added in a certain
  952. version of Linux or a library or a distribution, and are not available in
  953. others.
  954. Linux C-Kermit, like all other UNIX C-Kermit versions, was built traditionally
  955. with curses.h and the curses library.  However, this library was evidently so
  956. buggy (users reported that, after doing a file transfer using the fullscreen
  957. display, "screen scrolling locks up" and the cursor "is stuck on the bottom of
  958. the screen", etc), that a new curses library, called ncurses, was developed to
  959. replace it.  C-Kermit, as of version 6.1, uses ncurses rather than curses.
  960. After modern practice, ncurses is dynamically linked, rather than linked into
  961. the executable.  This means a certain relationship must obtain between the
  962. version number referenced in the executable and the version number of the
  963. library.  But there are evidently several different numbering systems for
  964. libncurses.so -- e.g. 1.9.9e is another "name" for 3.0 -- but the program
  965. loader doesn't know that and so won't run the program.  Also the library
  966. and/or terminfo database might be in a different place on the target system
  967. (e.g. /usr/share/terminfo) than it was on the build system (e.g.
  968. /usr/lib/terminfo).  Solution: Create the appropriate symbolic links and/or
  969. rebuild C-Kermit yourself from source code, and if you have additional
  970. trouble, come back and read the rest of this section.
  971. Of course static linking is also a possibility, but this makes the executable
  972. MUCH bigger and introduces new problems of its own.
  973. From the March 1999 Kermit newsgroup traffic:
  974.   : When I start Kermit (under Redhat Linux 5.2), it complains about not
  975.   : being able to recognise my terminal type - I've tried all the obvious
  976.   : terminal types - which ones can I use?  Or can I get it to recognise
  977.   : xterm?
  978.   :
  979.   Assuming that you can use full screen programs, this looks identical to the
  980.   problem introduced by RedHat with 5.1.  They moved the curses library, and
  981.   didn't [ leave a link from the old location to the new one ]:
  982.   To fix: cd /usr/share; ln -s terminfo ../lib
  983. The termcap library is no longer referenced in the Linux target in the
  984. makefile, since its functions are supposedly incorporated into the ncurses and
  985. curses libraries.  However, should any termcap-related entry points come up
  986. undefined at link time (_tgetent, _tgoto, _tputs, etc), it might be necessary
  987. to add -ltermcap back to LIBS.  But then you might find that the termcap
  988. library is not in /usr/lib after all, but has been moved to /usr/lib/termcap/,
  989. in which case you'll need to make a symlink, or do something like:
  990.   "LIBS = -L/usr/lib/curses -lcurses -L/usr/lib/termcap -ltermcap"
  991. Different UUCP lockfile conventions are used by different Linux versions
  992. and/or distributions.  In C-Kermit 6.0 and later, "make linux" uses
  993. /var/lock/LCK..name, decimal ASCII 10-byte PID string with leading spaces
  994. because -DLINUXFSSTND ("Linux File System Standard") is included in the
  995. compilation CFLAGS.  If you remove this definition, C-Kermit will use the
  996. earlier arrangement of integer PID, /usr/spool/uucp/LCK..name.  The leading
  997. spaces are required by FSSTND 1.2, but FSSTND 1.0 required leading zeros; to
  998. get the leading zeros, also include -DFSSTND10.  Use whichever option agrees
  999. with your uucp, cu, tip, etc, programs.
  1000. One user reported problems building C-Kermit under Linux 2.0.30/Slackware 96,
  1001. errors like:
  1002.   /usr/include/linux/socket.h:77: warning: `PF_AAL5' redefined
  1003.   /usr/local/include/socketbits.h:68: warning: this is the location of the
  1004.   previous definition
  1005.   ckutio.c:4679: `TIOCGSERIAL' undeclared (first use this function)
  1006.   ckutio.c:4685: `TIOCSSERIAL' undeclared (first use this function)
  1007.   ckutio.c:6092: warning: passing arg 3 of `select' from incompatible
  1008.   pointer type
  1009. etc etc.  Diagnosis: These were caused by installing some other package, which
  1010. created files in /usr/local/include.  Cure: rm -rf /usr/local/include, and
  1011. start over.
  1012. Reportedly, building C-Kermit 6.0 on Linux 1.1.33 and 1.1.34 gets fatal
  1013. compilation errors due to inconsistencies in the Linux header files.  Linux
  1014. kernel versions prior to 1.1.33 and later than 1.1.34 should be OK.  (Also,
  1015. C-Kermit 6.1 and later should be OK since we no longer include kernel header
  1016. files.)
  1017. Reportedly there is a bug in gcc 2.5.8 with signed to unsigned compares
  1018. that can wreak havoc when Kermit (or most any other program) is compiled with
  1019. this version of gcc; reportedly this can be worked around, at least in part,
  1020. by adding "-fno-unroll-loops" to the gcc compilation options.  (This problem
  1021. is evidently fixed in more recent gcc releases.)
  1022. Reportedly, if you have the iBCS2 (Intel Binary Compatibility Standard 2)
  1023. module installed, you can also run SCO Xenix and UNIX binaries under Linux,
  1024. including the SCO C-Kermit binaries, shareable libraries and all.
  1025. (iCBS2 is available via anonymous ftp from tsx-11.mit.edu, along with an
  1026. SCO libc_s compatibility module for Linux).
  1027. There is evidently a minor problem with GCC (version unknown) on (64-bit)
  1028. Alpha platforms, in which it complains:
  1029.   warning: cast to pointer from integer of different size
  1030. whenever it encounters a legitimate trinary expression like:
  1031.   integer ? "string1" : "string2"
  1032. (The "integer" can also be an integer-valued expression.)  These warnings
  1033. appear to be harmless.
  1034. 3.3.2. Problems with Serial Devices in Linux
  1035.   Also see: "man setserial", "man irqtune".
  1036.   And: Sections 3.0, 6, 7, and 8 of this document.
  1037. Don't expect it to be easy.  Queries like the following are posted to the
  1038. Linux newsgroups almost daily:
  1039.   Problem of a major kind with my Compaq Presario 1805 in the sense that
  1040.   the pnpdump doesn't find the modem and the configuration tells me that
  1041.   the modem is busy when I set everything by hand!
  1042.   I have <some recent SuSE distribution>, kernel 2.0.35. Using the Compaq
  1043.   tells me that the modem (which is internal) is on COM2, with the usual
  1044.   IRQ and port numbers. Running various Windows diagnostics show me
  1045.   AT-style commands exchanged so I have no reason to beleive that it is a
  1046.   Winmodem. Also, the diagnostics under Win98 tell me that I am talking to
  1047.   an NS 16550AN.
  1048. [Editor's note: This does not necessarily mean it isn't a Winmodem.]
  1049.   Under Linux, no joy trying to talk to the modem on /dev/cua1 whether
  1050.   via. minicom, kppp, or chat. kppp at least tells me that tcgetattr()
  1051.   failed.
  1052.   Usage of setserial ("setserial /dev/cua1 port 0x2F8 irq 3 autoconfig"
  1053.   followed by "setserial -g /dev/cua1") tells me that the uart is
  1054.   'unknown'. I have tried setting the UART manullay via. setserial to
  1055.   16550A, 16550, and the other one (8550?) (I didn't try 16540). None of
  1056.   these manual settings resulted in any success.
  1057.   A look at past articles leads me to investigate PNP issues by calling
  1058.   pnpdump but pnpdump returns "no boards found". I have looked around on
  1059.   my BIOS (Phoenix) and there is not much evidence of it being PNP aware.
  1060.   However for what it calls "Serial port A", it offers a choice of Auto,
  1061.   Disabled or Manual settings (currently set to Auto), but using the BIOS
  1062.   interface I tried to change to 'manual' and saw the default settings
  1063.   offered to be were 0x3F8 and IRQ 4 (COM1). The BIOS menus did not give
  1064.   me any chance to configure COM2 or any "modem". I ended up not saving
  1065.   any BIOS changes in the course of my investigations.
  1066.   Can anybody suggest something else for me to try?
  1067. (end quotes)
  1068. Watch out for PCI, PCMCIA and Plug-n-Play devices, Winmodems, and the like
  1069. (see cautions in Section 3.0).  Linux supports Plug-n-Play devices to some
  1070. degree via the isapnp and pnpdump programs; read the man pages for them.  (If
  1071. you don't have them, look on your installation CD for isapnptool or download
  1072. it from sunsite or a sunsite mirror or other politically correct location).
  1073. Even when you have a real serial port, always be wary of interrupt conflicts
  1074. and similar PC hardware configuration issues: a PC is not a real computer like
  1075. other UNIX workstations -- it is generally pieced together from whatever
  1076. random components were the best bargain on the commodity market the week it
  1077. was built.  Once it's assembled and boxed, not even the manufacturer will
  1078. remember what it's made of or how it was put together because they've moved on
  1079. to a new model.  Their job is to get it (barely) working with Windows; for
  1080. Linux and other OS's you are on your own.
  1081. "set line /dev/modem" or "set line /dev/ttyS2", etc, results in an error,
  1082. "/dev/modem is not a tty".  Cause unknown, but obviously a driver issue, not a
  1083. Kermit one (Kermit uses "isatty()" to check that the device is a tty, so it
  1084. knows it will be able to issue all the tty-related ioctl's on it, like setting
  1085. the speed & flow control).  Try a different name (i.e. driver) for the same
  1086. port, e.g.  "set line /dev/cua2" or whatever.
  1087. "set modem type xxx" (where xxx is the name of a modem) followed by
  1088. "set line /dev/modem" or "set line /dev/ttyS2", etc, hangs (but can be
  1089. interrupted with Ctrl-C).  Experimentation shows that if the modem is
  1090. configured to always assert carrier (&C0) the same command does not hang.
  1091. Again, a driver issue.  Use /dev/cua2 (or whatever) instead.  (Or not --
  1092. hopefully none of these symptoms occur in C-Kermit 7.0.)
  1093. "set line /dev/cua0" reports "Device is busy", but "set line /dev/ttyS0"
  1094. works OK.
  1095. In short: If the cua device doesn't work, try the corresponding ttyS device.
  1096. If the ttyS device doesn't work, try the corresponding cua device -- but note
  1097. that Linux developers do not recommend this, and are phasing out the cua
  1098. devices.  From /usr/doc/faq/howto/Serial-HOWTO:
  1099.   12.4. What's The Real Difference Between The /dev/cuaN And /dev/ttySN
  1100.         Devices?
  1101.   The only difference is the way that the devices are opened.  The
  1102.   dialin devices /dev/ttySN are opened in blocking mode, until CD is
  1103.   asserted (ie someone connects).  So, when someone wants to use the
  1104.   /dev/cuaN device, there is no conflict with a program watching the
  1105.   /dev/ttySN device (unless someone is connected of course).
  1106.   The multiple /dev entries, allow operation of the same physical device
  1107.   with different operating characteristics.  It also allows standard
  1108.   getty programs to coexist with any other serial program, without the
  1109.   getty being retrofitted with locking of some sort.  It's especially
  1110.   useful since standard Unix kernel file locking, and UUCP locking are
  1111.   both advisory and not mandatory.
  1112. It was discovered during development of C-Kermit 6.1 that rebuilding C-Kermit
  1113. with -DNOCOTFMC (No Close/Open To Force Mode Change) made the aforementioned
  1114. problem with /dev/ttyS0 go away.  It is not yet clear, however, what its
  1115. affect might be on the /dev/cua* devices.  As of 19 March 1998, this option
  1116. has been added to the CFLAGS in the makefile entries for Linux ("make linux").
  1117. Note that the cua device is now "deprecated", and new editions of Linux will
  1118. phase it out in favor of the ttyS device.  See:
  1119.   http://linuxwww.db.erau.edu/mail_archives/linux-kernel/Mar_98/1441.html
  1120. One user reported that C-Kermit 7.0, when built with egcs 1.1.2 and run on
  1121. Linux 2.2.6 with glibc 2.1 (hardware unknown but probably a PC) dumps core
  1122. when given a "set line /dev/ttyS1" command.  When rebuilt with gcc, it works
  1123. fine.
  1124. 3.3.3. Terminal Emulation in Linux
  1125. Run C-Kermit in the regular console screen, which provides Linux Console
  1126. "emulation" via the "console" termcap entry, or under X-Windows in an xterm
  1127. window, which gives VTxxx emulation.  An xterm that includes color ANSI and
  1128. VT220 emulation is available with Xfree86:
  1129.   http://www.clark.net/pub/dickey/xterm/xterm.faq.html
  1130. Before starting C-Kermit in an xterm window, you might need to tell the xterm
  1131. window's shell to "stty sane".
  1132. To set up your PC console keyboard to send VT220 key sequences when using
  1133. C-Kermit as your communications program in an X terminal window (if it doesn't
  1134. already), create a file somewhere (e.g. in /root/) called .xmodmaprc,
  1135. containing something like the following:
  1136.   keycode 77  = KP_F1       ! Num Lock     => DEC Gold (PF1)
  1137.   keycode 112 = KP_F2       ! Keypad /     => DEC PF1
  1138.   keycode 63  = KP_F3       ! Keypad *     => DEC PF3
  1139.   keycode 82  = KP_F4       ! Keypad -     => DEC PF4
  1140.   keycode 111 = Help        ! Print Screen => DEC Help
  1141.   keycode 78  = F16         ! Scroll Lock  => DEC Do
  1142.   keycode 110 = F16         ! Pause        => DEC Do
  1143.   keycode 106 = Find        ! Insert       => DEC Find
  1144.   keycode 97  = Insert      ! Home         => DEC Insert
  1145.   keycode 99  = 0x1000ff00  ! Page Up      => DEC Remove
  1146.   keycode 107 = Select      ! Delete       => DEC Select
  1147.   keycode 103 = Page_Up     ! End          => DEC Prev Screen
  1148.   keycode 22  = Delete      ! Backspace sends Delete (127)
  1149. Then put "xmodmap <filename>" in your .xinitrc file (in your login
  1150. directory), e.g.
  1151.   xmodmap /root/.xmodmaprc
  1152. Of course you can move things around.  Use the xev program to find
  1153. out key codes.
  1154. Console-mode keys are mapped separately using loadkeys, and different
  1155. keycodes are used.  Find out what they are with showkey.
  1156. 3.3.4. Dates and Times
  1157. If C-Kermit's date-time (e.g. as shown by its DATE command) differs from
  1158. the system's date and time:
  1159.  a. Make sure the libc to which Kermit is linked is set to GMT or is not
  1160.     set to any time zone.  Watch out for mixed libc5/libc6 systems; each
  1161.     must be set indpendently.
  1162.  b. If you have changed your TZ environment variable, make sure it is
  1163.     exported.  This is normally done in /etc/profile or /etc/TZ.
  1164. 3.3.5. Startup Errors
  1165. C-Kermit 7.0 should work on all versions of Linux current through December
  1166. 1999, provided it was built on the same version you have (just get the
  1167. source code and "make linux").  This is no guarantee that binaries built
  1168. for 7.0 release will not stop working at a later date, since Linux tends
  1169. to change out from under its applications, just as it did under C-Kermit 6.0
  1170. (libc/glibc, curses/ncurses, etc).
  1171. Since the Red Hat 5.1 release (circa August 1998), there have been numerous
  1172. reports of prebuilt Linux executables, and particularly the Kermit RPM for
  1173. Red Hat Linux, not working; either it won't start at all, or it gives error
  1174. messages about "terminal type unknown" and refuses to initialize its curses
  1175. support.  The following is from the Kermit newsgroup:
  1176. From: rchandra@hal9000.buf.servtech.com ()
  1177. Newsgroups: comp.protocols.kermit.misc
  1178. Subject: Red Hat Linux/Intel 5.1 and ncurses: suggestions
  1179. Date: 22 Aug 1998 15:54:46 GMT
  1180. Organization: Verio New York
  1181. Keywords: RedHat RPM 5.1
  1182. Several factors can influence whether "linux" is recognized as a
  1183. terminal type on many Linux systems.
  1184. 1.) Your program, or the libraries it linked with (if statically
  1185.   linked), or the libraries it dynamically links with at runtime, are
  1186.   looking for an entry in /etc/termcap that isn't there.  (not likely,
  1187.   but possible...I believe but am not certain that this is a very old
  1188.   practice in very old [n]curses library implementations to use a
  1189.   single file for all terminal descriptions.)
  1190. 2.) Your program, or the libraries...are looking for a terminfo file
  1191.   that just plain isn't there.  (also not so likely, since many people
  1192.   in other recent message threads said that other programs work OK).
  1193. 3.) Your program, or the libraries...are looking for a terminfo file
  1194.   that is stored at a pathname that isn't expected by your program,
  1195.   the libraries--and so on.  I forgot if I read this in the errata Web
  1196.   page or where exactly I discovered this (Netscape install?  Acrobat
  1197.   install?), but it may just be that one libc (let's say for sake of
  1198.   argument, libc5, but I don't know this to be true) expects your
  1199.   terminfo to be in /usr/share/terminfo, and the other (let's say
  1200.   libc6/glibc) expects /usr/lib/terminfo.  I remember that the
  1201.   specific instructions in this bugfix/workaround were to do the
  1202.   following or equivalent:
  1203.       cd /usr/lib
  1204.       ln -s ../share/terminfo ./terminfo
  1205.  - or -
  1206.       ln -s /usr/share/terminfo /usr/lib/terminfo
  1207.   So what this says is that the terminfo database/directory structure
  1208.   can be accessed by either path.  When something goes to reference
  1209.   /usr/lib/terminfo, the symlink redirects it to essentially
  1210.   /usr/share/terminfo, which is where it really resides on your
  1211.   system.  I personally prefer wherever possible to use relative
  1212.   symlinks, because they still hold, more often than break, across
  1213.   mount points, particularly NFS mounts, where the directory structure
  1214.   may be different on the different systems.
  1215. (end quote) Evidently the terminfo file moved between Red Hat 5.0 and 5.1, but
  1216. Red Hat did not include a link to let applications built prior to 5.1 find it.
  1217. Users report that installing the link fixes the problem.
  1218. (3.4) C-KERMIT AND NEXTSTEP
  1219. Run C-Kermit in a Terminal, Stuart, or xterm window, or when logged in
  1220. remotely through a serial port or TELNET connection.  C-Kermit does not work
  1221. correctly when invoked directly from the NeXTSTEP File Viewer or Dock.  This
  1222. is because the terminal-oriented gtty, stty, & ioctl calls don't work on the
  1223. little window that NeXTSTEP pops up for non-NeXTSTEP applications like Kermit.
  1224. CBREAK and No-ECHO settings do not take effect in the command parser --
  1225. commands are parsed strictly line at a time.  "set line /dev/cua" works.
  1226. During CONNECT mode, the console stays in cooked mode, so characters are not
  1227. transmitted until carriage return or linefeed is typed, and you can't escape
  1228. back.  If you want to run Kermit directly from the File Viewer, then launch it
  1229. from a shell script that puts it in the desired kind of window, something like
  1230. this (for "Terminal"):
  1231.   Terminal -Lines 24 -Columns 80 -WinLocX 100 -WinLocY 100 $FONT $FONTSIZE 
  1232.   -SourceDotLogin -Shell /usr/local/bin/kermit &
  1233. C-Kermit does not work correctly on a NeXT with NeXTSTEP 3.0 to which you have
  1234. established an rlogin connection, due to a bug in NeXTSTEP 3.0, which has been
  1235. reported to NeXT.
  1236. The SET CARRIER command has no effect on the NeXT -- this is a limitation of
  1237. the tty device drivers.
  1238. Hardware flow control on the NeXT is selected not by "set flow rts/cts" in
  1239. Kermit (since NeXTSTEP offers no API for this), but rather, by using a
  1240. specially-named driver for the serial device: /dev/cufa instead /dev/cua;
  1241. /dev/cufb instead of /dev/cub.  This is available only on 68040-based NeXT
  1242. models (the situation for Intel NeXTSTEP implementations is unknown).
  1243. NeXT-built 68030 and 68040 models have different kinds of serial interfaces;
  1244. the 68030 has a Macintosh-like RS-422 interface, which lacks RTS and CTS
  1245. signals; the 68040 has an RS-423 (RS-232 compatible) interface, which
  1246. supports the commonly-used modem signals.  WARNING: the connectors look
  1247. exactly the same, but the pins are used in completely DIFFERENT ways --
  1248. different cables are required for the two kinds of interfaces.
  1249.   IF YOU GET LOTS OF RETRANSMISSIONS during file transfer, even when
  1250.   using a /dev/cuf* device and the modem is correctly configured for
  1251.   RTS/CTS flow control, YOU PROBABLY HAVE THE WRONG KIND OF CABLE.
  1252. On the NeXT, Kermit reportedly (by TimeMon) causes the kernel to use a lot of
  1253. CPU time when using a "set line" connection.  That's because there is no DMA
  1254. channel for the NeXT serial port, so the port must interrupt the kernel for
  1255. each character in or out.
  1256. One user reported trouble running C-Kermit on a NeXT from within NeXT's
  1257. Subprocess class under NeXTstep 3.0, and/or when rlogin'd from one NeXT to
  1258. another: Error opening /dev/tty:, congm: No such device or address.
  1259. Diagnosis: Bug in NeXTSTEP 3.0, cure unknown.
  1260. (3.5) C-KERMIT AND QNX
  1261. See also: The comp.os.qnx newsgroup.
  1262. Support for QNX 4.x was added in C-Kermit 5A(190).  This is a full-function
  1263. implementation, thoroughly tested on QNX 4.21 and later, and verified to work
  1264. in both 16-bit and 32-bit versions.  The 16-bit version was dropped in
  1265. C-Kermit 7.0 since it can no longer be built successfully (after stripping
  1266. most most features, I succeeded in getting it to compile and link without
  1267. complaint, but the executable just beeps when you run it); for 16-bit QNX
  1268. 4.2x, use C-Kermit 6.0 or earlier.
  1269. The 32-bit version (and the 16-bit version prior to C-Kermit 7.0) support most
  1270. of C-Kermit's advanced features including TCP/IP, high serial speeds, hardware
  1271. flow-control, modem-signal awareness, curses support, etc.
  1272. BUG: In C-Kermit 6.0 and earlier on QNX 4.22 and earlier, the fullscreen file
  1273. transfer display worked fine the first time, but was fractured on subsequent
  1274. file transfers.  Cause and cure unknown.  In C-Kermit 7.0 and QNX 4.25, this
  1275. no longer occurs.  It is not known if it would occur in C-Kermit 7.0 on
  1276. earlier QNX versions.
  1277. Dialout devices are normally /dev/ser1, /dev/ser2, ..., and can be opened
  1278. explicitly with SET LINE.  Reportedly, "/dev/ser" (no unit number) opens the
  1279. first available /dev/ser<n> device.
  1280. Like all other UNIX C-Kermit implementations, QNX C-Kermit does not provide
  1281. any kind of terminal emulation.  Terminal specific functions are provided by
  1282. your terminal, terminal window (e.g. QNX Terminal or xterm), or emulator.
  1283. QNX C-Kermit, as distributed, does not include support for UUCP line-locking;
  1284. the QNX makefile entries (qnx32 and qnx16) include the -DNOUUCP switch.  This
  1285. is because QNX, as distributed, does not include UUCP, and its own
  1286. communications software (e.g. qterm) does not use UUCP line locking.  If you
  1287. have a UUCP product installed on your QNX system, remove the -DNOUUCP switch
  1288. from the makefile entry and rebuild.  Then check to see that Kermit's UUCP
  1289. lockfile conventions are the same as those of your UUCP package; if not, read
  1290. the UUCP lockfile section ckuins.txt and make the necessary changes to the
  1291. makefile entry (e.g. add -DHDBUUCP).
  1292. QNX does, however, allow a program to get the device open count.  This can
  1293. not be a reliable form of locking unless all applications do it, so by
  1294. default, Kermit uses this information only for printing a warning message
  1295. such as:
  1296.   C-Kermit>set line /dev/ser1
  1297.   WARNING - "/dev/ser1" looks busy...
  1298. However, if you want to use it as a lock, you can do so with:
  1299.   SET QNX-PORT-LOCK { ON, OFF }
  1300. This is OFF by default; if you set in ON, C-Kermit will fail to open any
  1301. dialout device when its open count indicates that another process has it
  1302. open.  SHOW COMM (in QNX only) displays the setting, and if you have a port
  1303. open, it also shows the open count.
  1304. (3.6) C-KERMIT AND SCO UNIX, XENIX, ODT, AND OPENSERVER
  1305. See also:
  1306.  . The comp.unix.sco.* newsgroups.
  1307.  . http://www.sco.com/Support/ssl.html
  1308.  . Section 3.10 below for Unixware
  1309.  . The FAQ at ftp://rtfm.mit.edu/pub/usenet/news.answers/sco/newsgroups-faq
  1310.    (which only covers newsgroups and mailing lists).
  1311. There is a general SCO FAQ, but I'm not sure where to find it.  It is posted
  1312. to the newsgroups from time to time.
  1313. Also see general comments on PC-based UNIXes in Section 3.0.
  1314. Old Xenix versions... Did you know: Xenix 3.0 is *older* than Xenix 2.0?
  1315. There is all sorts of confusion among SCO versions, particularly when third-
  1316. party communications boards and drivers are installed, regarding lockfile
  1317. naming conventions, as well as basic functionality.  As far as lockfiles go,
  1318. all bets are off if you are using a third-party multiport board.  At least you
  1319. have the source code.  Hopefully you also have a C compiler :-)
  1320. On the other hand, certain functions that might not (do not) work right or
  1321. at all when using SCO drivers (e.g. high serial speeds, hardware flow control,
  1322. and/or reading of modem signals) might work right when using third-party
  1323. drivers.  (Example: hardware flow control works, reportedly, only on uppercase
  1324. device like tty1A -- not tty1a -- and only when CLOCAL is clear when using the
  1325. SCO sio driver, but there are no such restrictions in, e.g., Digiboard
  1326. drivers).
  1327. SCO OpenServer (all versions up to and included 5.0.5) do not support the
  1328. reading of modem signals.  Thus "show comm" does not list modem signals, and
  1329. C-Kermit does not automatically pop back to its prompt when the modem hangs
  1330. up the connection (drops CD).  The ioctl() call for this is simply not
  1331. implmented, at least not in the standard drivers.
  1332. One user reports that he can't transfer large files with C-Kermit under SCO
  1333. OSR5.0.0 and 5.0.4 -- after the first 5K, everything falls apart.  Same thing
  1334. without Kermit -- e.g. with ftp over a PPP connection.  Later, he said that
  1335. replacing SCO's SIO driver with FAS, an alternative communications driver,
  1336. made the problem go away:
  1337.   ftp://ftp.fu-berlin.de/pub/unix/driver/fas
  1338. Other users often make similar observations regarding Digi and other 3rd
  1339. party drivers.
  1340. With regard to bidirectional serial ports on OpenServer 5.0.4, the following
  1341. advice appeared on an SCO related newsgroup : "No amount of configuration
  1342. information is going to help you on 5.0.4 unless it includes the kludge for
  1343. the primary problem.  With almost every modem, the 5.0.4 getty will barf
  1344. messages and may or may not connect.  There are 2 solutions and only one works
  1345. on 5.0.4.  Get the atdialer binary from a 5.0.0 system and substitute it for
  1346. the native 5.0.4 atdialer.  The other solution is to upgrade to 5.0.5.  And,
  1347. most of all, on any OpenServer products, do NOT run the badly broken Modem
  1348. Manager.  Configure the modems in the time honored way that dates back to
  1349. Xenix."
  1350. Hardware flow control is available in C-Kermit when the underlying SCO version
  1351. supports it.  Note that Xenix 2.3.0 and later claims to support RTSFLOW and
  1352. CTSFLOW, but this is not modern bidirectional hardware flow control; rather it
  1353. implements the original RS-232 meanings of these signals for unidirectional
  1354. half-duplex line access: If both RTSFLOW and CTSFLOW bits are set, Xenix
  1355. asserts RTS when it wants to send data and waits for CTS assertion before it
  1356. actually starts sending data (also, reportedly, even this is broken in Xenix
  1357. 2.3.0 and 2.3.1).
  1358. Use SCO-provided utilities for switching the directionality of a modem line,
  1359. such as "enable" and "disable" commands.  For example, to dial out on tty1a,
  1360. which is normally set up for logins:
  1361.   disable tty1a
  1362.   kermit -l /dev/tty1a
  1363.   enable tty1a
  1364. If a tty device is listed as an ACU in /usr/lib/uucp/Devices and is enabled,
  1365. getty resets the ownership and permissions to uucp.uucp 640 every time the
  1366. device is released.  If you want to use the device only for dialout, and you
  1367. want to specify other owners or permissions, you should disable it in
  1368. /usr/lib/uucp/Devices; this will prevent getty from doing things to it.  You
  1369. should also changes the device's file modes in /etc/conf/node.d/sio by
  1370. changing fields 5-7 for the desired device(s); this determines how the devices
  1371. are set if you relink the kernel.
  1372. SCO systems tend to use different names (i.e. drivers) for the same device.
  1373. In Xenix, /dev/tty1a refers to a terminal device that has no modem control;
  1374. open, read, write, and close operations do not depend on carrier.  On the
  1375. other hand, /dev/tty1A (same name, but with final letter upper case), is the
  1376. same device with modem control, in which carrier is required (the SET LINE
  1377. command does not complete until carrier appears, read/write operations fail if
  1378. there is no carrier, etc).  In the SCO case, C-Kermit always uses the
  1379. lowercase name when creating the UUCP lockfile (this is, according to SCO
  1380. experts, the proper behavior, but reportedly not all other communications
  1381. applications found on SCO systems follow this rule).
  1382. In SCO Xenix, you must use SET CARRIER ON *and* use the upper-case tty device
  1383. name in order to have carrier detection.  SET CARRIER OFF should work with
  1384. either upper or lowercase tty devices.  SET CARRIER AUTO is the same as OFF.
  1385. One SCO user of C-Kermit 5A(190) reported that only one copy of Kermit can run
  1386. at a time when a Stallion Technologies multiport boards are installed.  Cause,
  1387. cure, and present status unknown (see Section 14 of this file for more info
  1388. regarding Stallion).
  1389. Prior to SCO OpenServer 5.0.4, the highest serial port speed supported by SCO
  1390. was 38400.  However, in some SCO versions (e.g. OSR5) it is possible to map
  1391. rarely-used lower speeds (like 600 and 1800) to higher ones like 57600 and
  1392. 115200.  To find out how, go to http://www.sco.com/ and search for "115200".
  1393. In OSR5.0.4, serial speeds up to 921600 are supported through the POSIX
  1394. interface; C-Kermit 6.1.193 or later, when built for OSR5.0.4, supports these
  1395. speeds, but you might be able to run this binary on earlier releases to get
  1396. the high serial speeds, depending on various factors, described by Bela Lubkin
  1397. of SCO:
  1398.   Serial speeds under SCO Unix / Open Desktop / OpenServer
  1399.   ========================================================
  1400.   Third party drivers (intelligent serial boards) may provide any speeds
  1401.   they desire; most support up to 115.2Kbps.
  1402.   SCO's "sio" driver, which is used to drive standard serial ports with
  1403.   8250/16450/16550 and similar UARTs, was limited to 38400bps in older
  1404.   releases.  Support for rates through 115.2Kbps was added in the
  1405.   following releases:
  1406.     SCO OpenServer Release 5.0.0 (requires supplement "rs40b")
  1407.     SCO OpenServer Release 5.0.2 (requires supplement "rs40a" or "rs40b")
  1408.     SCO OpenServer Release 5.0.4 or later
  1409.     SCO Internet FastStart Release 1.0.0 or later