IMPORTANT NOTE: This FAQ has grown beyond the 64 kB limit imposed on news articles by some sites, and has therefore been split into two parts, not including the Administrative FAQ. If you do not see the answer for your question in one part, please look in the other. The Table of Contents shows which part of the FAQ contains which information. Revision Information -------------------- Version: 2.04 Date: 24 October 1994 Author: Stephen M. Dunn stephen@bokonon.UUCP {uunet.ca,becker.gts.org,xrtll.UUCP}!bokonon!stephen New Features: Where to get Zmodem NOTE: All lines that have been added or modified since the previous version are marked with ** at the start of the line. All new questions are indicated in the Table of Contents with * at the start of the line. DISCLAIMER: I try to keep this information correct, up-to-date, and useful. From time to time, errors and oversights will occur. While this group is read by numerous SCO staff and other experts, and they tend to catch any mistakes I make, there is no guarantee that the information below is 100% right. THANKS: I can't do this without the help of a number of other people. You know who you are. Thank you. Table of Contents ----------------- One Bit of Administrivia (Both Parts) Questions and Answers Common to Unix, Xenix and ODT (Part 1) -How do I stop banners from printing? -Are there any screen savers? -How do I compress my backups? -I don't like being restricted to 14 character filenames -How do I get a copy of adb? -I can't find crypt -What do I need to compile programs? -What does the NCALL kernel parameter affect? -How do I reset the root password if I forget it? (part 1) -How do I reset the root password if I forget it? (part 2) -How do I reset the root password if I forget it? (part 3) -How do I crash out of the N1/N2 install script? -Why can't fsck find my lost+found directory? -I want more space in my lost+found directory -How do I find out serial numbers of my various components? -How do I solve an "arglist too long"? -What versions/configurations am I using? -I have a bad block on my hard drive -My system is slow -Why did my region table overflow? -How do I solve "fork failed: no more processes"? -How are minor device numbers assigned by mkdev hd? -I need fax software. Who makes it? -How much swap space do I need? -Can I add more swap space? -Do haltsys and reboot do a sync()? -How can I get more than 64k inodes? *Where do I get zmodem? Questions and Answers Specific to Unix/ODT (Part 2) -I have a system memory dump in my swap space; how do I delete it? -How do I save kernel panic dumps to tape? -At boot time, the "Enter the root password or ^D" message doesn't work! -My non-EAFS filesystem gives errors on filenames greater than 14 chars -I just upgraded to 3.2v4 but I still can't use long filenames -The permissions on /usr/adm/sa and its children are wrong -I get an error "Cannot obtain database information on this terminal" -I need help configuring MMDF -What is the new "low" security level in 3.2v4? -My AHA154x/174x isn't being detected -How do I upgrade from an n-user licence? -How do I get MMDF to send one copy of a message to many people? -My system is slow or hangs when sizing memory -My system doesn't recognize files starting with #! Questions and Answers about TCP/IP and NFS (Part 2) -telnet doesn't work properly -How do I know if I have enough streams buffers for TCP/IP and/or NFS? -TCP/IP gives messages like "Notice: TCP SUM: SRC 89270107 SUM 0000D7AD" Questions and Answers about Serial Communications and UUCP (Part 2) -My serial connections are losing characters -What do the terms UART, 8250, 16450 and 16550 mean? -How do I adjust my 16550's trigger level? -I can transfer small files via UUCP but large ones won't go -I can transfer small files via UUCP but large ones go really slowly -How do I get better UUCP throughput? -How do I change uucico's window size? -I increased my window size but nothing changed -I increased my window size and UUCP broke! -UUCP frequently has to resend packets -How do I chance uucico's packet timeout? -What special considerations are there regarding my Telebit modem? -What are all the V.something codes, MNP, HST, etc.? -How do I maximize serial throughput? -My data-compressing modem doesn't work much faster than my old modem -A BSD-based machine can't connect to mine via UUCP -Where can I get more information on UUCP protocols? -I edited my gettydefs and things broke -I can't get shared dial-in and dial-out working Questions and Answers about X Windows (Part 2) -Does SCO Xsight support my ET4000-based super VGA card? -Can I get X11R5 to run on my ODT 2.0 system? -Is there a driver for my video card? -How do I get Athena Widgets? --------------------------------------------------------------------------- One Bit of Administrivia ------------------------ There are two different FAQ lists that periodically get posted here. This is the technical one. If you have a question regarding net.etiquette, the administration of these mailing lists/newsgroups, how to contact SCO, where to look on the net for SCO ports of software, or how to download files from SCO's systems, please look for the Administrative FAQ. It will probably answer your question. These two FAQs are posted at the same time, at intervals of roughly two weeks. Note in particular that if you require instructions on how to contact SCO, download SLSes, or look at various anonymous archive sites, you should look in the Administrative FAQ. ---------------------Beginning of Part One------------------- Questions and Answers Common to Unix, Xenix and ODT --------------------------------------------------- How do I stop banners from printing? You need to edit the file /etc/default/lpd. You need one of the following lines: For Xenix: BANNERS=0 For Unix: BANNERS=nobanner Note that there are some Unix printer interface scripts which do not use /etc/default/lpd, and you must use an option to these to disable banners. Also, some Unix printer interface scripts expect the Xenix syntax above. Aren't standards wonderful? Should you encounter one of these, if you're reasonably adept at shell scripts, you might want to cut and paste the section that reads /etc/default/lpd from a script that works properly. Of course, be sure you make note of your changes so that you can redo them the next time an upgrade replaces your printer drivers. Are there any screen savers? Unix (and Xenix 2.3.4) have a built-in screen saver for VGA only. You have to reconfigure the kernel for this to work. It doesn't work with all hardware, but try it first. Also, it has been reported that VP/ix may not be compatible with this screen saver. How do I compress my backups? Well, you _could_ just run the output of tar, cpio, or whatever through compress ... but if even one bit of your tape or diskette goes bad, you'll lose the rest of the backup. Not recommended at all. A better solution would be a third-party product such as BackupEDGE (Microlite Corp., 1021 Sutherland Street, Pittsburgh, PA 15204; info@microlite.com or ...!uunet!mlite!info; (800) 992-2827 or (412) 771-4901), BRU (Enhanced Software Technologies Inc., 5016 S. Ash Avenue Suite 109, Tempe, AZ 85282; ...!uunet!estinc!info; (800) 998-8649 or (602) 820-0042), DBR (DMS Systems Inc., 1111 Brickyard Road, Salt Lake City, UT 84106; (801) 484-3333), or Lone-Tar (Lone Star Software Inc., 13987 W. Annapolis Court, Mt. Airy, MD 21771; (301) 829-1622). These products tend to be fast and robust, and they will usually help you recover from disasters far better than the utilities that ship with the operating system. Note that these are not the only products on the market, but rather a sample. Consult your favourite reseller or Unix-focused magazine for further ideas. UnixWorld did a review of a number of such products in its December 1992 edition. I don't like being restricted to 14 character filenames If you're running Xenix, or a version of Unix prior to 3.2v4, I'm afraid you're stuck. Unix 3.2v4, however, includes long filename support on all EAFS filesystems. More information on long filenames can be found in the section dealing with Unix. How do I get a copy of adb? If you have the Development System, you already have /bin/adb. If not, you may need to grab a copy from your distribution, or it may already have been installed, depending on your OS and version. It could be called /bin/adb (older Xenix) or /etc/_fst (Unix and recent versions of Xenix). If you don't have either of these, look through the files in /etc/perms for them; in Xenix 2.3.4, you will find one of each, which will be in fact the exact same file but on two different diskettes. If the volume on which the file you want is mountable (you can check this in the manual, or use the dtype command), then mount it and copy the file off. Otherwise, use tar to extract the file, keeping in mind that the filenames on your diskettes are all written with relative paths (i.e. ./bin/adb, not /bin/adb). Note that if you look in the Unix documentation, it may well tell you that you need /bin/adb, when in fact it's called /etc/_fst. I can't find crypt Most (all?) of SCO's release notes state that due to American government restrictions aimed at trying to prevent unfriendly nations from having access to data encryption technology, SCO does not ship crypt with their products. If you live in the States and would like crypt(C) and the crypt(S) libraries, contact SCO support. This is also worth trying in Canada, as the particular regulation in question permits export of such technology to Canada; however, I don't know if SCO will honour such requests. What do I need to compile programs? Xenix, Unix and ODT do not ship with program development tools. These are unbundled into packages known as Development Systems. The rationale behind this is that many users of SCO systems are using off-the-shelf software and never need to write a line of C code. If everyone was forced to buy the development system whether they needed it or not, some of the customers might get upset. There is a periodic flame war about this; this is not the place to discuss it. You can buy the Development System for any of the three environments listed above as a separate package including the compiler, header files, libraries, lex, yacc, linker, and other tools. Additionally, development systems are available for other packages such as TCP/IP; these development systems add the include files, libraries, etc. required to program for the package in question. The ODT Dev Sys includes the development tools for all of the other goodies (e.g. TCP/IP, X) that are bundled into ODT. While there are versions of GCC available freely for SCO systems, you cannot simply install one and start compiling most programs, as you will find the standard .h and library files missing (they, too, are part of the Dev Sys). There are free libc.a versions available on the net and elsewhere, and you can compile many X libraries from the MIT source. You may have great difficulty finding networking libraries, though. What does the NCALL kernel parameter affect? NCALL controls the size of the kernel callout table. The kernel has the ability to schedule some action at a given real time; this is often used by device drivers and by the nap(S) system call. The size of this table is set by NCALL. If the system message "timeout table overflow" appears on your console, NCALL should be increased. Increasing NCALL is not expensive in terms of memory or CPU overhead, as the structure is small (16 bytes per entry) and stored sorted, so it is best to be generous with these entries. How do I reset the root password if I forget it? (part 1) This procedure will work for Xenix, and for Unix as well if you are using a very relaxed security level (one which stores encrypted passwords directly in /etc/passwd). If you're using a higher security level on Unix, look for part 2 below. Boot the system from your emergency boot diskettes (if you didn't make these and keep them up to date, shame on you, but you should be able to use N1/N2 instead, and see the entry on crashing out of these diskettes below). Next, mount /dev/hd0root /mnt; this will mount your hard drive's root filesystem on /mnt. Edit /mnt/etc/passwd. The first line will be your root line, such as root:encryptedpasswordgoeshere:0:0:God,Everywhere:/:/bin/sh Edit out the encrypted password (don't touch anything else!) so that the line reads something like root::0:0:God,Everywhere:/:/bin/sh Save the file and shut down. Reboot from the hard drive. Your root password has now been removed, and you can reset it normally. How do I reset the root password if I forget it? (part 2) This is another procedure involving manually editing files, and is specific to SCO Unix 3.2v4.0 through 3.2v4.2. The location of the encrypted passwords depends on the security settings. Look in /etc/passwd, /etc/shadow, and /tcb/files/auth/r/root; one or more of these will be used depending on how you have security configured. Follow the procedure in part 1 above; instead of editing /etc/passwd, edit the appropriate file(s) from the above list, and delete the encrypted password field. Note that formatting is critical; while you can delete the contents of the field, you must not remove separators, and making seemingly minor errors such as leaving blank lines can cause problems. Save, shut down, and reboot. C2 security will complain about what you've done; to make it happy, run /etc/fixmog. You may also want to run /tcb/bin/integrity and /etc/tcbck. How do I reset the root password if I forget it? (part 3) This procedure will work for any variant of SCO Xenix or Unix. As above, boot from your emergency boot diskettes and mount /dev/hd0root /mnt to gain access to your hard drive's root filesystem. Now, run /mnt/bin/chroot /mnt "/mnt/bin/passwd root" (check the chroot man page for more info on how it works). As before, shut down and reboot. It has been reported that on 3.2v4.2 (and possibly others), this must be done in two steps: /mnt/bin/chroot /mnt "/bin/su root", followed by passwd. How do I crash out of the N1/N2 install script? Wait until the question early in the process that asks you what your keyboard type is. For character-mode installations, this is a regular textual prompt; for ODT, it's a box in a curses-style installation program. How to break out at this point depends on the OS. Under Xenix, press Del. Under Unix, type shell and press enter. Under ODT, press Control-A. Why can't fsck find my lost+found directory? Because you don't have one. It's possible someone deleted it, but the more likely cause is that you didn't use mkdev fs to create it. One of the things that fsck looks for is inodes which are marked as used (i.e. not in the free list) but do not have a directory entry pointing to them. fsck will ask if you wish to reconnect these; if you say yes, it will try to create a file entry in the /lost+found directory on that filesystem. If there is no free space in lost+found, it is not safe to expand it because the rest of the filesystem may still be corrupt; for information on this one, see below. If there is not lost+found directory, fsck will tell you that it can't reconnect the file and the data in that file will be lost. I want more space in my lost+found directory By default, the mkdev fs script creates 62 empty entries in lost+found. If you'd like to make more, use a variant of the following script: for a in 0 1 2 3 4 5 6 7 8 9 do for b in 0 1 2 3 4 5 6 7 8 9 do > /lost+found/dummy$a$b done done rm -f /lost+found/* The above will create 100 entries. Season to taste. How do I find out serial numbers of my various components? For the OS itself, you can use uname. For Unix, use uname -X; it will print (among other items) the serial number. For Xenix (at least 2.3.3, and probably other releases), uname -u will print the numerical portion (e.g. if your serial number is sco012345, it will print 12345). Prior to Unix 3.2v4.2/ODT 3.0, SCO does not provide such a mechanism. In these releases, /etc/getserno appeared. To find out the serial number of a package, first find out what binary/ies are serialized for that package: grep ser= /etc/perms/* (or /etc/perms/packagename if you know it) Then, run /etc/getserno filename, where filename is the name of one of the files that is serialized during installation. Note that not all files listed may actually contain a textual representation of the serial number (for example, none of the binaries in the Unix dev sys do). As a special case, the serial number of the OS itself can be found simply by watching the kernel ID it displays at boot time (or look through /usr/adm/messages for it). How do I solve an "arglist too long"? Wildcard expansion (globbing) is performed by the shell. There is a limit of 5120 bytes (5k) for the environment and command line arguments put together. This is particularly likely to be a problem under X, as it has a habit of using a lot of environment space. It is also a problem when running a command such as ls *.c in a directory with a large number of files which match the filespec. The general solution is to construct your command in such a way that it does not have to include all of the filenames on the command line. You can use the echo command, which is built into the shells and therefore is not subject to the 5k limit. For example, rather than "rm V*", you might try "echo V* | xargs rm". A similar, but somewhat more complex solution, might involve using the ls command to generate a list of filenames, and then using a command such as grep to filter them; "ls | grep '^V' | xargs rm" will perform the same task as the above example with echo. You may also find the find command to be useful in this; however, it works recursively so it may not be appropriate in a directory with subdirectories. Please consult the man pages for each of these commands to identify any unexpected side effects they may cause. Another alternative, in cases where the environment is unnecessarily large, is to reduce its size. If you have some environment variables that you never use (be careful with this, as the system or some commands may use things you don't realize), you can permanently remove them in your .profile. You could also temporarily remove some manually. To run a subshell without any of the environment being passed to it, try running env - sh -c 'command' What versions/configurations am I using? WARNING: Many of these commands have different options under different versions of different operating systems, and not all of them are available under all versions of Unix, Xenix, and ODT. I've tried to note such differences but I'm sure many have escaped my attention. Take the following with a grain of salt. Unless noted otherwise, these entries should be applicable to most/all systems. Kernel Configuration: "/usr/sys/conf/configure -x | more" for Xenix, "/etc/conf/cf.d/configure -x | more" for Unix. This lists the current and default values for tunable kernel parameters. Under Unix, /etc/sysdef prints information including BTLDs (Boot Time Loadable Drivers). Software Installed: "/usr/bin/swconfig -p" and "/usr/bin/swconfig -a" (both for Unix) print various information on installed software. You can look at the permissions lists in /etc/perms/* but you cannot tell from here which parts are installed; use custom for that. Use /usr/bin/displaypkg to display software installed using installpkg. Note that swconfig is not a terribly accurate guide. Hardware configuration: "/etc/hwconfig -h" shows most of the installed hardware but not all of it; generally, things like multiport cards don't show up here. Use "/etc/hwconfig -hc" on Unix 3.2v4.x and Xenix 2.3.4 System name, version, etc.: "uname -X" (Unix and Xenix 2.3.4) or "uname -a" (Xenix 2.3.3 and earlier) Printer configuration: "lpstat -t" I have a bad block on my hard drive You will see error messages going by giving you the sector, cylinder, head, and other nifty information regarding the error. If you can jot this down, it makes it much easier to find the bad block without having to scan the entire drive for it. Shut the system down cleanly (i.e. using shutdown or another similar method). If the error is on the root filesystem, boot from emergency floppies; otherwise, you can boot from the hard drive and enter single-user mode. The rule here is that the filesystem on which the error is located must not be mounted while you try to fix it. If you have a SCSI hard drive, use scsibadblk. It ships with Unix 3.2v4.1 and later, and ODT 2.0 and later. For Unix 3.2v4.0, install the 4.1 maintenance supplement or upgrade to 4.2 (not a bad idea anyway). For Unix 3.2.2 or ODT 1.1, install unx347a. For Xenix 2.3.4, install xnx348a. For other releases, you're out of luck. If you're using a standard drive type (MFM, RLL, IDE, ESDI), use /etc/badtrk. I'd recommend doing a thorough, NONDESTRUCTIVE scan of the area where the error message said there was a bad block. Before doing this stuff, have a look at the manual for your specific operating system to see any notes or recommendations made by SCO. If you're not careful here, you might make things worse than they already are (such as by doing a destructive scan). My system is slow First things first - make sure that somebody didn't accidentally turn the Turbo switch off. It might also be wise to run the system's CMOS setup program and ensure that primary and secondary cache is turned on, unless you know for a fact that there's something in your system that won't work properly that way. Under both Unix and Xenix, you can use vmstat to give you an overview of system performance. One problem is that it won't show you what percent of the system's time was spent waiting on I/O devices, and what percent was spent idle; these are both lumped together as idle time. vmstat can be helpful in diagnosing excessive swapping, and in finding if your system is CPU-bound. Unix also offers sar, which is far more advanced than vmstat. It reports on a wide range of system statistics including CPU utilization (system, user, idle, waiting for I/O), memory use, disk cache effectiveness, swapping/paging, and things you've never even thought of. Note that under MPX, it may not be reliable; check your MPX release notes for info (and for information on the monitor program that lets you see how MPX is making use of your CPUs). Multiuser/multitasking/etc. operating systems love extra memory. Xenix will use up to 16 MB; Unix will use much more (how much depends on what version; check your release notes). There are several ways that extra memory is used; here are three of the most important. First, disk buffers; the system uses these for disk cache, and in general, the more, the better. Second, to avoid swapping; while a virtual memory system allows you to access more memory than you actually have, doing so involves the hard drive, which is several orders of magnitude slower than memory. Third, the system keeps recently-used programs in memory; if you access one again, it doesn't have to be reloaded from disk. There are tradeoffs between #1 and #2+#3; the more memory you have, the more generously each can be configured. Note that adding more memory will not cure CPU-bound processes, and will only cure I/O-bound processes if it can be used effectively as a disk cache (often it can, but not always). Why did my region table overflow? Each process generally consists of several (usually, but not always, three) regions - typically code, data, and stack. Two copies of the same program running at the same time will often share code, reducing the number of regions required; however, there's nothing to stop a program from using more than three regions, either. There is a tunable kernel parameter, NREGION, which specifies the maximum number of regions available. This should always be set to at least three times the number of processes (NPROC), and if you want to be on the safe side, use four times NPROC. How do I solve "fork failed: no more processes"? This is usually one of two things. There is a tunable kernel parameter, NPROC, which determines the maximum number of processes that may be running at any time. You may have exceeded this limit. The usual method of solving this is to increase it a fair bit and see if the problem goes away. There is another tunable kernel parameter, MAXUPRC, which determines the maximum number of processes any one user may have running at one time. Under Unix, for example, a large number of mail messages being processed at once may cause this to be exceeded by MMDF, usually resulting in "uux failure - pipe broke" or similar messages. Once again, increase it and see if the problem goes away. How are minor device numbers assigned by mkdev hd? Basically, they start at 64 (the major device number is 1) and go up by 64 each time you run mkdev hd. Don't expect them to be in the same order as your SCSI IDs for the drives unless that's the order you added them in. Also, if you being running mkdev hd but do not complete the process, it will generally already have assigned the next number; the next time you run mkdev hd, it will add another 64 even though you aren't actually using the last drive you started to create. This isn't a problem; it just looks weird. I need fax software. Who makes it? There are numerous vendors in the Unix fax software market. Many of these make software that runs on Xenix as well as on Unix. Listed below, in no particular order, are company names, product names, and contact information for most of them. As always, I hope this is a reasonably complete list; inclusion or exclusion is not to be construed as a comment on the product or company. Also, there is a fax FAQ posted in comp.dcom.fax (from which this list is derived); you may wish to look there. Also, the standard "look through UnixWorld or other magazines" applies, as fax products are often advertised. Arnet - ArnetFAX; (615) 834-8000, clarence@arnet.com Black and White Software - NXFax; (802) 496-8500, nxfax@bandw.com comFax - Com-M-Tex; +49 89 546130-0 COS - TruFax; (609) 771-6705, trufax@cosi.com DigiBoard - DigiFAX; (612) 943-9020, support@dbsales.digibd.com Faximum Software - Faximum ELS, Faximum PLUS; (604) 925-3600, info@Faximum.com ICSW - [product name unknown]; (800) 486-7274, (602) 998-8623 i link GmbH - mix fax; +49 30 216 20 48 Intuitive Technology - FaxLink; (409) 762-8456 netCS GmbH - netFAX; +49 30 787999-0 QUEST systems GmbH - FaxX; +49 231 914028-0, faxx@quest.sub.org Signify Software Products - i(F)x Faxsoftware for UNIX; +31-(0)3480-30131, gerard@integrity.nl smoFax - SMO GmbH; +49 721 551971 UniSal System - FaxTrax; (201) 729-9221 V Systems - VSI-Fax; (714) 545-6442, Brad@VSI.com Company Unknown - FaxFX; (708) 574-3600 Company Unknown - FAXSMART Company Unknown - Fax*Starx; (800) 327 9859 You might also want to look at a couple of publically-available programs. The source code for FlexFAX is available for anonymous FTP on sgi.com (192.48.153.1) as sgi/fax/v2.2.src.tar.Z. GNU NetFax (a.k.a. fax-3.2.1) is available on uunet.uu.net as systems/gnu/fax-3.2.1.tar.z (this is in gzip format). How much swap space do I need? There are two factors to consider - how much you actually need for correct operation of your system, and how much you might need in case of a kernel panic. Unix and Xenix are virtual memory operating systems. If you have, say, 16 MB of RAM and a 20 MB swap device, you have 36 MB of virtual memory available, of which the operating system will keep 16 MB in memory (whatever space it uses, plus the most recently used user memory). Therefore, the total of swap space plus physical RAM must equal or exceed the greatest amount of physical memory your system will need. The kernel, however, will check how much swap space is available whenever a program executes a system call which may require more swap space, such as fork() or malloc(). There must be enough free swap space to hold the memory which the system call will allocate, or else the system call will fail. This is a safety precaution which applies even if no swapping is required! So you will need as much swap space as you will have swappable memory (generally, stack and data regions). The other consideration relates to system panics, and does not apply to Xenix. Should a system panic occur, the kernel will dump the contents of physical memory into the swap device. There is a net.rumour that should you have more physical memory than swap space, it will overwrite whatever's next to the swap device with the dump. It is possible to force the kernel to overwrite something with a poor choice of parameters on the Boot: line (e.g. explicitly giving an incorrect size for the swap device), but without this form of prompting, the kernel will not dump any more memory than it believes will fit into the device specified for dumps. One final comment - swapping is a wonderful thing, in that it allows you to use more memory than you actually have. However, disk is several orders of magnitude slower than memory, and so the more swapping you have, the slower your system will run. If you find your system is swapping and that is having a noticeable effect on performance, you should consider adding memory if your hardware and OS support more memory than you have. Can I add more swap space? Yes, with caveats. The first one does not apply to Xenix. If you have space in your Unix partition which is not allocated to any device (i.e. is not being used by a filesystem, your swap device, etc.), use /etc/swap (see the man page) to add this to your system's available swap space. Note that free space within a filesystem cannot be used in this manner. Also, this setting only works until the system is shutdown, so if you want it to be done permanently, put it in /etc/rc2.d so it gets run whenever the system goes multiuser. If you have two hard drives, you can split swap space between them, which may improve swapping performance. The second approach will work on any SCO operating system, but will require downtime and probably a backup/restore. You can bring the system up from emergency boot diskettes (or from the distribution media; instructions are elsewhere in the FAQ) and adjust your drive's divvy table. However, in order to adjust the size of a filesystem or swap device, you must delete it and recreate it, so if you need to take space from a filesystem to add it to swap, you will need to backup that filesystem and restore it later. Do haltsys and reboot do a sync()? Yes. haltsys and reboot are both the same file. In some versions, they are a binary, but rest assured that they do sync(). In other versions, they are a shell script and you can look at them to determine that they do call /bin/sync. If it's at all possible to use shutdown to shut the system down, rather than using haltsys or reboot, do so. shutdown is the proper way to do it; it goes out and kills processes and attempts to shut the system down as cleanly as possible. haltsys and reboot, on the other hand, try to shut the system down as quickly as possible, and any programs which are running will be rudely interrupted. Also, if you're using a caching hard drive controller, be aware that it may not realize the system has been shut down, so even though Xenix or Unix tells you it's *** Safe to power down ***, there may still be data left in the hardware cache that isn't flushed to disk yet. A good, but _not_ foolproof, precaution is to press a key to allow the system to reboot, and not power down until the Boot: prompt comes up. The added time and disk activity may allow the controller to flush its cache. Note that using a caching hard drive controller on a caching operating system is generally of little or no use, though there may be exceptions. How can I get more than 64k inodes? You'll have to make multiple filesystems. The inode number is a 16-bit quantity on SCO filesystems, meaning that you can't get more than 64k inodes on one filesystem. *Where do I get zmodem? **Some of the ftp sites listed in the Administrative FAQ (posted at **the same time as this FAQ) should have versions that are compiled **and known to work on SCO systems. If you want source, try **ftp://ftp.cs.pdx.edu:/pub/zmodem ---------------------End of Part One------------------- -- stephen@bokonon.UUCP ...!{xrtll,gts.org}!bokonon!stephen ---------------------------------------------------------------------------- Stephen M. Dunn, CNE, ACE, Sr. Systems Analyst, United System Solutions Inc. 104 Carnforth Road, Toronto, ON, Canada M4A 2K7 (416) 750-7946 x251 Revision Information -------------------- Version: 2.04 Date: 24 October 1994 Author: Stephen M. Dunn stephen@bokonon.UUCP {uunet.ca,becker.gts.org,xrtll.UUCP}!bokonon!stephen New Features: Where to get Zmodem NOTE: All lines that have been added or modified since the previous version are marked with ** at the start of the line. All new questions are indicated in the Table of Contents with * at the start of the line. DISCLAIMER: I try to keep this information correct, up-to-date, and useful. From time to time, errors and oversights will occur. While this group is read by numerous SCO staff and other experts, and they tend to catch any mistakes I make, there is no guarantee that the information below is 100% right. THANKS: I can't do this without the help of a number of other people. You know who you are. Thank you. Table of Contents ----------------- One Bit of Administrivia (Both Parts) Questions and Answers Common to Unix, Xenix and ODT (Part 1) -How do I stop banners from printing? -Are there any screen savers? -How do I compress my backups? -I don't like being restricted to 14 character filenames -How do I get a copy of adb? -I can't find crypt -What do I need to compile programs? -What does the NCALL kernel parameter affect? -How do I reset the root password if I forget it? (part 1) -How do I reset the root password if I forget it? (part 2) -How do I reset the root password if I forget it? (part 3) -How do I crash out of the N1/N2 install script? -Why can't fsck find my lost+found directory? -I want more space in my lost+found directory -How do I find out serial numbers of my various components? -How do I solve an "arglist too long"? -What versions/configurations am I using? -I have a bad block on my hard drive -My system is slow -Why did my region table overflow? -How do I solve "fork failed: no more processes"? -How are minor device numbers assigned by mkdev hd? -I need fax software. Who makes it? -How much swap space do I need? -Can I add more swap space? -Do haltsys and reboot do a sync()? -How can I get more than 64k inodes? *Where do I get zmodem? Questions and Answers Specific to Unix/ODT (Part 2) -I have a system memory dump in my swap space; how do I delete it? -How do I save kernel panic dumps to tape? -At boot time, the "Enter the root password or ^D" message doesn't work! -My non-EAFS filesystem gives errors on filenames greater than 14 chars -I just upgraded to 3.2v4 but I still can't use long filenames -The permissions on /usr/adm/sa and its children are wrong -I get an error "Cannot obtain database information on this terminal" -I need help configuring MMDF -What is the new "low" security level in 3.2v4? -My AHA154x/174x isn't being detected -How do I upgrade from an n-user licence? -How do I get MMDF to send one copy of a message to many people? -My system is slow or hangs when sizing memory -My system doesn't recognize files starting with #! Questions and Answers about TCP/IP and NFS (Part 2) -telnet doesn't work properly -How do I know if I have enough streams buffers for TCP/IP and/or NFS? -TCP/IP gives messages like "Notice: TCP SUM: SRC 89270107 SUM 0000D7AD" Questions and Answers about Serial Communications and UUCP (Part 2) -My serial connections are losing characters -What do the terms UART, 8250, 16450 and 16550 mean? -How do I adjust my 16550's trigger level? -I can transfer small files via UUCP but large ones won't go -I can transfer small files via UUCP but large ones go really slowly -How do I get better UUCP throughput? -How do I change uucico's window size? -I increased my window size but nothing changed -I increased my window size and UUCP broke! -UUCP frequently has to resend packets -How do I chance uucico's packet timeout? -What special considerations are there regarding my Telebit modem? -What are all the V.something codes, MNP, HST, etc.? -How do I maximize serial throughput? -My data-compressing modem doesn't work much faster than my old modem -A BSD-based machine can't connect to mine via UUCP -Where can I get more information on UUCP protocols? -I edited my gettydefs and things broke -I can't get shared dial-in and dial-out working Questions and Answers about X Windows (Part 2) -Does SCO Xsight support my ET4000-based super VGA card? -Can I get X11R5 to run on my ODT 2.0 system? -Is there a driver for my video card? -How do I get Athena Widgets? --------------------------------------------------------------------------- One Bit of Administrivia ------------------------ There are two different FAQ lists that periodically get posted here. This is the technical one. If you have a question regarding net.etiquette, the administration of these mailing lists/newsgroups, how to contact SCO, where to look on the net for SCO ports of software, or how to download files from SCO's systems, please look for the Administrative FAQ. It will probably answer your question. These two FAQs are posted at the same time, at intervals of roughly two weeks. Note in particular that if you require instructions on how to contact SCO, download SLSes, or look at various anonymous archive sites, you should look in the Administrative FAQ. ---------------------Beginning of Part Two------------------- Questions and Answers Specific to Unix -------------------------------------- I have a system memory dump in my swap space; how do I delete it? Go into single-user mode (NEVER try this in multi-user mode!). Then copy something into your swap space. The suggested method is: dd if=/etc/termcap of=/dev/swap count=100 Unix 3.2v4 will do this for you if you want it to. How do I save kernel panic dumps to tape? Edit the /etc/dumpsave file. Yes, I know this answer is incomplete; I don't have a copy of Unix on which to compose a better one. At boot time, the "Enter the root password or ^D" message doesn't work! If this message stair-steps across your screen and you can't do a ^D, the file /etc/ioctl.syscon has become corrupt. Go into single- user mode by typing the root password followed by ^J instead of a carriage return. Use stty sane^J to restore your console to more normal operation. Remove /etc/ioctl.syscon, and reboot by running /etc/reboot. The system will complain that /etc/ioctl.syscon is missing and will rebuild it for you. My non-EAFS filesystem gives errors on filenames longer than 14 chars There is a tunable kernel parameter, ETRUNC, that controls this behaviour. If set to 1, the kernel will silently truncates filenames to 14 characters. If set to 0, the kernel returns ENAMETOOLONG, in accordance with POSIX. I just upgraded to 3.2v4 but I still can't use long filenames Long filenames only work on EAFS filesystems. Any new filesystems you create will be EAFS filesystems unless you specify otherwise. When you upgrade, your root filesystem will automatically be converted to an EAFS filesystem, but any other filesystems you have will not. If you have an existing AFS filesystem that you wish to convert to an EAFS filesystem, specify the -E option to fsck; this will convert your filesystem into an EAFS filesystem. If for some reason you need to convert an EAFS filesystem back to AFS, you can use fsck -^P (^P == control-P). Note that there is no performance difference between AFS and EAFS filesystems except in accessing long filenames and symbolic links; otherwise, they share the same kernel driver. The permissions on /usr/adm/sa and its children are wrong You have two simple basic choices: 1. move the lines from the "sys" crontab file to the "root" crontab file. 0 * * * 0-6 /usr/lib/sa/sa1 20,40 8-17 * * 1-5 /usr/lib/sa/sa1 2. ensure that /usr/adm/sa is read/writeable by "sys". I get an error "Cannot obtain database information on this terminal" This error can be caused for various reasons. First, determine the cause of the problem and implement a solution. Then install all required SLSes according to the following paragraph. For SCO UNIX System V/386 Release 3.2 Operating System (the original version) SLS unx223 must be installed prior to installation of SLS unx257. For SCO Open Desktop Release 1.0.0 and 1.0.1, the UFE should be installed prior to SLS unx257. For 3.2.2 without Maintenance Supplement 1, and for ODT 1.1 without update G, install unx257 on its own (MS1 and UG both include unx257, and if you have them, you should _not_ install unx257). SCO Unix 3.2v4 and ODT 2.0 have more up-to-date security, and unx257 should _not_ be installed on either. CAUSE 1: The file /etc/auth/system/ttys has become corrupted. Reboot the system and enter single user (System Maintenance) mode. Edit the file and insert the following line if it does not exist: tty01:t_devname=tty01:chkent: This file should only contain entries for your terminals (ttyxx - where xx is the tty number). Each entry ends with :chkent:. Remove unwanted lines. CAUSE 2: After installation of a multiport intelligent serial board the file /etc/auth/system/ttys did not get updated with new entries for each tty port. These entries can be created by taking the following steps: Type "sysadmsh" Select Accounts -> Terminal -> Create Type in each device name, example "tty3h", and then press "X" to execute. Select "YES" to save modifications. CAUSE 3: This message can be generated sporadically on a system with a large number of users logging on and off. Check the /etc/auth/system directory for "ttys" files. If there are multiple files, the extra files must be removed. When database files such as /etc/auth/system/ttys are updated, a renaming procedure is used to ensure that multiple accesses to the file are managed properly. The contents of the old file (ttys) is copied/updated to create the new -t file (ttys-t). After that is done the old file is moved to a -o file (ttys-o), the new file (tty-t) is moved to the original name (ttys), and the ttys-o file is deleted. It is important to verify which of the files is the more complete file. This file is usually the largest, but use vi, cat, or more commands to examine the content of the files for correctness and/or corruption. Once you have determined which file is the most correct, make sure it is renamed to ttys, and remove all others. It is recommended that you have "OVERRIDE=tty01" in the file /etc/default/login. That way root can always log in on that terminal when in multiuser mode. NOTE: if this error message appears on just one port and no other ports are affected or prevented from logging in, then ckeck to make sure the device has just one link. If the device has more than 1 link, remove it and recreate it with mknod(C). NOTE 2: TCP/IP 1.1.1 has an old /bin/login which can cause this problem. This release of TCP/IP is unsupported. I need help configuring MMDF On xenitec.xenitec.on.ca (192.75.213.1), in the directory /archive/pub/doc/mmdf, you will find the files tcp-ip and uucp. These are Chris Durham's guides to configuring MMDF in typical TCP/IP and UUCP environments, respectively. These documents are highly recommended for those who are not familiar with MMDF. These are also available via anonymous UUCP from xenitec; see the Administrative FAQ for details. What is the new "low" security level in 3.2v4? It is _not_ traditional Unix security without the TCB. Rather, it uses the TCB to achieve a level of security _lower_ than traditional Unix security. For example, it gives all users the privileges to administer print services, backups/restores, and to run shutdown. The moral is not to use low security unless you know the security holes it opens and can live with them. The "traditional" security level is the closest to traditional Unix security, and should probably be the lowest security level that most people should consider using. The next level up is similar to C2 security as found in prior releases of SCO Unix, while the top level is tighter yet. Note that each of the four security levels, as with the two levels in earlier releases, is only a set of defaults. Once you have installed a particular security level, you can adjust the exact settings to make security suit your needs. Note that once a system has been set up at a particular security level, it may be difficult or impossible to completely increase the security level, particularly if the system has been in use for some time. My AHA154x/174x isn't being detected On some fast machines (e.g. 486DX2/66), the timeout in the kernel routine that initializes the card may run too quickly, causing the system to not be able to use your host adapter. SCO has a fixed version of /etc/conf/pack.d/ad/Driver.o that increases the timeout value; this should cure the problem. This fix (unx365 for Unix 3.2v4.0 and 3.2v4.1, or oda366 for ODT 2.0) is available from SCO's usual channels (see the administrative FAQ for info on ftp and UUCP access). Later versions of the operating system include this fix; it is not applicable to anything earlier than 3.2v4.0 and ODT 2.0. As a temporary fix until you can get this SLS installed, slow your computer down during booting (many machines have a Turbo switch which can be turned off). How do I upgrade from an n-user licence? If you are upgrading the user licence but staying on the same release of the operating system, you need to rebrand the appropriate files with the new serial number/activation key that you get in the upgrade kit. If you're upgrading to a more recent release, use the intelligent upgrade procedure built into the upgrade package. This will not only update your OS to the current level, but will also upgrade your user licence to what you ordered. How do I get MMDF to send one copy of a message to many people? You will need MMDF II level 43 for this; it's included in Unix 3.2v4.0 and ODT 2.0, and is available as a TLS for older releases. You will need to add a confstr= entry to your UUCP channel similar to MCHN uucp, show="SCO UUCP Delivery", que=uucp, tbl=uuchn, ap=same, pgm=uucp, mod=imm, confstr="naddrs=15,maxlen=1024" naddrs sets the maximum number of addresses per message maxlen sets the maximum total length of the address You probably want to set maxlen no higher than 1024 or you may run into a limit in the system. You may also want to configure your badhosts channel similarly. My system is slow or hangs when sizing memory The OS tries to flush the cache before sizing memory. On some systems, this may cause problems including painfully slow memory sizing. For Unix 3.2v4.2 and related systems, try adding the cache=/d option to your boot string. Try it out manually first, using defbootstr cache=/d at the Boot: prompt; if that works, add it to /etc/default/boot. If you still run into problems, you may need to compare the memory map with and without cache. Boot with the "cache=/d prompt" options and, when the prompt comes up, type v to see the memory map found with the cache disabled. Then boot using "cache=/e prompt" and, again, type v at the prompt to see the memory map with the cache enabled. If they differ, it is not safe to size memory with cache disabled, and you will have to suffer with slow boot times (it will not affect performance once the system is rebooted). My system doesn't recognize files starting with #! Unix 3.2v4.0 through 3.2v4.2 include a parameter to determine whether the kernel supports the use of #! to denote the interpreter for a particular script, but it is not tuneable using the standard configure program. Instead, edit the file /etc/conf/pack.d/kernel/space.c and change the hashplingenable setting from 0 to 1. Rebuild and install the new kernel. Questions and Answers about TCP/IP and NFS ------------------------------------------ telnet doesn't work properly There is a known bug in telnetd under Xenix (and probably also under Unix), which causes it to be flaky when accessed by certain other software (such as Novell's LAN Workplace for DOS). This is supposed to have been fixed in TCP/IP 1.2; also, the Xenix problem was supposed to have been fixed in lng337. Note that there may also be problems if you install an older version of TCP/IP on a newer operating system. The newer version of /bin/login from your operating system may be overwritten by the older version from TCP/IP. How do I know if I have enough streams buffers for TCP/IP and/or NFS? Under Xenix, use the program 'sw' (stream watch); it will provide a dynamic display of the current and historical usage of various stream buffers. Under Unix, you can use the crash command; the subcommand to use is strstat. There is a version of 'sw' available for Unix, but not from SCO. It can be found on some archive sites; I will include more information here when I find where I wrote it down :-( Under TCP/IP for Unix (and, presumably, the integrated TCP/IP version 1.2), you can also use the netstat -m command. Finally, u386mon, which is available from many public archive sites, provides similar functionality. TCP/IP gives messages like "Notice: TCP SUM: SRC 89270107 SUM 0000D7AD" This simply means that TCP detected a checksum error in a packet. TCP is a reliable protocol and will automatically request that the packet be re-sent. This message serves as a notice only and should not be of concern unless it occurs frequently. If you wish to determine the IP address of the machine that sent the bad packet, convert the SRC field from hexadecimal (89.27.01.07) to decimal (137.39.1.7). There are two common causes for these on high-speed networks, which are flaky network cards and slow cards that can't keep up with network traffic. Also, these messages are common on SLIP and PPP links. Questions and Answers about Serial Communications and UUCP ---------------------------------------------------------- My serial connections are losing characters Here are two possibilities. First, check the NCLIST kernel parameter. This governs how many CLIST structures are allocated; these are used to buffer input and output. If this is too low, then at times of high serial I/O demands, your system will run out of CLIST structures and start discarding characters. Note that there is a limit as to how many CLIST structures may be allocated to an individual process, regardless of how many are available systemwide. This is done to prevent one misbehaving program from monopolizing all of the CLIST structures. The other possibility is that you may have an old UART (8250 or 16450). See the next answer for more info. What do the terms UART, 8250, 16450 and 16550 mean? UART means Universal Asynchronous Receiver/Transmitter. This is a chip which receives and transmits data serially; each serial port you have will use one, though it is possible that several may be integrated into one chip. 8250, 16450 and 16550 are all common types of UARTs. The 8250 is an old chip which cannot run at high speed. The 16450 is similar to the 8250 except that it supports data communications at higher speeds. Both of these chips generate an interrupt for every character that is sent or received, which basically tells the CPU either "Here is some data for you" or "Feed me!" This is all very well, except that at high speed, the number of interrupts (nearly 4000 per port per second at 38 400 bps) can overwhelm a CPU, bringing system performance way down. Also, if the CPU is busy servicing another interrupt at the time, the serial port's interrupt can be ignored, which will cause that character to be lost. The 16550 is pin-compatible with the 16450 and, by default, runs in 16450 mode. This makes it compatible with software which is not 16550-aware. If your software is 16550-aware, it can turn on a special mode in which the 16550 buffers all data with 16-byte internal buffers. This not only allows the CPU to deal with far more bytes at a time, increasing efficiency, but also means that if the CPU does miss an interrupt, the next character will go into the buffer instead of overwriting the previous character. 16550 support was introduced in Xenix 2.3.4, ODT 1.1 and Unix 3.2.2. If you have these, or later, versions, your operating system will automatically detect 16550-equipped ports and will enable their buffering. A third-party serial driver called FAS includes 16550 awareness in its feature set; you may wish to investigate this as well. Note that the above is not really applicable to intelligent multiport serial cards. While these cards may well use 16550s, it is the processor on the serial card which is responsible for dealing with the serial ports it controls. How do I adjust my 16550's trigger level? The answer is different for Unix and Xenix, but much of the information is the same, so it's been grouped together here. We will deal with the common information first, and the specific details for Xenix and Unix. By default, Xenix and Unix set the 16550's trigger level to 14. This means that once fourteen characters have been received, the 16550 will generate an interrupt (it will also generate an interrupt if the buffer is not full but serial data flow has stopped, so the system doesn't always have to wait until the trigger level is reached). This give the system two character times in which to begin to clear the buffer; at high speed on a highly loaded system, this may not be enough, and you may still lose characters even though you have a 16550. On the other hand, this value should generally be set as high as possible to reduce the number of interrupts generated; servicing an interrupt is quite costly in terms of CPU time. There is an array in the kernel called sio_fifoctl[]. It is a 16-byte array with control values for different minor numbers. To find which array element will be used for a particular serial port, AND the minor number of the port with 0x0F (for example, /dev/tty2A or 2a have a minor number of 8, so sio_fifoctl[8] controls this port). There are four different values you may wish to use for the entries in sio_fifoctl[]. A value of 0x0F sets the trigger value to 1; 0x4F sets it to 4; 0x8F sets it to 8; 0xCF sets it to 14 (these values are determined by the 16550 itself, not by SCO). In Xenix, this parameter is set by patching the disk image of the kernel (/xenix) using adb (the info on how to find adb is elsewhere in this FAQ). The following is a sample adb session to change the trigger level of /dev/tty2A to 8 from 14 (the line numbers in parentheses are for the explanation below): (1) cp /xenix /xenix.save (2) adb -w /xenix (3) * sio_fifoctl+8/x (4) sio_fifoctl+0x8: 0xcfcf (5) * sio_fifoctl+0x8/w 0xcf8f (6) sio_fifoctl+0x8: 0xcfcf= 0xcf8f (7) * $q Line 1 makes a backup, and line 2 runs adb in write mode. Line 3 tells adb to print the current value of sio_fifoctl[8]. Line 4 is adb's reply, which includes two bytes from this array (the rightmost one is the value for sio_fifoctl[8], and the leftmost is for sio_fifoctl[9]). You must look at these carefully, as one half will have to be changed while the other will have to be left alone. In line 5, we write 0xCF8F into this location; note that the value for sio_fifoctl[9] is left unchanged at 0xCF. Line 6 is adb's reply giving the old and new values. Line 7 quits adb. For Unix, there is a table at the end of the text file /etc/conf/pack.d/sio/space.c which gives the same array. It is formatted in the same manner (to find the appropriate value, AND the minor device number with 0x0F). I can transfer small files via UUCP but large files won't go I can transfer small files via UUCP but large ones go really slowly This may indicate a flow control problem. uucico, the program that actually performs UUCP transfers, turns off all hardware and software flow control on the port it is using (except under 3.2v4, which allows you to specify what it should use). If your modem's buffers are too small, then the stream of data involved in a large file transfer may overflow them, causing transmission errors. This may just cause your throughput to go way down, or it may result in a total inability to transfer larger files. Run uucico with debugging (you may find /usr/lib/uucp/uutry to be useful) and watch for "alarm" messages. If you see these, it's an indication that some characters are likely being dropped during transmission. If you are using a serial port on a multiport serial card such as one from Equinox or Digiboard, your board may have shipped with a utility that lets you permanently set flow control on your port. Another alternative is to reduce uucico's window size. Under 3.2v4.0, uucico does not turn off flow control; it is left at whatever setting the dialer used. If you are using a compiled dialer and have the source and the development system, you can write in whatever stty settings you desire. Under 3.2v4.1, if you are using atdialer, you can specify stty settings in /etc/default/atdial*. Note that it has been reported that cu, even under 3.2v4.x, turns on XON/XOFF flow control and, in doing so, disables hardware flow control. In 3.2v4.x, a new stty setting has been added to perform bidirectional RTS/CTS flow control. This is CRTSFL. CTSFLOW and RTSFLOW do not perform proper bidirectional flow control; they allow the modem to signal the computer to stop sending, but not vice versa. Depending on what modem you have, you may need CRTSFL if your system can't accept characters as quickly as your modem can produce them. How do I get better UUCP throughput? You may or may not be able to. Here are some rules of thumb which may or may apply to your situation: If you and the remote site both use Telebit modems, enable UUCP spoofing. This enables the modems to maintain the UUCP protocol between them, and means that your CPU's response time to individual UUCP packets is not as critical. Some sites can achieve higher throughput with a Telebit link than with a direct connection at the same baud rate. If you and the remote site are both running versions of UUCP which allow you to specify different protocols (the only such version from SCO is found in Unix 3.2v4), look through your release notes to find the highest-performing protocol that's applicable to your situation. For example, the standard g protocol has its own error detection and correction logic. If you are running over a guaranteed error-free link, this is unnecessary overhead, and eliminating it by selecting a protocol that relies on an error-free link can speed up transfers. Be careful that you don't specify such a protocol for a non-error-free link, or else your transmissions will occasionally be corrupted. Note that just because you are using error-correcting modems does not guarantee that your data will be error-free; there is a possibility of lost characters and flow control problems in the serial ports at both ends of the connection. While the link between the modems may well be error-free, the end-to-end link from one uucico to another may not. If you are running over a link that uses MNP, V.42 or V.42bis, set your window size as high as possible to ensure that the modems have as much data to work with as possible. For further tips on high-speed modems, see the section on maximizing serial throughput below. For information on changing uucico's window size, see below. If the site with which you are communicating sometimes drops packets, try adjusting your packet delay to a lower number. If you are operating over a link with high latency (i.e. it takes a long time for a packet to get from one site to the other - an example would be a satellite link), you may need to increase your packet delay. For more details, see below. How do I change uucico's window size? You need to have adb or _fst to do this. See the information on getting these which can be found elsewhere in this FAQ. First, make a backup copy of /usr/lib/uucp/uucico! This is very important. Also, note its ownership and permissions. To change the window size to 7, run the following command from the Bourne shell: --------------------8<--------(cut here)--------->8------------------- adb -w /usr/lib/uucp/uucico << EOF $d _windows/w 7 $q EOF --------------------8<--------(cut here)--------->8------------------- When you have done this, reset the ownership and permissions to what they were originally; this process will change them on you. Note that specifying a window size greater than seven may break uucico, as the g protocol is designed for a window size of no more than seven. Also, the documentation and/or scopatches that ship with some SCO products list the second line of the above as "%d". This, at least on the copy of adb I have, will fail; $d is correct. If you are using Unix 3.2v4, leave the underscore off the symbol name. I increased my window size but nothing changed When UUCP is negotiating a connection, each side will tell the other what window size to use when sending. Therefore, if your window size is 7 and the remote uses 3, you will be sending files using a window size of 3, but the other side may send with a window size of up to 7. Note that the UUCP on the other side may not support the window size you specify, and may send with a smaller window than you requested. While this should not cause problems, it may provide lower performance than you'd like. If your connection does not have data compression, error correction, or long transmission delays, and the two sites involved have sufficient CPU power to respond quickly to incoming packets, a window size of 2 or 3 should be sufficient to achieve streaming data flow. In this case, a larger window size will not provide any benefit. If you have a Telebit modem, see the Telebit notes below. I increased my window size and UUCP broke! If your modem, or the modem on a remote site, has small data buffers, a large window size may cause the modem's buffers to overrun. If the site that broke polls your system, you may wish to create a separate copy of uucico with a smaller window size, and specify it as the login shell in /etc/passwd. If you are the polling site, you may have to restore your original uucico. Alternatively, you could try a window size of 4, then 5, then 6, then 7, and see at what point UUCP stops working. You will then know the maximum window size you can use. You may also wish to ask the sysadmin at the remote site if there is anything they can do, such as forcing flow control to be used on their modem, that may remedy the problem. You may, however, have no choice but to return to using a window size of 3. If you have a Telebit modem, see the notes below relating to Telebit modems. UUCP frequently has to resend packets If you are using a modem with error correction and/or data compression, or if you are making a long-distance connection, there are delays inherent in your connection which may cause UUCP to timeout and resend packets. You may need to increase the packet timeout. See also the section above on problems in which UUCP can transfer small files but not larger ones. How do I change uucico's packet timeout? This is very similar to changing the window size; once again, you will need to have a copy of adb, and you must first make a backup copy of uucico. Then run the following Bourne shell command: --------------------8<--------(cut here)--------->8------------------- adb -w /usr/lib/uucp/uucico << EOF $d _pktime/w 5 $q EOF --------------------8<--------(cut here)--------->8------------------- Obviously, replace 5 with the desired number of seconds. Note that you should set this parameter to the smallest value that works reliably. If you specify too large a value, it will reduce throughput if you encounter a bad line or other conditions that require packets to be resent. If you are running Unix 3.2v4, leave the underscore out of the symbol. Once again, restore the permissions and ownership once you're done. What special considerations are there regarding my Telebit modem? If you are using Telebit UUCP spoofing (S111=30), the modem spoofing firmware will only negotiate a 3-window connection, so changing the window size to 7 will not do anything for spoofed connections. It will, however, be effective for non-spoofed connections (i.e. if you connect to a site which is not using a Telebit modem). Some people have reported problems with Telebit modems and UUCP-g spoofing when they change their window and/or packet sizes. Apparently, Telebits can handle requests for increased window sizes without error (though they will only use a maximum window size of 3), but will not work correctly with large packets (probably above the SCO default of 64 bytes). There is a bug in version LA 5.00W of the Telebit Worldblazer firmware that causes uucico to fail in startup when the answering uucico is set for windows=7. What are all the V.something codes, MNP, HST, etc.? Here are the most common data modem signalling standards. Note that the descriptions are not complete technical descriptions, and only cover the major feature of the standard (i.e. no discussion is made of fallback data rates etc.) Bell 103 - North American 0-300 bps Bell 212A - North American 1200 bps V.22 - International 1200 bps; not generally used in North America V.22bis - 2400 bps V.32 - 9600 bps V.32bis - 14 400 bps HST - USRobotics' proprietary High-Speed Transfer, 9600 - 16 800 bps There are also numerous standard for error correction and data transmission. MNP (Microcom Networking Protocol) is a family of protocols with various levels. MNP levels 1 through 4 denote error correction schemes of increasing sophistication. MNP level 5 is the most common MNP error correction level; while there are higher levels, they are not terribly widespread. MNP level 5 is usually considered a 2:1 compressor, meaning that it will generally compress your data by up to a factor of 2. Note that it does not check to ensure that it can actually compress the data; if you send precompressed data through it, it will actually increase the amount of data which must be transferred between modems. V.42 is another error correction standard; unlike MNP, it is non-proprietary. It includes a provision for falling back to MNP error correction should the remote modem not support V.42. V.42bis is the corresponding data compression standard. It is both more efficient than MNP level 5, providing up to a 4:1 rate (even higher on particularly repetitive data), and more intelligent, in that it will recognize whether or not it can compress data. How do I maximize serial throughput? This answer assumes that you have an error-correcting and/or data-compressing modem. The rule of thumb here is to feed data to the modem as fast as you can. The more data it has to work with, the more efficiently it can compress it. Not only that, but there is a more-or-less fixed overhead involved in bundling data into packets, which is how the modems transmit it, so when error correction and/or data compression is in use, you can reduce this overhead to a minimum by ensuring that the modem has as much data as possible to put into each packet. The usual rule of thumb is to feed the modem four times faster than the fastest connection rate it supports. If you have a V.32 modem, which supports connections of up to 9600 bps, you should communicate with it at 38 400 bps (assuming your hardware supports this rate). If you are using error correction but not data compression, the next speed up (19 200 bps, in this case) is generally sufficient. The modem will have an internal data buffer of some size; it could be as large as a couple of kilobytes on better modems. If you are sending it data faster than it can transmit it (which you should be), this buffer will fill up over time. You will need to have handshaking between the modem and the computer so that the modem can signal to the computer to stop sending when the buffer is nearly full, and to start sending again once there is room in the buffer. This can be done in software (usually using the ASCII XON and XOFF characters), or in hardware (usually using the RS-232 CTS and RTS lines). The use of software handshaking requires less wires between the computer and the modem, but may interfere with the transmission of binary data. The use of hardware handshaking requires additional wiring, but will not interfere with binary data. There are advocates of both methods; I personally prefer hardware handshaking. Whichever method you choose, you must make sure that you configure both the modem and the computer (via stty settings) to use the same protocol. My data-compressing modem doesn't work much faster than my old modem There are a couple of possible reasons for this. Firstly, you may be transferring data that has already been compressed and is therefore not compressible (compressed news batches, for example). If your modem connects to the remote site using V.42bis data compression, this will not adversely affect throughput. If, however, you are using an MNP level 5 connection, you will actually lose throughput when sending compressed data. If the majority of your transfers are already compressed, you should disable MNP level 5 data compression. Note that using MNP level 3 or 4 error correction, or V.42 error correction, without any compression will increase throughput regardless of the type of data being transmitted. Also, due to the way data compression and error correction in modems work, there are delays involved while the two modems agree on whether or not each packet of data was received correctly. If possible, you and the remote site should try to increase uucico's window size; this will cause more data to be transmitted at once, which will not only improve the efficiency of your modem's data compression, but will also often mean that the response to a previous packet arrives before the window has expired. I'm afraid a complete discussion of packetization and sliding window protocols is beyond the scope of this FAQ; just trust me on this one if you don't quite follow me. Further discussion can often be found in the newsgroup comp.mail.uucp. A BSD-based machine can't connect to mine via UUCP BSD-based UUCP sends data with even parity; SCO expects no parity. Add "" P_ZERO to the chat script in the BSD machine's Systems or L.sys file. For example: xnxbox Any uucp 19200 5553333 "" P_ZERO "" \r in:--in: nuucp Where can I get more information on UUCP protocols? If you get the Usenet news group comp.mail.uucp, there is a FAQ posted there approximately monthly which goes into a good deal of detail on the format of UUCP files, the handshake process at the start of a connection, what some of the debugging output from uucico -x? means, and the internals of numerous UUCP protocols including the common g protocol and several others. If you do not get this group, anonymous ftp to rtfm.mit.edu and look around /pub/usenet/alt.answers. If you do not have anonymous ftp access, send email to mail-server@rtfm.mit.edu; include the words "help" and "index" in separate lines in the body of your message. I edited my gettydefs and things broke You can check gettydefs using /etc/getty -c /etc/gettydefs ... this command will print out everything you could possibly want to know, and then some. Common mistakes include not leaving a blank line between entries or having a cycle of settings but forgetting to close the loop (e.g. if 1 fails, use 2; if 2 fails, use 3; if 3 fails, you forgot to tell it to go back to 1). I can't get shared dial-in and dial-out working Here are a few things to keep in mind. Under Unix, the entries in /etc/inittab and /usr/lib/uucp/Devices must match exactly; if one says "ttyi3" while the other says "/dev/ttyi3", getty won't consider them to be the same port, and your modem will not be sent the undialer string. This is usually only a problem on multiport serial cards. Serial ports to be used by UUCP (or even just initialized with an undialer) should generally be owned by user uucp and group uucp. If you set it this way but it keeps being put back to something else, chances are you're suffering from the problem mentioned above. If you have several entries in /usr/lib/uucp/Devices for a port (specifying different dialers for different speeds or whatever), only the first one will actually be used to reset the port. Make sure the first one listed is the one you want - that's usually marked ACU, but local customs may vary. Questions and Answers about X Windows ------------------------------------- Does SCO Xsight support my ET4000-based super VGA card? No current public release of a SCO X server supports every generic SVGA card based on the ET4000. What you can do, and what frequently works, is to use the grafinfo entries supplied for the video cards that are supported which use this chip. If you fgrep through /usr/lib/grafinfo/*.xgi for ET4000 you will see a list of all of the supported cards that use this chip. In X11R5 (which is known as tls028; see sosco, ftp.uu.net, or CompuServe) there is support for generic ET4000 cards. Essentially if the card has a working BIOS then the X server should run with that card. [Note: this answer was provided in March 1993] Can I get X11R5 to run on my ODT 2.0 system? tls028 will upgrade an ODT 2.0 system to X11R5. Note that a TLS is unsupported software. Any drivers or other software which SCO releases for ODT 3.0 (which includes X11R5) may well run on an ODT 2.0 system with tls028 installed; however, this is not guaranteed, so tread carefully. Is there a driver for my video card? NOTE: SCO is constantly developing and refining drivers. This makes it particularly hard for me to keep this section up-to-date. Use it as a guide but don't expect it to be 100% true. This section was last modified on 26 September 1993. ODT 3.0: ODT 3.0 includes support for a variety of video boards. It may include what you need. Even if it does, it would not be unwise to periodically check SCO's list of TLSes to see if they've released a newer version of the driver for your hardware that may resolve some bugs, improve performance, etc. efs138: This EFS includes what used to be tls017b, plus LLI drivers. The video drivers are for the X11R5 server in ODT 3.0. It includes new or updated drivers for the ATI Ultra Pro; Chips and Technologies 655x0 chipsets; Cirrus Logic GD5426; Colorgraphic Twin Turbo Accelerator; Compaq ProLinea 3 and 4, ProSignia, and QVision 1024 and 1280; DEC S3-based systems, Diamond Stealth Pro, SpeedStar Pro, Stealth 24, and Viper; HP UltraVGA; Intel 68800 OEM Systems; Microfield X8; Number Nine GXe; Orchid Fahrenheit VA and P9000; S3 801, 805 and 928; STB Horizon, Pegasus, and Powergraph; Western Digital 90C33; and Weitek P9000. These drivers should work on ODT 2.0 systems that have been upgraded to X11R5 via tls028. How do I get Athena Widgets? SCO has made these available as tls003, which includes the library and the include files. See the admin FAQ for info on obtaining TLSes and the like from SCO. ---------------------End of Part Two------------------- -- stephen@bokonon.UUCP ...!{xrtll,gts.org}!bokonon!stephen ---------------------------------------------------------------------------- Stephen M. Dunn, CNE, ACE, Sr. Systems Analyst, United System Solutions Inc. 104 Carnforth Road, Toronto, ON, Canada M4A 2K7 (416) 750-7946 x251