V 1.99 20090114 12:02 Clive Nicolson

My ADSL page.

Does your adsl pci card look like *? or is it a clone.

I provide the following files, some of which are patched versions of the original Conexant stuff, a recent version of ppp (with a pppoatm plugin), and scripts which I have modified :

File Contains Alternate or original repository
CnxADSL.html These notes.
kernel-source
kernel-headers
ppp-2.4.2cln.tar.gz Source of ppp 2.4.2 + pppoatm plugin
Mandrake's ppp-2.4.1-12mdk (or newer?) can be used.
ftp://ftp.samba.org/pub/ppp/
CnxADSL-TgrATMcln.tar.gz Patched source for the Conexant driver.
Not smp safe!
Provides aal5 and aal0. Supports ATM OAM loopback as required by Telecom Italia.
http://www.themad-house.co.uk/conexant/conexant-drivers.html
adsl-cln.tar.gz Various updated adsl-* scripts mentioned below
linux-atm-2.4.1-1.i386.rpm
or
linux-atm-2.4.1.tar.gz
linux-atm linux-atm.sourceforge.net
br2684ctl.c Control program for EoA http://home.sch.bme.hu/~cell/br2684/dist/
rp-pppoe http://www.roaringpenguin.com/products/rp-pppoe/
Table 1:

These instructions are biased toward RedHat like systems but should be easily adapted to other distributions.

There are a number of ways that a adsl connection can be used under linux to create a network link.

These ways are variously described by the RFC which specifies the encapsulation used over ATM which is the media framing used over adsl.

RFC Protocol Comment
2225 (previously 1577) IPoA CLIP over ATM
2684 routed (previously 1483) RIPoA
2684 bridged (previously 1483) EoA This may have PPPoE built on top
1661 PPP
2516 PPPoE
2364 PPPoA
Table 2:

This table shows the software components and device interfaces used to enable the transport mechanisms.

