SourceForge.net Logo

Modem firmware

Background

Conexant AccessRunner is quite an intellectual piece of hardware. It incorporates an ARM940T microprocessor core, and wants a full-fledged operating system to run on it. You need to upload the image of this operating system, aka firmware, to your modem every time on power up before you can start making an ADSL connection.

Conexant ships (through the modem vendors) the firmware based on proprietary realtime operating system VxWorks from Wind River, in binary-only form. It might have been your beloved Linux, there is even some code for CX821xx chipsets (early version of the AccessRunner series, which is CX823xx) in uClinux, but I am unaware of any successfull uses thereof.

To complicate things even further, there are two flavors of firmware from Conexant:

  1. directly using ATM cells (these days all NSPs use ATM adaptation layer 5 over xDSL) packed in the USB frames for exchange with the host computer, and leaving up to it the Internet connection setup
  2. using Ethernet framing over USB link with the host computer, and implementing the complete IP stack and various protocols to establish Internet connections in the firmware, as well as a built in web server to control the modem.
This project deals with the first flavor only.

N.B. Due to the obvious licensing restrictions this project can not redistribute the firmware produced by Conexant.

It can, however, provide instructions and utilities to obtain the necessary data given the Windows driver package shipped with your modem. The following text assumes you have unpacked it from whatever archived form it was distributed in. You may need UnZip, cabextract, unshield, etc. and your common sense for that.

If your modem happens to be packaged with the second type of firmware, you'll have to get a different driver package for a similar modem. Please search the mailing list archive for suggestions on where to find one.

Obtaining firmware (cxacru-fw.bin)

Conexant usually ships the firmware embedded in a driver library, typically CnxEtU.sys. There is a program which may help you to extract it from there, cxacru-fw.

As of this writing, it's still in development and testing stage, so there haven't been any released versions, and it's available only via project's anonymous CVS in the module utils. You need to build it with make, and run giving it the name of the intput and output files as arguments. The resulting file should be named cxacru-fw.bin and installed in the appropriate location in order to be automatically loaded by the driver.

Some older firmware revisions have a bug which makes them communicate with the host computer in a slightly different manner than the driver would expect. The symptom of this problem is that you receive a message like this
  cxacru 1-1:1.0: poll status: error -5
from your kernel every 5 seconds. The recommended solution is to get a newer firmware, e.g. from a package for a different modem.

Last update: Tuesday, 01-Mar-2005 01:09:59 UTC by roman_kagan