Conexant/Tigris PCI ADSL Modem on Mandrake 9.0 for PPPoATM

This web page is to help people get this PCI Modem running under Mandrake Linux 9.0 and over PPPoATM. This chipset is used on a number of different cheap brands. The most popular name is AccessRunner. Another is Ebuyer. Mine was MegaSpeed. I brought it from a computer fair for £35. It said "Linux Drivers included" right there on the box.

"This should be a breeze" I thought. Little did I know...

Most of my time was spent learning a bit more learning (roughly) what a lot of this networking jargon means. The good news is that you should be up and running in 30 minutes!

I got the most useful guidance from Paul Tweedy's Notes

For Linux Gurus - There are much cleaner ways to do this. I'll try to point out bits that could be nicer..

There are very likely to be some errors as this is a draft from memory. There have been some corrections thanks to some folk in the Mandrake Usenet groups

Assumptions

Prequisites

You will need the modem and the Linux drivers. If You got a real cheap one, you may not have Linux drivers. In which case you can get them from The Mad House. You should have the following list of files either on a directory of the installation CD or downloaded (and unzipped) from the above link...

Tigris_K2.2.16_Driver.zipgcc-c++-2.96-85.i386.rpmlibstdc++-devel-2.96-85.i386.rpm
Tigris_K2.4.3_Driver.zipgcc-g77-2.96-85.i386.rpmlinuxconf-1.24r2-10.i386.rpm
atm-0.78-1-2.i386.rpmgcc-objc-2.96-85.i386.rpmpppd-2.4.0.tar.gz
cpp-2.96-85.i386.rpmkernel-atm-ppp-2.4.3-12.tar.gzrp-pppoe-3.0-1.i386.rpm
devfsd-2.4.3-12.i386.rpmkernel-doc-2.4.3-12.i386.rpm
gcc-2.96-85.i386.rpmlibstdc++-2.96-85.i386.rpm

bold means we really need this package.

Italics means, we need it but Mandrake should have a later version of this package, and use Mandrakes version!

Overview

What we need to do (after we log in as root!) is ...

Install Conexant Scripts.

cd /tmp type

# unzip driverdir/Tigris_K2.4.3+Driver.zip

e.g. # unzip /mnt/cdrom/Conexant/Drivers/Linux/Tigris_K2.4.3+Driver.zip This will give you 3 more files
CnxADSL-TgrATM_k2.4.3-6.1.2.007-7.i386.rpm Binaries/Scripts
CnxADSL-TgrATM_k2.4.3-6.1.2.007-7.src.rpm Source
CnxADSL-TgrATM_k2.4.3-6.1.2.007.tar.gz More Source
Install the scripts just using the i386 rpm like this:

# rpm -i CnxADSL-TgrATM_k2.4.3-6.1.2.007-7.i386.rpm

Note it will probably be neater to build everything from the Source RPM. But I'll just document the steps I done before I knew better!

Get Development Packages (C-Compiler and Kernel Source Code)

The previous step would have installed a file called CnxADSL.o in the directory /lib/modules/2.4.3/kernel/drivers/net/CnxADSL.o. This is called a Kernel Module and can (in an ideal world) be loaded to enhance the capability of the Linux Kernel (In this case, so that it can work our modem). Unfortunately, there are couple of problems with this file. Its in the wrong place for Mandrake, and even if it wasn't, Mandrake wont load it because it was built for a different Kernel.

If you trust me (!) and if you have Mandrake 9.0 (Kernel 2.4.19-16mdk), (check by typing

	# uname -r

), I have already compiled the driver and you can download it right here and save it to /lib/modules/2.4.19-16mdk/kernel/drivers/net/ on condition that you accept that I cannot be held responsible for anything that happens as a result. No warrantee, or fitness for purpose .. yadda .yadda.... Then you can skip to Testing the module.

If you are still reading at this point then you have opted for longer but more cautious route :)

So we have to create a new one from source. You need to first have the following Mandrake Packages installed from the Mandrake Distribution CDs (gcc and the kernel-source) then ....

#cd /usr/src
#tar xvf driverdir/CnxADSL-TgrATM_k2.4.3-6.1.2.007.tar.gz
#cd CnxADSL-TgrATM_k2.4.3-6.1.2.007

Edit the makefile and change kgcc to gcc. Now type

#./configure
#make

The error messages should be minor. As long as you have a file called CnxADSL.o and the date is within the last few minutes (check using 'ls -l') then everything probably went OK. If this file is missing something is really wrong!

Copy the file CnxADSL.o to /lib/modules/`uname -r`/kernel/drivers/net/.

Testing The Module.

Do a quick test to check everything is in the right place :

type

#insmod -f CnxADSL \
     CnxtDslVendorId=0x14F1         \
     CnxtDslArmDeviceId=0x1610      \
     CnxtDslAdslDeviceId=0x1611     \
     CnxtDslPhysicalDriverType=1 

You should see messages about a tainted kernel.

now type #lsmod | grep CnxADSL

It should be there!

finally type #rmmod CnxADSL

Modify The Startup Script.

The script supplied with the Conxant drivers is for some kind of ATM bridging mode. I dont think this is useful for PPPoATM but I could be completely wrong on this. All I know is my connection works :) Here's my alternative cnxadslctl startup script. Save it to /etc/rc.d/init.d/cnxadslctl.gz. You will need to uncompress it and make it executable as follows

