Personal home page for: |
Patrick Mackinlay |
| Home | Contact | Secure | |
PCI ADSL modems based on the conexant chipset are sold by many online retailers such as dabs. This document describes how to install and setup this modem on GNU/linux (IA32 only) for use with ADSL provided by BT in the UK, however this should also serve as a guide for other ADSL providers that use PPP over ATM.
These instructions should be distribution independant, for notes regarding particular distributions see the distribution section.
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:
/sbin/lspci
The resulting output should contain the lines similar to:
00:0b.0 System peripheral: Unknown device 14f1:1610 (rev 01)
00:0b.1 ATM network controller: Unknown device 14f1:1611 (rev 01)
Newer linux distributions may have an updated PCI device database and hence the output would be similar to:
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)
There are many driver versions, ppp over atm versions and atm utility versions on the internet. If you are using the instructions on this site then you must use the source code on this site and you must remove any previous installation of the software. Do not expect any help from me if you do not use the source code listed in the resources section of this site and whose link anchor is referenced with the text download from this site. This installation procedure is not for novices! If you are a novice I suggest you find a GNU/linux distribution that supports your adsl modem.
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.
The only kernels I have test and will test are those released from kernel.org (tested 2.4.19, 2.4.21, 2.4.23, 2.4.29, 2.6.9, 2.6.11.3, 2.6.20). If you are using a kernel provided by a vendor such as RedHat or SuSE you will need the kernel sources, please note that I will not necessarily answer emails regarding kernels from third parties, they are modified with their own patches and it is often not trivial to find out what changes they have made. You may find some contributed distribution specific information in the distribution section. You may check your kernel version with:
uname -r
I have tested the installation process with older (gcc 2.96) and newer (gcc 3.2.2, gcc 3.3.3) gcc versions and they both work. If your system uses a gcc version newer than 3 then you will need a newer version of binutils (tested 2.13.90.0.18 20030206). You may check your gcc version with:
gcc -v
You may check your binutils version with:
ld -v
Note: There are unconfirmed reports that this does not work with gcc 3.4 (distributed with Fedora Core 3)
Your kernel will need to support the functionality listed below, if it does not you will have to recompile your kernel. Required functionality:
Kernel configuration section | Description | .config Define | Status | Kernels |
---|---|---|---|---|
Networking options | Asynchronous Transfer Mode (ATM) | CONFIG_ATM | On | 2.4.*, 2.6.* |
Network device support | PPP (point-to-point protocol) support | CONFIG_PPP | On | 2.4.*, 2.6.* |
PPP over ATM | CONFIG_PPPOATM | On | 2.4.*, 2.6.* | |
Processor type and features | Use register arguments | CONFIG_REGPARM See below | Off | 2.6.* |
CONFIG_SMP | Off (suggested) | 2.4.*, 2.6.* | ||
CONFIG_PREEMPT | Off (suggested) | 2.4.*, 2.6.* |
Some of this support may be experimental so ensure you enable such drivers in the code maturity level options. If you choose to compile the above support as modules then the resulting module will be pppoatm.o and should be loaded at boot time with:
/sbin/insmod pppoatm
Important note: Linux 2.6.* users should note that their kernel must be compiled without the "use register arguments" (CONFIG_REGPARM) option. Newer kernels (at least 2.6.20 onwards) no longer allow you to to turn off this option in the config file so you will have to edit the kernels main Makefile manually and remove this option! You will have to find the line that sets CFLAGS and remove the otions -mregparm=3 -freg-struct-return.
For example, if you have downloaded and untarred linux-2.6.22.19, in linux-2.6.22.19/arch/i386/Makefile there will be this line:
CFLAGS += -pipe -msoft-float -mregparm=3 -freg-struct-return
it needs to be replaced with:
CFLAGS += -pipe -msoft-float
In order to compile the driver you will need the tools and libraries for ATM. This package is already present on your system if you have the file:
/usr/include/atm.h
If you already have this package it is suggested that you replace it with the version found on this site. You can install ATM for GNU/linux using the usual configure, make procedure, similar to:
bzip2 -d linux-atm-2.4.0.tar.bz2
tar xvf linux-atm-2.4.0.tar
cd linux-atm-2.4.0
./configure --prefix=/usr
make
make install
On some more recent linux distributions this package will not compile, if this is the case and the kernel module does not compile then it is suggested that you replace the /usr/include/atm.h with the one used in your current kernel. You may do so by changing directory to the root of your kernel (usually /usr/src/linux) and typing:
mv /usr/include/linux/atm.h /usr/include/linux/atm.h.bak
cp include/linux/atm.h /usr/include/linux/atm.h
You will need to compile and install the pci conexant adsl GNU/linux driver. Firstly make sure you have your kernel sources in /usr/src/linux, if your sources are elsewhere then create a symbolic link. The commands below are for the 2.2.x and 2.4.x linux kernel versions, if you have a 2.6.x kernel you my try the version of the 2.6.x driver, but this is a test driver and you will have to change the commands below accordingly. If you download the driver from this site it may be compiled as follows:
bzip2 -d driver-2.6-latest.tar.bz2
tar xvf driver-2.6-latest.tar
cd [New directory created]
make
make install
This will create and install the kernel module and the init scripts. Depending on your GNU/linux distribution, you may also have to rebuild your module dependancies with:
/sbin/depmod -a
You will need to compile and install PPP with the PPP over ATM plugin. If you download the PPP source from this site you may compile and install it as follows:
bzip2 -d ppp-2.4.0b2-patched.tar.bz2
tar xf ppp-2.4.0b2-patched.tar
cd ppp-2.4.0b2-patched
./configure --prefix=/usr
make
make install
In the directory /etc/ppp there are a number of files used to configure PPP, you will have to edit these files and put in the correct settings for your ISP. The following example configuration files work for ADSL provided via BT in the UK. The /etc/ppp/options file contents:
# Uncomment the following line if you have routed ADSL
#[IP address of router]:
# Uncomment the following line for debug information
#debug
passive
defaultroute
usepeerdns
noauth
name [Your user name]
user [Your user name]
plugin /usr/lib/pppd/plugins/pppoatm.so
# The following line is the [VCI].[VPI] number of your provider
0.38
The /etc/ppp/chap-secrets file contents:
# Secrets for authentication using CHAP
# client server secret IP addresses
[Your user name] * [Your password]
Finally to start your ADSL connection type:
/etc/init.d/cnxadslctl start
Any error/status messages will appear in the global log file /var/log/messages. If all is OK you should have log lines like:
Mar 25 23:06:29 blackhole pppd[19440]: Plugin /etc/ppp/plugins/pppoatm.so loaded.
Mar 25 23:06:29 blackhole pppd[19440]: PPPoATM plugin_init
Mar 25 23:06:29 blackhole pppd[19440]: PPPoATM setdevname_pppoatm
Mar 25 23:06:29 blackhole pppd[19440]: PPPoATM setdevname_pppoatm - SUCCESS
Mar 25 23:06:29 blackhole pppd[19441]: pppd 2.4.0 started by root, uid 0
Mar 25 23:06:29 blackhole pppd[19441]: Using interface ppp0
Mar 25 23:06:29 blackhole pppd[19441]: Connect: ppp0 <--> 0.38
Mar 25 23:08:51 blackhole pppd[19441]: local IP address 213.253.36.17
Mar 25 23:08:51 blackhole pppd[19441]: remote IP address 217.41.128.64
You can check on the status of your modem with the following command:
/etc/init.d/cnxadslctl status
The output of this will let you know if your line is synchronised and give you further information and statistics.
Below you can find a list of verified working distributions. However, all distributions should work if you compile everything from sources and follow all the steps in the above instructions to the letter.
Vendor | Version information |
---|---|
RedHat | Version 9.0 works with 2.4.x kernel driver. |
Fedora | Core 2 works with the 2.6.x kernel driver but has some header file issues which can be fixed by following these notes. Core 3 is known to work with the 2.6.9 kernel, however later kernels released as updates do not work (Use the official kernel). |
Mandrake | Versions 10.0 and 10.1 work with the 2.6.x kernel driver and do not require steps 2, 3 and 5 |
Some or all of these resources are required:
Resource name | Source website | ||
---|---|---|---|
Linux Kernel | Linux Kernel Archives | ||
Tools and libraries for ATM | ATM on Linux | download from this site | |
Conexant PCI ADSL linux drivers (2.2.x and 2.4.x) | download from this site | history | |
Conexant PCI ADSL linux drivers (2.6.x) | download from this site | history | |
PPP with PPP over ATM plugin | PPPoATM for linux | download from this site |
Resource name | Source website | |
---|---|---|
Older conexant PCI ADSL linux drivers | The Mad House conexant drivers | download from this site |
Contact Me | Designed for w3c compliance (XHTML and CSS). | Jun 6 2023 |