UPDATE: how to eliminate the problem about UNRESOLVED SYMBOLS in the modprobing of the module
Modems ADSL that use USB technology to connect to the computer are actually an obstacle for a Linux OS user: this is for the lack of driver supporting by the hardware producers and internet providers.
Luckily, it seems that the situation is slowly becoming better, but up o now many chipsets are problematic.
Thus, I describe below my experience with the Fastrate USB 100 modem, given by Telecom Italia, with the hope that my experience could be useful for other people.
First of all, this method has been tested by me with 3 systems, with really identical results: Ubuntu 5.10 “Breezy Badger”, Ubuntu 6.06 “Dapper Drake” and Slackware 10.2.
In all the three distributions, I compiled the kernel starting from the kernel sources 2.6.16.5 from kernel.org. This tutoriala thus will not include support for older kernel releases.
Let’s start the work:
First of all, let’s recompile the kernel: download the kernel sources of the kernel 2.6.16.5 from kernel.org, and install them:
#mv /linux-2.6.X.tar.gz /usr/src (or /linux-2.6.X.tar.bz2, depending from the extension you chose to download) #tar xvzf linux-2.6.X.tar.gz (or tar xvjf for the .bz2) #rm linux (if the symlink already exists) #ln -s /usr/src/linux-2.6.X/ /usr/src/linux
Now you are ready to recompile the kernel. To be effective with the selection of modules to compile, you can examine the USB and NET sections of my kernel configuration file: this is the /usr/src/linux/.config file that contains all the kernel settings concerning modules to compile and modules not to compile (i.e. all decisions that you do from a make menuconfig). Particularly, in sections Networking Options/Networking Options and Device drivers/Network drivers, activate the ppp and IPsupport: the tryings made by me evidenced that the most important options that you have to activate are:
Now you can compile and install the new kernel:
#make && make modules_install #cp ./arch/i386/boot/bzImage /boot/bzImage-2.6.16.5 (or where the fuck you want, then set you bootloader accordingly, to be able to load this kernel image) #cp System.map /boot/System.map-2.6.16.5 #cp .config /boot/config-2.6.16.5
Now download the modem drivers: this modem contains a chipset that is compatible (or perhaps it is the same chipset) with the chipset of Bewan USB modems: download thus the Bewan driver 0.9.3.
#mkdir /lib/modules/adslmodem (every man has some little manias) #cp /A1012-A1006..etcetc...0.9.3.tgz /lib/modules/adslmodem && cd /lib/modules/adslmodem #tar xvf /A1012-A1006-A988-..etc...0.9.3.tgz #cd unicorn/ #make #make install
Many guides that you can find on the net (among these, Felipe’s guide) suggest to modify the driver and to install it manually (not using make install). However, those guides use a version of the driver written by Adam (0.9.0): if you apply manually on nw drivers the patches that they suggest, the speed of you connection will remarkably slow itself.
With new drivers, also, you can safely make the module be loaded at the system startup using /etc/modules.
#echo "unicorn_usb_atm ActivationMode=4 DebugLevel=0" >> /etc/modules #DebugLevel=50 makes you /var partition be full with three 1.6 GB each files very fastly... Use it only for debugging while if you want to load manually the driver: #modprobe unicorn_usb_atm ActivationMode=4 DebugLevel=0
The parameter given to the load of the module sets it to initialize in g.dmt mode: this activation mode is the mode used in Italy(for example, in France they use ActivationMode=3, in I am not mistaken).
If the modprobe of the module gives a message about unresolved symbols, run
unicorn_pci_atm: Unknown symbol set_cpus_allowed
This happens with SMP kernels (kernels with Symmetric Multi Processing enabled): if you have only one CPU, recompile the kernel disabling the SMP option, otherwise simply edit the file unicorn_usbdrv.c in the unicorn_usb/ directory.
Search for the string
Wait for about 20 seconds for the modem to initialize and go in showtime: you can verify this seeing the fixed red light on it (may vary from modem to modem) or using
#unicorn_status
You can now execute the desired
#pppd call adsl
This command activates the pppd daemon using the options that you will set in the file /etc/ppp/peers/adsl, that must contain only the following lines:
user "username" lock ipparam ppp0 noipdefault noauth default-asyncmap defaultroute hide-password noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp lcp-echo-interval 20 lcp-echo-failure 3 sync persist logfile /var/log/pppd.log plugin /usr/lib/pppd/#.#.#/pppoatm.so 8.35 (where #.#.# represents the version of your pppd (or pppoatm, I never remember this ;P )
The only truly important options seem to be user, plugin, noauth, persist, usepeerdns, defaultroute, while the others probably can be safely omitted.
mtu and mru are already set to 1500 by default, and I found out that to force them including them in the /etc/ppp/peers/adsl makes the connection buggy. You can safely try other values for the two parameters: a useful tool that tests the parameters of your modem confirms that 1500 is the perfect value for the mru.
Well, modem works and is connected with a great speed.
Remember to add the line
username * password
in your /etc/ppp/pap-secrets and /etc/ppp/chap-secrets...
I opened a support thread opened to all in the forum of this website:
ATM IntInComplete ATM Operation Error Interrupt (repeated N times, N equals about to 20) HandleAtmError: Reset ATM FIFO
The modem should work. Mine does. If it does not work, don’t hesitate to write on the support forum!