Subject: Linmodems - a possible solution
From: Fabrice Bellard <>
Date: Sat, 10 Apr 1999 02:27:52 +0200

"Dominic Papandria (3 Com Corp.)" wrote:

> Better bet would be to get an image of pre-compiled DSP code under license
> from a modem or chipset vendor along with a functional specification to
> write a loader and how to communicate with the DSP once it's running.  This
> way you can provide the source for the loader and whatever driver you whip
> up to make the whole works look like a serial port to the OS.  Depending on
> how many protocols you wanted to engage in the controller, you could either
> develop your own or license those from a third party.

Having an image of the precompiled DSP code is only a small part of the
problem. The protocol stuff (which is done mostly in the host CPU in
winmodems) is very complicated too.

If writing a GNUmodem is too complicated, and since VXD emulation may
requiers to much hacks in the VXD code, we have an half satisfactory
solution :

- Write a small low level driver for the data pump (manage IRQs,
communication with the data pump, code upload). This driver must be
under the GPL licence so that it is easily included in the kernel and
checked by many people so that it is stable.

- Handle the protocol stuff in user space with a daemon. Emulating the
serial port can be done in user space with a pseudo tty. The protocol
executable would be binary only and it would be provided by the modem
maker for free.

I think we could convince several modem makers to do so. It can be only
a benefit for them, and most of the work could be provided by Linux
hackers. However, it is not totally in the Free Software Spirit...

Currently, I already ported a winmodem to Linux for a commercial project
(the host CPU executes the protocol stuff, and communicate with a data
pump). I did not used the method I describe here (a user and a kernel
part) because it was easier to write everything in kernel mode. However,
it would have been easy to divide the winmodem in a small kernel part
and a user space program. The user space program may need real time
scheduling, but it is not clear whether it is really necessary.