High-speed SCC driver for AX.25
The original PI2 and PT drivers in the standard Linux 2.0
kernel seemed to be broken.
TCP connections regularly froze and had to be terminated by SIGINT.
This was most likely caused by the drivers' unlimited send queue
consuming too many skb's.
I tried to change that, but really couldn't find out the logic
behind the C code.
That's why I started writing a new driver from scratch.
The dmascc driver automatically detects and simultaneously
boards - in interrupt or in DMA mode.
It uses the enhanced FIFO of the Z85230 ESCC (if present) and
reliably works at 56kbps in interrupt mode on Pentium mainboards.
If you are lucky and don't experience the timing problems
described below, data rates of about 1Mbps should be possible
in DMA mode.
Full duplex operation (theoretically possible with the PackeTwin)
is not implemented.
Due to a fundamental timing incompatibility between the SCC chip
and some PCI/ISA bridges, PI, PI2, and PackeTwin often
have problems transmitting packets correctly in DMA mode,
when plugged into Pentium mainboards.
For example, in some packets, instead of byte(n), byte(n-4)
is transmitted again.
The CRC field will reflect that change - the receiver will
try to process that wrong packet.
If you experience such a problem, don't use DMA mode
(or try to fiddle with the Q0-Q3 jumpers on the PI2).
The S5SCC/DMA card currently is
the only board with a reliable DMA interface.
Many parameters have to be configured by a utility program called
dmascc_cfg before starting the interface with
ifconfig. Among them are:
- Baud rate (optional)
- NRZ or NRZI encoding
- Source of receive and transmit clock
- Channel access timing
- DMA channel (optional)
released June 2, 2000.
- Contains both the driver and dmascc_cfg.
- Should work with 2.2, 2.3, and 2.4 kernels.
- dmascc_cfg is backwards-compatible.
You can use it to configure older driver versions.
But please don't try to configure the new driver
with an old dmascc_cfg!
- dmascc_cfg syntax has been changed slightly.
Some parameters have been renamed, others have been added:
- --txtime has been renamed to --txtimeout and now
requires the timeout to be specified in milliseconds,
instead of seconds (to be consistent with all
other timing parameters).
- --sqdelay has been renamed to --txtail (which seems
to be more popular).
- To disable DMA, you now have to specify --dma -1
instead of --dma 0.
--dma 0 is a perfectly valid DMA channel for the
- --txpause, --rtsoff, --dcdon, and --dcdoff
have been added. Please consult the README file.
- At driver initialization (kernel boot or module load),
all timing parameters are now reset to 0 ms,
the persistence is reset to 256.
Previously, the defaults were somehow optimized for the
Please be sure to set all parameters with
dmascc_cfg and do not make any assumptions
about default values.
dmascc-1.3-linux-2.0.35.gz, released September 7, 1998.
- This is a kernel patch only. Please get the dmascc_cfg
source from the newest driver package.
- Should work with kernel versions 2.0.x, x >= 35.
- No S5SCC/DMA support.
AX.25 routing daemon
I am the maintainer of ax25rtd, part of the AX.25 utilities package.
If you have some ideas or even want to take over maintenance
(I don't use it anymore), please contact me.
Anyway, here is a patch
against ax25-utils-2.1.42a, which should fix the following bugs:
- ax25-utils does not compile with glibc-2.0.x and linux-2.2.x
(this is actually the large part of the patch).
- AX.25 routes learned by listening were wrong
if they consisted of more than 3 digipeaters.
- On a glibc system, if the /var/ax25/ax25rtd/* files did not
exist, ax25rtd would crash with a segmentation fault during
- ax25rtd aborts with SIOCAX250PTRT: Invalid Argument.
- ax25rtd does not learn any routes when used with Flexnet CRC.
Microsat image conversion utilities
I have ported NK6K's set of image conversion utilities to Linux.
Feel free to download the source.
OSCAR 13/40 Telemetry Software for Linux
phase3.tar.gz was last updated
Jan. 10, 2001.
It contains the following programs:
- phase3 [--no-crc] device
- reads blocks of 512 bytes plus 2 CRC bytes from the
specified serial device at 1200 Baud.
If the --no-crc option is given, phase3 assumes that the CRC
bytes are discarded by the receiver and thus expects blocks
of only 512 bytes.
All received blocks are written to stdout (CRC not included).
If there was a CRC error, bit 7 of byte 0 is set to 1.
If the --no-crc option is given, bit 7 of bytes 0 and
1 is set to 1.
Information messages are written to stderr.
- reads OSCAR 13 telemetry blocks from stdin, converts them
into a human-readable format and writes them to stdout.
- same as phase3c, but for OSCAR 40.
- very experimental, soundcard-based telemetry transmitter,
imitating the laser transmitter of OSCAR 40.
- tlmfilter mask value
- a very primitive telemetry block filter.
Some additional notes about phase3:
If you have a DSP-12 or an old G3RUH modem, you have to specify
You also must make sure that the DSP-12 does not send a carriage
return after column 80 and that it does not append a linefeed
after a carriage return (Main Menu - Setup Menu - Configure
Serial Port Parameters).
There is no additional documentation, but the sources are very
small and easy to understand.
Driver for IBM MCA SCSI adapters
is now the maintainer of this driver.
For your reference, here are some of the patches I contributed:
- March 16, 1997:
IBMMCA patch for 2.1.29
is available. SCSI aborts/resets should work better now.
- March 9, 1997:
I updated the
IBMMCA SCSI driver for Linux 2.1.28. It now works as a
module and (theoretically) supports up to 8 host adapters.
The latter feature is completely untested.
Please tell me whether it works for you.
- December 15, 1996:
This small patch
works for me.
- December 14, 1996:
From version 2.1.15 onwards, Micro Channel support is included
in the mainstream Linux kernel.
Unfortunately, 2.1.15 does not work right out of the box for the
IBM SCSI adapter.