Object type IPoA RIPoA EoA PPPoE-EoA PPPoA
net device ppp* ie ppp0
kernel module ppp_*.o
control program pppd
pppd plugin rp-pppoe.so
or
/sbin/pppoe
pppoatm.so
kernel module pppoe.o pppoatm.o
net device atm* ie atm0 nas* ie nas0
control program atmarpd
atmsigd (for SVC's)
ilmid (for IPoA)
br2684ctl
kernel module br2684.o
atm interface ie 0
ATM driver CnxADSL.o or CnxADSL.ko
Table 3:

Table headings
Row label
Interface name
File contents
Commands to execute
Notes
Table 4: Colour codes

This (incomplete) table shows what has actually worked! If you have a new data point please email me.

Distribution IPoA RIPoA EoA PPPoE-EoA PPPoA
Debian 2.4.23
2.4.25
2.4.23
2.4.25



Gentoo

2.4.22
2.6.9
2.4.22
2.6.9

Mandrake



2.4.19-16mdk
Redhat 2.4.21
2.4.21 2.4.21 2.4.18
2.4.20
2.4.21
2.4.22
2.4.23
2.4.24
Fedora Core 1 2.4.23 2.4.23 2.4.23 2.4.23 2.4.23
Fedora Core 2



2.6.5
2.6.8
Slackware



2.4.18
SuSe



2.4.18
Table 5: What has worked


This table is a check list for obtaining, building and installing the software components.

Object Installed object location Build and install instructions Comments
This list is more or less ordered, omit objects not required. #Start here You need to be logged on as root.
kernel-sources /usr/src/linux/
/usr/src/include/linux/
#
#Obtain kernel-source
#Install kernel-source
#Obtain kernel-headers
#Install kernel-headers
The kernel >= 2.4.18 does not need any atm patches for the Conexant PCI adsl card to function, however the atm features may not be enabled by default!

You will need the kernel sources that match your kernel.

You will need the kernel-headers which match your kernel source, the version numbers may not be equal!

Make sure that your system is set up for a kernel build...

You may not need to build a new kernel if the pppoatm module exists, ie can you see: /lib/modules/<version>/kernel/net/atm/pppoatm.o ?

When you configure your kernel build, if pppoatm.o is missing, you need to set Module for "PPP over ATM (EXPERIMENTAL)" under the "Network device support" section!

Build, install and test the kernel with all the features that your current kernel has, plus the atm support options.

...Look at the kernel build HOWTO....
pppoe.o /lib/modules/<version>/kernel/drivers/net/
#
#Prerequisite: kernel-sources
#Kernel config:
##Networking device support
###PPP Over Ethernet (EXPERIMENTAL) [Y]
#=>CONFIG_PPPOE=m
####For 2.6 kernel with CnxADSL####
##Processor type and features
###Use register arguments (EXPERIMENTAL) [ ]
pppoatm.o /lib/modules/<version>/kernel/net/atm/
#
#Prerequisite: kernel-sources
#Kernel config:
##Networking Options
###Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) [Y]
#=>CONFIG_ATM=y
##Network device support
###PPP Over ATM (EXPERIMENTAL) [Y]
#=>CONFIG_PPPOATM=m
####For 2.6 kernel with CnxADSL####
##Processor type and features
###Use register arguments (EXPERIMENTAL) [ ]
ppp_*.o /lib/modules/<version>/kernel/drivers/net/
#
#Prerequisite: kernel-sources
#Kernel config:
##Network device support
###PPP (point-to-point protocol) support
#=>CONFIG_PPP=m
#=>CONFIG_PPP_*=m
####For 2.6 kernel with CnxADSL####
##Processor type and features
###Use register arguments (EXPERIMENTAL) [ ]
bridge.o /lib/modules/<version>/kernel/net/bridge/
#
#Prerequisite: kernel-sources
#Kernel config:
##Networking Options
###802.1d Ethernet Bridging <M>
#=>CONFIG_BRIDGE=m
####For 2.6 kernel with CnxADSL####
##Processor type and features
###Use register arguments (EXPERIMENTAL) [ ]
br2684.o /lib/modules/<version>/kernel/net/atm/
#
#Prerequisite: kernel-sources
#Kernel config:
##Networking Options
###Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) [Y]
#=>CONFIG_ATM=y
#=>CONFIG_ATM_BR2684=m
####For 2.6 kernel with CnxADSL####
##Processor type and features
###Use register arguments (EXPERIMENTAL) [ ]
kernel
#
#Prerequisite: kernel-sources
#....
br2684ctl /sbin/
#
#Prerequisite: linux-atm
cd /usr/src/
mkdir br2684ctl
cd br2684ctl/
#Obtain br2684ctl.c
cc -Wall -o br2684ctl br2684ctl.c -latm
cp br2684ctl /sbin/
CnxADSL.o or CnxADSL.ko
cnxadslctl
cnxadslctl.conf
cnxadsl.conf
cnxadslload
CnxTgF.hex
cnxadslconfig
cnxadslstatus
cnxadslautolog
/lib/modules/current/misc/
/etc/init.d/ or /etc/rc.d/
/etc/Conexant/



/usr/bin/
#
#Prerequisite: kernel
cd /root/
#Obtain CnxADSL-TgrATMcln.tar.gz
cd /
tar -xzf /root/CnxADSL-TgrATMcln.tar.gz
cd /usr/src/CnxADSL-TgrATM_k2.4.3-6.1.2.007CLN/
cd KernelModule/
#To configure for 2.4 use 24, otherwise 26
ln -f -s Makefile24 Makefile
cd ../
#
make clean
make
make install
atm*
ilmid
atmd.h
atm.h
atmsap.h
/usr/local/sbin/

/usr/local/include/
#
#Prerequisite: kernel-sources
#Kernel config:
##Networking Options
###Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) [Y]
#=>CONFIG_ATM=y
#=>CONFIG_ATM_CLIP=y (For RIPoA or CLIP)
#=>CONFIG_ATM_CLIP_NO_ICMP=y (For RIPoA or CLIP)
####For 2.6 kernel with CnxADSL####
##Processor type and features
###Use register arguments (EXPERIMENTAL) [ ]
cd /root/
#Obtain linux-atm-2.4.1.tar.gz
cd /usr/src/
tar xvfzC /root/linux-atm-2.4.1.tar.gz
cd linux-atm-2.4.1/
./configure --prefix=/usr
make
make install
Install linux-atm-2.4.1-1.i386.rpm, for pppoatm this is only needed for the include files and libatm.so:

rpm -Uvh linux-atm-2.4.1-1.i386.rpm
Table 6:

Or for Slackware:

rpm2targz linux-atm-2.4.1-1.i386.rpm
cd /
tar xvfzC linux-atm-2.4.1-1.i386.tar.gz
Table 7:

If you use the linux-atm-2.4.1.tar.gz source instead, do:

cd /usr/src/
tar xvfzC linux-atm-2.4.1.tar.gz
cd linux-atm-2.4.1/
./configure --prefix=/usr
make
make install
Table 8:
pppd
pppoatm.so
rp-pppoe.so
/usr/sbin/
/usr/lib/pppd/2.4.2/
#
#For PPPoE use any version of ppp >= 2.3.7
#but with demand dialing >= 2.3.10 but
#for kernel 2.4 >= 2.4
#For PPPoA one must use ppp >= ppp-2.4.2b1
#Prerequisite: linux-atm
cd /root/
#Obtain ppp-2.4.2cln.tar.gz
cd /
tar -xzf /root/ppp-2.4.2cln.tar.gz
cd /usr/src/ppp-2.4.2/
./configure
make
make install
For pppoatm a PPP daemon is needed which supports the ppoatm plugin.

If your system does not have ppp 2.4.2 or later, then you should use the ppp-2.4.2 source which I provide (in ppp-2.4.2cln.tar.gz), as it provides the pppoatm plugin without changes.
adsl-connect
adsl-setup
adsl-start
adsl-status
adsl-stop
pppoe
pppoe-relay
pppoe-server
pppoe-sniff
/sbin/
#
#Obtain rp-pppoe
adsl-connect
adsl-setup
adsl-status
/sbin/
#
#Prerequisite: rp-pppoe
cd /root/
#Obtain adsl-cln.tar.gz
cd /sbin/
tar -xzf /root/adsl-cln.tar.gz
Table 9:

If you are to use PPPoA then you should install the rp-pppoe package so that you can use some of the adsl-* scripts it provides, then install my adsl-cln.tar.gz file and use it to update some of the adsl-* scripts. PPPoE users may also apply the updates.

Installation of startup and initialization scripts.

Edit /etc/Conexant/cnxadslctl.conf to reflect your ATM parameters. Now execute the appropriate command from Table 11.

Gentoo Redhat Slackware
rc-update add cnxadslctl default
chkconfig --add cnxadslctl
In order to load the CnxADSL module on start-up, you can add the following
lines to your /etc/rc.d/rc.local script :

# Conexant ADSL PCI Modem
if grep -q 'System peripheral: Conexant ADSL AccessRunner' /proc/pci; then
/etc/rc.d/cnxadslctl start
fi
Table 11:

The cnxadslctl script will start up the Conexant card early in the boot sequence, it does not start up ppp, this needs to be done later in the startup sequence.

Installation of ppp startup and initialization scripts.

IPoA RIPoA EoA PPPoE-EoA PPPoA
/sbin/adsl-setup

rp-pppoe plugin rp-pppoe
Then edit /etc/ppp/pppoe.conf so that
LINUX_PLUGIN=
becomes
LINUX_PLUGIN=rp-pppoe.so

/sbin/adsl-setup
Table 12:

On Redhat like systems adsl-setup will have installed files which will be called by the system network startup, however on other distributions one has to execute (or cause to be executed) adsl-start and adsl-stop. On a gentoo system one could add adsl-start to /etc/conf.d/local.start .What is the correct VPI/VCI to use?

Starting everything by hand, this is basically what should happen automatically!:*

IPoA
RIPoA
EoA
PPPoE-EoA
PPPoA
#ISP assigned variables:
atm vpi/vci: 0.100
local ip address: 192.168.1.138
remote ip address: 192.168.1.137
ip netmask: 255.255.255.252
DNS ip address: ?


#User selectable variables:
atm interface: 0 #default to 0 if there is only 1
atm device: atm0

#ISP assigned variables:
atm vpi/vci: 0.100
local ip address: 192.168.1.138
remote ip address: 192.168.1.137
ip netmask: 255.255.255.252
DNS ip address: ?


#User selectable variables:
atm interface: 0 #default to 0 if there is only 1
atm device: atm0

#ISP assigned variables:
atm vpi/vci: 0.100
local ip address: 192.168.1.138
remote ip address: 192.168.1.137
ip netmask: 255.255.255.0
DNS ip address: ?


#User selectable variables:
atm interface: 0 #default to 0 if there is only 1
ethernet device: nas0

#ISP assigned variables:
atm vpi/vci: 0.100
user and service: userid@xxxx
local ip address: 192.168.1.138
remote ip address: 192.168.1.137
ip netmask: 255.255.255.0
DNS ip address: ?

#User selectable variables:
user password: passwrd
atm interface: 0 #default to 0 if there is only 1
ethernet device: nas0
#ISP assigned variables:
atm vpi/vci: 0.100
user and service: userid@xxxx





#User selectable variables:
user password: passwrd
atm interface: 0 #default 0 to if there is only 1

#Load module
modprobe atm   #Under 2.6 this happens automatically
#Either: (Building the USB drivers is not described here!)
#i  ) Load the Conexant AccessRunner PCI driver
modprobe CnxADSL
/etc/Conexant/cnxadslload -i0 /etc/Conexant  #Load firmware

#ii ) Load the Conexant AccessRunner USB driver
rmmod cxacru
cxload.sh   #Load firmware
modprobe cxacru
cxioctl 1

#iii) Load the SpeedTouch USB driver (using Conexant USB cx tools)
rmmod speedtch
cxload.sh   #Load firmware
modprobe speedtch
cxioctl 1
#Start atmsigd
atmsigd -b -l syslog 0.0.100

#Start ilmid
ilmid -b -l syslog

#Start atmarpd
atmarpd -b -m -l syslog

#Create the atm0 interface
atmarp -c atm0

#Configure the atm0 interface
ifconfig atm0 192.168.1.138 netmask 255.255.255.252 up




#Delete default route
route del default

#Add default route
route add default gw 192.168.1.137





#Start atmsigd if svc needed
atmsigd -b -l syslog




#Start atmarpd
atmarpd -b -m -l syslog

#Create the atm0 interface
atmarp -c atm0

#Configure the atm0 interface
ifconfig atm0 192.168.1.138 netmask 255.255.255.252 up

#Make atmarp entry
atmarp -s 192.168.1.137 0.0.100

#Delete default route
route del default

#Add default route
route add default gw 192.168.1.137





#Load module
modprobe br2684







#Create the nas0 interface
br2684ctl -b -e 0 -c 0 -a 0.0.100

#Configure the nas0 interface
ifconfig nas0 192.168.1.138 netmask 255.255.255.0 up




#Delete default route
route del default

#Add default route
route add default gw 192.168.1.137 dev nas0





#Load module
modprobe br2684







#Create the nas0 interface
br2684ctl -b -e 0 -c 0 -a 0.0.100

#Configure the nas0 interface
ifconfig nas0 192.168.1.138 netmask 255.255.255.0 up

#Make sure /etc/ppp/pap-secrets and /etc/ppp/chap-secrets
# contains a line like:
userid@xxxx * passwrd


#Start pppd
/usr/sbin/pppd pty "/usr/sbin/pppoe -I nas0 -T 80 -U -m 1412" \
noipdefault noauth default-asyncmap defaultroute \
hide-password nodetach noaccomp noccp nobsdcomp \
nodeflate nopcomp novj novjccomp \
user userid@xxxx \
lcp-echo-interval 20 lcp-echo-failure 3 persist \
mtu 1492 mru 1492
#Load module
modprobe pppoatm













#Make sure /etc/ppp/pap-secrets and /etc/ppp/chap-secrets
# contains a line like:
userid@xxxx * passwrd


#Start pppd
/usr/sbin/pppd plugin pppoatm.so 0.0.100 \
noipdefault noauth default-asyncmap defaultroute \
hide-password nodetach noaccomp noccp nobsdcomp \
nodeflate nopcomp novj novjccomp \
user userid@xxxx \
lcp-echo-interval 20 lcp-echo-failure 10 persist

#Do not forget the DNS
#?
Table 13:

If when ppp is started, libatm.so can not be found, it maybe that libatm.so is in /usr/local/lib/ , while it is expected to be in /usr/lib/ . If this is the case copy /usr/local/lib/libatm* to /usr/lib/ and execute /sbin/ldconfig -n /lib

Links - see also:

Link Distribution Protocol
http://www.zweije.nl.eu.org/~vzweije/accessrunner/ * *
http://patrick.spacesurfer.com/linux_conexant_pci_adsl.html RedHat pppoa
http://www.frlinux.net/english/?section=dsl Debian Woody pppoe
http://www.data-technics.net/content.php?cat=3 RedHat 7.3 & 9.0 pppoa
http://longword.net/ADSL/ RedHat pppoe
http://members.tripod.com/alord/pciadsl/pciadsl.html Mandrake 9.0 pppoa
http://www.methinks.co.uk/howto/linux-pci-adsl-router-howto.html Mandrake 9.1 pppoa
http://www.digitaltrickery.com/conexant-pci-notes.html Mandrake 8.1 pppoa
http://home.sch.bme.hu/~cell/br2684/USAGE.br2684 pppoe
http://x-dsl.hu/linux/index.html
http://www.roaringpenguin.com/products/rp-pppoe.html pppoe
http://www.linux-usb.org/SpeedTouch/docs/howto.html pppoa,pppoe
http://www.linux.ie/articles/tutorials/adsl-howto.php Debian pppoe
http://crackwhore.unixhead.org/docs/conexant/linux-conexant-howto.html Debian,Gentoo,Slackware pppoa
http://www.linuxdsl.co.uk/install.php pppoa
http://www.saunalahti.fi/voas0113/adsl/cnx.php RFC 2684 bridged
http://www.tldp.org/HOWTO/ATM-Linux-HOWTO/ ATM
http://home.regit.org/br2684.html
http://segfault.homelinux.org/huru/telewell_linux_sonera.html RFC 2684 bridged
http://sourceforge.net/projects/accessrunner/
http://sourceforge.net/forum/forum.php?thread_id=1136977&forum_id=155749
http://en.tldp.org/HOWTO/Bridge/
Table 14: