Linux kernel driver

N.B. The driver described here won't work with Linux kernels prior to 2.6.10. If you need to get your modem to work with Linux 2.6.9 and earlier, please consult the older version of this site (in Spanish) or the alternative Francesco Zuliani's site


The driver exploits the usbatm infrastructure included in the recent kernels by Duncan Sands and David Woodhouse. This infrastructure makes use of the observation made by Josep Comas that the techique to pack the ATM cells into USB frames is rather generic, and the corresponding code in the original driver for Alcatel SpeedTouch USB ADSL modem can be reused by other drivers for various ADSL USB modems. It exposes to the userspace a standard Linux ATM device, which can be used in a variety of ways to connect to the Internet, absolutely agnostic of the modem type. You can monitor the state of your ATM stack by looking at /proc/net/atm/* files and/or by using the diagnostic tools from the Linux-ATM software package.

In addition, the driver can utilize the kernel firmware loader to upload the firmware to the modem once it's connected to the computer.

Building the driver

Obtaining the sources

Until the driver is included in the Linux kernel distribution, you can download it here.

Since the driver for AccessRunner-based modems is developed within the recently created usbatm subsystem of the Linux kernel, it is distributed as a whole drivers/usb/atm kernel subtree.

The development version of the usbatm subsystem is available via anonymous CVS. To get them run

  cvs -z9 -q -d co usbatm
and put the files under drivers/usb/atm in the kernel source tree.

Configuring kernel build

You need to set up the kernel source tree to build the kernel tailored to your system. The details of this process are described elsewhere; here is the list of configuration options you need to select to m (module) or y (built in) to include the support for the AccessRunner-based ADSL modems:

Prompt for development and/or incomplete code/drivers (EXPERIMENTAL)
  Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) (ATM)
Support for Host-side USB (USB)
USB DSL modem support (USB_ATM)
  Conexant AccessRunner USB support (USB_CXACRU)

You'll probably need a lot more: the drivers for your USB host controllers, the networking options, etc. Please resort to the kernel documentation and your common sense.

Kernel firmware loader

Including firmware loader in the kernel

Kernel firmware loader is provided by firmware_class driver. Most distributions have it enabled in their kernel packages. Even if yours doesn't, it will be automatcially included in the kernel build when you select cxacru driver.

Setting up hotplug to load the firmware

When asked by the driver, the firmware loader calls out the hotplug system passing it the name of the requested fimware file in an environment variable. Most distributions ship the hotplug package with support for the fimware loader included, typically in /etc/hotplug/firmware.agent. You need to find out where your hotplug firmware agent looks for the firmware files (often /lib/firmware), and put your firmware files there.

For more information you are referred to the Linux Hotplug home page.

Checking if it works

In a typical configuration, when the modem is connected to a USB port of your computer, the hotplug system will try to load the appropriate driver, in this case cxacru. The driver will detect the need to load the firmware, and, if it finds one, will start loading it. It will take a few tens of seconds. Then the modem should start initiating the ADSL connection (ADSL LED blinks), and the driver should create an ATM device handle, and you should be able to see its status in /proc/net/atm/devices and /proc/net/atm/cxacru:X, where X is the ATM device number your modem was assigned (most likely 0).

Once the modem succeeds to establish the ADSL connection, the ADSL LED will go permanently on, and your /proc/net/atm/cxacru:X will say "Line up". Then you can start initiating internet connection.

Otherwise, if any of the above fails, feel free to request help at the mailing list.

Last update: Monday, 28-Feb-2005 00:32:47 UTC by roman_kagan