RELEASE Notes 93000375_D Digi EtherLite(R) Linux Driver Package els-1.04-5.src.rpm Tested Linux Distributions: Redhat 6.0, 6.2, 7.0 (Intel) Redhat 6.2 (Sparc) Caldera OpenLinux eServer 2.3 (Intel) Suse Linux 6.3 thru 7.0 (Intel, Sparc, Sparc64) YelloWdog Champion Server 1.2 (iMac) Linux Kernels supported: 2.2.0 thru 2.4.0 RPM Part Number 40002090_D 09/25/2001 1. INTRODUCTION This Digi software package includes device drivers for the EtherLite family of adapters (it does not support SCSI units). It is currently supported on the following hardware platforms: * Standard i386 / Pentium PC * Sun Sparc 32 bit & UltraSparc 64 bit * PowerPC and has been tested on the following Linux distributions: * RedHat 6.2 with 2.2 kernel * RedHat 7.0 with 2.2 and 2.4.0 kernels * RedHat 7.1 with 2.4.2 kernel * SuSe LiNUX 6.4 Intel and 7.0 Sparc & Sparc64 * YellowDog Champanion Server 1.2 on iMac This distribution does not install from the rpm file for these other Linux releases listed below because the els.spec file references the /etc/rc.d/init.d directory for the Digi els startup script, and these releases put these files elsewhere. To install to these platforms, you will need to change the els.spec file, or install by hand: * Caldera OpenLinux 2.3 (Intel) * Debian This product is fully supported with all kernels in the 2.2 and 2.4 trees. Please reference the following number(s) when searching the Digi International web site (www.digi.com) or ftp site (ftp.digi.com) for the latest software package: RPM Part Number: 40002090_D Interested parties may also wish to join the Unofficial Digi Linux User's Group by sending an e-mail to: list@remotepoint.com with subscribe digi-linux-users in the body of the message. There is an alternate open source version of this driver which also runs on the old Central Data/Digi SCSI Terminal Server line, thanks to Kees Cook. It is not supported by Digi as an official product, but we mention it here for those who already own these units. Please see http://www.outflux.net for more information. Thanks go out to Kees Cook for his supplying some impovements and changes needed for the 2.4 kernel. 2. SUPPORTED PRODUCTS EtherLite(R) Terminal Server Modules - EtherLite 2 EtherLite 8 EtherLite 16 EtherLite 32 3. ENHANCEMENTS None. 4. BUG FIXES The poll wait problem was fixed for all potential kernel versions. A bug in when to send network socket option commands was fixed. 5. KNOWN LIMITATIONS * The maximum number of EtherLite adapters is set to 63 units. That represents a limit of 126 to 2016 serial ports, depending on the mix of 2, 8, 16, and 32 port units. * The driver supports Linux kernels 2.2.10 thru 2.4.2. * While some of the older EtherLite units support split baud rates, since neither Linux nor newer EtherLite modules have support for split baud rates, this driver doesn't support split baud rates. * The driver is supported as a module. No attempt has been made to test the driver as built into the kernel. * For EL-8+ units only, the driver requires that the EtherLite have version 7.2 or newer firmware. The firmware can be updated using cdipserv. * The driver registers eight "fake" tty devices /dev/ttyN0 - /dev/ttyN8 in the /proc/devices filesystem. This done to coordinate use of dynamic major device numbers. 6. ADDITIONAL INFORMATION * This driver is distributed both as a source RPM and as a compressed tar file of the source. * Redhat 7.1 users beware! You must make a symbolic link so that the EtherLite module can use the proper kernel source headers: #cd /usr/src #ln -f -s linux-2.4 linux If you do not perform this step, you will get error messages stating "Modules should never use kernel-headers system headers". * Some distrubutions(e.g. Suse) have problems versioning modules on multi-processor machines. On SUSE 6.4, the file /usr/src/linux/include/linux/version.h must be edited manually so "UTS_RELEASE" matches what uname -r prints. Do this before you build the driver if you are using an SMP system. For those not familiar with source RPMs, Digi has created a 'digirpm' shell script which can be used to automatically compile the provided source RPM. The digirpm script will then install the resulting binary RPM automatically. The digirpm script is available at http://support.digi.com/support/drivers/linux/ and is part number 8006862. If you use this script, then after running the script, skip below to "You're almost there." If you do not wish to use the digirpm script, keep in mind you need to execute three rpm commands to get the EtherLite driver installed and ready to work on your system. Note that the directories used in the three rpm commands below may be different on different Linux distributions. #rpm -i 40002090_D.src.rpm #rpm -bb /usr/src/redhat/SPECS/els.spec #rpm -i /usr/src/redhat/RPMS/i386/els-1.04-5.i386.rpm If you install the tar file of the source, it should be untarred as /usr/src/drv/els and "make install" should be run as root from within the created directory. You're almost there! In order to make the driver available for use, you must cause the driver to be loaded. This can be accomplished on RedHat distributions by doing a "chkconfig --add els" to enable the driver rc scripts for start and stop at system reboot and shutdown. On other distributions, you should link the /etc/rc.d/init.d/els script as appropriate. To load the driver, either run the script by hand ("/etc/rc.d/init.d/els start") or reboot the system. Red Hat: # chkconfig --add els Caldera: # ln -s /etc/rc.d/init.d/els /etc/rc.d/rc5.d/S85els SuSe: # ln -s /etc/rc.d/init.d/els /etc/rc.d/rc2.d/S85els * Before the driver will work, the EtherLite units need an IP address. By default the unit will issue BOOTP and DHCP requests at powerup unless it has a stored IP address. Because most Linux distributions do not always have a BOOTP or DHCP server included in their default configurations, the included cdipserv utility provides a way of setting the IP address of each unit. Alternately, you can program the IP address into the EtherLite units through the first serial port. To use cdipserv to store an an IP address in a unit: 1) connect the EtherLite unit to power and to your local hub (you may not be able to communicate with the EtherLite if it is not on the same network segment as your Linux machine). 2) Next get the MAC address of the bottom of the EtherLite unit. The address is six pairs of letters and digits with dashes, for example, 00-A0-E7-00-00-09. Each EtherLite's MAC address is unique. 3) Then enter this command as root: cdipserv -store 00-A0-E7-??-??-?? the.new.IP.address where "the.new.IP.address" is replaced with a free IP network address good on your network. (For example, 192.168.0.32) You will need to repeat this proceedure for each unit that needs to have it's IP address stored before that unit will be usable. * This driver uses a configuration file, /etc/els.conf, to build unit and device nodes, and to start up the cdetherd daemons which are required for Ethernet communications. Run the script '/usr/src/dg/els/drv/linux/define_etherlites' to add or create units in the /etc/els.conf file. This script can also generate a file of the new inittab entries for the ports if you wish. (If define_etherlites gives you an error when it executes the line "insmod els", then either all three RPM commands did not complete, or the els.o module was compiled with the wrong kernel module version number. The module version problem (which usually happens only on multi-CPU systems) can be fixed by redefining the kernel module string in /usr/src/linux/include/linux/version.h to match what uname -v reports (e.g 2.4.0-smp) or by rebuilding the entire kernel.) * Once the driver has been loaded, device nodes must be created before you can configure the EtherLite units. The els script will automatically do this for you at reboot. To create device nodes by hand, do a "cdmknods -auto". This will create device nodes for all of the supported EtherLite(R) units found on your system. However, It will not remove any device nodes that do not match your current hardware configuration. See the cdmknods(1) man page for additional details. * NOTE that the permissions of I/O ports is set as follows: ttyN??? - normal serial ports 0664 cun??? - dialout ports 0600 lp??8 - printer ports 0600 * This package includes several support and configuration utilites: cdipserv - Can set and store IP addresses in units. cdstty - Sets baud rates, timeouts, other serial parameters dinc - A simple (no setup) barebones communications utility cdmknods - a program to create nodes and inittab add-on file cddiag - a program to report on a line's current state & history. cdflush - a program to remotely reset an EtherLite define_etherlites - a script to add EtherLite units at any time dtrcels - a program to dump the device's trace buffer contents * A copy of these release notes can be found as: /usr/src/dg/els/drv/linux/release.notes after the rpm has been installed. A non-Digi supported version of this package that works with SCSI Terminal Servers is available at http://www.outflux.net/unit/software/els. Kees Cook has done a fine job, Digi is not supporting these products under Linux because they are old. This driver will not function on EtherLite modules which have RealPort firmware. Initially, EtherLites shipped with FAS firmware, but EtherLites may start shipping with RealPort firmware in late 2001 or early 2002. You can tell if a unit has RealPort firmware if your rlogin into the unit and the unit prints out US Patent No. 6,047,319. If your EtherLite has RealPort firmware, you will need to use the RealPort Linux driver. 7. HISTORY version C Enhancements * Works with the stable 2.4.x kernels as well as 2.2 kernels. * Now works on powerPC and 64 bit Sparc platforms. * Now suports variable socket timeout when used with units with firmware v7.9 or later. This allows users to choose the length of time the units can go without a solid network link before all open ports will fail with an ENODEV error. The cdetherd now also logs network outages before the EtherLites will go offline. * Uses wait queues instead of schedule() for more efficient CPU usage. * The cdipserv utility now accepts and stores the gateway and netmask (which is only used when upadting firmware.) Bug fixes: * a locking problem in ctf_init_line was fixed by Kees Cook. * a problem in later 2.2 kernels with select getting stuck when writes could be done was fixed. * some problems copying from user space were fixed. version B Enhancements * Now distributed in Source RPM format. * Device nodes created in /dev/dg/els by default. * Deleted debug printks from driver * Enhanced cddiag output to include FAS command history dump * Enabled hangup routine, fixed problem in ctf_handle_recv(). * Changed open routine to stall up to one minute for gettys * Made cdetherd bring units online a bit faster. Fixed bugs in: * multiple opens and closes * bypassing flip buffers with PPP module * dinc using native Linux ports * sending commands to offline units. * FAS_WAIT_SEND completion (thanks to Kees Cook) * not disallowing diagnostic node reads & writes. version A * Limited received data packets to maximum of 384 bytes per port to prevent possible unit offline problems. version 2P * Fixed problems referring to /sbin vs /usr/sbin. * Added man pages for cdipserv, cdflush, cdmknutils, dinc, cdetherd, cdstty and define_etherlites. * Added -addunit and -uninstall features to cdmknods. * Fixed uninstall script used by RPM. * Fixed problems in define_etherlites script (formerly define_units.) * Fixed problems with units getting stuck once offline. * Fixed problems with parallel ports. * Fixed problems with timers not waiting long enough. * Fixed problem with cdetherd timing out too quickly.