home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / cku196.zip / ckubwr.txt < prev    next >
Text File  |  2000-01-01  |  171KB  |  3,476 lines

  1. CKUBWR.TXT         "Beware File" for C-Kermit Version 7.0         -*- text -*-
  2.  
  3.                   C-KERMIT FOR UNIX
  4.  
  5.  
  6. As of C-Kermit version:  7.0.196
  7. This file last updated:  Sat Jan  1 14:57:24 2000
  8.  
  9.  
  10. Authors: Frank da Cruz and Christine M. Gianone, Columbia University.
  11.  
  12.   Copyright (C) 1985, 2000,
  13.     Trustees of Columbia University in the City of New York.
  14.     All rights reserved.  See the C-Kermit COPYING.TXT file or the
  15.     copyright text in the ckcmai.c module for disclaimer and permissions.
  16.  
  17. WHAT IS IN THIS FILE
  18.  
  19. This is the "beware file" for the UNIX version of C-Kermit.  It contains hints
  20. and tips, frequently asked questions (and answers), troubleshooting advice,
  21. limitations and restrictions, known bugs, unresolved reports, etc, that apply
  22. to all UNIX variations, as well as to specific ones like HP-UX, AIX, Solaris,
  23. SunOS, Unixware, NeXTSTEP, etc etc.
  24.  
  25. This file should be read in conjunction with the system-independent C-Kermit
  26. beware file, ckcbwr.txt, which contains similar information, but applying to
  27. all versions of C-Kermit (VMS, OS/2, AOS/VS, VOS, etc, as well as to UNIX).
  28.  
  29.  
  30. CONTENTS
  31.  
  32.   (0)  DOCUMENTATION AND TECHNICAL SUPPORT
  33.   (0.1)  THE C-KERMIT USER MANUAL
  34.   (0.2)  TECHNICAL SUPPORT
  35.   (0.3)  THE YEAR 2000
  36.   (0.4)  THE EURO SYMBOL
  37.   (1)  IMPORTANT FILES
  38.   (2)  BINARIES
  39.   (3)  NOTES ON SPECIFIC UNIX VERSIONS
  40.   (3.0)  C-KERMIT ON PC-BASED UNIXES
  41.   (3.1)  C-KERMIT AND AIX
  42.   (3.2)  C-KERMIT AND HP-UX
  43.      3.2.0. Common Problems
  44.      3.2.1. Building C-Kermit on HP-UX
  45.      3.2.2. Performance
  46.      3.2.3. Dialing Out and UUCP Lockfiles in HP-UX
  47.      3.2.4. HP-UX 5.00
  48.      3.2.5. HP-UX 8.00
  49.      3.2.6. HP-UX 9.00 AND LATER
  50.      3.2.7. HP-UX 10.10 AND LATER
  51.      3.2.8. HP-UX and X.25
  52.   (3.3)  C-KERMIT AND LINUX
  53.      3.3.1. Problems Building C-Kermit for Linux
  54.      3.3.2. Problems with Serial Devices in Linux
  55.      3.3.3. Terminal Emulation in Linux
  56.      3.3.4. Dates and Times
  57.          3.3.5. Startup Errors
  58.   (3.4)  C-KERMIT AND NEXTSTEP
  59.   (3.5)  C-KERMIT AND QNX
  60.   (3.6)  C-KERMIT AND SCO UNIX, XENIX, ODT, AND OPENSERVER
  61.   (3.7)  C-KERMIT AND SOLARIS
  62.   (3.8)  C-KERMIT AND SUNOS
  63.   (3.9)  C-KERMIT AND ULTRIX
  64.   (3.10) C-KERMIT AND UNIXWARE
  65.   (3.11) C-KERMIT AND APOLLO SR10
  66.   (3.12) C-KERMIT AND TANDY XENIX 3.0
  67.   (3.13) C-KERMIT AND OSF/1 (DIGITAL UNIX)
  68.   (3.14) C-KERMIT AND SGI IRIX
  69.   (3.15) C-KERMIT AND THE BEBOX
  70.   (3.16) C-KERMIT AND DG/UX
  71.   (3.17) C-KERMIT AND SEQUENT DYNIX
  72.   (3.18) C-KERMIT AND {FREE,OPEN,NET}BSD
  73.   (4)  GENERAL UNIX-SPECIFIC LIMITATIONS AND BUGS
  74.   (5)  INITIALIZATION AND COMMAND FILES
  75.   (6)  COMMUNICATION SPEED SELECTION
  76.   (7)  COMMUNICATIONS AND DIALING
  77.   (8)  HARDWARE FLOW CONTROL
  78.   (9)  TERMINAL CONNECTION AND KEY MAPPING
  79.   (10) FILE TRANSFER
  80.   (11) EXTERNAL FILE TRANSFER PROTOCOLS
  81.   (11.1) C-KERMIT AS AN EXTERNAL PROTOCOL
  82.   (11.2) INVOKING EXTERNAL PROTOCOLS FROM C-KERMIT
  83.   (11.3) USING C-KERMIT WITH TERM
  84.   (12) SECURITY
  85.   (13) MISCELLANEOUS USER REPORTS
  86.   (14) THIRD-PARTY DRIVERS
  87.  
  88.  
  89. (0) DOCUMENTATION AND TECHNICAL SUPPORT
  90.  
  91. (0.1) THE C-KERMIT USER MANUAL
  92.  
  93. C-Kermit is documented in the book "Using C-Kermit" by Frank da Cruz and
  94. Christine M. Gianone, Digital Press, Burlington, MA, USA, ISBN 1-55558-164-1.
  95. Price: US $44.95.  To order, call Columbia University, New York City, at
  96. +1 (212) 854-3703, or Digital Press / Butterworth-Heinemann at:
  97.  
  98.   +1 800 366-2665  (Massachusetts office for USA & Canada)
  99.   +441 1993 414414 (Rushden, England office for Europe)
  100.   +61 2 372-5511   (Chatswood, NSW, office for Australia & New Zealand)
  101.   +65 220-3684     (Singapore office for Asia)
  102.  
  103. Or visit the Kermit website at http://www.columbia.edu/kermit/.
  104.  
  105. A German edition is available from Verlag Heinz Heise in Hannover, Germany,
  106. Tel. +49 (05 11) 53 52-0, Fax. +49 (05 11) 53 52-1 29.
  107.  
  108. If you do not have the manual, please purchase it.  It explains how to use
  109. C-Kermit, from getting started through advanced use and scripting, and sales
  110. of the manual are the primary source of funding for C-Kermit development and
  111. support.
  112.  
  113. New features added since "Using C-Kermit", 2nd Ed, was published are
  114. documented in the ckermit2.txt file, which should be used as a supplement to
  115. the manual until the 3rd edition is published.
  116.  
  117. (0.2) TECHNICAL SUPPORT
  118.  
  119. Please consult the manual, plus the ckcbwr.txt file and this file itself,
  120. before submitting questions, reporting problems, etc, to:
  121.  
  122.   E-Mail: kermit-support@columbia.edu
  123.  
  124.     Web:  http://www.columbia.edu/kermit/support.html
  125.  
  126.     News: comp.protocols.kermit.misc
  127.  
  128.     Post: The Kermit Project
  129.           Columbia University
  130.           612 West 115th Street
  131.           New York NY  10025-7799
  132.           USA
  133.  
  134.     Fax: +1 212 663-8202
  135.  
  136. Telephone support is also available:
  137.  
  138.   USA Only:  +1 900 555-5595, cost: $2.50 per minute
  139.   Anywhere:  +1 212 854-5126, cost: $25.00 per call, payable via Visa or MC.
  140.  
  141. (0.3) THE YEAR 2000
  142.  
  143. The UNIX version of C-Kermit, release 6.0 and later, is "Year 2000 compliant",
  144. but only if the underlying operating system is too.  Contact your UNIX
  145. operating system vendor to find out which operating system versions, patches,
  146. hardware, and/or updates are required.
  147.  
  148. As of C-Kermit 6.0, post-millenium file dates are recognized, transmitted,
  149. received, and reproduced correctly during the file transfer process in
  150. C-Kermit's File Attribute packets.  If post-millenium dates are not processed
  151. correctly on the other end, file transfer will still take place, but the
  152. modification or creation date of the received file might be incorrect.  The
  153. only exception would be if the "file collision update" feature is being used
  154. to prevent unnecessary transfer of files that have not changed since the last
  155. time a transfer took place; in this case, a file might be transferred
  156. unnecessarily, or it might not be transferred when it should have been.
  157. Correct operation of the update feature depends on both Kermit programs having
  158. the correct date and time.
  159.  
  160. Of secondary importance are the time stamps in the transaction and/or debug
  161. logs, and the date-related script programming constructs, such as \v(date),
  162. \v(ndate), \v(day), \v(nday), and perhaps also the time-related ones, \v(time)
  163. and \v(ntime), insofar as they might be affected by the date.  The \v(ndate)
  164. is a numeric-format date of the form yyyymmdd, suitable for both lexical and
  165. numeric comparison and sorting: e.g. 19970208 or 20011231.  If the underlying
  166. operating system returns the correct date information, these variables will
  167. have the proper values.  If not, then scripts that make decisions based on
  168. these variables might not operate correctly.
  169.  
  170. Most date-related code is based upon the C Library asctime() string, which
  171. always has a four-digit year.  In UNIX, the one bit of code in C-Kermit that
  172. is an exception to this rule is several calls to localtime(), which returns a
  173. pointer to a tm struct, in which the year is presumed to be expressed as
  174. "years since 1900".  The code depends on this assumption.  Any platforms that
  175. violate it will need special coding.  As of this writing, no such platforms
  176. are known.
  177.  
  178. Command and script programming functions that deal with dates use C-Kermit
  179. specific code that always uses full years.
  180.  
  181. (0.4) THE EURO SYMBOL
  182.  
  183. C-Kermit 7.0 and later support Unicode (ISO 10646), ISO 8859-15 Latin Alphabet
  184. 9, PC Code Page 858, Windows Code Pages 1250 and 1251, and perhaps other
  185. character sets, that encode the Euro symbol, and can translate among them
  186. as long as no intermediate character-set is involved that does not include
  187. the Euro.
  188.  
  189.  
  190. (1) IMPORTANT FILES
  191.  
  192. In addition to the published documentation, the following files are useful
  193. in troubleshooting:
  194.  
  195.     ckaaaa.txt:     Overview, file naming conventions, list of files, etc.
  196.     ckuins.txt:     Installation instructions for UNIX C-Kermit.
  197.     ckccfg.txt:     C-Kermit program configuration information.
  198.     ckcbwr.txt:     C-Kermit "beware file" for all platforms.
  199.     ckubwr.txt:     C-Kermit "beware file" for UNIX (this file).
  200.     ckcplm.txt:     C-Kermit program logic manual.
  201.     ckermit2.txt:   User documentation for features added since 6.0.192, and
  202.                     since the 2nd Edition of "Using C-Kermit" was published.
  203.     ckcXXX.txt:     Program edit history for edit XXX, e.g. ckc196.txt.
  204.     ckuker.mak:     (or makefile) Makefile for UNIX C-Kermit.
  205.     ck[cuw]*.[chw]: Source code for UNIX C-Kermit.
  206.  
  207. Note that all of the *.txt files are renamed from their pre-7.0 names due
  208. to Microsoft's usurpation of traditional text filetypes like .hlp and .doc
  209. for its own purposes.
  210.  
  211.  
  212. (2) BINARIES
  213.  
  214. It is often dangerous to run a binary C-Kermit (or any other) program built
  215. on a different computer.  Particularly if that computer had a different C
  216. compiler, libraries, operating system version, processor features, etc, and
  217. especially if the program was built with shared libraries, because as soon as
  218. you update the libraries on your system, they no longer match the ones
  219. referenced in the binary, and the binary refuses to load when you run it,
  220. in which case you'll see error messages similar to:
  221.  
  222.   Could not load program kermit
  223.   Member shr4.o not found or file not an archive
  224.   Could not load library libcurses.a[shr4.o]
  225.   Error was: No such file or directory
  226.  
  227. (These samples are from AIX.)  To avoid this problem, we try to build C-Kermit
  228. with statically linked libraries whenever we can, but many of the binaries are
  229. contributed from elsewhere (after all, we don't have several hundred different
  230. machines in-house to build them on), and in any case some platforms do not
  231. even offer the option of static linking.
  232.  
  233. It is often OK to run a binary built on an earlier OS version, but it is
  234. rarely possible (or safe) to run a binary built on a later one, for example
  235. to run a binary built under SunOS 4.1.2 on a SunOS 4.1.1 system.  Sometimes
  236. even the system-or-library patch/ECO level makes a difference.
  237.  
  238. When in doubt, build C-Kermit from the source code on the system where it is
  239. to be run (if possible!).  If not, ask us for a binary specific to your
  240. configuration.  We might have one, and if we don't, we might be able to find
  241. somebody who will build one for you.
  242.  
  243.  
  244. (3) NOTES ON SPECIFIC UNIX VERSIONS
  245.  
  246. The following sections apply to specific UNIX versions.
  247.  
  248. One thread that runs through many of them, and implicitly perhaps through all,
  249. concerns the problems that occur when trying to dial out on a serial device
  250. that is (also) enabled for dialing in.  The "solutions" to this problem are
  251. many, varied, diverse, and usually gross, involving configuring the device for
  252. bidirectional use.  This is done in a highly system-dependent and often
  253. obscure manner, and the effects (good or evil) are also highly system-
  254. dependent.  Many examples are given in the system-specific sections below.
  255.  
  256. An important point to keep in mind is that C-Kermit is a CROSS-PLATFORM,
  257. PORTABLE program.  It was not designed specifically and only for your
  258. particular UNIX version, or for that matter, for UNIX in particular at all.
  259. It also runs on VMS, AOS/VS, VOS, and many other non-UNIX platforms.  All
  260. the UNIX versions of C-Kermit share common i/o modules, with compile-time
  261. #ifdef constructions used to account for the differences among the many UNIX
  262. products and releases.  If you think that C-Kermit is behaving badly, or
  263. missing something, on your particular UNIX version, you might be right -- we
  264. can't claim to be expert in 700+ different platforms.  If you're a programmer,
  265. take a look at the source code and send us your suggested fixes or changes.
  266. Or else just send us a report about what seems to be wrong (see the TECHNICAL
  267. SUPPORT section above for details).
  268.  
  269. (3.0) C-KERMIT ON PC-BASED UNIXES
  270.  
  271. PCs are not the best platform for real operating systems like UNIX.  The
  272. architecture suffers from numerous deficiencies, not the least of which is the
  273. stiflingly small number of hardware interrupts (either 7 or 15, most of which
  274. are preallocated).  Thus adding devices, using multiple serial ports, etc, is
  275. always a challenge and usually a nightmare.  The free-for-all nature of the PC
  276. market and the lack of standards combined with the diversity of UNIX OS
  277. versions makes it difficult to find drivers for any particular device on any
  278. particular version of UNIX.
  279.  
  280. Of special interest to Kermit users is the fact that there is no standard
  281. provision in the PC architecture for more than 2 communication (serial) ports.
  282. COM3 and COM4 (or higher) will not work unless you (a) find out the hardware
  283. address and interrupt for each, (b) find out how to provide your UNIX version
  284. with this information, and (c) actually set up the configuration in the UNIX
  285. startup files (or whatever other method is used).  Watch out for interrupt
  286. conflicts, and don't expect to be able to use more than two serial ports at
  287. the same time.
  288.  
  289. Here is a typical tale from a Linux user (Fred Smith) about installing a third
  290. serial port: "...problems can come from a number of causes. The one I fought
  291. with for some time, and finally conquered, was that my modem is on an add-in
  292. serial port, cua3/IRQ5.  By default IRQ5 has a very low priority, and does not
  293. get enough service in times when the system is busy to prevent losing
  294. data. This in turn causes many resends. There are two 'fixes' that I know of,
  295. one is to relax hard disk interrupt hogging by using the correct parameter to
  296. hdparm, but I don't like that one because the hdparm man page indicates it is
  297. risky to use. The other one, the one I used, was to get 'irqtune' and use it
  298. to give IRQ5 the highest priority instead of nearly the lowest. Completely
  299. cured the problem."
  300.  
  301. To complicate matters, the PC platform is becoming increasingly and inexorably
  302. Windows-oriented.  More and more add-on devices are "Windows only" -- meaning
  303. they are incomplete and rely on proprietary Windows-based software drivers to
  304. do the jobs that you would expect the device itself to do.  PCMCIA or
  305. "Plug-n-Play" devices are rarely supported on PC-based UNIX versions such as
  306. SCO; Winmodems, Winprinters, and the like are not supported at all on any UNIX
  307. to our knowledge (except Lucent has released a Linux-only driver for one of
  308. its PCI "software" modems).  The self-proclaimed Microsoft PC 97 (or later)
  309. standard will probably only make matters worse since its only purpose to
  310. ensure that PCs are "optimized to run Windows 95 and Windows NT 4.0 and future
  311. versions of these operating systems".
  312.  
  313. With the exception noted (the Lucent modem), drivers for "Win" devices are
  314. available only for Windows, since the Windows market dwarfs that of any
  315. particular UNIX brand, and for that matter all UNIXes (or for that matter, all
  316. non-Windows operating systems) combined.  If your version of UNIX (SCO, Linux,
  317. BSDI, FreeBSD, etc) does not support a particular device, then C-Kermit can't
  318. use it either.  C-Kermit, like any UNIX application, must access all devices
  319. through drivers and not directly.
  320.  
  321. Don't waste time thinking that you, or anybody else, could write a Linux (or
  322. other UNIX) driver for a Winmodem or other "Win" device.  First of all, these
  323. devices generally require realtime control, but since UNIX (unlike Windows) is
  324. a true multitasking system, realtime device control is not possible outside
  325. the kernel.  Second, the specifications for these devices are secret and
  326. proprietary, and each one (and each version of each one) is potentially
  327. different.  Third, a Winmodem driver would be enormously complex; it would
  328. take years to write and debug, by which time it would be obsolete.
  329.  
  330. Before you buy a new PC or add-on equipment, especially serial ports, internal
  331. modems, or printers, make sure they are compatible with your version of UNIX.
  332. This is becoming an ever-greater challenge; only a huge company like Microsoft
  333. can afford to be constantly cranking out and/or verifying drivers for the
  334. thousands of video boards, sound cards, network adapters, SCSI adapters,
  335. buses, etc, that spew forth in an uncontrolled manner from all corners of the
  336. world on a daily basis.  With very few exceptions, makers of PCs assemble the
  337. various components and then verify them only with Windows, which they must do
  338. since they are, no doubt, preloading the PC with Windows.  To find a modern PC
  339. that is capable of running a variety of non-Windows operating systems
  340. (e.g. Linux, SCO OpenServer, Unixware, and Solaris) is a formidable challenge
  341. requiring careful study of each vendor's "compatibility lists" and precise
  342. attention to exact component model numbers and revision levels.
  343.  
  344. Modems: External modems are recommended.  Internal PC modems (even when they
  345. are not Winmodems, which is increasingly unlikely in new PCs) are always
  346. trouble, especially in UNIX.  Even when they work for dialing out, they might
  347. not work for dialing in, etc.  Problems that occur when using an internal
  348. modem can almost always be eliminated by switching to an external one.  Even
  349. when an internal modem is not a Winmodem or Plug-n-Play, it is often a no-name
  350. model of unknown quality -- not the sort of thing you want sitting directly on
  351. your computer's bus.  (Even if it does not cause hardware problems, it
  352. probably came without a command list, so no UNIX software will know how to
  353. control it.)  For more about UNIX compatible modems, see:
  354.  
  355.   http://www.o2.net/~gromitkc/winmodem.html
  356.  
  357. Multiple modems: Remember that PCs, even now -- 2 decades after the PC was
  358. first introduced -- are not (in general) capable of supporting more than 2
  359. serial devices.  Here's a short success story from a recent newsgroup posting:
  360. "I have a Diamond SupraSonic II dual modem in my machine. What I had to end up
  361. doing is buying a PS/2 mouse and port and install it. Had to get rid of my
  362. serial mouse. I also had to disable PnP in my computer bios. I was having IRQ
  363. conflicts between my serial mouse and "com 3". Both modems work fine for me.
  364. My first modem is ttyS0 and my second is ttyS1."  Special third-party
  365. multiport boards such as DigiBoard are available for certain UNIX platforms
  366. (typically SCO, maybe Linux) that come with special platform-specific drivers.
  367.  
  368. Character sets: PCs generally have PC code pages such as CP437 or CP850, and
  369. these are often used by PC-based UNIX operating systems, particularly on the
  370. console.  These are supported directly by C-Kermit's SET FILE CHARACTER-SET
  371. and SET TERMINAL CHARACTER-SET commands.  Some PC-based UNIX versions, such as
  372. recent Red Hat Linux releases, might also support Microsoft Windows code pages
  373. such as CP1252, or even Latin Alphabet 1 itself (perhaps displayed with CP437
  374. glyphs).
  375.  
  376. Certain Windows code pages are not supported directly by C-Kermit, but since
  377. they are ISO Latin Alphabets with nonstandard "extensions" in the C1 control
  378. range, you can substitute the corresponding Latin alphabet (or other character
  379. set) in any C-Kermit character-set related commands:
  380.  
  381.   Windows Code Page    Substitution
  382.    CP 1004              Latin-1
  383.    CP 1051              HP Roman-8
  384.  
  385. Other Windows code pages are mostly (or totally) incompatible with their
  386. Latin Alphabet counterparts (e.g. CP1250 and Latin-2), but several of these
  387. are supported by C-Kermit 7.0 (1250, 1251, and 1252).
  388.  
  389. Finally, note that as a real operating system, UNIX (unlike Windows) does not
  390. provide the intimate connection to the PC keyboard, screen, and mouse that you
  391. might expect.  UNIX applications can not "see" the keyboard, and therefore can
  392. not be programmed to understand F-keys, Editing keys, Alt-key combinations,
  393. and the like.  This is because (a) UNIX is a portable operating system, not
  394. only for PCs; and (b) UNIX sessions can come from anywhere, not just the PC's
  395. keyboard and screen.
  396.  
  397. (3.1) C-KERMIT AND AIX
  398.  
  399. For additional information see the AIX FAQ:
  400.  
  401.   http://www.emerson.emory.edu/services/aix-faq/
  402.   http://www.faqs.org/faqs/by-newsgroup/comp/comp.unix.aix.html
  403.   http://www.cis.ohio-state.edu/hypertext/faq/usenet/aix-faq/top.html
  404.   http://aixpdslib.seas.ucla.edu/
  405.   ftp://rtfm.mit.edu/pub/usenet/news.answers/aix-faq/part1
  406.   ftp://mirrors.aol.com/pub/rtfm/usenet-by-hierarchy/comp/unix/aix
  407.  
  408. and/or read the comp.unix.aix newsgroup.
  409.  
  410. Streaming transfers into AIX 4.2 or 4.3 (through the AIX Telnet server) have
  411. been observed to fail, when exactly the same kind of transfers into AIX 4.1
  412. work without incident.  The error reported by AIX is "interrupted system
  413. call".  Streaming transfers work perfectly, however, if the AIX Telnet server
  414. is removed from the picture (e.g, by using "set host * 3000" on AIX, or by
  415. using Rlogin instead of Telnet).  They also work perfectly if the Telnet
  416. connection is forced into binary mode (C-Kermit command "set telopt requested
  417. requested").  In case of file-transfer failure on a Telnet connection to AIX
  418. 4.2 or 4.3, tell AIX C-Kermit to "set streaming off".
  419.  
  420. About AIX version numbers:  "uname -a" tells the "two-digit" version number,
  421. such as "3.2" or "4.1".  The three-digit form can be seen with the "oslevel"
  422. command (this information is unavailable at the API level and is reportedly
  423. obtained by scanning the installed patch list).  Supposedly all three-digit
  424. versions within the same two-digit version (e.g. 4.3.1, 4.3.2) are binary
  425. compatible; i.e. a binary built on any one of them should run on all others.
  426.  
  427. IMPORTANT: Do NOT try to run AIX 3.x C-Kermit binaries on AIX 4.x (or vice
  428. versa).  Obtain -- or build -- the C-Kermit binary that is appropriate for
  429. your AIX version.  In general, it is always better to build from source code.
  430.  
  431. According to IBM's "From Strength to Strength" document (21 April 1998),
  432. in AIX 4.2 and later "Async supports speeds on native serial ports up to
  433. 115.2kbps".  However, no API is documented to achieve serial speeds higher
  434. than 38400 bps.  Apparently the way to do this -- which might or might not
  435. work only on the IBM 128-port multiplexer -- is:
  436.  
  437.   cxma-stty fastbaud /dev/tty0
  438.  
  439. which, according to "man cxma-stty":
  440.  
  441.   fastbaud Alters the baud rate table, so 50 baud becomes 57600 baud.
  442.   -fastbaud Restores the baud rate table, so 57600 baud becomes 50 baud.
  443.  
  444. Presumably (but not certainly) this extrapolates to 110 "baud" becomes
  445. 76800 bps, and 150 becomes 115200 bps.  So to use high serial speeds in AIX
  446. 4.2 or 4.3, the trick would be to give the "cxma-stty fastbaud" command for
  447. the desired tty device before starting Kermit, and then use "set speed 50",
  448. "set speed 110", or "set speed 150" to select 56700, 76800, or 115200 bps.
  449. It is not known whether cxma-stty requires privilege.
  450.  
  451. According to one report, "Further investigation with IBM seems to indicate
  452. that the only hardware capable of doing this is the 128-port multiplexor with
  453. one (or more) of the 16 port breakout cables (Enhanced Remote Async Node
  454. 16-Port EIA-232). We are looking at about CDN$4,000 in hardware just to hang a
  455. 56kb modem on there. Of course, we can then hang 15 more, if we want. This
  456. hardware combo is described to be good to 230.4kbps."
  457.  
  458. Another report says (quote from AIX newsgroup, March 1999):
  459.  
  460.   The machine type and the adapter determine the speed that one can actually
  461.   run at.  The older microchannel machines have much slower crystal
  462.   frequencies and may not go beyond 76,800.  A feature put into AIX 421
  463.   allows one to key in non-POSIX baud rates and if the uart can support that
  464.   speed, it will get set. this applies also to 43p's and beyond.  115200 is
  465.   the max for the 43P's native serial port.  As crytal frequencies continue
  466.   to increase, the built-in serial ports speeds will improve.  To use 'uucp'
  467.   or 'ate' at the higher baud rates, configure the port for the desired
  468.   speed, but set the speed of uucp or ate to 50.  Any non-POSIX speeds set
  469.   in the ttys configuration will the be used.  In the case of the 128-port
  470.   adapters or the ISA 8-port or PCI 8-port adapter, there are only a few
  471.   higher baud rates.
  472.  
  473.    a. Change the port  to enable high baud rates:
  474.  
  475.       B50 for 57600
  476.       B75 for 76800
  477.       B110 for 115200
  478.       B200 for 230000
  479.  
  480.    b. chdev -l ttyX -a fastbaud=enable
  481.  
  482.   For the 128 ports original style rans, only 57600 bps is supported.
  483.   For the new enhanced RANs, up to 230Kbps is supported.
  484.  
  485. (end quote)
  486.  
  487. Note that some RS/6000s (e.g. the IBM PowerServer 320) have nonstandard
  488. rectangular 10-pin serial ports; the DB-25 connector is NOT a serial port;
  489. it is a parallel printer port.  IBM cables are required for the serial ports,
  490. (The IBM RT PC also had rectangular serial ports -- perhaps the same as these,
  491. perhaps different.)
  492.  
  493. If you dial in to AIX through a modem that is connected directly to an AIX
  494. port (e.g. on the 128-port multiplexer) and find that data is lost, especially
  495. when uploading files to the AIX system (and system error logs report buffer
  496. overruns on the port):
  497.  
  498.  1. Make sure the port and modem are BOTH configured for hardware (RTS/CTS)
  499.     flow control.  The port is configured somewhere in the system
  500.     configuration, outside of Kermit.
  501.  
  502.  2. Tell C-Kermit to "set flow keep"; experimentation shows that SET FLOW
  503.     RTS/CTS has no effect when used in remote mode (i.e. on /dev/tty, as
  504.     opposed to a specify port device).
  505.  
  506. Several people have reported that C-Kermit (version unspecified) causes
  507. AIX 4.2 (or later) to "freeze" or "hang" or "halt".  No further details are
  508. known at this time.  However:
  509.  
  510.  1. No user-mode application should ever be able to make AIX or any other
  511.     version of UNIX freeze, hang, or halt; if it does, this indicates a
  512.     serious bug in AIX, which should be reported immediately to IBM.
  513.  
  514.  2. Fixes for bugs in the original AIX 4.2 tty (serial i/o) support
  515.     and other AIX bugs are available from IBM at:
  516.  
  517.       http://service.software.ibm.com/rs6000/
  518.  
  519.     Downloads -> Software Fixes -> Download FixDist gets an application
  520.     for looking up known problems.
  521.  
  522. Other people have reported that after upgrading AIX from 4.1 to 4.2, the "ttys
  523. hang" when they try to use Kermit.  Again, so far no further details are
  524. available.  However, others report that C-Kermit 6.0 works fine on both AIX
  525. 4.2 and 4.3 if it is rebuilt from source code.  Still others report that the
  526. original C-Kermit 6.0 binaries, built under AIX 4.1, work perfectly in AIX
  527. 4.2 and 4.3.
  528.  
  529. More recently, people have reported various kinds of problems running a
  530. C-Kermit binary built under AIX 4.1 or 4.2 on AIX 4.3.  There has been some
  531. speculation on the newsgroups about a new round binary incompatibility between
  532. AIX 4.3 and earlier versions -- some even suggest renumbered syscalls, but
  533. that seems unlikely.  Example: a user in Germany reported that the C-Kermit
  534. 6.0 AIX 4.1 binary would crash during file transfer when run on AIX 4.2, but
  535. the problems disappeared when running a binary that was built on AIX 4.2.
  536.  
  537. C-Kermit 6.0.192 and earlier were built by default without "BIGBUFOK" defined
  538. for AIX, and this limits the maximum size of macros, etc.  In particular, it
  539. affects the alphanumeric page macro (TAPMSG) distributed with C-Kermit 6.0.
  540. BIGBUFOK should be defined, and it is in C-Kermit 6.1 and later.  In the
  541. meantime use:
  542.  
  543.   make clean ; make aix???  KFLAGS=-DBIGBUFOK
  544.  
  545. Reportedly, telnet from AIX 4.1-point-something to non-Telnet ports does not
  546. work unless the port number is in the /etc/services file; it's not clear from
  547. the report whether this is a problem with AIX Telnet (in which case it would
  548. not affect Kermit), or with the sockets library (in which case it would).  The
  549. purported fix is IBM APAR IX61523.
  550.  
  551. Many problems reported with bidirectional terminal lines on AIX 3.2.x on the
  552. RS/6000.  Workaround: don't use bidirectional terminal lines, or write a
  553. shell-script wrapper for Kermit that turns getty off on the line before
  554. starting Kermit, or before Kermit attempts to do the SET LINE.  (But note:
  555. These problems MIGHT be fixed in C-Kermit 6.0 and later.)  The commands for
  556. turning getty off and on (respectively) are /usr/sbin/pdisable and
  557. /usr/sbin/penable.
  558.  
  559. Reportedly, all versions of IBM AIX use the same (undocumented) lockfile
  560. conventions as RTAIX.  If this is true, the "makes" for PS/2 AIX and AIX/370
  561. will have to be changed to use the RTAIX convention (it may be sufficient to
  562. simply add -DRTAIX to the make entry).  This should not be an issue in
  563. C-Kermit 7.0 or later, which now calls the AIX ttlock() family of library
  564. functions to create, check, and remove lockfiles.  (But it is not known
  565. which versions of AIX prior to 4.1 have working ttlock() functions; for
  566. example, the functions are present in AIX 3.2 but do not seem to work).
  567.  
  568. C-Kermit SET HOST or TELNET from one AIX 3.1 (or earlier) system to another
  569. won't work right unless you set your local terminal type to something other
  570. than AIXTERM.  When your terminal type is AIXTERM, AIX TELNET sends two
  571. escapes whenever you type one, and the AIX telnet server swallows one of them.
  572. This has something to do with the "hft" device.  This behavior seems to be
  573. removed in AIX 3.2 and later.
  574.  
  575. Transfer of binary -- and maybe even text -- files can fail on AIX 3.x.  The
  576. problem was traced to a facility in AIX whereby a particular port can have
  577. character-set translation done for it by the tty driver.  The following
  578. advice from a knowledgeable AIX user:
  579.  
  580.   (begin quote...)  [This feature] has to be checked (and set/cleared) with
  581.   a separate command, unfortunately stty doesn't handle this.  To check:
  582.  
  583.     $ setmaps
  584.     input map: none installed
  585.     output map: none installed
  586.  
  587.   If it says anything other than "none installed" for either one, it is likely
  588.   to cause a problem with kermit.  To get rid of installed maps:
  589.  
  590.     $ setmaps -t NOMAP
  591.  
  592.   However, I seem to recall that with some versions of AIX before 3.2.5, only
  593.   root could change the setting.  I'm not sure what versions - it might have
  594.   only been under AIX 3.1 that this was true.  At least with AIX 3.2.5 an
  595.   ordinary user can set or clear the maps.  (...end quote) And this would
  596.   imply that Kermit itself cannot be coded to take care of this, because it
  597.   would have to run as root.  On the same problem, another knowledgeable AIX
  598.   user says:
  599.  
  600.   The way to get information on the NLS mapping under AIX (3.2.5 anyway) is
  601.   as follows.  From the command line type:
  602.  
  603.     lsattr -l tty# -a imap -a omap -E -H
  604.  
  605.   Replace the tty number for the number sign above. This will give a human
  606.   readable output of the settings that looks like this;
  607.  
  608.     # lsattr -l tty2 -a imap -a omap -E -H
  609.     attribute value description     user_settable
  610.  
  611.     imap      none  INPUT map file  True
  612.     omap      none  OUTPUT map file True
  613.  
  614.   If you change the -H to a -O, you get output that can easily be processed
  615.   by another program or a shell script, for example:
  616.  
  617.     # lsattr -l tty2 -a imap -a omap -E -O
  618.     #imap:omap
  619.     none:none
  620.  
  621.   To change the settings from the command line, the chdev command is used
  622.   with the following syntax.
  623.  
  624.     chdev -l tty# -a imap='none' -a omap='none'
  625.  
  626.   Again substituting the appropriate tty port number for the number sign,
  627.   "none" being the value we want for C-Kermit.  Of course, the above can also
  628.   be changed by using the SMIT utility and selecting devices - tty.
  629.   (...end quote)
  630.  
  631. About AIX versions and hardware platforms (from the AIX FAQ):
  632.  
  633.   If you are using IBM's xlc (cc) compiler, the default is to use the common
  634.   instruction set, so the same binary will run on both RS/6000 and PowerPC.
  635.  
  636.   The option -mcpu=common makes GCC use the common instruction set.  Please
  637.   note that (unlike xlc) this is *not* the default with GCC on AIX.
  638.  
  639. A couple of other gotcha's:
  640.  
  641.   Use shared libraries.  The C runtime can and does change as IBM introduces
  642.   patches.  Also this avoids "Netscape syndrome."  They bound AIX 3 libraries
  643.   into their browser.  Although AIX 3 binaries will run on AIX 4, the AIX 3
  644.   libraries aren't totally compatible.
  645.  
  646.   AIX 4.2 changed the C runtime radically.  AIX 4.2 binaries won't run on AIX
  647.   4.1 or 3.anything.  AIX 3 binaries run on AIX 4.1 and AIX 4.2.
  648.  
  649. Of course, the moment you take any of this as gospel,  you'll get into big
  650. trouble, but my own experience has pretty much jibed with the above.
  651.  
  652. (end quote)
  653.  
  654. "Is AIX Year 2000 Compliant?"  According to a comp.unix.aix newsgroup posting
  655. from IBM Austin, version 4.2 is; earlier versions such as 4.1.x and 3.2.5
  656. require PTFs (which, as of Jan 1997, have not yet been issued).
  657.  
  658. Here is a sample configuration for setting up an xterm keyboard for VT220 or
  659. higher terminal emulation on AIX, courtesy of Bruce Momjian, Drexel Hill, PA.
  660. Xterm can be started like this:
  661.  
  662. xterm $XTERMFLAGS +rw +sb +ls $@ -tm 'erase ^? intr ^c' -name vt220 \
  663.         -title vt220 -tn xterm-220 "$@" &
  664.  
  665. ---------------------------------------------------------------------------
  666. XTerm*VT100.Translations: #override \n\
  667.     <Key>Home: string(0x1b) string("[3~") \n \
  668.     <Key>End: string(0x1b) string("[4~") \n
  669. vt220*VT100.Translations: #override \n\
  670. Shift    <Key>F1: string("~") \n \
  671. Shift    <Key>F2: string("~") \n \
  672. Shift    <Key>F3: string("~") \n \
  673. Shift     <Key>F4: string("~") \n \
  674. Shift    <Key>F5: string("~") \n \
  675. Shift    <Key>F6: string("~") \n \
  676. Shift    <Key>F7: string("~") \n \
  677. Shift    <Key>F8: string("~") \n \
  678. Shift    <Key>F9: string("~") \n \
  679. Shift    <Key>F10: string("~") \n \
  680. Shift    <Key>F11: string("~") \n \
  681. Shift    <Key>F12: string("~") \n \
  682.     <Key>Print: string(0x1b) string("[32~") \n\
  683.     <Key>Cancel: string(0x1b) string("[33~") \n\
  684.     <Key>Pause: string(0x1b) string("[34~") \n\
  685.     <Key>Insert: string(0x1b) string("[2~") \n\
  686.     <Key>Delete: string(0x1b) string("[3~") \n\
  687.     <Key>Home: string(0x1b) string("[1~") \n\
  688.     <Key>End: string(0x1b) string("[4~") \n\
  689.     <Key>Prior: string(0x1b) string("[5~") \n\
  690.     <Key>Next: string(0x1b) string("[6~") \n\
  691.     <Key>BackSpace: string(0x7f) \n\
  692.     <Key>Num_Lock: string(0x1b) string("OP") \n\
  693.     <Key>KP_Divide: string(0x1b) string("Ol") \n\
  694.     <Key>KP_Multiply: string(0x1b) string("Om") \n\
  695.     <Key>KP_Subtract: string(0x1b) string("OS") \n\
  696.     <Key>KP_Add: string(0x1b) string("OM") \n\
  697.     <Key>KP_Enter: string(0x1b) string("OM") \n\
  698.     <Key>KP_Decimal: string(0x1b) string("On") \n\
  699.     <Key>KP_0: string(0x1b) string("Op") \n\
  700.     <Key>KP_1: string(0x1b) string("Oq") \n\
  701.     <Key>KP_2: string(0x1b) string("Or") \n\
  702.     <Key>KP_3: string(0x1b) string("Os") \n\
  703.     <Key>KP_4: string(0x1b) string("Ot") \n\
  704.     <Key>KP_5: string(0x1b) string("Ou") \n\
  705.     <Key>KP_6: string(0x1b) string("Ov") \n\
  706.     <Key>KP_7: string(0x1b) string("Ow") \n\
  707.     <Key>KP_8: string(0x1b) string("Ox") \n\
  708.     <Key>KP_9: string(0x1b) string("Oy") \n
  709.  
  710. !    <Key>Up: string(0x1b) string("[A") \n\
  711. !    <Key>Down: string(0x1b) string("[B") \n\
  712. !    <Key>Right: string(0x1b) string("[C") \n\
  713. !    <Key>Left: string(0x1b) string("[D") \n\
  714.  
  715. *visualBell:    true
  716. *saveLines:    1000
  717. *cursesemul:    true
  718. *scrollKey:    true
  719. *scrollBar:    true
  720.  
  721. (3.2) C-KERMIT AND HP-UX
  722.  
  723. For further information, read the comp.sys.hp.hpux newsgroup.
  724.  
  725. 3.2.0. Common Problems
  726.  
  727. The following sequence:
  728.  
  729.   set line /dev/cua0p0 ; or other device
  730.   set speed 19200      ; or other normal speed
  731.  
  732. produces the message "?Unsupported line speed".  This means the port is not
  733. configured for dialout.  Go into SAM and configure the port for dialout.
  734.  
  735. Some HP workstations have a BREAK/RESET key.  If you hit this key while
  736. C-Kermit is running, it might kill or suspend the C-Kermit process.  C-Kermit
  737. arms itself against these signals, but evidently the BREAK/RESET key is -- at
  738. least in some circumstances, on certain HP-UX versions -- too powerful to be
  739. caught.  (Some report that the first BREAK/RESET shows up as SIGINT and is
  740. caught by C-Kermit's *former* SIGINT handler even when SIGINT is currently set
  741. to SIG_IGN; the second kills Kermit; other reports suggest the first
  742. BREAK/RESET sends a SIGTSTP (suspend) signal to Kermit, which it catches and
  743. suspends itself.)  You can tell C-Kermit to ignore suspend signals with SET
  744. SUSPEND OFF.  You can tell C-Kermit to ignore SIGINT with SET COMMAND
  745. INTERRUPTION OFF.  It is not known whether these commands also grant immunity
  746. to the BREAK/RESET key (one report states that with SET SUSPEND OFF, the
  747. BREAK/RESET key is ignored the first four times, but kills Kermit the 5th
  748. time).  In any case:
  749.  
  750.  1. If this key is mapped to SIGINT or SIGTSTP, C-Kermit catches or ignores
  751.     it, depending on which mode (CONNECT, command, etc) Kermit is in.
  752.  
  753.  2. If it causes HP-UX to kill C-Kermit, there is nothing C-Kermit can do to
  754.     prevent it.
  755.  
  756. When HP-UX is on the remote end of the connection, it is essential that HP-UX
  757. C-Kermit be configured for Xon/Xoff flow control (this is the default, but in
  758. case you change it and then experience file-transfer failures, this is a
  759. likely reason).
  760.  
  761. 3.2.1. Building C-Kermit on HP-UX
  762.  
  763. During the C-Kermit 6.0 Beta cycle, something happened to ckcpro.w (or, more
  764. precisely, the ckcpro.c file that is generated from it) which causes HP
  765. optimizing compilers under HP-UX versions 7.0 and 8.0 (apparently on all
  766. platforms) as well as under HP-UX 9.0 on Motorola platforms only, to blow up.
  767. In versions 6.1 and 7.0 the problem has spread to other modules.
  768.  
  769. The symptoms vary from the system grinding to a halt, to the compiler
  770. crashing, to the compilation of the ckcpro.c module taking very long periods
  771. of time, like 9 hours.  This problem is handled by compiling the modules
  772. that tickle it without optimization; the new C-Kermit makefile takes care of
  773. this, and shows how to do it in case the same thing begins happening with
  774. other modules.
  775.  
  776. On HP-UX 9.0, a kernel parameter, maxdsiz (maximum process data segment size),
  777. seems to be important.  On Motorola systems, it is 16MB by default, whereas on
  778. RISC systems the default is much bigger.  Increasing maxdsiz to about 80MB
  779. seems to make the problem go away, but only if the system also has a lot of
  780. physical memory -- otherwise it swaps itself to death.
  781.  
  782. The optimizing compiler might complain about "some optimizations skipped" on
  783. certain modules, due to lack of space available to the optimizer.  You can
  784. increase the space (the incantation depends on the particular compiler version
  785. -- see the makefile), but doing so tends to make the compilations take a much
  786. longer time.  For example, the "hpux100o+" makefile entry adds the "+Onolimit"
  787. compiler flag, and about an hour to the compile time on an HP-9000/730.  But
  788. it *does* produce an executable that is about 10K smaller :-)
  789.  
  790. In the C-Kermit 7.0 makefile, all HP-UX entries automatically skip
  791. optimization of problematic modules.
  792.  
  793. 3.2.2. Performance
  794.  
  795. An unexpected slowness has been noted when transferring files over local
  796. Ethernet connections when an HP-UX system (9.0 or later, perhaps also earlier
  797. versions) is on the remote end.   The following experiment was conducted to
  798. determine the cause.  C-Kermit 6.0 was used; the situation is slightly better
  799. using C-Kermit 7.0's streaming feature.
  800.  
  801. The systems were HP-UX 10.00 (on 715/33) and SunOS 4.1.3 (on Sparc-20), both
  802. on the same local 10Mbps Ethernet, packet length 4096, parity none, control
  803. prefixing "cautious", using only local disks on each machine -- no NFS.  In
  804. the C-Kermit 6.0 (ACK/NAK) case, the window size was 20; in the streaming case
  805. there is no window size.  The test file was C-Kermit executable, transferred
  806. in binary mode.  Conditions were relatively poor: the Sun and the local net
  807. heavily loaded; the HP system is old, slow, and memory-constrained.
  808.  
  809.                    C-Kermit 6.0...    C-Kermit 7.0...
  810.  Local    Remote   ACK/NAK........    Streaming......
  811.  Client   Server   Send    Receive    Send    Receive
  812.   Sun      HP       36       18        64       18
  813.   HP       HP       25       15        37       16
  814.   HP       Sun      77       83       118       92
  815.   Sun      Sun      60       60       153      158
  816.  
  817. So whenever HP is the remote we have poor performance.  Why?
  818.  
  819.  . Changing file display to CRT has no effect (so it's not the curses
  820.    library on the client side).
  821.  
  822.  . Changing TCP RECV-BUFFER or SEND-BUFFER has little effect.
  823.  
  824.  . Telling the client to make a binary-mode connection (SET TELNET BINARY
  825.    REQUESTED, which successfully negotiates a binary connection) has no
  826.    effect on throughput.
  827.  
  828. BUT...  If I start C-Kermit as a TCP server:
  829.  
  830.   set host * 3000
  831.   server
  832.  
  833. and then from the client "set host blah 3000", I get:
  834.  
  835.                    C-Kermit 6.0...    C-Kermit 7.0...
  836.  Local    Remote   ACK/NAK........    Streaming......
  837.  Client   Server   Send    Receive    Send    Receive
  838.   Sun      HP       77       67       106      139
  839.   HP       HP       50       50        64       62
  840.   HP       Sun      57       85       155      105
  841.   Sun      Sun      57       50       321      314
  842.  
  843. Therefore the HP-UX telnet server or pty driver seems to be adding more
  844. overhead than the SunOS one, and most others.  When going through this type of
  845. connection (a remote telnet server) there is little Kermit can do improve
  846. matters, since the telnet server and pty driver are between the two Kermits,
  847. and neither Kermit program can have any influence over them (except putting
  848. the Telnet connection in binary mode, but that doesn't help).
  849.  
  850. (The numbers for the HP-HP transfers are lower than the others since both
  851. Kermit processes are running on the same slow CPU.)
  852.  
  853. 3.2.3. Dialing Out and UUCP Lockfiles in HP-UX
  854.  
  855. Before you can use serial ports on the HP-9000, you must configure them as
  856. either "terminals" or "modems" with SAM ("peripheral devices"..."terminals and
  857. modems"), as described in the HP manual, "Configuring HP-UX for Peripherals:
  858. HP 9000".  If you attempt to use a serial device before it has been configured
  859. this way, it will not work properly; typical symptoms are (a) no communication
  860. at all; (b) nonfunctional modem signals; and/or (c) massive amounts of
  861. character loss in both directions.
  862.  
  863. In HP-UX 9.0, serial device names began to change.  The older names looked
  864. like "/dev/cua00", "/dev/tty01", etc (sometimes with only one digit).
  865. The newer names have two digits with the letter "p" in between.  HP-UX 8.xx
  866. and earlier have the older form, HP-UX 10.00 and later have the newer form.
  867. HP-UX 9.xx has the newer form on Series 800 machines, and the older form on
  868. other hardware models.  The situation is summarized in the following table:
  869.  
  870.   Converged HP-UX Serial I/O Filenames : TTY Mux Naming
  871.   ---------------------------------------------------------------------
  872.   General meaning      Old Form     S800 9.0           Convio 10.0
  873.   ---------------------------------------------------------------------
  874.   tty* hardwired ports  tty<YY>     tty<X>p<Y>         tty<D>p<p>
  875.                             diag:mux<X>        diag:mux<D>
  876.   ---------------------------------------------------------------------
  877.   ttyd* dial-in modems  ttyd<YY>    ttyd<X>p<Y>        ttyd<D>p<p>
  878.                             diag:ttyd<X>p<Y>   diag:ttyd<D>p<p>
  879.   ---------------------------------------------------------------------
  880.   cua* auto-dial out    cua<YY>     cua<X>p<Y>         cua<D>p<p>
  881.                             diag:cua<X>p<Y>
  882.   ---------------------------------------------------------------------
  883.   cul* dial-out         cul<YY>     cul<X>p<Y>         cul<D>p<p>
  884.                             diag:cul<X>p<Y>
  885.   ---------------------------------------------------------------------
  886.    <X>= LU (Logical Unit)  <D>= Devspec (decimal card instance)
  887.    <Y> or <YY> = Port      <p>= Port
  888.  
  889. For dialing out, you should use the cua or cul devices.  When C-Kermit's
  890. CARRIER setting is AUTO or ON, C-Kermit should pop back to its prompt
  891. automatically if the carrier signal drops, e.g. when you log out from the
  892. remote computer or service.  If you use the tty<D>p<d> (e.g. tty0p0) device,
  893. the carrier signal should be ignored.  The tty<D>p<d> device should be used
  894. for direct connections where the carrier signal does not follow RS-232
  895. conventions (use the cul device for hardwired connections through a true null
  896. modem).  Do not use the ttyd<D>p<d> device for dialing out.
  897.  
  898. Kermit's access to serial devices is controlled by "UUCP lockfiles", which are
  899. intended to prevent different users using different software programs (Kermit,
  900. cu, etc, and UUCP itself) from accessing the same serial device at the same
  901. time.  When a device is in use by a particular user, a file with a special
  902. name is created in:
  903.  
  904.   /var/spool/locks  (HP-UX 10.00 and later)
  905.   /usr/spool/uucp   (HP-UX 9.xx and earlier)
  906.  
  907. The file's name indicates the device that is in use, and its contents
  908. indicates the process ID (pid) of the process that is using the device.  Since
  909. serial devices and the locks directory are not both publicly readable and
  910. writable, Kermit and other communication software must be installed setuid to
  911. the owner (bin) of the serial device and setgid to the group (daemon) of the
  912. /var/spool/locks directory.  Kermit's setuid and setgid privileges are enabled
  913. only when opening the device and accessing the lockfiles.
  914.  
  915. Let's say "unit" means a string of decimal digits (the interface instance
  916. number) followed (in HP-UX 10.00 and later) by the letter "p" (lowercase),
  917. followed by another string of decimal digits (the port number on the
  918. interface), e.g.:
  919.  
  920.   "0p0", "0p1", "1p0", etc       (HP-UX 10.00 and later)
  921.   "0p0", "0p1", "1p0", etc       (HP-UX 9.xx on Series 800)
  922.   "00",  "01",  "10",  "0", etc  (HP-UX 9.xx not on Series 800)
  923.   "00",  "01",  "10",  "0", etc  (HP-UX 8.xx and earlier)
  924.  
  925. Then a normal serial device (driver) name consists of a prefix ("tty", "ttyd",
  926. "cua", "cul", or possibly "cuad" or "culd") followed by a unit, e.g. "cua0p0".
  927. Kermit's treatment of UUCP lockfiles is as close as possible to that of the
  928. HP-UX "cu" program.  Here is a table of the lockfiles that Kermit creates for
  929. unit 0p0:
  930.  
  931.   Selection      Lockfile 1     Lockfile 2
  932.   ------------   ------------   ------------
  933.   /dev/tty0p0    LCK..tty0p0    (none)
  934. * /dev/ttyd0p0   LCK..ttyd0p0   (none)
  935.   /dev/cua0p0    LCK..cua0p0    LCK..ttyd0p0
  936.   /dev/cul0p0    LCK..cul0p0    LCK..ttyd0p0
  937.   /dev/cuad0p0   LCK..cuad0p0   LCK..ttyd0p0
  938.   /dev/culd0p0   LCK..culd0p0   LCK..ttyd0p0
  939.   <other>        LCK..<other>   (none)
  940.  
  941. (* = Dialin device, should not be used.)
  942.  
  943. In other words, if the device name begins with "cu", a second lockfile for
  944. the "ttyd" device, same unit, is created, which should prevent dialin access
  945. on that device.
  946.  
  947. The <other> case allows for symbolic links, etc, but of course it is not
  948. foolproof since we have no way of telling which device is really being used.
  949.  
  950. When C-Kermit tries to open a dialout device whose name ends with a "unit", it
  951. searches the lockfile directory for all possible names for the same unit.  For
  952. example, if user selects /dev/cul2p3, Kermit looks for lockfiles named:
  953.  
  954.   LCK..tty2p3
  955.   LCK..ttyd2p3
  956.   LCK..cua2p3
  957.   LCK..cul2p3
  958.   LCK..cuad2p3
  959.   LCK..culd2p3
  960.  
  961. If any of these files are found, Kermit opens them to find out the ID (pid) of
  962. the process that created them; if the pid is still valid, the process is still
  963. active, and so the SET LINE command fails and the user is informed of the pid
  964. so s/he can use "ps" to find out who is using the device.
  965.  
  966. If the pid is not valid, the file is deleted.  If all such files (i.e. with
  967. same "unit" designation) are successfully removed, then the SET LINE command
  968. succeeds; up to six messages are printed telling the user which "stale
  969. lockfiles" are being removed.
  970.  
  971. When the "set line" command succeeds in HP-UX 10.00 and later, C-Kermit also
  972. creates a UNIX System V R4 "advisory lock" as a further precaution (but not
  973. guarantee) against any other process obtaining access to the device while
  974. you are using it.
  975.  
  976. If the selected device was in use by "cu", Kermit can't open it, because "cu"
  977. has changed its ownership, so we never get as far as looking at the lockfiles.
  978. In the normal case, we can't even look at the device to see who the owner is
  979. because it is visible only to its (present) owner.  In this case, Kermit says
  980. (for example):
  981.  
  982.   /dev/cua0p0: Permission denied
  983.  
  984. When Kermit releases a device it has successfully opened, it removes all the
  985. lockfiles that it created.  This also happens whenever Kermit exits "under its
  986. own power".
  987.  
  988. If Kermit is killed with a device open, the lockfile(s) are left behind.  The
  989. next Kermit program that tries to assign the device, under any of its various
  990. names, will automatically clean up the stale lockfiles because the pids they
  991. contain are invalid.  The behavior of cu and other communication programs
  992. under these conditions should be the same.
  993.  
  994. 3.2.4. HP-UX 5.00
  995.  
  996. The HP-UX 5.00 version of C-Kermit does not include the fullscreen
  997. file-transfer because of problems with the curses library.
  998.  
  999. If HP-UX 5.21 with Wollongong TCP/IP is on the remote end of a Telnet
  1000. connection, streaming transfers to HP-UX invariably fail.  Workaround:
  1001. SET STREAMING OFF.  Packets longer than about 1000 should not be used.
  1002. Transfers from these systems, however, can use streaming and/or longer
  1003. packets.
  1004.  
  1005. Reportedly, "[there is] a bug in C-Kermit using HP-UX version 5.21 on the
  1006. HP-9000 series 500 computers.  It only occurs when the controlling terminal
  1007. is using an HP-27140 six-port modem mux.  The problem is not present if the
  1008. controlling terminal is logged into an HP-27130 eight-port mux.  The symptom
  1009. is that just after dialing successfully and connecting Kermit locks up and
  1010. the port is unusable until both forks of Kermit and the login shell are
  1011. killed."  (This report predates C-Kermit 6.0 and might no longer apply.)
  1012.  
  1013. 3.2.5. HP-UX 8.00
  1014.  
  1015. To make C-Kermit work on HP-UX 8.05 on a model 720, obtain and install HP-UX
  1016. patch PHNE_0899.  This patch deals with a lot of driver issues, particularly
  1017. related to communication at higher speeds.
  1018.  
  1019. And this report just in:
  1020.  
  1021. "On HP-UX 8 DON'T install 'tty patch' PHKL_4656, install PHKL_3047 instead!
  1022. Yesterday I tried this latest tty patch PHKL_4656 and had terrible problems.
  1023. This patch should fix RTS/CTS problems. With text transver all looks nice.
  1024. But when I switched over to binary files the serial interface returned only
  1025. rubish to C-Kermit. All sorts of protocol, CRC and packed errors I had. After
  1026. several tests and after uninstalling that patch, all transvers worked fine.
  1027. MB's of data without any errors.  So keep your fingers away from that patch.
  1028. If anybody needs the PHKL_3047 patch I have it here. It is no longer availabel
  1029. from HP's patch base."
  1030.  
  1031. 3.2.6. HP-UX 9.00 AND LATER
  1032.  
  1033. HP-UX 9.00 and 9.01 need patch PHNE_10572 (note: this replaces PHNE_3641)
  1034. for hptt0.o, asio0.o, and ttycomn.o in libhp-ux.a.  Contact Hewlett Packard
  1035. if you need this patch.  Without it, the dialout device (tty) will be hung
  1036. after first use; subsequent attempts to use will return an error like "device
  1037. busy".  (There are also equivalent patches for s700 9.03 9.05 9.07
  1038. (PHNE_10573) and s800 9.00 9.04 (PHNE_10416).
  1039.  
  1040. When C-Kermit is in server mode, it might have trouble executing REMOTE HOST
  1041. commands.  This problem happens under HP-UX 9.00 (Motorola) and HP-UX 9.01
  1042. (RISC) IF the C-Shell is the login shell AND with the C-Shell Revision 70.15.
  1043. Best thing is to install HP's Patch PHCO_4919 for Series 300/400 and PHCO_5015
  1044. for the Series 700/800.  PHCO_5015 is called "s700_800 9.X cumulative csh(1)
  1045. patch with memory leak fix" which works for HP-UX 9.00, 9.01, 9.03, 9.04, 9.05
  1046. and 9.07.  At least you need C-Shell Revision 72.12!
  1047.  
  1048. C-Kermit works fine -- including its curses-based file-transfer display -- on
  1049. the console terminal, in a remote session (e.g. when logged in to the HP 9000
  1050. on a terminal port or when telnetted or rlogin'd), and in an HP-VUE hpterm
  1051. window or an xterm window.
  1052.  
  1053. 3.2.7. HP-UX 10.10 AND LATER
  1054.  
  1055. C-Kermit is included as part of the HP-UX operating system by contract between
  1056. Hewlett Packard and Columbia University for all HP-UX releases 10.00 and
  1057. later.  Each level of HP-UX includes a freshly built C-Kermit binary in
  1058. /bin/kermit, which should work correctly.  However, if you are building your
  1059. own or downloading from Columbia, you should be aware that you can only use a
  1060. binary that was built under the same OS level as you are running.  As of
  1061. C-Kermit version 6.0, HP-UX 10.xx / 11.xx binaries announce, in the startup
  1062. herald and the VERSION command, the explicit HP-UX version they were built
  1063. for: HP-UX 10.00, 10.01, 10.10, 10.20, 10.30, or 11.00.  If there is a version
  1064. mismatch, HP-UX (not Kermit) is very likely to do something like "Invalid
  1065. version for shared lib /usr/lib/libc.1, IOT trap (core dumped)" during program
  1066. load.
  1067.  
  1068. Beginning in 10.10, libcurses is linked to libxcurses, the new UNIX95 (X/Open)
  1069. version of curses, which has some serious bugs; some routines, when called,
  1070. would hang and never return, some would dump core.  Evidently libxcurses
  1071. contains a select() routine, and whenever C-Kermit calls what it thinks is the
  1072. regular (sockets) select(), it gets the curses one, causing a segmentation
  1073. fault.  There is a patch for this from HP, PHCO_8086, "s700_800 10.10
  1074. libcurses patch", "shared lib curses program hangs on 10.10", "10.10 enhanced
  1075. X/Open curses core dumps due to using wrong select call", 96/08/02 (you can
  1076. tell if the patch is installed with "what /usr/lib/libxcurses.1"; the unpatched
  1077. version is 76.20, the patched one is 76.20.1.2).  It has been verified that
  1078. C-Kermit works OK with the patched library, but results are not definite for
  1079. HP-UX 10.20 or higher.
  1080.  
  1081. To ensure that C-Kermit works even on non-patched HP-UX 10.10 systems,
  1082. separate makefile entries are provided for HP-UX 10.00/10.01, 10.10, 10.20,
  1083. etc, in which the entries for 10.10 and above link with libHcurses, which is
  1084. "HP curses", the one that was used in 10.00/10.01.
  1085.  
  1086. 3.2.8. HP-UX and X.25
  1087.  
  1088. Although C-Kermit presently does not include built-in support for HP-UX X.25
  1089. (as it does for the Sun and IBM X.25 products), it can still be used to make
  1090. X.25 connections as follows: start Kermit and then telnet to localhost.  After
  1091. logging back in, start padem as you would normally do to connect over X.25.
  1092. Padem acts as a pipe between Kermit and X.25.  In C-Kermit 7.0, you might also
  1093. be able to avoid the "telnet localhost" step by using:
  1094.  
  1095.   C-Kermit> pty padem <address>
  1096.  
  1097. This will work if padem uses standard i/o (see Section 2.7 of ckermit2.txt).
  1098.  
  1099. (3.3) C-KERMIT AND LINUX
  1100.  
  1101. For further information, read the comp.os.linux.misc, comp.os.linux.answers,
  1102. and other Linux-oriented newsgroups, and:
  1103.  
  1104.  The Linux Document Project (LDP):
  1105.   . http://sunsite.unc.edu/LDP/
  1106.  
  1107.  The Linux FAQ:
  1108.   . http://sunsite.unc.edu/LDP/FAQ/Linux-FAQ.html
  1109.  
  1110.  The Linux HOWTOs (especially the Serial HOWTO):
  1111.   . http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html
  1112.   . ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
  1113.   . ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO
  1114.   . http://sunsite.unc.edu/LDP/HOWTO/
  1115.   . http://sunsite.unc.edu/LDP/hmirrors.html
  1116.  
  1117. Also see general comments on PC-based UNIXes in Section 3.0.
  1118.  
  1119. Did you know: DECnet is available for Linux?  See:
  1120.  
  1121.   http://linux.dreamtime.org/decnet/
  1122.  
  1123. (But there is no support for it in C-Kermit -- anybody interested in adding
  1124. it, please let me know.)
  1125.  
  1126. Before proceeding, let's handle the two most frequently asked question in
  1127. the Linux newsgroups:
  1128.  
  1129.  1. Neither C-Kermit not any other Linux application can use Winmodems
  1130.     (with one exception).  See section 3.0 for details.
  1131.  
  1132.  2. "Why does it take such a long time to make a telnet connection to (or
  1133.     from) my Linux PC?" (this applies to C-Kermit or to regular Telnet).
  1134.     Most telnet servers these days perform reverse DNS lookups on the client
  1135.     (for security and/or logging reasons).  If the Telnet client cannot be
  1136.     found by the local DNS server, the DNS request goes out to the Internet
  1137.     at large, and this can take quite some time.  The solution to this
  1138.     problem is to make sure that both client and host are registered in DNS.
  1139.     C-Kermit itself performs reverse DNS lookups unless you tell it not to.
  1140.     This is to allow C-Kermit to let you know which host it is actually
  1141.     connected to in case you have made a connection to a "host pool"
  1142.     (multihomed host).  You can disable C-Kermit's reverse DNS lookup with
  1143.     SET TCP REVERSE-DNS-LOOKUP OFF.
  1144.  
  1145. 3.3.1.  Problems Building C-Kermit for Linux
  1146.  
  1147. Modern Linux distributions like Red Hat give you a choice at installation
  1148. whether to include "developer tools".  Obviously, you can't build C-Kermit or
  1149. any other C program from source code if you have not installed the developer
  1150. tools.  Note that you might also have to choose (separately) to install the
  1151. "curses" or "ncurses" terminal control library -- it is possible to install
  1152. the C compiler and linker, but omit the (n)curses library and headers.  If
  1153. curses is not installed, you will not be able to build a version of C-Kermit
  1154. that supports the fullscreen file-transfer display, in which case you'll need
  1155. to use the "linuxnc" makefile target (nc = No Curses) or else install ncurses
  1156. before building.
  1157.  
  1158. Be sure to read the comments in the "linux:" makefile entry.  There are all
  1159. sorts of confusing issues caused by the many and varied Linux distributions.
  1160. Some of the worst involve the curses library and header files: where are they,
  1161. what are they called, which ones are they really?  Other vexing questions
  1162. involve libc5 vs libc6 vs glibc vs glibc2 (C libraries), gcc vs egcs vs lcc
  1163. (compilers), plus using or avoiding features that were added in a certain
  1164. version of Linux or a library or a distribution, and are not available in
  1165. others.
  1166.  
  1167. Linux C-Kermit, like all other UNIX C-Kermit versions, was built traditionally
  1168. with curses.h and the curses library.  However, this library was evidently so
  1169. buggy (users reported that, after doing a file transfer using the fullscreen
  1170. display, "screen scrolling locks up" and the cursor "is stuck on the bottom of
  1171. the screen", etc), that a new curses library, called ncurses, was developed to
  1172. replace it.  C-Kermit, as of version 6.1, uses ncurses rather than curses.
  1173.  
  1174. After modern practice, ncurses is dynamically linked, rather than linked into
  1175. the executable.  This means a certain relationship must obtain between the
  1176. version number referenced in the executable and the version number of the
  1177. library.  But there are evidently several different numbering systems for
  1178. libncurses.so -- e.g. 1.9.9e is another "name" for 3.0 -- but the program
  1179. loader doesn't know that and so won't run the program.  Also the library
  1180. and/or terminfo database might be in a different place on the target system
  1181. (e.g. /usr/share/terminfo) than it was on the build system (e.g.
  1182. /usr/lib/terminfo).  Solution: Create the appropriate symbolic links and/or
  1183. rebuild C-Kermit yourself from source code, and if you have additional
  1184. trouble, come back and read the rest of this section.
  1185.  
  1186. Of course static linking is also a possibility, but this makes the executable
  1187. MUCH bigger and introduces new problems of its own.
  1188.  
  1189. From the March 1999 Kermit newsgroup traffic:
  1190.   : When I start Kermit (under Redhat Linux 5.2), it complains about not
  1191.   : being able to recognise my terminal type - I've tried all the obvious
  1192.   : terminal types - which ones can I use?  Or can I get it to recognise
  1193.   : xterm?
  1194.   :
  1195.   Assuming that you can use full screen programs, this looks identical to the
  1196.   problem introduced by RedHat with 5.1.  They moved the curses library, and
  1197.   didn't [ leave a link from the old location to the new one ]:
  1198.  
  1199.   To fix: cd /usr/share; ln -s terminfo ../lib
  1200.  
  1201. The termcap library is no longer referenced in the Linux target in the
  1202. makefile, since its functions are supposedly incorporated into the ncurses and
  1203. curses libraries.  However, should any termcap-related entry points come up
  1204. undefined at link time (_tgetent, _tgoto, _tputs, etc), it might be necessary
  1205. to add -ltermcap back to LIBS.  But then you might find that the termcap
  1206. library is not in /usr/lib after all, but has been moved to /usr/lib/termcap/,
  1207. in which case you'll need to make a symlink, or do something like:
  1208.  
  1209.   "LIBS = -L/usr/lib/curses -lcurses -L/usr/lib/termcap -ltermcap"
  1210.  
  1211. Different UUCP lockfile conventions are used by different Linux versions
  1212. and/or distributions.  In C-Kermit 6.0 and later, "make linux" uses
  1213. /var/lock/LCK..name, decimal ASCII 10-byte PID string with leading spaces
  1214. because -DLINUXFSSTND ("Linux File System Standard") is included in the
  1215. compilation CFLAGS.  If you remove this definition, C-Kermit will use the
  1216. earlier arrangement of integer PID, /usr/spool/uucp/LCK..name.  The leading
  1217. spaces are required by FSSTND 1.2, but FSSTND 1.0 required leading zeros; to
  1218. get the leading zeros, also include -DFSSTND10.  Use whichever option agrees
  1219. with your uucp, cu, tip, etc, programs.
  1220.  
  1221. One user reported problems building C-Kermit under Linux 2.0.30/Slackware 96,
  1222. errors like:
  1223.  
  1224.   /usr/include/linux/socket.h:77: warning: `PF_AAL5' redefined
  1225.   /usr/local/include/socketbits.h:68: warning: this is the location of the
  1226.   previous definition
  1227.   ckutio.c:4679: `TIOCGSERIAL' undeclared (first use this function)
  1228.   ckutio.c:4685: `TIOCSSERIAL' undeclared (first use this function)
  1229.   ckutio.c:6092: warning: passing arg 3 of `select' from incompatible
  1230.   pointer type
  1231.  
  1232. etc etc.  Diagnosis: These were caused by installing some other package, which
  1233. created files in /usr/local/include.  Cure: rm -rf /usr/local/include, and
  1234. start over.
  1235.  
  1236. Reportedly, building C-Kermit 6.0 on Linux 1.1.33 and 1.1.34 gets fatal
  1237. compilation errors due to inconsistencies in the Linux header files.  Linux
  1238. kernel versions prior to 1.1.33 and later than 1.1.34 should be OK.  (Also,
  1239. C-Kermit 6.1 and later should be OK since we no longer include kernel header
  1240. files.)
  1241.  
  1242. Reportedly there is a bug in gcc 2.5.8 with signed to unsigned compares
  1243. that can wreak havoc when Kermit (or most any other program) is compiled with
  1244. this version of gcc; reportedly this can be worked around, at least in part,
  1245. by adding "-fno-unroll-loops" to the gcc compilation options.  (This problem
  1246. is evidently fixed in more recent gcc releases.)
  1247.  
  1248. Reportedly, if you have the iBCS2 (Intel Binary Compatibility Standard 2)
  1249. module installed, you can also run SCO Xenix and UNIX binaries under Linux,
  1250. including the SCO C-Kermit binaries, shareable libraries and all.
  1251. (iCBS2 is available via anonymous ftp from tsx-11.mit.edu, along with an
  1252. SCO libc_s compatibility module for Linux).
  1253.  
  1254. There is evidently a minor problem with GCC (version unknown) on (64-bit)
  1255. Alpha platforms, in which it complains:
  1256.  
  1257.   warning: cast to pointer from integer of different size
  1258.  
  1259. whenever it encounters a legitimate trinary expression like:
  1260.  
  1261.   integer ? "string1" : "string2"
  1262.  
  1263. (The "integer" can also be an integer-valued expression.)  These warnings
  1264. appear to be harmless.
  1265.  
  1266. 3.3.2. Problems with Serial Devices in Linux
  1267.  
  1268.   Also see: "man setserial", "man irqtune".
  1269.   And: Sections 3.0, 6, 7, and 8 of this document.
  1270.  
  1271. Don't expect it to be easy.  Queries like the following are posted to the
  1272. Linux newsgroups almost daily:
  1273.  
  1274.   Problem of a major kind with my Compaq Presario 1805 in the sense that
  1275.   the pnpdump doesn't find the modem and the configuration tells me that
  1276.   the modem is busy when I set everything by hand!
  1277.  
  1278.   I have <some recent SuSE distribution>, kernel 2.0.35. Using the Compaq
  1279.   tells me that the modem (which is internal) is on COM2, with the usual
  1280.   IRQ and port numbers. Running various Windows diagnostics show me
  1281.   AT-style commands exchanged so I have no reason to beleive that it is a
  1282.   Winmodem. Also, the diagnostics under Win98 tell me that I am talking to
  1283.   an NS 16550AN.
  1284.  
  1285. [Editor's note: This does not necessarily mean it isn't a Winmodem.]
  1286.  
  1287.   Under Linux, no joy trying to talk to the modem on /dev/cua1 whether
  1288.   via. minicom, kppp, or chat. kppp at least tells me that tcgetattr()
  1289.   failed.
  1290.  
  1291.   Usage of setserial ("setserial /dev/cua1 port 0x2F8 irq 3 autoconfig"
  1292.   followed by "setserial -g /dev/cua1") tells me that the uart is
  1293.   'unknown'. I have tried setting the UART manullay via. setserial to
  1294.   16550A, 16550, and the other one (8550?) (I didn't try 16540). None of
  1295.   these manual settings resulted in any success.
  1296.  
  1297.   A look at past articles leads me to investigate PNP issues by calling
  1298.   pnpdump but pnpdump returns "no boards found". I have looked around on
  1299.   my BIOS (Phoenix) and there is not much evidence of it being PNP aware.
  1300.   However for what it calls "Serial port A", it offers a choice of Auto,
  1301.   Disabled or Manual settings (currently set to Auto), but using the BIOS
  1302.   interface I tried to change to 'manual' and saw the default settings
  1303.   offered to be were 0x3F8 and IRQ 4 (COM1). The BIOS menus did not give
  1304.   me any chance to configure COM2 or any "modem". I ended up not saving
  1305.   any BIOS changes in the course of my investigations.
  1306.  
  1307.   Can anybody suggest something else for me to try?
  1308.  
  1309. (end quotes)
  1310.  
  1311. Watch out for PCI, PCMCIA and Plug-n-Play devices, Winmodems, and the like
  1312. (see cautions in Section 3.0).  Linux supports Plug-n-Play devices to some
  1313. degree via the isapnp and pnpdump programs; read the man pages for them.  (If
  1314. you don't have them, look on your installation CD for isapnptool or download
  1315. it from sunsite or a sunsite mirror or other politically correct location).
  1316.  
  1317. Even when you have a real serial port, always be wary of interrupt conflicts
  1318. and similar PC hardware configuration issues: a PC is not a real computer like
  1319. other UNIX workstations -- it is generally pieced together from whatever
  1320. random components were the best bargain on the commodity market the week it
  1321. was built.  Once it's assembled and boxed, not even the manufacturer will
  1322. remember what it's made of or how it was put together because they've moved on
  1323. to a new model.  Their job is to get it (barely) working with Windows; for
  1324. Linux and other OS's you are on your own.
  1325.  
  1326. "set line /dev/modem" or "set line /dev/ttyS2", etc, results in an error,
  1327. "/dev/modem is not a tty".  Cause unknown, but obviously a driver issue, not a
  1328. Kermit one (Kermit uses "isatty()" to check that the device is a tty, so it
  1329. knows it will be able to issue all the tty-related ioctl's on it, like setting
  1330. the speed & flow control).  Try a different name (i.e. driver) for the same
  1331. port, e.g.  "set line /dev/cua2" or whatever.
  1332.  
  1333. "set modem type xxx" (where xxx is the name of a modem) followed by
  1334. "set line /dev/modem" or "set line /dev/ttyS2", etc, hangs (but can be
  1335. interrupted with Ctrl-C).  Experimentation shows that if the modem is
  1336. configured to always assert carrier (&C0) the same command does not hang.
  1337. Again, a driver issue.  Use /dev/cua2 (or whatever) instead.  (Or not --
  1338. hopefully none of these symptoms occur in C-Kermit 7.0.)
  1339.  
  1340. "set line /dev/cua0" reports "Device is busy", but "set line /dev/ttyS0"
  1341. works OK.
  1342.  
  1343. In short: If the cua device doesn't work, try the corresponding ttyS device.
  1344. If the ttyS device doesn't work, try the corresponding cua device -- but note
  1345. that Linux developers do not recommend this, and are phasing out the cua
  1346. devices.  From /usr/doc/faq/howto/Serial-HOWTO:
  1347.  
  1348.   12.4. What's The Real Difference Between The /dev/cuaN And /dev/ttySN
  1349.         Devices?
  1350.   The only difference is the way that the devices are opened.  The
  1351.   dialin devices /dev/ttySN are opened in blocking mode, until CD is
  1352.   asserted (ie someone connects).  So, when someone wants to use the
  1353.   /dev/cuaN device, there is no conflict with a program watching the
  1354.   /dev/ttySN device (unless someone is connected of course).
  1355.   The multiple /dev entries, allow operation of the same physical device
  1356.   with different operating characteristics.  It also allows standard
  1357.   getty programs to coexist with any other serial program, without the
  1358.   getty being retrofitted with locking of some sort.  It's especially
  1359.   useful since standard Unix kernel file locking, and UUCP locking are
  1360.   both advisory and not mandatory.
  1361.  
  1362. It was discovered during development of C-Kermit 6.1 that rebuilding C-Kermit
  1363. with -DNOCOTFMC (No Close/Open To Force Mode Change) made the aforementioned
  1364. problem with /dev/ttyS0 go away.  It is not yet clear, however, what its
  1365. affect might be on the /dev/cua* devices.  As of 19 March 1998, this option
  1366. has been added to the CFLAGS in the makefile entries for Linux ("make linux").
  1367.  
  1368. Note that the cua device is now "deprecated", and new editions of Linux will
  1369. phase it out in favor of the ttyS device.  See:
  1370.  
  1371.   http://linuxwww.db.erau.edu/mail_archives/linux-kernel/Mar_98/1441.html
  1372.  
  1373. One user reported that C-Kermit 7.0, when built with egcs 1.1.2 and run on
  1374. Linux 2.2.6 with glibc 2.1 (hardware unknown but probably a PC) dumps core
  1375. when given a "set line /dev/ttyS1" command.  When rebuilt with gcc, it works
  1376. fine.
  1377.  
  1378. 3.3.3. Terminal Emulation in Linux
  1379.  
  1380. Run C-Kermit in the regular console screen, which provides Linux Console
  1381. "emulation" via the "console" termcap entry, or under X-Windows in an xterm
  1382. window, which gives VTxxx emulation.  An xterm that includes color ANSI and
  1383. VT220 emulation is available with Xfree86:
  1384.  
  1385.   http://www.clark.net/pub/dickey/xterm/xterm.faq.html
  1386.  
  1387. Before starting C-Kermit in an xterm window, you might need to tell the xterm
  1388. window's shell to "stty sane".
  1389.  
  1390. To set up your PC console keyboard to send VT220 key sequences when using
  1391. C-Kermit as your communications program in an X terminal window (if it doesn't
  1392. already), create a file somewhere (e.g. in /root/) called .xmodmaprc,
  1393. containing something like the following:
  1394.  
  1395.   keycode 77  = KP_F1       ! Num Lock     => DEC Gold (PF1)
  1396.   keycode 112 = KP_F2       ! Keypad /     => DEC PF1
  1397.   keycode 63  = KP_F3       ! Keypad *     => DEC PF3
  1398.   keycode 82  = KP_F4       ! Keypad -     => DEC PF4
  1399.   keycode 111 = Help        ! Print Screen => DEC Help
  1400.   keycode 78  = F16         ! Scroll Lock  => DEC Do
  1401.   keycode 110 = F16         ! Pause        => DEC Do
  1402.   keycode 106 = Find        ! Insert       => DEC Find
  1403.   keycode 97  = Insert      ! Home         => DEC Insert
  1404.   keycode 99  = 0x1000ff00  ! Page Up      => DEC Remove
  1405.   keycode 107 = Select      ! Delete       => DEC Select
  1406.   keycode 103 = Page_Up     ! End          => DEC Prev Screen
  1407.   keycode 22  = Delete      ! Backspace sends Delete (127)
  1408.  
  1409. Then put "xmodmap <filename>" in your .xinitrc file (in your login
  1410. directory), e.g.
  1411.  
  1412.   xmodmap /root/.xmodmaprc
  1413.  
  1414. Of course you can move things around.  Use the xev program to find
  1415. out key codes.
  1416.  
  1417. Console-mode keys are mapped separately using loadkeys, and different
  1418. keycodes are used.  Find out what they are with showkey.
  1419.  
  1420.  
  1421. 3.3.4. Dates and Times
  1422.  
  1423. If C-Kermit's date-time (e.g. as shown by its DATE command) differs from
  1424. the system's date and time:
  1425.  
  1426.  a. Make sure the libc to which Kermit is linked is set to GMT or is not
  1427.     set to any time zone.  Watch out for mixed libc5/libc6 systems; each
  1428.     must be set indpendently.
  1429.  
  1430.  b. If you have changed your TZ environment variable, make sure it is
  1431.     exported.  This is normally done in /etc/profile or /etc/TZ.
  1432.  
  1433. 3.3.5. Startup Errors
  1434.  
  1435. Since the Red Hat 5.1 release (circa August 1998), there have been numerous
  1436. reports of prebuilt Linux executables, and particularly the Kermit RPM for
  1437. Red Hat Linux, not working; either it won't start at all, or it gives error
  1438. messages about "terminal type unknown" and refuses to initialize its curses
  1439. support.  The following is from the Kermit newsgroup:
  1440.  
  1441. From: rchandra@hal9000.buf.servtech.com ()
  1442. Newsgroups: comp.protocols.kermit.misc
  1443. Subject: Red Hat Linux/Intel 5.1 and ncurses: suggestions
  1444. Date: 22 Aug 1998 15:54:46 GMT
  1445. Organization: Verio New York
  1446. Keywords: RedHat RPM 5.1
  1447.  
  1448. Several factors can influence whether "linux" is recognized as a
  1449. terminal type on many Linux systems.
  1450.  
  1451. 1.) Your program, or the libraries it linked with (if statically
  1452.   linked), or the libraries it dynamically links with at runtime, are
  1453.   looking for an entry in /etc/termcap that isn't there.  (not likely,
  1454.   but possible...I believe but am not certain that this is a very old
  1455.   practice in very old [n]curses library implementations to use a
  1456.   single file for all terminal descriptions.)
  1457.  
  1458. 2.) Your program, or the libraries...are looking for a terminfo file
  1459.   that just plain isn't there.  (also not so likely, since many people
  1460.   in other recent message threads said that other programs work OK).
  1461.  
  1462. 3.) Your program, or the libraries...are looking for a terminfo file
  1463.   that is stored at a pathname that isn't expected by your program,
  1464.   the libraries--and so on.  I forgot if I read this in the errata Web
  1465.   page or where exactly I discovered this (Netscape install?  Acrobat
  1466.   install?), but it may just be that one libc (let's say for sake of
  1467.   argument, libc5, but I don't know this to be true) expects your
  1468.   terminfo to be in /usr/share/terminfo, and the other (let's say
  1469.   libc6/glibc) expects /usr/lib/terminfo.  I remember that the
  1470.   specific instructions in this bugfix/workaround were to do the
  1471.   following or equivalent:
  1472.  
  1473.       cd /usr/lib
  1474.       ln -s ../share/terminfo ./terminfo
  1475.  
  1476.      - or -
  1477.  
  1478.       ln -s /usr/share/terminfo /usr/lib/terminfo
  1479.  
  1480.   So what this says is that the terminfo database/directory structure
  1481.   can be accessed by either path.  When something goes to reference
  1482.   /usr/lib/terminfo, the symlink redirects it to essentially
  1483.   /usr/share/terminfo, which is where it really resides on your
  1484.   system.  I personally prefer wherever possible to use relative
  1485.   symlinks, because they still hold, more often than break, across
  1486.   mount points, particularly NFS mounts, where the directory structure
  1487.   may be different on the different systems.
  1488.  
  1489. (end quote) Evidently the terminfo file moved between Red Hat 5.0 and 5.1, but
  1490. Red Hat did not include a link to let applications built prior to 5.1 find it.
  1491. Users report that installing the link fixes the problem.
  1492.  
  1493. (3.4) C-KERMIT AND NEXTSTEP
  1494.  
  1495. Run C-Kermit in a Terminal, Stuart, or xterm window, or when logged in
  1496. remotely through a serial port or TELNET connection.  C-Kermit does not work
  1497. correctly when invoked directly from the NeXTSTEP File Viewer or Dock.  This
  1498. is because the terminal-oriented gtty, stty, & ioctl calls don't work on the
  1499. little window that NeXTSTEP pops up for non-NeXTSTEP applications like Kermit.
  1500. CBREAK and No-ECHO settings do not take effect in the command parser --
  1501. commands are parsed strictly line at a time.  "set line /dev/cua" works.
  1502. During CONNECT mode, the console stays in cooked mode, so characters are not
  1503. transmitted until carriage return or linefeed is typed, and you can't escape
  1504. back.  If you want to run Kermit directly from the File Viewer, then launch it
  1505. from a shell script that puts it in the desired kind of window, something like
  1506. this (for "Terminal"):
  1507.  
  1508.   Terminal -Lines 24 -Columns 80 -WinLocX 100 -WinLocY 100 $FONT $FONTSIZE \
  1509.   -SourceDotLogin -Shell /usr/local/bin/kermit &
  1510.  
  1511. C-Kermit does not work correctly on a NeXT with NeXTSTEP 3.0 to which you have
  1512. established an rlogin connection, due to a bug in NeXTSTEP 3.0, which has been
  1513. reported to NeXT.
  1514.  
  1515. The SET CARRIER command has no effect on the NeXT -- this is a limitation of
  1516. the tty device drivers.
  1517.  
  1518. Hardware flow control on the NeXT is selected not by "set flow rts/cts" in
  1519. Kermit (since NeXTSTEP offers no API for this), but rather, by using a
  1520. specially-named driver for the serial device: /dev/cufa instead /dev/cua;
  1521. /dev/cufb instead of /dev/cub.  This is available only on 68040-based NeXT
  1522. models (the situation for Intel NeXTSTEP implementations is unknown).
  1523.  
  1524. NeXT-built 68030 and 68040 models have different kinds of serial interfaces;
  1525. the 68030 has a Macintosh-like RS-422 interface, which lacks RTS and CTS
  1526. signals; the 68040 has an RS-423 (RS-232 compatible) interface, which
  1527. supports the commonly-used modem signals.  WARNING: the connectors look
  1528. exactly the same, but the pins are used in completely DIFFERENT ways --
  1529. different cables are required for the two kinds of interfaces.
  1530.  
  1531.   IF YOU GET LOTS OF RETRANSMISSIONS during file transfer, even when
  1532.   using a /dev/cuf* device and the modem is correctly configured for
  1533.   RTS/CTS flow control, YOU PROBABLY HAVE THE WRONG KIND OF CABLE.
  1534.  
  1535. On the NeXT, Kermit reportedly (by TimeMon) causes the kernel to use a lot of
  1536. CPU time when using a "set line" connection.  That's because there is no DMA
  1537. channel for the NeXT serial port, so the port must interrupt the kernel for
  1538. each character in or out.
  1539.  
  1540. One user reported trouble running C-Kermit on a NeXT from within NeXT's
  1541. Subprocess class under NeXTstep 3.0, and/or when rlogin'd from one NeXT to
  1542. another: Error opening /dev/tty:, congm: No such device or address.
  1543. Diagnosis: Bug in NeXTSTEP 3.0, cure unknown.
  1544.  
  1545. (3.5) C-KERMIT AND QNX
  1546.  
  1547. See also: The comp.os.qnx newsgroup.
  1548.  
  1549. Support for QNX 4.x was added in C-Kermit 5A(190).  This is a full-function
  1550. implementation, thoroughly tested on QNX 4.21 and later, and verified to work
  1551. in both 16-bit and 32-bit versions.  The 16-bit version was dropped in
  1552. C-Kermit 7.0 since it can no longer be built successfully (after stripping
  1553. most most features, I succeeded in getting it to compile and link without
  1554. complaint, but the executable just beeps when you run it); for 16-bit QNX
  1555. 4.2x, use C-Kermit 6.0 or earlier.
  1556.  
  1557. The 32-bit version (and the 16-bit version prior to C-Kermit 7.0) support most
  1558. of C-Kermit's advanced features including TCP/IP, high serial speeds, hardware
  1559. flow-control, modem-signal awareness, curses support, etc.
  1560.  
  1561. BUG: In C-Kermit 6.0 and earlier on QNX 4.22 and earlier, the fullscreen file
  1562. transfer display worked fine the first time, but was fractured on subsequent
  1563. file transfers.  Cause and cure unknown.  In C-Kermit 7.0 and QNX 4.25, this
  1564. no longer occurs.  It is not known if it would occur in C-Kermit 7.0 on
  1565. earlier QNX versions.
  1566.  
  1567. Dialout devices are normally /dev/ser1, /dev/ser2, ..., and can be opened
  1568. explicitly with SET LINE.  Reportedly, "/dev/ser" (no unit number) opens the
  1569. first available /dev/ser<n> device.
  1570.  
  1571. Like all other UNIX C-Kermit implementations, QNX C-Kermit does not provide
  1572. any kind of terminal emulation.  Terminal specific functions are provided by
  1573. your terminal, terminal window (e.g. QNX Terminal or xterm), or emulator.
  1574.  
  1575. QNX C-Kermit, as distributed, does not include support for UUCP line-locking;
  1576. the QNX makefile entries (qnx32 and qnx16) include the -DNOUUCP switch.  This
  1577. is because QNX, as distributed, does not include UUCP, and its own
  1578. communications software (e.g. qterm) does not use UUCP line locking.  If you
  1579. have a UUCP product installed on your QNX system, remove the -DNOUUCP switch
  1580. from the makefile entry and rebuild.  Then check to see that Kermit's UUCP
  1581. lockfile conventions are the same as those of your UUCP package; if not, read
  1582. the UUCP lockfile section ckuins.txt and make the necessary changes to the
  1583. makefile entry (e.g. add -DHDBUUCP).
  1584.  
  1585. QNX does, however, allow a program to get the device open count.  This can
  1586. not be a reliable form of locking unless all applications do it, so by
  1587. default, Kermit uses this information only for printing a warning message
  1588. such as:
  1589.  
  1590.   C-Kermit>set line /dev/ser1
  1591.   WARNING - "/dev/ser1" looks busy...
  1592.  
  1593. However, if you want to use it as a lock, you can do so with:
  1594.  
  1595.   SET QNX-PORT-LOCK { ON, OFF }
  1596.  
  1597. This is OFF by default; if you set in ON, C-Kermit will fail to open any
  1598. dialout device when its open count indicates that another process has it
  1599. open.  SHOW COMM (in QNX only) displays the setting, and if you have a port
  1600. open, it also shows the open count.
  1601.  
  1602. (3.6) C-KERMIT AND SCO UNIX, XENIX, ODT, AND OPENSERVER
  1603.  
  1604. See also:
  1605.  
  1606.  . The comp.unix.sco.* newsgroups.
  1607.  . http://www.sco.com/Support/ssl.html
  1608.  . Section 3.10 below for Unixware
  1609.  . The FAQ at ftp://rtfm.mit.edu/pub/usenet/news.answers/sco/newsgroups-faq
  1610.    (which only covers newsgroups and mailing lists).
  1611.  
  1612. There is a general SCO FAQ, but I'm not sure where to find it.  It is posted
  1613. to the newsgroups from time to time.
  1614.  
  1615. Also see general comments on PC-based UNIXes in Section 3.0.
  1616.  
  1617. Old Xenix versions... Did you know: Xenix 3.0 is *older* than Xenix 2.0?
  1618.  
  1619. There is all sorts of confusion among SCO versions, particularly when third-
  1620. party communications boards and drivers are installed, regarding lockfile
  1621. naming conventions, as well as basic functionality.  As far as lockfiles go,
  1622. all bets are off if you are using a third-party multiport board.  At least you
  1623. have the source code.  Hopefully you also have a C compiler :-)
  1624.  
  1625. On the other hand, certain functions that might not (do not) work right or
  1626. at all when using SCO drivers (e.g. high serial speeds, hardware flow control,
  1627. and/or reading of modem signals) might work right when using third-party
  1628. drivers.  (Example: hardware flow control works, reportedly, only on uppercase
  1629. device like tty1A -- not tty1a -- and only when CLOCAL is clear when using the
  1630. SCO sio driver, but there are no such restrictions in, e.g., Digiboard
  1631. drivers).
  1632.  
  1633. SCO OpenServer (all versions up to and included 5.0.5) do not support the
  1634. reading of modem signals.  Thus "show comm" does not list modem signals, and
  1635. C-Kermit does not automatically pop back to its prompt when the modem hangs
  1636. up the connection (drops CD).  The ioctl() call for this is simply not
  1637. implmented, at least not in the standard drivers.
  1638.  
  1639. One user reports that he can't transfer large files with C-Kermit under SCO
  1640. OSR5.0.0 and 5.0.4 -- after the first 5K, everything falls apart.  Same thing
  1641. without Kermit -- e.g. with ftp over a PPP connection.  Later, he said that
  1642. replacing SCO's SIO driver with FAS, an alternative communications driver,
  1643. made the problem go away:
  1644.  
  1645.   ftp://ftp.fu-berlin.de/pub/unix/driver/fas
  1646.  
  1647. Other users often make similar observations regarding Digi and other 3rd
  1648. party drivers.
  1649.  
  1650. With regard to bidirectional serial ports on OpenServer 5.0.4, the following
  1651. advice appeared on an SCO related newsgroup : "No amount of configuration
  1652. information is going to help you on 5.0.4 unless it includes the kludge for
  1653. the primary problem.  With almost every modem, the 5.0.4 getty will barf
  1654. messages and may or may not connect.  There are 2 solutions and only one works
  1655. on 5.0.4.  Get the atdialer binary from a 5.0.0 system and substitute it for
  1656. the native 5.0.4 atdialer.  The other solution is to upgrade to 5.0.5.  And,
  1657. most of all, on any OpenServer products, do NOT run the badly broken Modem
  1658. Manager.  Configure the modems in the time honored way that dates back to
  1659. Xenix."
  1660.  
  1661. Hardware flow control is available in C-Kermit when the underlying SCO version
  1662. supports it.  Note that Xenix 2.3.0 and later claims to support RTSFLOW and
  1663. CTSFLOW, but this is not modern bidirectional hardware flow control; rather it
  1664. implements the original RS-232 meanings of these signals for unidirectional
  1665. half-duplex line access: If both RTSFLOW and CTSFLOW bits are set, Xenix
  1666. asserts RTS when it wants to send data and waits for CTS assertion before it
  1667. actually starts sending data (also, reportedly, even this is broken in Xenix
  1668. 2.3.0 and 2.3.1).
  1669.  
  1670. Use SCO-provided utilities for switching the directionality of a modem line,
  1671. such as "enable" and "disable" commands.  For example, to dial out on tty1a,
  1672. which is normally set up for logins:
  1673.  
  1674.   disable tty1a
  1675.   kermit -l /dev/tty1a
  1676.   enable tty1a
  1677.  
  1678. If a tty device is listed as an ACU in /usr/lib/uucp/Devices and is enabled,
  1679. getty resets the ownership and permissions to uucp.uucp 640 every time the
  1680. device is released.  If you want to use the device only for dialout, and you
  1681. want to specify other owners or permissions, you should disable it in
  1682. /usr/lib/uucp/Devices; this will prevent getty from doing things to it.  You
  1683. should also changes the device's file modes in /etc/conf/node.d/sio by
  1684. changing fields 5-7 for the desired device(s); this determines how the devices
  1685. are set if you relink the kernel.
  1686.  
  1687. SCO systems tend to use different names (i.e. drivers) for the same device.
  1688. In Xenix, /dev/tty1a refers to a terminal device that has no modem control;
  1689. open, read, write, and close operations do not depend on carrier.  On the
  1690. other hand, /dev/tty1A (same name, but with final letter upper case), is the
  1691. same device with modem control, in which carrier is required (the SET LINE
  1692. command does not complete until carrier appears, read/write operations fail if
  1693. there is no carrier, etc).  In the SCO case, C-Kermit always uses the
  1694. lowercase name when creating the UUCP lockfile (this is, according to SCO
  1695. experts, the proper behavior, but reportedly not all other communications
  1696. applications found on SCO systems follow this rule).
  1697.  
  1698. In SCO Xenix, you must use SET CARRIER ON *and* use the upper-case tty device
  1699. name in order to have carrier detection.  SET CARRIER OFF should work with
  1700. either upper or lowercase tty devices.  SET CARRIER AUTO is the same as OFF.
  1701.  
  1702. One SCO user of C-Kermit 5A(190) reported that only one copy of Kermit can run
  1703. at a time when a Stallion Technologies multiport boards are installed.  Cause,
  1704. cure, and present status unknown (see Section 14 of this file for more info
  1705. regarding Stallion).
  1706.  
  1707. Prior to SCO OpenServer 5.0.4, the highest serial port speed supported by SCO
  1708. was 38400.  However, in some SCO versions (e.g. OSR5) it is possible to map
  1709. rarely-used lower speeds (like 600 and 1800) to higher ones like 57600 and
  1710. 115200.  To find out how, go to http://www.sco.com/ and search for "115200".
  1711. In OSR5.0.4, serial speeds up to 921600 are supported through the POSIX
  1712. interface; C-Kermit 6.1.193 or later, when built for OSR5.0.4, supports these
  1713. speeds, but you might be able to run this binary on earlier releases to get
  1714. the high serial speeds, depending on various factors, described by Bela Lubkin
  1715. of SCO:
  1716.  
  1717.   Serial speeds under SCO Unix / Open Desktop / OpenServer
  1718.   ========================================================
  1719.   Third party drivers (intelligent serial boards) may provide any speeds
  1720.   they desire; most support up to 115.2Kbps.
  1721.  
  1722.   SCO's "sio" driver, which is used to drive standard serial ports with
  1723.   8250/16450/16550 and similar UARTs, was limited to 38400bps in older
  1724.   releases.  Support for rates through 115.2Kbps was added in the
  1725.   following releases:
  1726.  
  1727.     SCO OpenServer Release 5.0.0 (requires supplement "rs40b")
  1728.     SCO OpenServer Release 5.0.2 (requires supplement "rs40a" or "rs40b")
  1729.     SCO OpenServer Release 5.0.4 or later
  1730.     SCO Internet FastStart Release 1.0.0 or later
  1731.  
  1732.     SCO supplements are at ftp://ftp.sco.com/; the "rs40" series are
  1733.     under directory /Supplements/internet
  1734.  
  1735. (end quote)
  1736.  
  1737. Reportedly, if you have a script that makes a TCP/IP SET HOST (e.g. Telnet)
  1738. connection to SCO 3.2v4.2 with TCP/IP 1.2.1, and then does the following:
  1739.  
  1740.   script $ exit
  1741.   hangup
  1742.  
  1743. this causes a pseudoterminal (pty) to be consumed on the SCO system; if you do
  1744. it enough times, it will run out of ptys.  An "exit" command is being sent to
  1745. the SCO shell, and a HANGUP command is executed locally, so the chances are
  1746. good that both sides are trying to close the connection at once, perhaps
  1747. inducing a race condition in which the remote pty is not released.  It was
  1748. speculated that this would be fixed by applying SLS net382e, but it did not.
  1749. Meanwhile, the workaround is to insert a "pause" between the SCRIPT and HANGUP
  1750. commands.  (The situation with later SCO releases is not known.)
  1751.  
  1752. SCO UNIX and OpenServer allow their console and/or terminal drivers to be
  1753. configured to translate character sets for you.  DON'T DO THIS WHEN USING
  1754. KERMIT!  First of all, you don't need it -- Kermit itself already does this
  1755. for you.  And second, it will (a) probably ruin the formatting of your screens
  1756. (depending on which emulation you are using); and (b) interfere with all sorts
  1757. of other things -- legibility of non-ASCII text on the terminal screen, file
  1758. transfer, etc.  Use:
  1759.  
  1760.   mapchan -n
  1761.  
  1762. to turn off this feature.
  1763.  
  1764. Note that there is a multitude of SCO entries in the makefile, many of them
  1765. exhibiting an unusually large number of compiler options.  Some people
  1766. actually understand all of this.  Reportedly, things are settling down with
  1767. SCO OpenServer 5.x and Unixware 7 -- the SCO UDK compiler is said to generate
  1768. binaries that will run on either platform, by default, automatically.  When
  1769. using gcc or egcs, on the other hand, differences persist, plus issues
  1770. regarding the type of binary that is generated (COFF, ELF, etc), and where
  1771. and how it can run.  All of this could stand further clarification by SCO
  1772. experts.
  1773.  
  1774. (3.7) C-KERMIT AND SOLARIS
  1775.  
  1776. See also:
  1777.   The comp.unix.solaris newsgroup
  1778.   http://access1.sun.com/
  1779.   http://docs.sun.com/
  1780.   http://www.sunhelp.com/
  1781.   http://www.wins.uva.nl/pub/solaris/solaris2/
  1782.   http://www.wins.uva.nl/cgi-bin/sfaq.cgi
  1783.   ftp://ftp.wins.uva.nl/pub/solaris
  1784.  
  1785. And about serial communications in particular, see "Celeste's Tutorial on
  1786. Solaris 2.x Modems and Terminals":
  1787.  
  1788.   http://www.stokely.com/
  1789.  
  1790. In particular:
  1791.  
  1792.   http://www.stokely.com/unix.sysadm.resources/faqs.sun.html
  1793.  
  1794. For PC-based Solaris, also see general comments on PC-based UNIXes in
  1795. Section 3.0.  Don't expect Solaris or any other kind of UNIX to work right
  1796. on a PC until you resolve all interrupt conflicts.  Don't expect to be able
  1797. to use COM3 or COM4 (or even COM2) until you have configured their addresses
  1798. and interrupts.
  1799.  
  1800. Even then your serial port can't be used -- or at least won't work right --
  1801. until it is enabled in Solaris.  For example, you get a message like "SERIAL:
  1802. Operation would block" when attempting to dial.  This probably indicates that
  1803. the serial port has not been enabled for use with modems.  You'll need to
  1804. follow the instructions in your system setup or management manual, such as
  1805. (e.g.) the Desktop SPARC Sun System & Network Manager's Guide, which should
  1806. contain a section "Setting up Modem Software"; read it and follow the
  1807. instructions.  These might (or might not) include running a program called
  1808. "eeprom", editing some system configuration file (such as, for example:
  1809.  
  1810.   /platform/i86pc/kernel/drv/asy.conf
  1811.  
  1812. and then doing a configuration reboot, or running some other programs like
  1813. drvconfig and devlinks.  "man eeprom" for details.
  1814.  
  1815. Also, on certain Sun models like IPC, the serial port hardware might need to
  1816. have a jumper changed to make it an RS-232 port rather than RS-423.
  1817.  
  1818. Some users report difficulties dialing out with C-Kermit on serial port when
  1819. using the /dev/cua/a name -- session seems to become stuck, can't escape back,
  1820. etc -- but when using the /dev/term/a name for the *same* device, everything
  1821. works fine.  Explanation: unknown, but probably due to improper configuration
  1822. of the port; again, see the materials referenced above.
  1823.  
  1824. Reportedly, if you start C-Kermit and "set line" to a port that has a modem
  1825. connected to it that is not turned on, and then "set flow rts/cts", there
  1826. might be some (unspecified) difficulties closing the device (Solaris version
  1827. not specified).
  1828.  
  1829. The built-in SunLink X.25 support for Solaris 2.3/2.4./25 and SunLink 8.01 or
  1830. 9.00 works OK provided the X.25 system has been installed and initialized
  1831. properly.  Packet sizes might need to be reduced to 256, maybe even less,
  1832. depending on the configuration of the X.25 installation.  On one connection
  1833. where C-Kermit 6.0 was tested, very large packets and window sizes could be
  1834. used in one direction, but only very small ones would work in the other.
  1835.  
  1836. In any case, according to Sun, C-Kermit's X.25 support is superfluous with
  1837. SunLink 8.x / Solaris 2.3.  Quoting an anonymous Sun engineer:
  1838.  
  1839.   ... there is now no need to include any X.25 code within kermit.  As of
  1840.   X.25 8.0.1 we support the use of kermit, uucp and similar protocols over
  1841.   devices of type /dev/xty.  This facility was there in 8.0, and should
  1842.   also work on the 8.0 release if patch 101524 is applied, but I'm not 100%
  1843.   sure it will work in all cases, which is why we only claim support from
  1844.   8.0.1 onwards.
  1845.  
  1846.   When configuring X.25, on the "Advanced Configuration->Parameters" screen
  1847.   of the x25tool you can select a number of XTY devices.  If you set this
  1848.   to be > 1, press Apply, and reboot, you will get a number of /dev/xty
  1849.   entries created.
  1850.  
  1851.   Ignore /dev/xty0, it is a special case.  All the others can be used exactly
  1852.   as if they were a serial line (e.g. /dev/tty) connected to a modem, except
  1853.   that instead of using Hayes-style commands, you use PAD commands.
  1854.  
  1855.   From kermit you can do a 'set line' command to, say, /dev/xty1, then set
  1856.   your dialing command to be "CALL 12345678", etc.  All the usual PAD
  1857.   commands will work (SET, PAR, etc).
  1858.  
  1859.   I know of one customer in Australia who is successfully using this, with
  1860.   kermit scripts, to manage some X.25-connected switches. He used standard
  1861.   kermit, compiled for Solaris 2, with X.25 8.0 xty devices.
  1862.  
  1863. C-Kermit can't be compiled successfully under Solaris 2.3 using SUNWspro cc
  1864. 2.0.1 unless at least some of the following patches are applied to cc (it is
  1865. not known which one(s), if any, fix the problem):
  1866.  
  1867.   100935-01 SparcCompiler C 2.0.1: bad code generated when addresses
  1868.     of two double arguments are involved
  1869.   100961-05 SPARCcompilers C 2.0.1: conditional expression with
  1870.     function returning structure gives wrong value
  1871.   100974-01 SparcWorks 2.0.1: dbx jumbo patch
  1872.   101424-01 SPARCworks 2.0.1 maketool SEGV's instantly on Solaris 2.3
  1873.  
  1874. With unpatched cc 2.0.1, the symptom is that certain modules generate
  1875. truncated object files, resulting in many unresolved references at link time.
  1876.  
  1877. Using a Sun workstation keyboard for VT emulation when accessing VMS:
  1878.  
  1879. From: Jerry Leichter <leichter@smarts.com>
  1880. Newsgroups: comp.os.vms
  1881. Subject: Re: VT100 keyboard mapping to Sun X server
  1882. Date: Mon, 19 Aug 1996 12:44:21 -0400
  1883.  
  1884. > I am stuck right now using a Sun keyboard (type 5) on systems running SunOS
  1885. > and Solaris.  I would like to use EVE on an OpenVMS box with display back to
  1886. > the Sun.  Does anyone know of a keyboard mapping (or some other procedure)
  1887. > which will allow the Sun keyboard to approximate a VT100/VT220?
  1888.  
  1889. You can't get it exactly - because the keypad has one fewer key - but
  1890. you can come pretty close.  Here's a set of keydefs I use:
  1891.  
  1892. keycode 101=KP_0
  1893. keycode 119=KP_1
  1894. keycode 120=KP_2
  1895. keycode 121=KP_3
  1896. keycode 98=KP_4
  1897. keycode 99=KP_5
  1898. keycode 100=KP_6
  1899. keycode 75=KP_7
  1900. keycode 76=KP_8
  1901. keycode 77=KP_9
  1902. keycode 52=KP_F1
  1903. keycode 53=KP_F2
  1904. keycode 54=KP_F3
  1905. keycode 57=KP_Decimal
  1906. keycode 28=Left
  1907. keycode 29=Right
  1908. keycode 30=KP_Separator
  1909. keycode 105=KP_F4
  1910. keycode 78=KP_Subtract
  1911. keycode 8=Left
  1912. keycode 10=Right
  1913. keycode 32=Up
  1914. keycode 33=Down
  1915. keycode 97=KP_Enter
  1916.  
  1917. Put this in a file - I use "keydefs" in my home directory and feed it
  1918. into xmodmap:
  1919.  
  1920.   xmodmap - <$HOME/keydefs
  1921.  
  1922. This takes care of the arrow keys and the "calculator" key cluster.  The
  1923. "+" key will play the role of the DEC "," key.    The Sun "-" key will be
  1924. like the DEC "-" key, though it's in a physically different position -
  1925. where the DEC PF4 key is.  The PF4 key is ... damn, I'm not sure where
  1926. "key 105" is.  I *think* it may be on the leftmost key of the group of
  1927. four just above the "calculator" key cluster.
  1928.  
  1929. I also execute the following (this is all in my xinitrc file):
  1930.  
  1931. xmodmap -e 'keysym KP_Decimal = KP_Decimal'
  1932. xmodmap -e 'keysym BackSpace = Delete BackSpace' \
  1933.         -e 'keysym Delete = BackSpace Delete'
  1934. xmodmap -e 'keysym KP_Decimal = Delete Delete KP_Decimal'
  1935. xmodmap -e 'add mod1 = Meta_R'
  1936. xmodmap -e 'add mod1 = Meta_L'
  1937.  
  1938. Beware of one thing about xmodmap:  Keymap changes are applied to the
  1939. *whole workstation*, not just to individual windows.  There is, in fact,
  1940. no way I know of to apply them to individual windows.  These definitions
  1941. *may* confuse some Unix programs (and/or some Unix users).
  1942.  
  1943. If you're using Motif, you may also need to apply bindings at the Motif
  1944. level.  If just using xmodmap doesn't work, I can try and dig that stuff
  1945. up for you.
  1946.  
  1947. (end quote)
  1948.  
  1949.   NOTE: The rest of the problems in this section have to do with bidirectional
  1950.   tty lines and the Solaris Port Monitor.  Hopefully these were all fixed in
  1951.   C-Kermit 6.0.
  1952.  
  1953. Reportedly, "C-Kermit ... causes a SPARCstation running Solaris 2.3
  1954. to panic after the modem connects.  I have tried compiling C-Kermit with Sun's
  1955. unbundled C compiler, with GCC Versions 2.4.5 and 2.5.3, with make targets
  1956. 'sunos51', 'sunos51tcp', 'sunos51gcc', and even 'sys5r4', and each time it
  1957. compiles and starts up cleanly, but without fail, as soon as I dial the number
  1958. and get a 'CONNECT' message from the modem, I get:
  1959.  
  1960.   BAD TRAP
  1961.   kermit: Data fault
  1962.   kernel read fault at addr=0x45c, pme=0x0
  1963.   Sync Error Reg 80 <INVALID>
  1964.   ...
  1965.   panic: Data Fault.
  1966.   ...
  1967.   Rebooting...
  1968.  
  1969. The same modem works fine for UUCP/tip calling."  Also (reportedly), this only
  1970. happens if the dialout port is configured as in/out via admintool.  If it is
  1971. configured as out-only, no problem.  This is the same dialing code that works
  1972. on hundreds of other System-V based UNIX OS's.  Since it should be impossible
  1973. for a user program to crash the operating system, this problem must be chalked
  1974. up to a Solaris bug.  Even if you SET CARRIER OFF, CONNECT, and dial manually
  1975. by typing ATDTnnnnnnn, the system panics as soon as the modem issues its
  1976. CONNECT message.  (Clearly, when you are dialing manually, C-Kermit does not
  1977. know a thing about the CONNECT message, and so the panic is almost certainly
  1978. caused by the transition of the Carrier Detect (CD) line from off to on.)
  1979. This problem was reported by many users, all of whom say that C-Kermit worked
  1980. fine on Solaris 2.1 and 2.2.  If the speculation about CD is true, then a
  1981. possible workaround might be to configure the modem to leave CD on (or off)
  1982. all the time.  Perhaps by the time you read this, a patch will have been
  1983. issued for Solaris 2.3.
  1984.  
  1985. The following is from Karl S. Marsh, Systems & Networks Administrator,
  1986. AMBIX Systems Corp, Rochester, NY (begin quote):
  1987.  
  1988. "Environment:
  1989.   Solaris 2.3 Patch 101318-45
  1990.   C-Kermit 5A(189) (and presumably this applies to 188 and 190 also)
  1991.   eeprom setting:
  1992.     ttya-rts-dtr-off=false
  1993.     ttya-ignore-cd=false
  1994.     ttya-mode=19200,8,n,8,-
  1995.  
  1996. "To use C-Kermit on a bidirectional port in this environment, do not use
  1997. admintool to configure the port.  Use admintool to delete any services running
  1998. on the port and then quit admintool and issue the following command:
  1999.  
  2000.   pmadm -a -p zsmon -s ttyb -i root -fu -v 1 -m "`ttyadm -b -d /dev/term/b \
  2001.   -l conttyH -m ldterm,ttcompat -s /usr/bin/login -S n`"
  2002.  
  2003. [NOTE: This was copied from a fax, so please check it carefully]  where:
  2004.  
  2005.   -a = Add service
  2006.   -p = pmtag (zsmon)
  2007.   -s = service tag (ttyb)
  2008.   -i = id to be associated with service tag (root)
  2009.   -fu = create utmp entry
  2010.   -v = version of ttyadm
  2011.   -m = port monitor-specific portion of the port monitor administrative file
  2012.        entry for the service
  2013.   -b = set up port for bidirectional use
  2014.   -d = full path name of device
  2015.   -l = which ttylabel in the /etc/ttydefs file to use
  2016.   -m = a list of pushable STREAMS modules
  2017.   -s = pathname of service to be invoked when connection request received
  2018.   -S = software carrier detect on or off (n = off)
  2019.  
  2020. "This is exactly how I was able to get Kermit to work on a bi-directional
  2021. port without crashing the system."  (End quote)
  2022.  
  2023. On the Solaris problem, also see SunSolve Bug ID 1150457 ("Using C-Kermit, get
  2024. Bad Trap on receiving prompt from remote system").  Another user reported "So,
  2025. I have communicated with the Sun tech support person that submitted this bug
  2026. report [1150457].  Apparently, this bug was fixed under one of the jumbo
  2027. kernel patches.  It would seem that the fix did not live on into 101318-45, as
  2028. this is EXACTLY the error that I see when I attempt to use kermit on my
  2029. system."
  2030.  
  2031. Later (Aug 94)...  C-Kermit dialout successfully tested on a Sun4m with a
  2032. heavily patched Solaris 2.3.  The patches most likely to have been relevant:
  2033.  
  2034. 101318-50: SunOS 5.3: Jumbo patch for kernel (includes libc, lockd)
  2035. 101720-01: SunOS 5.3: ttymon - prompt not always visible on a modem connection
  2036. 101815-01: SunOS 5.3: Data fault in put() NULL queue passed from
  2037.                       ttycommon_qfull()
  2038. 101328-01: SunOS 5.3: Automation script to properly setup tty ports prior to
  2039.                       PCTS execution
  2040.  
  2041. Still later (Nov 94): another user (Bo Kullmar in Sweden) reports that after
  2042. using C-Kermit to dial out on a bidirectional port, the port might not answer
  2043. subsequent incoming calls, and says "the problem is easy enough to fix with
  2044. the Serial Port Manager; I just delete the service and install it again using
  2045. the graphical interface, which underneath uses commands like sacadm and
  2046. pmadm."  Later Bo reports, "I have found that if I run Kermit with the
  2047. following script then it works.  This script is for /dev/cua/a, -s a is the
  2048. last a in /dev/cua/a
  2049.  
  2050.   #! /bin/sh
  2051.   kermit
  2052.   sleep 2
  2053.   surun pmadm -e -p zsmon -s a
  2054.  
  2055. (end quote)
  2056.  
  2057. (3.8) C-KERMIT AND SUNOS
  2058.  
  2059. For additional information, see "Celeste's Tutorial on SunOS 4.1.3+ Modems
  2060. and Terminals":
  2061.  
  2062.   http://www.stokely.com/
  2063.  
  2064. For FAQs, etc, from Sun, see:
  2065.   http://access1.sun.com/
  2066.  
  2067. Sun SPARCstation users should read the section "Setting up Modem Software" in
  2068. the Desktop SPARC Sun System & Network Manager's Guide.  If you don't set up
  2069. your serial ports correctly, Kermit (and other communications software) won't
  2070. work right.
  2071.  
  2072. Also, on certain Sun models like IPC, the serial port hardware might need to
  2073. have a jumper changed to make it an RS-232 port rather than RS-423.
  2074.  
  2075. Reportedly, C-Kermit does not work correctly on a Sun SPARCstation in an Open
  2076. Windows window with scrolling enabled.  Disable scrolling, or else invoke
  2077. Kermit in a terminal emulation window (xterm, crttool, vttool) under SunView
  2078. (this might be fixed in later SunOS releases).
  2079.  
  2080. On the Sun with Open Windows, an additional symptom has been reported:
  2081. outbound SunLink X.25 connections "magically" translate CR typed at the
  2082. keyboard into LF before transmission to the remote host.  This doesn't happen
  2083. under SunView.
  2084.  
  2085. SET CARRIER ON, when used on the SunOS 4.1 version of C-Kermit (compiled in
  2086. the BSD universe), causes the program to hang uninterruptibly when SET LINE
  2087. is issued for a device that is not asserting carrier.  When Kermit is built
  2088. in the Sys V universe on the same computer, there is no problem (it can be
  2089. interrupted with Ctrl-C).  This is apparently a limitation of the BSD-style
  2090. tty driver.
  2091.  
  2092. SunOS 4.1 C-Kermit has been observed to dump core when running a complicated
  2093. script program under cron.  The dump invariably occurs in ttoc(), while trying
  2094. to output a character to a TCP/IP TELNET connection.  ttoc() contains a
  2095. write() call, and when the system or the network is very busy, the write()
  2096. call can get stuck for long periods of time.  To break out of deadlocks caused
  2097. by stuck write() calls, there is an alarm around the write().  It is possible
  2098. that the core dump occurs when this alarm signal is caught.  (This one has
  2099. not been observed recently -- possibly fixed in edit 190.)
  2100.  
  2101. On Sun computers with SunOS 4.0 or 4.1, SET FLOW RTS/CTS works only if the
  2102. carrier signal is present from the communication device at the time when
  2103. C-Kermit enters packet mode or CONNECT mode.  If carrier is not sensed (e.g.
  2104. when dialing), C-Kermit does not attempt to turn on RTS/CTS flow control.
  2105. This is because the SunOS serial device driver does not allow characters to
  2106. be output if RTS/CTS is set (CRTSCTS) but carrier (and DSR) are not present.
  2107. Workaround (maybe):  SET CARRIER OFF before giving the SET LINE command,
  2108. establish the connection, then SET FLOW RTS/CTS
  2109.  
  2110. It has also been reported that RTS/CTS flow control under SunOS 4.1 through
  2111. 4.1.3 works only on INPUT, not on output, and that there is a patch from Sun
  2112. to correct this problem: Patch-ID# T100513-04, 20 July 1993 (this patch might
  2113. apply only to SunOS 4.1.3).  It might also be necessary to configure the
  2114. eeprom parameters of the serial port; e.g. do the following as root at the
  2115. shell prompt:
  2116.  
  2117.   eeprom  ttya-ignore-cd=false
  2118.   eeprom  ttya-rts-dtr-off=true
  2119.  
  2120. There have been reports of file transfer failures on Sun-3 systems when using
  2121. long packets and/or large window sizes.  One user says that when this happens,
  2122. the console issues many copies of this message:
  2123.  
  2124.   chaos vmunix: zs1: ring buffer overflow
  2125.  
  2126. This means that SunOS is not scheduling Kermit frequently enough to service
  2127. interrupts from the zs serial device (Zilog 8350 SCC serial communication
  2128. port) before its input silo overflows.  Workaround: use smaller packets
  2129. and/or a smaller window size, or use "nice" to increase Kermit's priority.
  2130. Use hardware flow control if available, or remove other active processes
  2131. before running Kermit.
  2132.  
  2133. SunLink X.25 support in C-Kermit 5A(190) has been built and tested
  2134. successfully under SunOS 4.1.3b and SunLink X.25 7.00.
  2135.  
  2136. (3.9) C-KERMIT AND ULTRIX
  2137.  
  2138. See also: The comp.unix.ultrix and comp.sys.dec newsgroups.
  2139.  
  2140. There is no hardware flow control in Ultrix.  That's not a Kermit deficiency,
  2141. but an Ultrix one.
  2142.  
  2143. When sending files to C-Kermit on a Telnet connection to a remote Ultrix
  2144. system, you must SET PREFIXING ALL (or at least prefix more control characters
  2145. than are selected by SET PREFIXING CAUTIOUS).
  2146.  
  2147. Reportedly, DEC ULTRIX 4.3 is immune to C-Kermit's disabling of SIGQUIT,
  2148. which is the signal that is generated when the user types Ctrl-\, which kills
  2149. the current process (i.e. C-Kermit) and dumps core.  Diagnosis and cure
  2150. unknown.  Workaround: before starting C-Kermit -- or for that matter, when you
  2151. first log in because this applies to all processes, not just Kermit -- give
  2152. the following UNIX command:
  2153.  
  2154.   stty quit undef
  2155.  
  2156. Certain operations driven by RS-232 modem signal do not work on DECstations or
  2157. other DEC platforms whose serial interfaces use MMP connectors (DEC version of
  2158. RJ45 telephone jack with offset tab).  These connectors convey only the DSR
  2159. and DTR modem signals, but not carrier (CD), RTS, CTS, or RI.  Use SET CARRIER
  2160. OFF to enable communication, or "hotwire" DSR to CD.
  2161.  
  2162. The maximum serial speed on the DECstation 5000 is normally 19200, but various
  2163. tricks are available (outside Kermit) to enable higher rates.  For example, on
  2164. the 5000/200, 19200 can be remapped (somehow, something to do with "a bit in
  2165. the SIR", whatever that is) to 38400, but in software you must still refer to
  2166. this speed as 19200; you can't have 19200 and 38400 available at the same time.
  2167.  
  2168. 19200, reportedly, is also the highest speed supported by Ultrix, but NetBSD
  2169. reportedly supports speeds up to 57600 on the DECstation, although whether and
  2170. how well this works is another question.
  2171.  
  2172. In any case, given the lack of hardware flow control in Ultrix, high serial
  2173. speeds are problematic at best.
  2174.  
  2175. (3.10) C-KERMIT AND UNIXWARE
  2176.  
  2177. See also:
  2178.   comp.unix.unixware.misc
  2179.   comp.unix.sco.misc
  2180.  
  2181. Also see general comments on PC-based UNIXes in Section 3.0.
  2182.  
  2183. Note that in Unixware 2.0 and later, the preferred serial device names
  2184. (drivers) are /dev/term/00 (etc), rather than /dev/tty00 (etc).
  2185.  
  2186. Also note the following correspondence of device names and driver
  2187. characteristics:
  2188.  
  2189.   New name       Old name     Description
  2190.   /dev/term/00   /dev/tty00   ???
  2191.   /dev/term/00h  /dev/tty00h  Modem signals and hardware flow control
  2192.   /dev/term/00m  /dev/tty00m  Modem signals(?)
  2193.   /dev/term/00s  /dev/tty00s  Modem signals and software flow control
  2194.   /dev/term/00t  /dev/tty00t  ???
  2195.  
  2196. Lockfile names use device inode.major.minor numbers, e.g.:
  2197.  
  2198.   /var/spool/locks/LK.7679.003.005
  2199.  
  2200. The minor number varies according to the device name suffix (none, h, m, s,
  2201. or t).  Only the inode and major number are compared, and thus all of
  2202. the different names for the same physical device (e.g. all of those shown
  2203. in the table above) interlock effectively.
  2204.  
  2205. Prior to UnixWare 7, serial speeds higher than 38400 are not supported.  In
  2206. UnixWare 7, we also support 57600 and 115200, plus some unexpected ones like
  2207. 14400, 28800, and 76800, by virtue of a strange new interface, evidently
  2208. peculiar to UnixWare 7, discovered while digging through the header files:
  2209. tcsetspeed().  Access to this interface is allowed only in POSIX builds, and
  2210. thus the UnixWare 7 version of C-Kermit is POSIX-based, unlike C-Kermit for
  2211. Unixware 1.x and 2.x (since the earlier UnixWare versions did not support high
  2212. serial speeds, period).
  2213.  
  2214. HOWEVER, turning on POSIX features engages all of the "#if (!_POSIX_SOURCE)"
  2215. clauses in the UnixWare header files, which in turn prevent us from having
  2216. modem signals, access to the hardware flow control APIs, select(), etc -- in
  2217. short, all the other things we need in communications software, especially
  2218. when high speeds are used.  Oh the irony.  And so C-Kermit must be shamelessly
  2219. butchered -- as it has been so many times before -- to allow us to have the
  2220. needed features from the POSIX and non-POSIX worlds.  See the UNIXWAREPOSIX
  2221. sections of ckutio.c.
  2222.  
  2223. Meanwhile the tcsetspeed() function allows any number at all (any long, 0 or
  2224. positive) as an argument and succeeds if the number is a legal bit rate for
  2225. the serial device, and fails otherwise.  There is no list anywhere of legal
  2226. speeds.  Thus the SET SPEED keyword table ("set speed ?" to see it) is
  2227. hardwired based on trial and error with all known serial speeds, the maximum
  2228. being 115200.  However, to allow for the possibility that other speeds might
  2229. be allowed in the future (or with different port drivers), the SET SPEED
  2230. command for UnixWare 7 only allows you to specify any number at all; a warning
  2231. is printed if the number is not in the list, but the number is accepted
  2232. anyway; the command succeeds if tcsetspeed() accepts the number, and fails
  2233. otherwise.
  2234.  
  2235. Old business:
  2236.  
  2237. Using C-Kermit 6.0 on the UnixWare 1.1 Application Server, one user reported
  2238. a system panic when the following script program is executed:
  2239.  
  2240.   set line /dev/tty4
  2241.   set speed 9600
  2242.   output \13
  2243.   connect
  2244.  
  2245. The panic does not happen if a PAUSE is inserted:
  2246.  
  2247.   set line /dev/tty4
  2248.   set speed 9600
  2249.   pause 1
  2250.   output \13
  2251.   connect
  2252.  
  2253. This is using a Stallion EasyIO card installed as board 0 on IRQ 12 on
  2254. a Gateway 386 with the Stallion-supplied driver.  The problem was reported
  2255. to Novell and Stallion and (reportedly) is now fixed.
  2256.  
  2257. (3.11) C-KERMIT AND APOLLO SR10
  2258.  
  2259. Reportedly, version 5A(190), when built under Apollo SR10 using "make
  2260. sr10-bsd", compiles, links, and executes OK, but leaves the terminal unusable
  2261. after it exits -- the "cs7" or "cs8" (character size) parameter has become
  2262. cs5.  The terminal must be reset from another terminal.  Cause and cure
  2263. unknown.  Suggested workaround: Wrap Kermit in a shell script something like:
  2264.  
  2265.   kermit @*
  2266.   stty sane
  2267.  
  2268. (3.12) C-KERMIT AND TANDY XENIX 3.0
  2269.  
  2270. Reportedly, if you type lots of Ctrl-C's during execution of the
  2271. initialization file, ghost Kermit processes will be created, and will compete
  2272. for the keyboard.  They can only be removed via "kill -9" from another
  2273. terminal, or by rebooting.  Diagnosis -- something strange happening with
  2274. the SIGINT handler while the process is reading the directory (it seems to
  2275. occur during the SET PROMPT [\v(dir)] ... sequence).  Cure: unknown.
  2276. Workaround: don't interrupt C-Kermit while it is executing its init file on
  2277. the Tandy 16/6000.
  2278.  
  2279. (3.13) C-KERMIT AND OSF/1 (DIGITAL UNIX)
  2280.  
  2281. Before you can use a serial port on a new Digital Unix system, you must run
  2282. uucpsetup to enable or configure the port.  Evidently the /dev/tty00 and 01
  2283. devices that appear in the configuration are not usable; uucpsetup turns them
  2284. into /dev/ttyd00 and 01, which are.  Note that uucpsetup and other uucp-family
  2285. programs are quite primitive -- they only know about speeds up to 9600 bps and
  2286. their selection of modems dates from the early 1980s.  None of this affects
  2287. Kermit, though -- with C-Kermit, you can use speeds up to 115200 bps (at least
  2288. in DU4.0 and later) and modern modems with hardware flow control and all the
  2289. rest.
  2290.  
  2291. Reportedly, if a modem is set for &S0 (assert DSR at all times), the system
  2292. resets or drops DTR every 30 seconds; reportedly DEC says to set &S1.
  2293.  
  2294. Digital UNIX 3.2 evidently wants to believe your terminal is one line longer
  2295. than you say it is, e.g. when a "more" or "man" command is given.  This is has
  2296. nothing to do with C-Kermit, but tends to annoy those who use Kermit or other
  2297. terminal emulators to access Digital UNIX systems.  Workaround: tell UNIX
  2298. to "stty rows 23" (or whatever).
  2299.  
  2300. Reportedly, there is some bizarre behavior when trying to use a version of
  2301. C-Kermit built on Digital Unix 4.0 on another, possibly due to differing
  2302. OS or library revision levels; for example, the inability to connect to
  2303. certain TCP/IP hosts.  Solution: rebuild C-Kermit from source code on the
  2304. system where you will be using it.
  2305.  
  2306. Digital UNIX tgetstr() causes a segmentation fault.  C-Kermit 7.0 includes
  2307. #ifdefs to avoid calling this routine in Digital UNIX.  As a result, the
  2308. SCREEN commands always send ANSI escape sequences -- even though curses knows
  2309. your actual terminal type.
  2310.  
  2311. (3.14) C-KERMIT AND SGI IRIX
  2312.  
  2313. See also:
  2314.   The comp.sys.sgi.misc and .admin newsgroups.
  2315.   The SGI FAQ:
  2316.     http://www-viz.tamu.edu/~sgi-faq/
  2317.     ftp://viz.tamu.edu/pub/sgi/faq/
  2318.  
  2319. About IRIX version numbers: "uname -a" tells the "two-digit" version number,
  2320. such as "5.3" or "6.5".  The three-digit form can be seen with "uname -R".
  2321. (this information is unavailable at the simple API level).  Supposedly all
  2322. three-digit versions within the same two-digit version (e.g. 6.5.2, 6.5.3) are
  2323. binary compatible; i.e. a binary built on any one of them should run on all
  2324. others.  The "m" suffix denotes just patches; the "f" suffix indicates that
  2325. features were added.
  2326.  
  2327. SGI did not supply an API for hardware flow control prior to IRIX 5.2.
  2328. C-Kermit 6.1 and higher for IRIX 5.2 and higher supports hardware flow control
  2329. in the normal way, via "set flow rts/cts".
  2330.  
  2331. For hardware flow control on earlier IRIX and/or C-Kermit versions, use the
  2332. ttyf* (modem control AND hardware flow control) devices and not the ttyd*
  2333. (direct) or ttym* (modem control but no hardware flow control) ones, and
  2334. obtain the proper "hardware handshaking" cable from SGI, which is incompatible
  2335. with the ones for the Macintosh and NeXT even though they look the same.  "man
  2336. serial" for further info.
  2337.  
  2338. Serial speeds higher than 38400 are available in IRIX 6.2 and later, on
  2339. O-class machines (e.g. Origin, Octane) only, and are supported by C-Kermit 6.1
  2340. and later.  Commands such as "set speed 115200" may be given on other models
  2341. (e.g. Iris, Indy, Indigo) but will fail because the OS reports an invalid
  2342. speed for the device.
  2343.  
  2344. Experimentation with both IRIX 5.3 and 6.2 shows that when logged in to IRIX
  2345. via Telnet, that remote-mode C-Kermit can't send files if the packet length is
  2346. greater than 4096; the Telnet server evidently has this restriction (or bug),
  2347. since there is no problem sending long packets on serial or rlogin
  2348. connections.  However, it can receive files with no problem if the packet
  2349. length is greater than 4096.  As a workaround, the FAST macro for IRIX
  2350. includes "set send packet-length 4000".  IRIX 6.5.1 does not have this
  2351. problem, so evidently it was fixed some time after IRIX 6.2.  Tests show
  2352. file-transfer speeds are better (not worse) with 8K packets than with 4K
  2353. packets from IRIX 6.5.1.
  2354.  
  2355. Reportedly some Indys have bad serial port hardware.  IRIX 5.2, for example,
  2356. needs patch 151 to work around this; or upgrade to a later release.
  2357. Similarly, IRIX 5.2 has several problems with serial i/o, flow control, etc.
  2358. Again, patch or upgrade.
  2359.  
  2360. Reportedly on Silicon Graphics (SGI) machines with IRIX 4.0, Kermit cannot be
  2361. suspended by typing the suspend ("swtch") character if it was started from
  2362. csh, even though other programs can be suspended this way, and even though the
  2363. Z and SUSPEND commands still work correctly.  This is evidently because IRIX's
  2364. csh does not deliver the SIGTSTP signal to Kermit.  The reason other programs
  2365. can be suspended in the same environment is probably that they do not trap
  2366. SIGTSTP themselves, so the shell is doing the suspending rather than the
  2367. application.
  2368.  
  2369. Also see notes about IRIX 3.x in ckcuins.txt.
  2370.  
  2371. (3.15) C-KERMIT AND THE BEBOX
  2372.  
  2373. See also: The comp.sys.be newsgroup.
  2374.  
  2375. The BeBox isn't a real product yet, and BeOS -- particularly the POSIX pieces
  2376. of it -- aren't finished.  As the POSIX bits are fleshed out, a lot of the
  2377. Be-specific code can Be removed.  C-Kermit 6.0 works only in BeOS DR7.  The
  2378. workarounds in this version are for DR7, contributed by an anonymous donor,
  2379. sufficient to:
  2380.  
  2381.   - set line /dev/serial2 (and probably the other serial ports)
  2382.   - set speed 115200 (and at least some of the lower baud rates)
  2383.   - connect
  2384.   - set modem type hayes (and likely others, too)
  2385.   - dial [phone number]
  2386.   - set send packet length 2048 (other lengths for both send and receive)
  2387.   - set receive packet length 2048
  2388.   - set file type binary (text mode works, too)
  2389.     (with remote kermit session in server mode)
  2390.   - put bedrop.jpg
  2391.   - get bedrop.jpg
  2392.   - get bedrop.jpg bedrop.jpg2
  2393.   - finish, bye
  2394.  
  2395. The following do not work:
  2396.   - kermit does not detect modem hangup
  2397.   - !/RUN/PUSH [commandline command]
  2398.   - running kermit in remote mode
  2399.   - using other protocols (x/y/zmodem)
  2400.   - TCP networking interface (Be's TCP/IP API has a ways to go, still)
  2401.  
  2402. C-Kermit does not work on BeOS DR8 because of changes in the underlying APIs.
  2403. Unfortunately not enough changes were made to allow the regular POSIX-based
  2404. C-Kermit to work either.  Note: the lack of a fork() service requires the
  2405. select()-based CONNECT module, but there is no select().  There is a select()
  2406. in DR8, but it doesn't work.
  2407.  
  2408. Stay tuned.
  2409.  
  2410. (3.16) C-KERMIT AND DG/UX
  2411.  
  2412. Somebody downloaded the C-Kermit 6.0 binary built under DG/UX 5.40 and ran it
  2413. under DG/UX 5.4R3.10 -- it worked OK except that file dates for incoming files
  2414. were all written as 1 Jan 1970.  Cause and cure unknown.  Workaround:
  2415. SET ATTRIBUTE DATE OFF.
  2416.  
  2417. (3.17) C-KERMIT AND SEQUENT DYNIX
  2418.  
  2419. Reportedly, when coming into a Sequent UNIX (DYNIX) system through an X.25
  2420. connection, Kermit doesn't work right because the Sequent's FIONREAD ioctl
  2421. returns incorrect data.  To work around, use the 1-character-at-a-time version
  2422. of myread() in ckutio.c (i.e. undefine MYREAD in ckutio.c and rebuild the
  2423. program).  This is unsatisfying because two versions of the program would be
  2424. needed -- one for use over X.25, and the other for serial and TCP/IP
  2425. connections.
  2426.  
  2427. (3.18) C-KERMIT AND {FREE,OPEN,NET}BSD
  2428.  
  2429. Some NebBSD users have reported difficulty escaping back from CONNECT mode,
  2430. usually when running NetBSD on non-PC hardware.  Probably a keyboard issue.
  2431.  
  2432. NetBSD users have also reported that C-Kermit doesn't pop back to the prompt
  2433. if the modem drops carrier.  This needs to be checked out & fixed if possible.
  2434.  
  2435. (4) GENERAL UNIX-SPECIFIC HINTS, LIMITATIONS, AND BUGS
  2436.  
  2437. In version 6.0, the default C-Kermit prompt includes your current (working)
  2438. directory; for example:
  2439.  
  2440.   [/usr/olga] C-Kermit>
  2441.  
  2442. If that directory is on an NFS-mounted disk, and NFS stops working or the
  2443. disk becomes unavailable, C-Kermit will hang waiting for NFS and/or the disk
  2444. to come back.  Whether you can interrupt C-Kermit when it is hung this way
  2445. depends on the specific OS.  Kermit has called the operating systems's
  2446. getcwd() function, and is waiting for it to return.  Some versions of UNIX
  2447. (e.g. HP-UX 9.x) allow this function to be interrupted with SIGINT (Ctrl-C),
  2448. others (such as HP-UX 8.x) do not.  To avoid this effect, you can always
  2449. use SET PROMPT change your prompt to something that does not involve calling
  2450. getcwd(), but if NFS is not responding, C-Kermit will still hang any time you
  2451. give a command that refers to an NFS-mounted directory.  Also note that in some
  2452. cases, the uninterruptibility of NFS-dependent system or library calls is
  2453. considered a bug, and sometimes there are patches.  For HP-UX, for example:
  2454.  
  2455.                                                         replaced by:
  2456.   HP-UX 10.20     libc    PHCO_8764                     PHCO_14891/PHCO_16723
  2457.   HP-UX 10.10     libc    PHCO_8763                     PHCO_14254/PHCO_16722
  2458.   HP-UX 9.x       libc    PHCO_7747       S700          PHCO_13095
  2459.   HP-UX 9.x       libc    PHCO_6779       S800          PHCO_11162
  2460.  
  2461. You might have reason to make C-Kermit the login shell for a specific user,
  2462. by entering the pathname of Kermit (possibly with command-line switches, such
  2463. as -x to put it in server mode) into the shell field of the /etc/passwd file.
  2464. This works pretty well.  In some cases, for "ultimate security", you might
  2465. want to use a version built with -DNOPUSH (see ckccfg.txt) for this, but even
  2466. if you don't, then PUSHing or shelling out from C-Kermit just brings up a
  2467. new copy of C-Kermit (but warning: this does not prevent the user from
  2468. explicitly running a shell; e.g. "run /bin/sh"; use NOPUSH to prevent this).
  2469.  
  2470. C-Kermit will not work as expected on a remote UNIX system, when used through
  2471. the "splitvt" or GNU "screen" programs.  In this case, terminal connections to
  2472. the remote UNIX system work, but attempts to transfer files fail because the
  2473. screen optimization (or at least, line wrapping, control-character absorption)
  2474. done by this package interferes with Kermit's packets.
  2475.  
  2476. You might try the following -- what we call "doomsday Kermit" -- settings to
  2477. push packets through even the densest and most obstructive connections, such
  2478. as "screen" and "splitvt" (and certain kinds of 3270 protocol emulators):
  2479. Give these commands to BOTH Kermit programs:
  2480.  
  2481.   SET FLOW NONE
  2482.   SET CONTROL PREFIX ALL
  2483.   SET RECEIVE PACKET-LENGTH 70
  2484.   SET RECEIVE START 62
  2485.   SET SEND START 62
  2486.   SET SEND PAUSE 100
  2487.   SET BLOCK B
  2488.  
  2489. If it works, it will be slow.
  2490.  
  2491. On UNIX workstations equipped with DOS emulators like SoftPC, watch out for
  2492. what these emulators do to the serial port drivers.  After using a DOS
  2493. emulator, particularly if you use it to run DOS communications software, you
  2494. might have to reconfigure the serial ports for use by UNIX.
  2495.  
  2496. On AT&T 7300 (3B1) machines, you might have to "stty nl1" before starting
  2497. C-Kermit.  Do this if characters are lost during communications operations.
  2498.  
  2499. Under the bash shell (versions prior to 1.07 from CWRU), "pushing" to an
  2500. inferior shell and then exiting back to Kermit leaves Kermit in the background
  2501. such that it must be explicitly fg'd.  This is reportedly fixed in version
  2502. 1.07 of bash.
  2503.  
  2504. Interruption by Ctrl-Z makes UNIX C-Kermit try to suspend itself with
  2505. kill(0,SIGSTOP), but only on systems that support job control, as determined
  2506. by whether the symbol SIGTSTP is defined (or on POSIX or SVR4 systems, if
  2507. syconf(_SC_JOB_CONTROL) or _POSIX_JOB_CONTROL in addition to SIGTSTP).
  2508. However, if Kermit is running under a login shell (such as the original Bourne
  2509. shell) that does not support job control, the user's session hangs and must be
  2510. logged out from another terminal, or hung up on.  There is no way Kermit can
  2511. defend itself against this.  If you use a non-job control shell on a computer
  2512. that supports job control, give a command like "stty susp undef" to fix it so
  2513. the suspend signal is not attached to any particular key, or give the command
  2514. SET SUSPEND OFF to C-Kermit, or build C-Kermit with -DNOJC.
  2515.  
  2516. Reportedly, the UNIX C-Kermit server, under some conditions, on certain
  2517. particular systems, fails to log out its login session upon receipt of a
  2518. BYE command.  Before relying on the BYE command working, test it a few times
  2519. to make sure it works on your system: there might be system configuration or
  2520. security mechanisms to prevent an inferior process (like Kermit) from
  2521. killing a superior one (like the login shell).
  2522.  
  2523. (5) INITIALIZATION AND COMMAND FILES
  2524.  
  2525. C-Kermit's initialization file for UNIX is .kermrc (lowercase, starts with
  2526. period) in your home directory, unless Kermit was built with the system-wide
  2527. initialization-file option (see ckuins.txt).
  2528.  
  2529. C-Kermit identifies your home directory based on the environment variable,
  2530. HOME.  Most UNIX systems set this variable automatically when you log in.  If
  2531. C-Kermit can't find your initialization file, check your HOME variable:
  2532.  
  2533.   echo $HOME      (at the UNIX prompt)
  2534.  
  2535. or:
  2536.  
  2537.   echo \$(HOME)   (at the C-Kermit prompt)
  2538.  
  2539. If HOME is not defined, or is defined incorrectly, add the appropriate
  2540. definition to your UNIX .profile or .login file, depending on your shell:
  2541.  
  2542.   setenv HOME full-pathname-of-your-home-directory  (C-Shell, .login file)
  2543. or:
  2544.   HOME=full-pathname-of-your-home-directory         (sh, ksh, .profile file)
  2545.   export HOME
  2546.  
  2547. NOTE: Various other operations depend on the correct definition of HOME.
  2548. These include the "tilde-expansion" feature, which allows you to refer to
  2549. your home directory as "~" in filenames used in C-Kermit commands, e.g.
  2550.  
  2551.   send ~/.kermrc
  2552.  
  2553. as well as the \v(home) variable.
  2554.  
  2555. Prior to version 5A(190), C-Kermit would look for its initialization file in
  2556. the current directory if it was not found in the home directory.  This feature
  2557. was removed from 5A(190) because it was a security risk.  Some people, however,
  2558. liked this behavior and had .kermrc files in all their directories that would
  2559. set up things appropriately for the files therein.  If you want this behavior,
  2560. you can accomplish it in various ways, for example:
  2561.  
  2562.  . Create a shell alias, for example:
  2563.    alias kd="kermit -Y ./.kermrc"
  2564.  
  2565.  . Create a .kermrc file in your home directory, whose contents are:
  2566.    take ./.kermrc
  2567.  
  2568. The TAKE command does not search your UNIX PATH for command files.  If a
  2569. command file is not in the current directory, you must give a full path
  2570. specification for it.  This poses a problem for TAKE commands that are
  2571. themselves in TAKE files.  See the trick used in CKETEST.INI...
  2572.  
  2573. Suppose you need to pass a password from the UNIX command line to a C-Kermit
  2574. script program, in such a way that it does not show up in "ps" or "w" listings.
  2575. Here is a method (not guaranteed to be 100% secure, but definitely more secure
  2576. than the more obvious methods):
  2577.  
  2578.   echo mypassword | kermit myscript
  2579.  
  2580. The "myscript" file contains all the commands that need to be executed during
  2581. the Kermit session, up to and including EXIT, and also includes an ASK or ASKQ
  2582. command to read the password from standard input, which has been piped in from
  2583. the UNIX 'echo' command, but it must not include a CONNECT command.  Only
  2584. "kermit myscript" shows up in the ps listing.
  2585.  
  2586. (6) COMMUNICATION SPEED SELECTION
  2587.  
  2588. Version-7 based UNIX implementations, including 4.3 BSD and earlier and UNIX
  2589. systems based upon BSD, use a 4-bit field to record a serial device's terminal
  2590. speed.  This leaves room for 16 speeds, of which the first 14 are normally:
  2591.  
  2592.   0, 50, 75, 110, 134.5, 150, 200, 300, 600, 1200, 1800, 2400, 4800, and 9600
  2593.  
  2594. The remaining two are usually called EXTA and EXTB, and are defined by the
  2595. particular UNIX implementation.  C-Kermit determines which speeds are
  2596. available on your system based on whether symbols for them are defined in your
  2597. terminal device header files.  EXTA is generally assumed to be 19200 and EXTB
  2598. 38400, but these assumptions might be wrong, or they might not apply to a
  2599. particular device that does not support these speeds.  Presumably, if you try
  2600. to set a speed that is not legal on a particular device, the driver will
  2601. return an error, but this can not be guaranteed.
  2602.  
  2603. On these systems, it is usually not possible to select a speed of 14400 bps
  2604. for use with V.32bis modems.  In that case, use 19200 or 38400 bps, configure
  2605. your modem to lock its interface speed and to use RTS/CTS flow control, and
  2606. tell C-Kermit to SET FLOW RTS/CTS and SET DIAL SPEED-MATCHING OFF.
  2607.  
  2608. The situation is similar, but different, in System V.  SVID Third Edition
  2609. lists the same speeds, 0 through 38400.
  2610.  
  2611. Some versions of UNIX, and/or terminal device drivers that come with
  2612. certain third-party add-in high-speed serial communication interfaces, use the
  2613. low "baud rates" to stand for higher ones.  For example, SET SPEED 50 gets you
  2614. 57600 bps; SET SPEED 75 gets you 76800; SET SPEED 110 gets 115200.
  2615.  
  2616. SCO ODT 3.0 is an example where a "baud-rate-table patch" can be applied that
  2617. can rotate the tty driver baud rate table such that 600=57600 and 1800=115k
  2618. baud.   Similarly for Digiboard multiport/portservers, which have a
  2619. "fastbaud" setting that does this.  Linux has a "setserial" command that can
  2620. do it, etc.
  2621.  
  2622. More modern UNIXes support POSIX-based speed setting, in which the selection
  2623. of speeds is not limited by a 4-bit field.  C-Kermit 6.1 incorporates a new
  2624. mechanism for finding out (at compile time) which serial speeds are supported
  2625. by the operating system that does not involve editing of source code by hand;
  2626. on systems like Solaris 5.1, IRIX 6.2, and SCO OSR5.0.4, "set speed ?" will
  2627. list speeds up to 460800 or 921600.  In C-Kermit 7.0:
  2628.  
  2629.  1. If a symbol for a particular speed (say B230400 for 230400 bps) appears
  2630.     in whatever header file defines acceptable serial speeds (e.g. <termbits.h>
  2631.     or <sys/termios.h> or <sys/ttydev.h>, etc), the corresponding speed will
  2632.     appear in C-Kermit's "set speed ?" list.
  2633.  
  2634.  2. The fact that a given speed is listed in the header files and appears in
  2635.     C-Kermit's list does not mean the driver will accept it.  For example,
  2636.     a computer might have some standard serial ports plus some add-on ones
  2637.     with different drivers that accept a different repertoire of speeds.
  2638.  
  2639.  3. The fact that a given speed is accepted by the driver does not guarantee
  2640.     the underlying hardware can accept it.
  2641.  
  2642. When Kermit is given a "set speed" command for a particular device, the
  2643. underlying system service is called to set the speed; its return code is
  2644. checked and the SET SPEED command fails if the return code indicates failure.
  2645. Regardless of the system service return status, the device's speed is then
  2646. read back and if it does not match the speed that was requested, an error
  2647. message is printed and the command fails.
  2648.  
  2649. Even when the command succeeds, this does not guarantee successful operation
  2650. at a particular speed, especially a high one.  That depends on electricity,
  2651. information theory, etc.  How long is the cable, what is its capacitance, how
  2652. well is it shielded, etc, not to mention that every connection has two ends
  2653. and its success depends on both of them.  (With the obvious caveats about
  2654. internal modems, is the cable really connected, interrupt conflicts, etc etc
  2655. etc).
  2656.  
  2657. Note, in particular, that there is a certain threshold above which modems can
  2658. not "autobaud" -- i.e. detect the serial interface speed when you type AT (or
  2659. whatever else the modem's recognition sequence might be).  Such modems need to
  2660. be engaged at a lower speed (say 2400 or 9600 or even 115200 -- any speed
  2661. below their autobaud threshold) and then must be given a modem-specific
  2662. command (which can be found in the modem manual) to change their interface
  2663. speed to the desired higher speed, and then the software must also be told to
  2664. change to the new, higher speed.
  2665.  
  2666. For additional information, read the section TERMINAL SPEEDS in ckuins.txt,
  2667. plus any platform-specific notes in Section (3) above.
  2668.  
  2669. (7) COMMUNICATIONS AND DIALING
  2670.  
  2671. If you SET LINE to a serial port modem-control device that has nothing plugged
  2672. in to it, or has a modem connected that is powered off, and you have not given
  2673. a prior SET MODEM TYPE or SET CARRIER-WATCH OFF command, the SET LINE command
  2674. is likely to hang.  In most cases, you can Ctrl-C out.  If not, you'll have to
  2675. kill C-Kermit from another terminal.
  2676.  
  2677. Similarly, if you give a SET MODEM TYPE HAYES (or USR, or any other modem type
  2678. besides DIRECT, NONE, or UNKNOWN) and then SET LINE to an empty port, the
  2679. subsequent close (implicit or explicit) is liable to hang or even crash
  2680. (through no fault of Kermit's -- the hanging or crashing is inside a system
  2681. call such as cfsetospeed() or close()).
  2682.  
  2683. The SET CARRIER-WATCH command works as advertised only if the underlying
  2684. operating system and device drivers support this feature; in particular only
  2685. if a read() operation returns immediately with an error code if the carrier
  2686. signal goes away or, failing that, if C-Kermit can obtain the modem signals
  2687. from the device driver (you can tell by giving a "set line" command to a
  2688. serial device, and then a "show communications" command -- if modem signals
  2689. are not listed, C-Kermit won't be able to detect carrier loss, the WAIT
  2690. command will not work, etc).  Of course, the device itself (e.g. modem) must
  2691. be configured appropriately and the cables convey the carrier and other needed
  2692. signals, etc.
  2693.  
  2694. If you dial out from UNIX system, but then notice a lot of weird character
  2695. strings being stuck into your session at random times (especially if they look
  2696. like +++ATQ0H0 or login banners or prompts), that means that getty is also
  2697. trying to control the same device.  You'll need to dial out on a device that
  2698. is not waiting for a login, or else disable getty on the device.
  2699.  
  2700. In version 7.0, C-Kermit makes a lot of explicit checks for the Carrier Detect
  2701. signal, and so catches hung-up connections much better than 6.0 and earlier.
  2702. However, it still can not be guaranteed to catch every ever CD on-to-off
  2703. transition.  For example, when the HP-UX version of C-Kermit is in CONNECT
  2704. mode on a dialed connection and CARRIER-WATCH ON or AUTO, and you turn off
  2705. the modem, HP-UX is stuck in a read() that never returns.  (C-Kermit does not
  2706. pop back to its prompt automatically, but you can still escape back.)
  2707.  
  2708. If, on the other hand, you log out from the remote system, and it hangs up,
  2709. and CD drops on the local modem, C-Kermit detects this and pops back to the
  2710. prompt as it should.  (Evidently there can be a difference between CD and DSR
  2711. turning off at the same time, versus CD turning off while DSR stays on;
  2712. experimentation with &S0/&S1/&S2 on your modem might produce the desired
  2713. results).
  2714.  
  2715. When UNIX C-Kermit exits, it closes (and must close) the communications
  2716. device.  If you were dialed out, this will most likely hang up the connection.
  2717. If you want to get out of Kermit and still use Kermit's communication device,
  2718. you have several choices:
  2719.  
  2720.  1. Shell out from Kermit or suspend Kermit, and refer to the device literally
  2721.     (as in "term -blah -blah < /dev/cua > /dev/cua").
  2722.  
  2723.  2. Shell out from Kermit and use the device's file descriptor which Kermit
  2724.     makes available to you in the \v(ttyfd) variable.
  2725.  
  2726.  3. Use C-Kermit's REDIRECT command.  See the ckermit2.txt file about this.
  2727.  
  2728.  4. Use C-Kermit new EXEC /REDIRECT command, also described in ckermit2.txt.
  2729.  
  2730. If you are having trouble dialing:
  2731.  
  2732.  1. Make sure the dialout line is configured correctly.  More
  2733.     about this below.
  2734.  
  2735.  2. Make sure all necessary patches are installed for your operating
  2736.     system.
  2737.  
  2738.  3. If you can't dial on a "bidirectional" line, then configure it for
  2739.     outbound-only (remove the getty) and try again.  (The mechanisms -- if
  2740.     any -- for grabbing bidirectional lines for dialout vary wildly
  2741.     among UNIX implementations and releases, and C-Kermit -- which runs on
  2742.     well over 300 different UNIX variations -- makes no effort to keep up
  2743.     with them; the recommended method for coping with this situation is to
  2744.     wrap C-Kermit in a shell script that takes the appropriate actions.)
  2745.  
  2746.  4. Make sure C-Kermit's SET DIAL and SET MODEM parameters agree with the
  2747.     modem you are actually using -- pay particular attention to SET DIAL
  2748.     SPEED-MATCHING.
  2749.  
  2750.  5. Try SET DIAL HANGUP OFF before the DIAL command.  Also, SET DIAL DISPLAY
  2751.     ON to watch what's happening.  See section 8 of ckuins.txt.
  2752.  
  2753.  6. Read pages 50-67 of "Using C-Kermit".
  2754.  
  2755.  7. As a last resort, don't use the DIAL command at all; SET CARRIER OFF and
  2756.     CONNECT to the modem and dial interactively, or write a script program to
  2757.     dial the modem.
  2758.  
  2759. Make sure your dialout line is correctly configured for dialing out (as
  2760. opposed to login).  The method for doing this is different for each kind of
  2761. UNIX system.  Consult your system documentation for configuring lines for
  2762. dialing out (for example, SUN SparcStation IPC users should read the section
  2763. "Setting up Modem Software" in the Desktop SPARC Sun System & Network
  2764. Manager's Guide; HP-9000 workstation users should consult the manual
  2765. "Configuring HP-UX for Peripherals", etc).
  2766.  
  2767. Symptom: DIAL works, but a subsequent CONNECT command does not.  Diagnosis:
  2768. the modem is not asserting Carrier Detect (CD) after the connection is made,
  2769. or the cable does not convey the CD signal.  Cure: Reconfigure the modem,
  2770. replace the cable.  Workaround: SET CARRIER OFF (at least in System-V based
  2771. UNIX versions).
  2772.  
  2773. C-Kermit tries to use the 8th bit for data when parity is NONE, and this
  2774. generally works on real UNIX terminal (tty) devices, but it often does not
  2775. work when the UNIX system is accessed over a network via telnet or rlogin
  2776. protocols, including (in many cases) through terminal servers.  For example,
  2777. an Encore computer with Annex terminal servers only gives a 7-bit path if
  2778. the rlogin protocol is selected in the terminal server but it gives the full
  2779. 8 bits if the proprietary RDP protocol is used.
  2780.  
  2781. If file transfer does not work through a host to which you have rlogin'd,
  2782. use "rlogin -8" rather than "rlogin".  If that doesn't work, tell both Kermit
  2783. programs to "set parity space".
  2784.  
  2785. The Encore TELNET server does not allow long bursts of input.  When you have
  2786. a TELNET connection to an Encore, tell C-Kermit on the Encore to SET RECEIVE
  2787. PACKET-LENGTH 200 or thereabouts.
  2788.  
  2789. For Berkeley-UNIX-based systems (4.3BSD and earlier), Kermit includes code to
  2790. use LPASS8 mode when parity is none, which is supposed to allow 8-bit data and
  2791. Xon/Xoff flow control at the same time.  However, as of edit 174, this code is
  2792. entirely disabled because it is unreliable: even though the host operating
  2793. system might (or might not) support LPASS8 mode correctly, the host access
  2794. protocols (terminal servers, telnet, rlogin, etc) generally have no way of
  2795. finding out about it and therefore render it ineffective, causing file
  2796. transfer failures.  So as of edit 174, Kermit once again uses rawmode for
  2797. 8-bit data, and so there is no Xon/Xoff flow control during file transfer or
  2798. terminal emulation in the Berkeley-based versions (4.3 and earlier, not 4.4).
  2799.  
  2800. Also on Berkeley-based systems (4.3 and earlier), there is apparently no way
  2801. to configure a dialout line for proper carrier handling, i.e. ignore carrier
  2802. during dialing, require carrier thereafter, get a fatal error on any attempt
  2803. to read from the device after carrier drops (this is handled nicely in System
  2804. V by manipulation of the CLOCAL flag).  The symptom is that carrier loss does
  2805. not make C-Kermit pop back to the prompt automatically.  This is evident on
  2806. the NeXT, for example, but not on SunOS, which supports the CLOCAL flag.  This
  2807. is not a Kermit problem, but a limitation of the underlying operating system.
  2808. For example, the cu program on the NeXT doesn't notice carrier loss either,
  2809. whereas cu on the Sun does.
  2810.  
  2811. On certain AT&T UNIX systems equipped with AT&T modems, DIAL and HANGUP don't
  2812. work right.  Workarounds: (1) SET DIAL HANGUP OFF before attempting to dial;
  2813. (2) If HANGUP doesn't work, SET LINE, and then SET LINE <device> to totally
  2814. close and reopen the device.  If all else fails, SET CARRIER OFF.
  2815.  
  2816. C-Kermit does not contain any particular support for AT&T DataKit devices.
  2817. You can use Kermit software to dial in to a DataKit line, but C-Kermit does
  2818. not contain the specialized code required to dial out from a DataKit line.  If
  2819. the UNIX system is connected to DataKit via serial ports, dialout should work
  2820. normally (e.g. set line /dev/ttym1, set speed 19200, connect, and then see the
  2821. DESTINATION: prompt, from which you can connect to another computer on the
  2822. DataKit network or to an outgoing modem pool, etc).  But if the UNIX system
  2823. is connected to the DataKit network through the special DataKit interface
  2824. board, then SET LINE to a DataKit pseudodevice (such as /dev/dk031t) will not
  2825. work (you must use the DataKit "dk" or "dkcu" program instead).
  2826.  
  2827. In some BSD-based UNIX C-Kermit versions, SET LINE to a port that has nothing
  2828. plugged in to it with SET CARRIER ON will hang the program (as it should), but
  2829. it can't be interrupted with Ctrl-C.  The interrupt trap is correctly armed,
  2830. but apparently the UNIX open() call cannot be interrupted in this case.  When
  2831. SET CARRIER is OFF or AUTO, the SET LINE will eventually return, but then the
  2832. program hangs (uninterruptibly) when the EXIT or QUIT command (or, presumably,
  2833. another SET LINE command) is given.  The latter is probably because of the
  2834. attempt to hang up the modem.  (In edit 169, a timeout alarm was placed around
  2835. this operation.)
  2836.  
  2837. With SET DIAL HANGUP OFF in effect, the DIAL command might work only once,
  2838. but not again on the same device.  In that case, give a SET LINE command
  2839. with no arguments to close the device, and then another SET LINE command for
  2840. the desired device.  Or rebuild your version of Kermit with the -DCLSOPN
  2841. compile-time switch (see ckuins.txt).
  2842.  
  2843. The DIAL command says "To cancel: Type your interrupt character (normally
  2844. Ctrl-C)."  This is just one example of where program messages and
  2845. documentation assume your interrupt character is Ctrl-C.  But it might be
  2846. something else.  In most (but not necessarily all) cases, the character
  2847. referred to is the one that generates the SIGINT signal.  If Ctrl-C doesn't
  2848. act as an interrupt character for you, type the Unix command "stty -a" or
  2849. "stty all" or "stty everything" to see what your interrupt character is.
  2850. (Kermit could be made to find out what the interrupt character is, but this
  2851. would require a lot of system-dependent coding and #ifdefs, and a new routine
  2852. and interface between the system-dependent and system-independent parts of the
  2853. program.)
  2854.  
  2855. In general, the hangup operation on a serial communication device is prone
  2856. to failure.  C-Kermit tries to support many, many different kinds of
  2857. computers, and there seems to be no portable method for hanging up a modem
  2858. connection (i.e. turning off the RS-232 DTR signal and then turning it back on
  2859. again).  If HANGUP, DIAL, and/or Ctrl-\H do not work for you, and you are a
  2860. programmer, look at the tthang() function in ckutio.c and see if you can add
  2861. code to make it work correctly for your system, and send the code to the
  2862. address above.  (NOTE: This problem has been largely sidestepped as of edit
  2863. 188, in which Kermit first attempts to hang up the modem by "escaping back"
  2864. via +++ and then giving the modem's hangup command, e.g. ATH0, when DIAL
  2865. MODEM-HANGUP is ON, which is the default setting.)
  2866.  
  2867. Even when Kermit's modem-control software is configured correctly for your
  2868. computer, it can only work right if your modem is also configured to assert
  2869. the CD signal when it is connected to the remote modem and to hang up the
  2870. connection when your computer drops the DTR signal.  So before deciding Kermit
  2871. doesn't work with your modem, check your modem configuration AND the cable (if
  2872. any) connecting your modem to the computer -- it should be a straight-through
  2873. modem cable conducting the signals FG, SG, TD, RD, RTS, CTS, DSR, DTR, CD,
  2874. and RI.
  2875.  
  2876. Many UNIX systems keep aliases for dialout devices; for example, /dev/acu
  2877. might be an alias for /dev/tty00.  But most of these UNIX systems also use
  2878. UUCP lockfile conventions that do not take this aliasing into account, so if
  2879. one user assigns (e.g.) /dev/acu, then another user can still assign the same
  2880. device by referring to its other name.  This is not a Kermit problem --
  2881. Kermit must follow the lockfile conventions used by the vendor-supplied
  2882. software (cu, tip, uucp).
  2883.  
  2884. The SET FLOW-CONTROL KEEP option should be given *before* any communication
  2885. (dialing, terminal emulation, file transfer, INPUT/OUTPUT/TRANSMIT, etc) is
  2886. attempted, if you want C-Kermit to use all of the device's preexisting
  2887. flow-control related settings.  The default flow-control setting is XON/XOFF,
  2888. and it will take effect when the first communication-related command is given,
  2889. and a subsequent SET FLOW KEEP command will not necessarily know how to
  2890. restore *all* of the device's original flow-control settings.
  2891.  
  2892. (8) HARDWARE FLOW CONTROL
  2893.  
  2894. SET FLOW RTS/CTS is available in UNIX C-Kermit only when the underlying
  2895. operating system provides an Application Program Interface (API) for turning
  2896. this feature on and off under program control, which turns out to be a rather
  2897. rare feature among UNIX systems.  To see if your UNIX C-Kermit version
  2898. supports hardware flow control, type "set flow ?" at the C-Kermit prompt, and
  2899. look for "rts/cts" among the options.  Other common situations include:
  2900.  
  2901.  1. The API is available, so "set flow rts/cts" appears as a valid C-Kermit
  2902.     command, but it doesn't do anything because the device driver (part of
  2903.     the operating system) was never coded to do hardware flow control.  This
  2904.     is common among System V R4 implementations (details below).
  2905.  
  2906.  2. The API is not available, so "set flow rts/cts" does NOT appear as a valid
  2907.     C-Kermit command, but you can still get RTS/CTS flow control by selecting
  2908.     a specially named device in your SET LINE command.  Examples:
  2909.  
  2910.       NeXTSTEP: /dev/cufa instead of /dev/cua, /dev/cufb instead of /dev/cub
  2911.       (68040 only; "man zs" for further info).
  2912.  
  2913.       IRIX: /dev/ttyf2 instead of /dev/ttyd2 or /dev/ttym2 ("man 7 serial").
  2914.  
  2915.  3. The API is available, doesn't work, but a workaround as in (2) can be used.
  2916.  
  2917.  4. The API is available, but Kermit doesn't know about it.  In these cases,
  2918.     you can usually use an stty command to enable RTS/CTS on the device, e.g.
  2919.     "stty crtscts" or "stty ctsflow", "stty rtsflow", before starting Kermit,
  2920.     and then tell Kermit to SET FLOW KEEP.
  2921.  
  2922.  5. No API and no special device drivers.  Hardware flow control is completely
  2923.     unavailable.
  2924.  
  2925. System V R4 based UNIXes are supposed to supply a <termiox.h> file, which
  2926. gives Kermit the necessary interface to command the terminal driver to
  2927. enable/disable hardware flow control.  Unfortunately, but predictably, many
  2928. implementations of SVR4 whimsically place this file in /usr/include/sys rather
  2929. than /usr/include (where SVID clearly specifies it should be; see SVID, Third
  2930. Edition, V1, termiox(BA_DEV).  Thus if you build C-Kermit with any of the
  2931. makefile entries that contain -DTERMIOX or -DSTERMIOX (the latter to select
  2932. <sys/termiox.h>), C-Kermit will have "set flow rts/cts" and possibly other
  2933. hardware flow-control related commands.  BUT...  That does not necessarily
  2934. mean that they will work.  In some cases, the underlying functions are simply
  2935. not coded into the operating system.
  2936.  
  2937. (9) TERMINAL CONNECTION AND KEY MAPPING
  2938.  
  2939. UNIX C-Kermit is not a terminal emulator.  Refer to page 147 of "Using
  2940. C-Kermit", 2nd Edition: "Most versions of C-Kermit -- UNIX, VMS, AOS/VS, VOS,
  2941. etc -- provide terminal connection without emulation.  These versions act as a
  2942. 'semitransparent pipe' between the remote computer and your terminal, terminal
  2943. emulator, console driver, or window, which in turn emulates (or is) a specific
  2944. kind of terminal."  The environment in which you run C-Kermit is up to you.
  2945.  
  2946. If you are an X Windows user, you should be aware of an alternative to xterm
  2947. that supports VT220 emulation, from Thomas E. Dickey:
  2948.  
  2949.   http://www.clark.net/pub/dickey/xterm/xterm.faq.html
  2950.  
  2951. UNIX C-Kermit's SET KEY command currently can not be used with keys that
  2952. generate "wide" scan codes or multibyte sequences, such as workstation
  2953. function or arrow keys, because UNIX C-Kermit does not have direct access to
  2954. the keyboard.
  2955.  
  2956. However, many UNIX workstations and/or console drivers provide their own key
  2957. mapping feature.  With xterm, for example, you can use 'xmodmap' ("man
  2958. xmodmap" for details); here is an xterm mapping to map the Sun keyboard to DEC
  2959. VT200 values for use with VT-terminal oriented applications like VMS EVE:
  2960.  
  2961.   keycode 101=KP_0
  2962.   keycode 119=KP_1
  2963.   keycode 120=KP_2
  2964.   keycode 121=KP_3
  2965.   keycode 98=KP_4
  2966.   keycode 99=KP_5
  2967.   keycode 100=KP_6
  2968.   keycode 75=KP_7
  2969.   keycode 76=KP_8
  2970.   keycode 77=KP_9
  2971.   keycode 52=KP_F1
  2972.   keycode 53=KP_F2
  2973.   keycode 54=KP_F3
  2974.   keycode 57=KP_Decimal
  2975.   keycode 28=Left
  2976.   keycode 29=Right
  2977.   keycode 30=KP_Separator
  2978.   keycode 105=KP_F4
  2979.   keycode 78=KP_Subtract
  2980.   keycode 8=Left
  2981.   keycode 10=Right
  2982.   keycode 32=Up
  2983.   keycode 33=Down
  2984.   keycode 97=KP_Enter
  2985.  
  2986. Users of Linux consoles can use loadkeys ("man dumpkeys loadkeys keytables"
  2987. for details.  The format used by loadkeys is compatible with that used by
  2988. Xmodmap, although it is not definitely certain that the keycodes are
  2989. compatible for different keyboard types (e.g. Sun vs HP vs PC, etc).
  2990.  
  2991. (10) FILE TRANSFER
  2992.  
  2993. Suppose you start C-Kermit with a command-line argument to send or receive a
  2994. file (e.g. "kermit -r") and then type Ctrl-\c immediately afterwards to escape
  2995. back and initiate the other end of the transfer, BUT your local Kermit's
  2996. escape character is not Ctrl-\.  In this case, the local Kermit passes the
  2997. Ctrl-\ to the remote system, and if this is UNIX, Ctrl-\ is likely to be its
  2998. SIGQUIT character, which causes the current program to halt and dump core.
  2999. Well, just about the first thing C-Kermit does when it starts is to disable
  3000. the SIGQUIT signal.  However, it is still possible for SIGQUIT to cause Kermit
  3001. to quit and dump core if it is delivered while Kermit is being loaded or
  3002. started, before the signal can be disabled.  There's nothing Kermit itself can
  3003. do about this, but you can prevent it from happening by disabling SIGQUIT in
  3004. your UNIX session.  The command is usually something like:
  3005.  
  3006.   stty quit undef
  3007.  
  3008. UNIX C-Kermit does not reject incoming files on the basis of size.  There
  3009. appears to be no good (reliable, portable) way to determine in advance how
  3010. much disk space is available, either on the device, or (when quotas or other
  3011. limits are involved) to the user.
  3012.  
  3013. File transfer can fail if the incoming file is bigger than your "ulimit".
  3014. Use the UNIX ulimit command to examine or change your ulimit (the number is
  3015. in 512-byte blocks, i.e. 0.5K).  The exact effect of the ulimit depends on
  3016. the particular UNIX version, and to some extent probably also on the shell.
  3017. "man ulimit" for details, or read the man page for the shell you are using.
  3018.  
  3019. UNIX C-Kermit discards all carriage returns from incoming files when in text
  3020. mode.
  3021.  
  3022. If C-Kermit has problems creating files in writable directories when it is
  3023. installed setuid or setgid on BSD-based versions of UNIX such as NeXTSTEP 3.0,
  3024. it probably needs to be rebuilt with the -DSW_ACC_ID compilation switch (see
  3025. ckuins.txt).
  3026.  
  3027. If C-Kermit is receiving a file on a dialup connection and the connection
  3028. hangs up, the SIGHUP signal is delivered to the top-level shell, which kills
  3029. all processes (including Kermit and any of its subforks) and closes all open
  3030. files, including the file that was being received.  Even if you have told
  3031. Kermit to SET FILE INCOMPLETE DISCARD, the partially received file is kept.
  3032. See comments in ckutio.c (search for SIGHUP) for details.
  3033.  
  3034. If you SET FILE DISPLAY FULLSCREEN, and C-Kermit complains "Sorry, terminal
  3035. type not supported", it means that the terminal library (termcap or termlib)
  3036. that C-Kermit was built with does not know about a terminal whose name is the
  3037. current value of your TERM environment variable.  If this happens, but you
  3038. want to have the fullscreen file transfer display, EXIT from C-Kermit and set
  3039. a UNIX terminal type from among the supported values that is also supported by
  3040. your terminal emulator, or else have an entry for your terminal type added to
  3041. the system termcap and/or terminfo database.
  3042.  
  3043. If you attempt to suspend C-Kermit during local-mode file transfer and then
  3044. continue it in the background (via bg), it will block for "tty output" if
  3045. you are using the FULLSCREEN file transfer display.  This is apparently
  3046. a problem with curses.  Moving a local-mode file transfer back and forth
  3047. between foreground and background works correctly, however, with the SERIAL,
  3048. CRT, BRIEF, or NONE file transfer displays.
  3049.  
  3050. If C-Kermit's command parser no longer echoes, or otherwise acts strangely,
  3051. after returning from a file transfer with the fullscreen (curses) display, and
  3052. the curses library for your version of UNIX includes the newterm() function,
  3053. then try rebuilding your version of C-Kermit with -DCK_NEWTERM.  Similarly if
  3054. it echoes doubly, which might even happen during a subsequent CONNECT session.
  3055. If rebuilding with -DCK_NEWTERM doesn't fix it, then there is something very
  3056. strange about your system's curses library, and you should probably not use
  3057. it.  Tell C-Kermit to SET FILE DISPLAY CRT or anything else other than
  3058. FULLSCREEN, and/or rebuild without -DCK_CURSES, and without linking with
  3059. (termlib and) curses.  Note: In C-Kermit 7.0 this problem seems to have
  3060. escalated, and -DCK_NEWTERM had to be added to many builds that previously
  3061. worked without it: Linux, AIX 4.1, DG/UX, etc.  In the Linux case, it is
  3062. obviously because of changes in the (n)curses library; the cause in the other
  3063. cases is not known.
  3064.  
  3065. Reportedly, when using "MSEND *" from a 14-character filename UNIX system to
  3066. another system (e.g. BSD) that allows longer names, with SET FILE NAMES
  3067. LITERAL, any files with 14-character names will have a space added to the end
  3068. of the name on the receiving machine (this *should* be fixed in 6.0).
  3069.  
  3070. C-Kermit creates backup-file names (such as "oofa.txt.~1~") based on its
  3071. knowledge of the maximum filename length on the platform where it is running,
  3072. which is learned at compile time, based on MAXNAMLEN or equivalent symbols
  3073. from the system header files.  But suppose C-Kermit is receiving files on a
  3074. UNIX platform that supports long filenames, but the incoming files are being
  3075. stored on an NFS-mounted file system that supports only short names.  NFS maps
  3076. the external system to the local APIs, so C-Kermit has no way of knowing that
  3077. long names will be truncated.  Or that C-Kermit is running on a version of
  3078. UNIX that supports both long-name and short-name file systems simultaneously
  3079. (such as HP-UX 7.00).  This can cause unexpected behavior when creating backup
  3080. files, or worse.  For example, you are sending a group of files whose names
  3081. are differentiated only by characters past the point at which they would be
  3082. truncated, each file will overwrite the previous one upon arrival.
  3083.  
  3084. Optimum file transfer performance is a matter of tuning parameters like packet
  3085. length, window size, control-character unprefixing, and on serial connections,
  3086. ensuring there is an effective flow control method, preferably hardware (such
  3087. as RTS/CTS).
  3088.  
  3089. However, a fully-configured C-Kermit program can be slower than a minimally
  3090. configured one simply because of its size.  A command-line-only version that
  3091. is stripped of every conceivable feature not affecting file transfer (such as
  3092. "sunos41m" for the Sun or "dellsys5r4m" for Dell) can move files faster than a
  3093. full-featured one.  Thus, it might make sense to keep a minimal version
  3094. available as well as a full-featured one.  See the files ckuins.txt and
  3095. ckccfg.txt as well as the makefile for how to do this.
  3096.  
  3097. A fairly substantial reduction in size and a noticeable improvement in speed
  3098. can be obtained simply by rebuilding C-Kermit without the debugging feature:
  3099.  
  3100.   make <entryname> KFLAGS=-DNODEBUG
  3101.  
  3102. See ckccfg.txt for more detailed information about configuration.
  3103.  
  3104. (11) EXTERNAL FILE TRANSFER PROTOCOLS
  3105.  
  3106. UNIX C-Kermit can be used in conjunction with other communications software
  3107. in various ways.  C-Kermit can be invoked from another communications program
  3108. as an "external protocol", and C-Kermit can also invoke other communication
  3109. software to perform external protocols.
  3110.  
  3111. This sort of operation makes sense only when you are dialing out from your
  3112. UNIX system.  If the UNIX system is the one you have dialed in to, you don't
  3113. need any of these tricks.  Just run the desired software on your UNIX system
  3114. instead of Kermit.  When dialing out from a UNIX system, the difficulty is
  3115. getting two programs to share the same communication device in spite of the
  3116. UNIX UUCP lockfile mechanism, which would normally prevent any sharing, and
  3117. preventing the external protocol from closing (and therefore hanging up) the
  3118. device when it exits back to the program that invoked it.
  3119.  
  3120. (This section deleted; see "Using C-Kermit", 2nd Ed, Chapter 14.)
  3121.  
  3122. "pcomm" is a general-purpose terminal program that provides file transfer
  3123. capabilities itself (X- and YMODEM variations) and the ability to call on
  3124. external programs to do file transfers (ZMODEM and Kermit, for example).  You
  3125. can tell pcomm the command to send or receive a file with an external
  3126. protocol:
  3127.             send                receive
  3128.     ZMODEM        sz <filename>            rz
  3129.     Kermit        kermit -s <filename>        kermit -r
  3130.  
  3131. pcomm runs external programs for file transfer by making stdin and stdout
  3132. point to the modem port, and then exec-ing "/bin/sh -c xxx" (where xxx is the
  3133. appropriate command).  However, C-Kermit does not treat stdin and stdout as
  3134. the communication device unless you instruct it:
  3135.  
  3136.             send                receive
  3137.     Kermit        kermit -l 0 -s <filename>    kermit -l 0 -r
  3138.  
  3139. The "-l 0" option means to use file descriptor 0 for the communication device.
  3140.  
  3141. In general, any program can pass any open file descriptor to C-Kermit for the
  3142. communication device in the "-l" command-line option.  When Kermit is given
  3143. a number as the argument to the "-l" option, it simply uses it as a file
  3144. descriptor, and it does not attempt to close it upon exit.
  3145.  
  3146. Here's another example, for Seyon (a Linux communication program).  First try
  3147. the technique above.  If that works, fine; otherwise...  If Seyon does not
  3148. give you a way to access and pass along the file descriptor, but it starts up
  3149. the Kermit program with its standard i/o redirected to its (Seyon's)
  3150. communications file descriptor, you can also experiment with the following
  3151. method, which worked here in brief tests on SunOS.  Instead of having Seyon
  3152. use "kermit -r" or "kermit -s filename" as its Kermit protocol commands, use
  3153. something like this (examples assume C-Kermit 6.0):
  3154.  
  3155.   For serial connections:
  3156.  
  3157.     kermit -YqQl 0 -r                     <-- to receive
  3158.     kermit -YqQl 0 -s filename(s)         <-- to send one or more files
  3159.  
  3160.   For Telnet connections:
  3161.  
  3162.     kermit -YqQF 0 -r                     <-- to receive
  3163.     kermit -YqQF 0 -s filename(s)         <-- to send one or more files
  3164.  
  3165. Command line options:
  3166.  
  3167.   Y    - skip executing the init file
  3168.   Q    - use fast file transfer settings
  3169.   l 0  - transfer files using file descriptor 0 for a serial connection
  3170.   F 0  - transfer files using file descriptor 0 for a Telnet connection
  3171.   q    - quiet - no messages
  3172.   r    - receive
  3173.   s    - send
  3174.  
  3175. (11.2) INVOKING EXTERNAL PROTOCOLS FROM C-KERMIT
  3176.  
  3177.    (This section is obsolete, but not totally useless.
  3178.     See Chapter 14 of "Using C-Kermit", 2nd Edition).
  3179.  
  3180. After you have opened a communication link with C-Kermit's SET LINE (SET PORT)
  3181. or SET HOST (TELNET) command, C-Kermit makes its file descriptor available to
  3182. you in the \v(ttyfd) variable so you can make it available to other programs
  3183. that you RUN from C-Kermit.  Here, for example, C-Kermit runs itself as an
  3184. external protocol:
  3185.  
  3186.   C-Kermit>set modem type hayes
  3187.   C-Kermit>set line /dev/acu
  3188.   C-Kermit>set speed 2400
  3189.   C-Kermit>dial 7654321
  3190.    Call complete.
  3191.   C-Kermit>echo \v(ttyfd)
  3192.    3
  3193.   C-Kermit>run kermit -l \v(ttyfd)
  3194.  
  3195. Other programs that accept open file descriptors on the command line can be
  3196. started in the same way.
  3197.  
  3198. You can also use your shell's i/o redirection facilities to assign C-Kermit's
  3199. open file descriptor (ttyfd) to stdin or stdout.  For example, old versions of
  3200. the UNIX ZMODEM programs, sz and rz, when invoked as external protocols,
  3201. expect to find the communication device assigned to stdin and stdout with no
  3202. option for specifying any other file descriptor on the sz or rz command line.
  3203. However, you can still invoke sz and rz as exterior protocols from C-Kermit if
  3204. your current shell ($SHELL variable) is ksh (the Korn shell) or bash (the
  3205. Bourne-Again shell), which allows assignment of arbitrary file descriptors to
  3206. stdin and stdout:
  3207.  
  3208.   C-Kermit> run rz <&\v(ttyfd) >&\v(ttyfd)
  3209.  
  3210. or:
  3211.  
  3212.   C-Kermit> run sz oofa.zip <&\v(ttyfd) >&\v(ttyfd)
  3213.  
  3214. In version 5A(190) and later, you can use C-Kermit's REDIRECT command, if it
  3215. is available in your version of C-Kermit, to accomplish the same thing without
  3216. going through the shell:
  3217.  
  3218.   C-Kermit> redirect rz
  3219.  
  3220. or:
  3221.  
  3222.   C-Kermit> redirect sz oofa.zip
  3223.  
  3224. A complete set of rz,sz,rb,sb,rx,sx macros for UNIX C-Kermit is defined in
  3225. the file ckurzsz.ini.  It automatically chooses the best redirection method.
  3226.  
  3227. (11.3) USING C-KERMIT WITH TERM
  3228.  
  3229.   Note: the following section dates from circa 1994.  Since then,
  3230.   evidently, "slirp" has supplanted "term", and reportedly, unlike
  3231.   term, slirp can be used transparently to the application:
  3232.     http://blitzen.canberra.edu.au/resources
  3233.  
  3234. The "term" program provides an error-corrected, multiplexed connection
  3235. between two UNIX systems, allowing you to run multiple applications over a
  3236. single connection, for example several terminal windows and a file transfer
  3237. simultaneously.  Term depends on a communications application (such as
  3238. C-Kermit) to make the connection and then redirect it to term's standard i/o.
  3239. The advantages of using C-Kermit rather than other communication programs for
  3240. this include:
  3241.  
  3242.  . C-Kermit's script language lets you automate the entire process.
  3243.  
  3244.  . With C-Kermit's REDIRECT command, term sessions are not limited to serial
  3245.    connections, but can work over network connections (TCP/IP, X.25) too.
  3246.  
  3247. Here is an example showing how to set up a term session between two UNIX
  3248. systems with C-Kermit (assuming the connection has already been made by
  3249. C-Kermit, e.g. by dialing up):
  3250.  
  3251.   C-Kermit> connect
  3252.   login: xxx
  3253.   Password: xxx
  3254.   $ exec term -r -s 38400 -A
  3255.   ^\c (escape back)
  3256.   C-Kermit>redirect term -s 38400 -A &
  3257.   C-Kermit>push  ; or "suspend"
  3258.   $
  3259.  
  3260. Now you can run term clients such as trsh and tupload at the local shell
  3261. prompt.
  3262.  
  3263. (12) SECURITY
  3264.  
  3265. We receive constant requests for versions of C-Kermit that use all sorts of
  3266. security mechanisms: SOCKS, SSL, SSH, SSLeay, TSL, PCT, SRP, etc etc.  Well...
  3267.  
  3268.  (a) C-Kermit can be linked with a SOCKS library if you have one; see
  3269.      ckccfg.txt, section 8.1.1.
  3270.  
  3271.  (b) Most of the others require export or import licenses, carry source-code
  3272.      restrictions, and/or are patented.
  3273.  
  3274. HOWEVER...
  3275.  
  3276.  (c) C-Kermit 7.0 includes support for Kerberos; see kerberos.txt for details.
  3277.  
  3278.  (d) It also has a new feature to let it be used "over" secure clients like
  3279.      SSL Telnet, SRP Telnet, etc.  See ckermit2.txt Sections 2.7 and 2.14
  3280.      for details.
  3281.  
  3282.  
  3283. (13) MISCELLANEOUS USER REPORTS
  3284.  
  3285. Date: Thu, 12 Mar 92 1:59:25 MEZ
  3286. From: Walter Mecky <walter@rent-a-guru.de>
  3287. Subject: Help.Unix.sw
  3288. To: svr4@pcsbst.pcs.com, source@usl.com
  3289.  
  3290. PRODUCT:    Unix
  3291. RELEASE:    Dell SVR4 V2.1 (is USL V3.0)
  3292. MACHINE:    AT-386
  3293. PATHNAME:    /usr/lib/libc.so.1
  3294.         /usr/ccs/lib/libc.a
  3295. ABSTRACT:    Function ttyname() does not close its file descriptor
  3296. DESCRIPTION:
  3297.     ttyname(3C) opens /dev but never closes it. So if it is called
  3298.     often enough the open(2) in ttyname() fails. Because the broken
  3299.     ttyname() is in the shared lib too all programs using it can
  3300.     fail if they call it often enough. One important program is
  3301.     uucico which calls ttyname for every file it transfers.
  3302.  
  3303. Here is a little test program if your system has the bug:
  3304.  
  3305. #include <stdlib.h>
  3306. #include <stdio.h>
  3307. main() {
  3308.     int i = 0;
  3309.     while (ttyname(0) != NULL)
  3310.       i++;
  3311.     perror("ttyname");
  3312.     printf("i=%d\n", i);
  3313. }
  3314.  
  3315. If this program runs longer than some seconds you don't have the bug.
  3316.  
  3317. WORKAROUND:
  3318.     None
  3319. FIX:
  3320.     Very easy if you have source code.
  3321.  
  3322. Another user reports some more explicit symptoms and recoveries:
  3323.  
  3324. > What happens is when invoking ckermit we get one of the following
  3325. > error messages:
  3326. >   You must set line
  3327. >   Not a tty
  3328. >   No more processes.
  3329. > One of the following three actions clears the peoblem:
  3330. >   shutdown -y -g0 -i6
  3331. >   kill -9 the ttymon with the highest PID
  3332. >   Invoke sysadm and disable then enable the line you want to use.
  3333. > Turning off respawn of sac -t 300 and going to getty's and uugetty's
  3334. > does not help.
  3335. >
  3336. > Also C-Kermit reports "?timed out closing /dev/ttyxx".
  3337. > If this happens all is well.
  3338.  
  3339. ------------------------------
  3340.  
  3341. (Note: the following problem also occurs on SGI and probably many other
  3342. UNIX systems):
  3343.  
  3344. From: James Spath <spath@jhunix.hcf.jhu.edu>
  3345. To: Info-Kermit-Request@cunixf.cc.columbia.edu
  3346. Date: Wed, 9 Sep 1992 20:20:28 -0400
  3347. Subject: C-Kermit vs uugetty (or init) on Sperry 5000
  3348.  
  3349. We have successfully compiled the above release on a Unisys/Sperry 5000/95.  We
  3350. used the sys5r3 option, rather than sys5r2 since we have VR3 running on our
  3351. system.  In order to allow dialout access to non-superusers, we had to do
  3352. "chmod 666 /dev/tty###", where it had been -rw--w--w- (owned by uucp), and to
  3353. do "chmod +w /usr/spool/locks".  We have done text and binary file transfers
  3354. through local and remote connections.
  3355.  
  3356. The problem concerning uucp ownership and permissions is worse than I thought
  3357. at first.  Apparently init or uugetty changes the file permissions after each
  3358. session.  So I wrote the following C program to open a set of requested tty
  3359. lines.  I run this for any required outgoing line prior to a Kermit session.
  3360.  
  3361.    ------ cut here -------
  3362. /* opentty.c -- force allow read on tty lines for modem i/o */
  3363. /* idea from: restrict.c -- System 5 Admin book Thomas/Farrow p. 605 */
  3364. /* /jes jim spath {spath@jhunix.hcj.jhu.edu } */
  3365. /* 08-Sep-92 NO COPYRIGHT. */
  3366. /* this must be suid to open other tty lines */
  3367.  
  3368. /* #define DEBUG */
  3369. #define TTY "/dev/tty"
  3370. #define LOK "/usr/spool/locks/LCK..tty"
  3371. #include <stdio.h>
  3372.  
  3373. /* allowable lines: */
  3374. #define TOTAL_LINES 3
  3375. static char allowable[TOTAL_LINES][4] = { "200", "201", "300" };
  3376. static int total=TOTAL_LINES;
  3377. int allow;
  3378.  
  3379. /* states: */
  3380. #define TTY_UNDEF 0
  3381. #define TTY_LOCK  1
  3382. #define TTY_OKAY  2
  3383.  
  3384. main(argc, argv)
  3385. int argc; char *argv[]; {
  3386.     char device[512];
  3387.     char lockdev[512];
  3388.     int i;
  3389.     if (argc == 1) {
  3390.     fprintf(stderr, "usage: open 200 [...]\n");
  3391.     }
  3392.     while (--argc > 0 && (*++argv) != NULL ) {
  3393. #ifdef DEBUG
  3394.     fprintf(stderr, "TRYING: %s%s\n", TTY, *argv);
  3395. #endif
  3396.     sprintf(device, "%s%s", TTY, *argv);
  3397.     sprintf(lockdev, "%s%s", LOK, *argv);
  3398.     allow = TTY_UNDEF; i = 0;
  3399.     while (i <= total) { /* look at all defined lines */
  3400. #ifdef DEBUG
  3401.         fprintf(stderr, "LOCKFILE? %s?\n", lockdev);
  3402. #endif
  3403.         if (access(lockdev, 00) == 0) {
  3404.         allow=TTY_LOCK;
  3405.         break;
  3406.         }
  3407. #ifdef DEBUG
  3408.         fprintf(stderr, "DOES:%s==%s?\n", allowable[i], *argv);
  3409. #endif
  3410.         if (strcmp(allowable[i], *argv) == 0)
  3411.           allow=TTY_OKAY;
  3412.         i++;
  3413.     }
  3414. #ifdef DEBUG
  3415.     fprintf(stderr, "allow=%d\n", allow);
  3416. #endif
  3417.     switch (allow) {
  3418.       case TTY_UNDEF:
  3419.         fprintf (stderr, "open: not allowed on %s\n", *argv);
  3420.         break;
  3421.       case TTY_LOCK:
  3422.         fprintf (stderr, "open: device locked: %s\n", lockdev);
  3423.         break;
  3424.       case TTY_OKAY:
  3425.         /* attempt to change mode on device */
  3426.         if (chmod (device, 00666) < 0)
  3427.           fprintf (stderr, "open: cannot chmod on %s\n", device);
  3428.         break;
  3429.       default:
  3430.         fprintf (stderr, "open: FAULT\n");
  3431.     }
  3432.     }
  3433.     exit (0);
  3434. }
  3435.  
  3436. ------------------------------
  3437.  
  3438. (14) THIRD-PARTY DRIVERS
  3439.  
  3440. UNIX versions, especially those for PCs (SCO, Unixware, etc) might be
  3441. augmented by third-party communication-board drivers from Digiboard, Stallion,
  3442. etc.  These can sometimes complicate matters for Kermit considerably since
  3443. Kermit has no way of knowing that it is going through a possibly nonstandard
  3444. driver.  Various examples are listed in the earlier sections of this file;
  3445. search for Stallion, Digiboard, etc.  Additionally:
  3446.  
  3447.  . The Stallion Technologies EasyConnection serial board driver does not
  3448.    always report the state of DSR as low.  From Stallion (October 1997):
  3449.    "Unfortunately, this is a bug in our driver. We have implemented all of the
  3450.    other TIOMC functions, eg DTR, DCD, RTS and CTS, but not DSR. Our driver
  3451.    should report the actual state of DSR on those of our cards that have a DSR
  3452.    signal. That the driver always reports DSR as not asserted (0), is a bug in
  3453.    the driver. The driver should be either reporting the state of DSR
  3454.    correctly on those cards that support DSR or as always asserted (1) on
  3455.    those cards that do not have a DSR signal. This will be fixed in a future
  3456.    version of our drivers; at this time I cannot say when this will be."  And
  3457.    later, "As far as I can tell, we don't support the termios/termiox ioctls
  3458.    that relate specifically to DSR and RI; all the rest are supported.  This
  3459.    will, as I mentioned earlier, be fixed in the next release of our ATA
  3460.    software."  - World Wide Escalation Support, Stallion Technologies,
  3461.    Toowong QLD, support@stallion.oz.au.
  3462.  
  3463. Later (December 1997, from the same source):
  3464.  
  3465.  . We have now released a new version of the ATA software, version 5.4.0.
  3466.    This version fixes the problem with the states of the DSR and RI
  3467.    signals and how they were being reported by the driver. This is the
  3468.    problem that you reported in October. The DSR signal is reported
  3469.    correctly on those cards that support the DSR signal, such as the early
  3470.    revision of the EasyIO card and the EasyConnection 8D4 panel, and as
  3471.    always asserted on those cards that do not support the DSR signal in
  3472.    the hardware.   The new driver is available from our Web site,
  3473.    www.stallion.com, in the  /drivers/ata5/UnixWare directory.
  3474.  
  3475. (End of CKUBWR.TXT)
  3476.