Modem

Modem

Surprise! Compared to my previous installation with ubuntu the modem works. Great! See what I did below. But please note that this is not an elegant solution but rather some hack. If anyone knows a more elegant way please let me know

As modem driver I use the kernel module snd-intel8x0m provided by the default ubuntu kernel. Through this module the modem is accessed via the slmodemd deamon and your favorite dial-in program (kpp etc.).

First install the relevant kernel headers with:

 apt-get install linux-headers-2.6.10-5

Download the smartlink slmodem driver from http://www.smlink.com/content.aspx?id=132. I do use slmodem-2.9.10.tar.gz and unpack the archive. Then compile and install the driver as follows:

 cd slmodem-2.9.10
 make
 make install

This solution does not support the module snd-intel8x0m that we want to use but creates some directories and files we need later. Now rebuild the slmodemd executable with alsa support:

 make clean
 cd modem
 make SUPPRT_ALSA=1

and copy the slmodemd executable to /usr/sbin/. You have to overwrite the old (non alsa) version in /usr/sbin.

With:

 modprobe snd-intel8x0m

the hardware support for the modem is enabled. This can be tested with *aplay -l. What you should see is something like:

 **** List of PLAYBACK Hardware Devices ****
 card 0: I82801DBICH4 [Intel 82801DB-ICH4], device 0: Intel ICH [Intel 82801DB-ICH4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
 card 0: I82801DBICH4 [Intel 82801DB-ICH4], device 4: Intel ICH - IEC958 [Intel 82801DB-ICH4 - IEC958]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
 card 1: Modem [Intel 82801DB-ICH4 Modem], device 0: Intel ICH - Modem [Intel 82801DB-ICH4 Modem - Modem]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

If you want to enable modem support at startup add snd-intel8x0m to /etc/modules.:

 slmodemd -a -c GERMANY modem:1 

start the modem deamon. For debugging add -d=1 to the command. Then you can confiure and test the modem with:

 wvdialconf /etc/wvdial.conf

Finally configure the dialup connection with your favorite tool (I use kppp) and you are online.

Note: For a modem connection it is necessary to start the slmodemd deamon before dialing. In my opinion the best solution is either to start slmodemd as service at startup or to use a script that

  • first starts slmodemd in the background (&)
  • then loads the dialin application
  • and after connection ends or the dialin application is closed stops slmodemd.

For this purpose I use the following script:

 #!/bin/sh

 # 2005-08-10
 # mz@incunabulum.de

 # A tiny script to start the modem
 slmodemd -a -c GERMANY modem:1 &
 kppp
 killall slmodemd

If you want to use this script as a non-root user you have to set the suexec script on slmodemd. Please mind that this is a potential security risk but in this case I am willing to trade security for comfort.

Note: If you get an error from pppd like:

  The remote system is required to authenticate itself
  but I couldn't find any suitable secret (password) for it 
  to use to do so. (None of the available passwords would let
  it use an IP address.)

then replace auth with noauth in /etc/ppp/options