# cd /etc/rc.d/init.d
# gunzip cnxadslctl.gz
# chmod 755 cnxadslctl 

I made it from combining Conexants script with the Alcatel Speedtouch script. Play around with it. Improve it. etc

You will also need to create a file /etc/ppp/peers/pci file to work with this script. Here is an example Note the 0.38 represent MY ISPs VPI.VCI. These should be the values in most of the UK. You should change this if needed.

---CUT---/etc/ppp/peers/pci-----------------
noauth
plugin /usr/lib/pppd/plugins/pppoatm.so 0.38
noipdefault
kdebug 1
nopcomp
noccp
novj
holdoff 4
maxfail 25
persist
usepeerdns
defaultroute
user "myid@adsl.myisp.com"
---CUT--------------------------------------

Change the user to the one supplied by your ISP.

This attempts to establish a ppp connection using dhcp. (You ISP assings you an IP address from their available pool.) If you have a fixed IP from your ISP you may find that DHCP works anyway. If not then you need to change the pluging line to read:

plugin /usr/lib/pppd/plugins/pppoatm.so 0.38 local-ip:remote-ip

E.g.

plugin /usr/lib/pppd/plugins/pppoatm.so 0.38 192.2.3.4:192.6.7.8

I havent tested this, but I guess most ISPs would implement fixed IPs by simply reserving them in dhcp so even if you have a fixed IP you may want to leave this for now.

Then edit the files /etc/ppp/pap-secrets and /etc/ppp/chap-secrets and add your username and password with the following format

'userid@isp.co.uk' * 'myPassword' *

Startup/Shutdown

Now When we boot into Mandrake later on, we want everything to start up in an orderly fashion, but you will find that the Conexant scripts start before the networking. I'm assuming this is because of two things (and I'm not really sure about either)

In anycase I reckon that the file should be started after networking so
# cd /etc/rc.d/rc3.d
# mv S*cnxadslctl S90cnxadslctl
# cd /etc/rc.d/rc2.d
# mv K*cnxadslctl K10cnxadslctl

Note my shutdown order is still not entirely correct. It complains that /dev/ttyCX is in use. But it works fine if I stop it manually.

Install ppp 2.4.0b2

Nearly there. All the following bits are easy now. We now need to install an older version of ppp. This version comes bundled with the ATM plugin (pppoatm.so) out of the box. If you did not have PPP installed prior to this step you MUST refer to the README.linux! Easier Still, first install ppp from the Mandrake Distribution CDs and then we'll downgrade it.

Guru Note:You may want to get the latest version of ppp and patch it with pppoatm. I didnt spend too long looking but it looks like the patch modified the core ppp code but you still have to compile the pppoatm.so plugin?? If I get time one day, I'll look at this.

Warning: Downgrading from Mandrakes ppp 2.4.1 to ppp 2.4.0 b2 may stop other devices working that rely on ppp. Notably Alcatel Speedtouch.

# cd /usr/src
# tar xvfz driverdir/pppd-2.4.0.tar.gz
# cd ppp-2.4.0b2
# ./configure
# make install

You can try to do a 'make' before 'make install' but for me it didnt compile. I just installed the binaries that are already present in the tar archive.

Also, some (one) have reported back to me that they had better results skipping the ./configure and just doing a 'make' followed by 'make install'

Check by typing 'pppd -v' and you should see version 2.4.0b1 (Yes b1 not b2, I dont know why!)

Also check that /usr/lib/pppd/plugins/pppoatm.so exists. If it doesnt you will have to copy it from the build directory to this location. E.g.

	cp /usr/src/ppp-2.4.0b2/pppd/plugins/pppoatm.so /usr/lib/ppd/plugins/.

The location of pppoatm may be slightly different to above. This is from memory again!

Install pppoe

Final step. Install pppoe as follows

# rpm -i driverdir/rp-pppoe-3.0-1.i386.rpm

Guru note: I'm not sure how the latest version of pppoe (from Roaring Penguin) works with ppp 2.4.0 b2 So I though I'd keep everything simple for the time being and use the versions from the Conexant driver cd.

Test

To test it try the following commands:

# cnxadslctl.sh start

# cnxadslctl.sh status

This should tell you if the device is working. If there is no device or no line connected check hardware and cabling and then check /var/log/messages and do an lsmod to see if the CnxADSL module is loaded.

# ifconfig -a

This should tell you if you have connected to your ISP

If there is no ppp0 interface check /var/log/messages and double check usernames / passwords in /etc/ppp/peers/pci, /etc/ppp/chap-secrets & /etc/ppp/pap-secrets Comments welcome.

Post to the Mandrake Newsgroup (alt.os.linux.mandrake) with Conexant ADSL PCI in the subject and a reference to this web page. There are very likely to be some errors as this is mostly from memory. (3rd version so far!) I'm not a Linux expert, but I will try to make time to help others out. By posting to the NG some of the guys and gals there may be able to help out faster than I get around to looking at it.

Make sure its a good question, otherwise it may get a bit frosty :)

If you are trying this with another Distro and have questions, please post to a relevant Newsgroup and refer to this web page.

Ultimately it would be nice to get this running with the latest versions of pppd and pppoe, but right now it works just fine for me so that is low priority.

Links

A few other people have put together notes on this before me. Most use the bridging stuff. br2684. This could be the way I should have done it. I'm not entirely sure!!! All I know is I'm up'n'running!

Andrew Lord (aka Lordy)

Last updated 20th Feb 2003

Very Sad Out of date Home Page