		    LINUX DRIVERS FOR BAYCOM MODEMS

       Thomas M. Sailer, HB9JNX/AE4WA, <sailer@ife.ee.ethz.ch>

!!NEW!! (04/98) The drivers for the baycom modems have been split into
separate drivers as they did not share any code, and the driver
and device names have changed.

This document describes the Linux Kernel Drivers for simple Baycom style
amateur radio modems. 

The following drivers are available:

baycom_ser_fdx:
  This driver supports the SER12 modems either full or half duplex.
  Its baud rate may be changed via the `baud' module parameter,
  therefore it supports just about every bit bang modem on a
  serial port. Its devices are called bcsf0 through bcsf3.
  This is the recommended driver for SER12 type modems,
  however if you have a broken UART clone that does not have working
  delta status bits, you may try baycom_ser_hdx. 

baycom_ser_hdx: 
  This is an alternative driver for SER12 type modems.
  It only supports half duplex, and only 1200 baud. Its devices
  are called bcsh0 through bcsh3. Use this driver only if baycom_ser_fdx
  does not work with your UART.

baycom_par:
  This driver supports the par96 and picpar modems.
  Its devices are called bcp0 through bcp3.

baycom_epp:
  This driver supports the EPP modem.
  Its devices are called bce0 through bce3.
  This driver is work-in-progress.

The following modems are supported:

ser12:  This is a very simple 1200 baud AFSK modem. The modem consists only
        of a modulator/demodulator chip, usually a TI TCM3105. The computer
        is responsible for regenerating the receiver bit clock, as well as
        for handling the HDLC protocol. The modem connects to a serial port,
        hence the name. Since the serial port is not used as an async serial
        port, the kernel driver for serial ports cannot be used, and this
        driver only supports standard serial hardware (8250, 16450, 16550)

par96:  This is a modem for 9600 baud FSK compatible to the G3RUH standard.
        The modem does all the filtering and regenerates the receiver clock.
        Data is transferred from and to the PC via a shift register.
        The shift register is filled with 16 bits and an interrupt is signalled.
        The PC then empties the shift register in a burst. This modem connects
        to the parallel port, hence the name. The modem leaves the 
        implementation of the HDLC protocol and the scrambler polynomial to
        the PC.

picpar: This is a redesign of the par96 modem by Henning Rech, DF9IC. The modem
        is protocol compatible to par96, but uses only three low power ICs
        and can therefore be fed from the parallel port and does not require
        an additional power supply. Furthermore, it incorporates a carrier
        detect circuitry.

EPP:    This is a high-speed modem adaptor that connects to an enhanced parallel port.
        Its target audience is users working over a high speed hub (76.8kbit/s).

eppfpga: This is a redesign of the EPP adaptor.



All of the above modems only support half duplex communications. However,
the driver supports the KISS (see below) fullduplex command. It then simply
starts to send as soon as there's a packet to transmit and does not care
about DCD, i.e. it starts to send even if there's someone else on the channel.
This command is required by some implementations of the DAMA channel 
access protocol.


The Interface of the drivers

Unlike previous drivers, these drivers are no longer character devices,
but they are now true kernel network interfaces. Installation is therefore
simple. Once installed, four interfaces named bc{sf,sh,p,e}[0-3] are available.
sethdlc from the ax25 utilities may be used to set driver states etc.
Users of userland AX.25 stacks may use the net2kiss utility (also available
in the ax25 utilities package) to convert packets of a network interface
to a KISS stream on a pseudo tty. There's also a patch available from
me for WAMPES which allows attaching a kernel network interface directly.


Configuring the driver

Every time a driver is inserted into the kernel, it has to know which
modems it should access at which ports. This can be done with the setbaycom
utility. If you are only using one modem, you can also configure the
driver from the insmod command line (or by means of an option line in
/etc/modprobe.conf).

Examples:
  modprobe baycom_ser_fdx mode="ser12*" iobase=0x3f8 irq=4
  sethdlc -i bcsf0 -p mode "ser12*" io 0x3f8 irq 4

Both lines configure the first port to drive a ser12 modem at the first
serial port (COM1 under DOS). The * in the mode parameter instructs the driver to use
the software DCD algorithm (see below).

  insmod baycom_par mode="picpar" iobase=0x378
  sethdlc -i bcp0 -p mode "picpar" io 0x378

Both lines configure the first port to drive a picpar modem at the
first parallel port (LPT1 under DOS). (Note: picpar implies
hardware DCD, par96 implies software DCD).

The channel access parameters can be set with sethdlc -a or kissparms.
Note that both utilities interpret the values slightly differently.


Hardware DCD versus Software DCD

To avoid collisions on the air, the driver must know when the channel is
busy. This is the task of the DCD circuitry/software. The driver may either
utilise a software DCD algorithm (options=1) or use a DCD signal from
the hardware (options=0).

ser12:  if software DCD is utilised, the radio's squelch should always be
        open. It is highly recommended to use the software DCD algorithm,
        as it is much faster than most hardware squelch circuitry. The
        disadvantage is a slightly higher load on the system.

par96:  the software DCD algorithm for this type of modem is rather poor.
        The modem simply does not provide enough information to implement
        a reasonable DCD algorithm in software. Therefore, if your radio
        feeds the DCD input of the PAR96 modem, the use of the hardware
        DCD circuitry is recommended.

picpar: the picpar modem features a builtin DCD hardware, which is highly
        recommended.



Compatibility with the rest of the Linux kernel

The serial driver and the baycom serial drivers compete
for the same hardware resources. Of course only one driver can access a given
interface at a time. The serial driver grabs all interfaces it can find at
startup time. Therefore the baycom drivers subsequently won't be able to
access a serial port. You might therefore find it necessary to release
a port owned by the serial driver with 'setserial /dev/ttyS# uart none', where
# is the number of the interface. The baycom drivers do not reserve any
ports at startup, unless one is specified on the 'insmod' command line. Another
method to solve the problem is to compile all drivers as modules and
leave it to kmod to load the correct driver depending on the application.

The parallel port drivers (baycom_par, baycom_epp) now use the parport subsystem
to arbitrate the ports between different client drivers.

vy 73s de
Tom Sailer, sailer@ife.ee.ethz.ch
hb9jnx @ hb9w.ampr.org
