Release Notes PN 93000359F Digi RealPort Linux Version 1.5 Release 0 Software Package 40002086F 06/28/2002 _________________________________________________________________ Contents 1. Introduction 2. Supported Products 3. Enhancements 4. Bug Fixes 5. Know Limitations 6. Printers 7. Ditty 8. Configuration and Startup 9. Documentation 10. History _________________________________________________________________ Introduction Digi RealPort Linux is a driver package for Digi's Ethernet-based Serial Products. It is assumed that TCP/IP is running on the system and is properly configured. It is also useful, though not necessary, for the Wish package to be installed, or some other TCL interpreter, in order to use the RealPort Manager configuration tool. Supported Linux Kernels * 2.4-based kernels on Intel and Alpha platforms * 2.2-based kernels on Intel and Alpha platforms * 2.0-based kernels equal or newer than 2.0.36 on Intel platforms The driver package has been tested with the following unmodified Linux distributions: * RedHat 7.3 * RedHat 7.2 * RedHat 7.1 * RedHat 7.0 * RedHat 6.2 * SuSe 8.0 * SuSe 7.1 * SuSe 7.0 * SuSe 6.4 * Mandrake 8.2 * Mandrake 8.0 * Mandrake 7.2 * Caldera OpenLinux 3.1.1 server * Caldera OpenLinux 3.1.1 workstation * Caldera OpenLinux 3.1 server * Conectiva 6.0 * TurboLinux 7.0 workstation * TurboLinux 6.1 workstation * TurboLinux 6.0 server Supported Products * Digi One RealPort Device Server * EtherLite 2 * EtherLite 8 * EtherLite 16 * EtherLite 32 * EtherLite 80 * EtherLite 160 * EtherLite 162 * PortServer 8 * PortServer 16 * PortServer II 16 * PortServer TS 2 * PortServer TS 4 * PortServer TS 8 * PortServer TS 16 Enhancements * Added Transparent print support. Please read the man page for "dgrp", under section "Transparent Print" for more information. * Changed package install to run a "configure" script first before trying to compile the driver. The script identifies the problems before compiling the driver and gives a description of the problem instead of a compiler error message. * Added Support for Redhat 7.3, Suse 8.0, Mandrake 8.2, and Caldera OpenLinux 3.1.1 (server and workstation) Bug Fixes * Fixed off-by-one error in the tbuf parsing. This bug, although very rare, causes the kernel to panic, or random kernel memory corruption. Known Limitations * The procedure to build this package using the .tgz (non-rpm) has changed. You *must* run "./configure" at the toplevel before compiling the package with a "make". * To install this package correctly under SuSE 8.0, a symlink from /usr/lib/libncurses.so.2.1 to /usr/lib/libncurses.so must be created. Run the command: ln -s /usr/lib/libncurses.so.2.1 /usr/lib/libncurses.so then start the installation of the Realport package. * There is a known incompatibility between our driver and some Linux distributions which ship a custom modified 2.4 kernel. The problem manifests with device driver usage counts that never decrease, loss of use of some ports, and system instability. The root cause is in the modification of the kernel which makes a change to an internal interface and introduces an incompatibility. The largest distribution affected by this issue is RedHat 7.1. It is important to note that RedHat 7.2 does NOT have this issue. See the RedHat 7.1 section below for details. * There is a problem with the SBRK ioctl. When a BRK is sent, no more data is transmitted until the port is closed. * The ports on EM modules perform at a slightly reduced speed during throughput testing. * The ditty PRINTER option is not yet supported. Printers Transparent print now works in driver versions 1.4.3 or higher. Ditty The ditty program provided with this package is named "ditty-rp" to prevent interference with other versions of ditty installed on the system (for use with other Digi products.) Configuration and Startup There is a package of configuration tools provided by default, that are located in the /usr/bin/dgrp/config directory. There are scripts for using the command line to add and remove products, as well as the RealPort Manager. This is essentially a graphical front end for the scripts and a visual tool for monitoring individual serial ports. The software package includes two startup scripts in either the /etc/rc.d/init.d or /etc/init.d directories named "dgrp_daemon" and "dgrp_ditty". These scripts are automatically executed at startup if the "chkconfig" tool is present on the system during the post installation phase of the driver install. Otherwise, these scripts must be manually added to the system startup. To load and initialize the driver by hand, execute dgrp_daemon start To stop the driver daemons and unload the driver, execute dgrp_daemon stop rmmod dgrp Documentation The following man pages are provided: ditty-rp(1), drpd(8), dgrp(8), dgrp_cfg_node(8), dgrp_gui(8). RedHat 7.1 -- Kernel Compatibility Issues Some 2.4 kernel-based distributions (RedHat 7.1 included) have a patch applied which modifies the behavior of Linux when an open of a serial port is canceled (for example, if an application is waiting for the carrier signal and a user hits CTRL-C to kill the application). With this behavior change, the device driver is unable to cleanup its internal data structures and the sane functioning of the driver is compromised. The classic symptom of this problem is that the command "lsmod" which returns a count of the applications using the device driver, will return a non-zero value even if all applications associated with the serial ports are killed. It is impossible (from within the device driver) to determine which behavior is implemented in the running kernel. However, Digi provides a workaround to allow customers with this problem to change the Digi behavior to be compatible with these "patched" kernels. To enable the change which provides alternate behavior when a serial "open" call fails, execute the following commands after the device driver is loaded: echo "alt_fail_open=1" > /proc/dgrp/info To return to the standard behavior, execute: echo "alt_fail_open=0" > /proc/dgrp/info The above commands must be executed each time the device driver is loaded (i.e. when the system is booted.) The Digi standard driver startup tools will execute the command on your behalf when it loads the driver if the following command is executed: touch /usr/bin/dgrp/config/alt_fail_open This command will create a file in your file system. If the Digi tools detect the existence of this file it will enable the "alt_fail_open" behavior on your behalf at every system boot. To examine the current state of this driver tuning variable: cat /proc/dgrp/info History * Version 1.4-0: + Improved support for RedHat 7.1 by offering an architecture to workaround a problematic kernel patch shipped with that distribution. See the RedHat 7.1 section below for details. Added support for EL-8, EL-16 and EL-32. Added the "dgelreset" application, which allows you to reset an EtherLite regardless of whether or not it is running RealPort compatible firmware and without having to specify a MAC address. Added "MODULE LICENSE" information to the device driver, to comply with anti-tainting policies in newer 2.4 Linux kernels. Modified driver to prevent port "hangup" in the event that the daemon dies. Added TCFLSH handling to "ditty-rp"... previously, the "flushin", "flushout", and "flush" options did not work. + Version 1.3-0: Added full support for Digi's EtherLite products which are running Digi RealPort compatible firmware, including the EtherLite 2, EtherLite 160, EtherLite 162, and the EtherLite 80. Fixed a kernel panic if a port is open, `dgrp_daemon stop` is executed, and a program tries to write to the open port. Write returns EIO in that condition. Fixed a select(2) problem in kernel 2.2.15 and later of 2.2.x kernels which cause programs like Telnet or ssh to hang until a key is pressed. Fixed a data loss problem which would manifest when exactly four kilobytes of data were transmitted after a port was opened. Added /lib/modules/`uname -r`/kernel/drivers/char to the list of locations that the kit tests for existence when trying to find a location to install the driver module, in response to testing in native 2.4 kernel-based distributions. + Version 1.2-2: Increased support for Digi's ethernet-based serial connectivity family; including Digi One, EtherLite, and PortServer products. Added support for arbitrary integer baud rates via the "ditty-rp" utility. Detailed information about the type and version of configured remote devices was made available via the "/proc/dgrp/nodeinfo" file. A memory corruption problem which causes system instability was eliminated. Unexpected pauses and losses in port traffic as a result of a network buffer overflow were resolved. + Version 1.1-7: Added 2.4 kernel support. Removed references to invalid email addresses. Driver handles RedHat 7.0 (kgcc vs. gcc). The GUI tool displays the DCD signal when viewing ports. RealPort ports match other Linux serial ports for default settings, as well as making all port settings "sticky". As a result of this change, CLOCAL is now on by default. Configuration scripts remove the "/dev" files if a PortServer is not configured. Only physical line drops are detected as a "hangup" condition... the driver would previously treat a change from CLOCAL to -CLOCAL as a carrier transition. Startup scripts are installed in "/etc/init.d" but if "/etc/rc.d/init.d" does not exist. RPM installation will not "error out". If "chkconfig" (a RedHat tool) does not exist on the system. A message was added to the RPM installation to communicate to users whether the installation scripts were added or not. On newer systems, RPM would strip the driver module of its symbols which caused it to fail. The module is no longer stripped. + Version 1.0-0: Added a new proc file: /proc/dgrp/info. This file allows you to determine the value of a number of state variables associated with the driver, including the driver revision. Continued refinement of the GUI. The GUI is now distributed as a single file, rather than a collection of "tcl" files. The dgrp_cfg_node does validity checking of its ID and COUNT parameters. + Version 0.1-7: A first pass at cleaning up the code was completed for beta release. All driver build warnings have been fixed. Appropriate part numbers have been correctly placed in the appropriate documents. A driver revision number is now placed in the console log when the module is loaded. + Version 0.1-5: a minimum break time of 250ms is now enforced. A PPP hang problem was resolved. Continued enhancements of the packaging. + Version 0.1-4: Installed dgrp.o to the /usr/bin/dgrp directory, and then linked in the postinstall phase to a suitable /lib/modules/*/misc directory. This avoids having the path to dgrp.o hardcoded in the spec file. + Version 0.1-3: added new scripts to autoload the driver on system startup and initialize any PortServers configured in /etc/dgrp.backing.store + Version 0.1-1 - pilot release in January 1999