Conexant AccessRunner PCI ADSL Modem Driver for Linux

This ADSL modem was released for linux once in 2001, and has not been maintained officially since then. This place is totally unofficial, but it works for me...

This driver includes object code (dpcontroller.o) provided by the manufacturer that was compiled for IA32, so this driver will not work on any 64 bit versions of linux.

If you find this driver useful (or if you think it can be improved), just send me an e-mail.

Latest driver sources

The driver sources are maintained in a darcs-2 repository at http://www.zweije.nl.eu.org/~vzweije/accessrunner/CnxADSL-6.1.2.007-PIM-2.6, and they are released irregularly as tarball and patch, whenever an incompatible kernel change makes it necessary.

There is a problem compiling driver version 2.8. Until resolved, please use driver version 2.7. If you want to upgrade to linux-3.7 or later, you will have to wait a little while, or fix the problem yourself; it's not too hard if you know a little c programming.

Linux-3.9-rc1 has a small change in socket code, so when linux-3.9 is final, version 2.9 of the AccessRunner driver will be released to deal with it.

Tijs van Buggenhout is fixing the problem of the kernel strack trace that is produced when the driver is loaded. It seems to help against some instability on SMP systems.

kernel driver date full driver size patch size darcs tag
2.6.27 3.8 2.8 2012-12-26 1120289 961 CnxADSL-6.1.2.007-PIM-2.6-2.8
2.6.27 3.6 2.7 2012-03-20 1120197 3279 CnxADSL-6.1.2.007-PIM-2.6-2.7
2.6.27 3.2 2.6 2011-02-23 1120191 5541 CnxADSL-6.1.2.007-PIM-2.6-2.6
2.6.27 2.6.36 2.5 2010-02-07 1120081 2002 CnxADSL-6.1.2.007-PIM-2.6-2.5
2.6.27 2.6.32 2.4 2009-12-08 1119896 1473 CnxADSL-6.1.2.007-PIM-2.6-2.4
2.6.27 2.6.31 2.3 2009-11-05 1119989 994 CnxADSL-6.1.2.007-PIM-2.6-2.3
2.6.27 2.6.30 2.2 2009-10-30 1119878 795 CnxADSL-6.1.2.007-PIM-2.6-2.2
2.6.27 2.6.29 2.1 2009-01-21 1239527 833 CnxADSL-6.1.2.007-PIM-2.6-2.1
2.6.27 2.6.28 2.0 2009-01-11 1239534 7933 CnxADSL-6.1.2.007-PIM-2.6-2.0
... 2.6.26 1.10 2010-03-02 1120770 4136 CnxADSL-6.1.2.007-PIM-2.6-1.10
... 2.6.26 1.9 2008-12-23 1274473 2284 CnxADSL-6.1.2.007-PIM-2.6-1.9

The series 2.6-1 (up to version 1.10) sources are maintained in a darcs-2 repository at http://www.zweije.nl.eu.org/~vzweije/accessrunner/CnxADSL-6.1.2.007-PIM-2.6-1.

The history page lists release notes and older releases of the driver.

I need your help!

First of all, if you run this driver successfully on an SMP kernel and computer, I'd like confirmation of that fact. It is supposed to work fine, but I cannot test it myself as I don't have an SMP machine. Please send me a message at Vincent Zweije <vincent@zweije.nl>.

Second, if you run this driver successfully on a PREEMPT ("low-latency desktop") kernel on an SMP computer, I'd also like confirmation of that fact. Again, it may work fine (I'm using a PREEMPT kernel right now), but I am not certain that PREEMPT with SMP could trigger problems that PREEMPT alone does not. Please send me a message at Vincent Zweije <vincent@zweije.nl>.

Is this driver for your modem?

If you haven't installed the modem, you may recognize it by one of its branding names:

Once you have installed the actual PCI card in your computer, you may check if you have the correct chipset with the following UNIX command (look for the bold text):

$ lspci | grep -e 14f1 -e Conexant
00:0b.0 System peripheral: Conexant ADSL AccessRunner PCI Arbitration Device (rev 01)
00:0b.1 ATM network controller: Conexant AccessRunner PCI ADSL Interface Device (rev 01)
$

Older linux distributions may not have this device in their PCI device database and print a numeric id instead:

$ lspci | grep -e 14f1 -e Conexant
00:0b.0 System peripheral: Unknown device 14f1:1610 (rev 01)
00:0b.1 ATM network controller: Unknown device 14f1:1611 (rev 01)
$

What does this driver provide?

This driver provides you with the sources for a kernel module (CnxADSL.ko), a firmware blob, and a few control programs. With these, you can:

  1. Compile the kernel module (CnxADSL.ko).
  2. Usinig modprobe/insmod, insert the module into the kernel.
  3. Run a control program to download the firmware into the modem, and make the modem connect to your ADSL provider, giving you a basic ADSL link.

It is up to you, once you get the ADSL network link up, to get the Internet link running. For instance, you may need to run pppd with the PPPoATM plugin to get an Internet connection to your Internet provider. Find the guides on how to do this elsewhere on the Internet.

What do you need to use this driver?

You will need:

How do you get a usable driver from the sources?

First of all, build the driver and utility programs (no need to do this as root):

  1. Make sure the kernel sources have been unpacked, configured, and compiled in /usr/src/linux. If you configure your own kernel, ensure it has support for:
  2. Enter the driver directory CnxADSL-k6.1.2.007-PIM-2.6-XXX/.
  3. Run make. It should tell you what it does, but produce no error messages or warnings.

You should now, among other stuff, have the following files:

Now install these files onto your system (as root, obviously):

  1. Install DownLoadApp/cnxadsl.conf as /etc/cnxadsl.conf.
  2. Install DownLoadApp/CnxTgF.hex as /usr/lib/CnxTgF.hex.
  3. Install DownLoadApp/cnxadslload as /usr/sbin/cnxadslload.
  4. Install KernelModule/CnxADSL.ko as /lib/modules/kernelversion/kernel/extra/CnxADSL.ko.
  5. Run depmod kernelversion so modprobe will find the driver module.

The driver is now installed on your system and ready for use. When you have made sure that your are running the kernel version for which you compiled and installed the driver, you can:

  1. Run modprobe CnxADSL CnxtDslVendorId=0x14F1 CnxtDslArmDeviceId=0x1610 CnxtDslAdslDeviceId=0x1611 CnxtDslPhysicalDriverType=1 to insert the driver into the kernel.
  2. Run cnxadslload /etc/cnxadsl.conf to start up the ADSL link.

You should hear some clicking from the modem, and after a little under a minute, it will be synchronised to the "central office". Congratulations, you have your ATM link.

When you upgrade your kernel, you will have to do it all again, unfortunately. I strongly suggest that you make scripts to do most of this stuff. I'm working on a Debian package that will automate this process using module-assistant and a standard Debian kernel, but it's not done yet. It should work for Ubuntu as well.

After you got it running

So you got the driver working, and you have your ATM network connection. Now what?

As far as I can tell, most ISPs run a PPP link over the ATM connection. In order to get a usable connection to Internet you will have to set up a PPP connection with the PPP over ATM (PPPoATM) plugin. (You enabled PPP and PPPoATM in your kernel configuration, didn't you?)

Some ISPs may run an IP layer directly over the ATM link. In this case, br2684ctl is your keyword for more information.

Then you need to make it all run automatically, by setting up boot scripts that will start everything automatically when the computer starts up. For RedHat you need some amendments for the standard scripts that make them work with this driver.

Historic Resources