Preliminaries download slmodem-2.9.11-20070430.tar.gz and ungrab-winmodem-20070430.tar.gz or the Latest Ones
from Smartlink section of LinModems Resource Page
http://linmodems.technion.ac.il/packages/smartlink/
1. After downloading, extract them with tar -zxvf slmodem_2.9.11_20070430.tar.gz
and tar -zxvf ungrab-winmodem-20070430.tar.gz
2. cd to slmodemd directory and run
3. make KERNEL_VER=/lib/modules/2.6.21.1/build
4. make
5. make install
6. cd to ungrab-winmodem directory
7. make
8. make install
9. cp slmodem-2.9.11-20070430/scripts/slackware/rc.slmodemd /etc/rc.d/
10. edit /etc/rc.d/rc.slmodemd and add change SLMODEMD_DEVICE=/dev/slusb0 to
SLMODEMD_DEVICE=/dev/slamr0, and you can specify country SLMODEMD_COUNTRY=USA or YOUR_COUNTRY for the country code for your country.
11. add lines modprobe ungrab-winmodem, modprobe slamr in slmodemd_start() procedure
12. Run ifconfig eth0/ifconfig eth1
12. Configure KPPP to dialout
To complete Steps 10 and 11, you need an editor such as
kwrite, kate, mcedit, etc open rc.slmodemd and edit it and modify it by changing SLMODEMD_DEVICE=/dev/slusb0 to SLMODEMD_DEVICE=/dev/slamr0 and add the lines modprobe ungrab-winmodem, modprobe slamr right before if after the "{" in slmodemd_start() procedure. Also user is encouraged to run ifconfig eth0, ifconfig eth1, etc to achieve better connection.
Also, since Slax does not have wvdial and wvdialstreams, one has to use KPPP, if connection does not work and we get "no carrier" message, we have to configure KPPP to use init string
Init2 = ATQ0 V1 E1 S0=0 X3 &C1 &D2 +MS=90
which servers its purpose to connect. Thanks to slax devloper Tomas Matejicek for his hard work with slax and for including Development module to compile software that one needs to connect to internet.
Here's unmodified rc.slmodemd from slackware folder in slmodem-2.9.11-20070430 directory.
#!/bin/sh
#
# rc.slmodemd
#
# Start slmodemd daemon for SmartLink
#
SLMODEMD_DEVICE=/dev/slusb0
slmodemd_start()
{
if [ -x /usr/sbin/slmodemd ]; then
echo -n "Starting SmartLink modem daemon: "
echo "/usr/sbin/slmodemd"
/usr/sbin/slmodemd $SLMODEMD_DEVICE 1>/dev/null 2>/dev/null &
fi
}
slmodemd_stop()
{
echo "Shutting down SmartLink modem daemon"
killall slmodemd
}
slmodemd_restart()
{
slmodemd_stop
sleep 1
slmodemd_start
}
if [ "$SLMODEMD_DEVICE" ]; then readonly SLMODEMD_DEVICE; fi
if [ -z $SLMODEMD_DEVICE ]; then
echo "slmodemd: SLMODEMD_DEVICE not set. You can set it in /etc/rc.d/rc.slmodemd file or as environment variable."
exit 5
fi
case `echo "$SLMODEMD_DEVICE"|cut -c6-10` in
slamr)
grep -q 'slamr\..*o' /lib/modules/`uname -r`/modules.dep ||\
{ echo "slmodemd: kernel module slamr.(k)o missing"; exit 1; }
;;
slusb)
grep -q 'slusb\..*o' /lib/modules/`uname -r`/modules.dep ||\
{ echo "slmodemd: kernel module slusb.(k)o missing"; exit 1; }
;;
*)
echo "slmodemd: no kernel module for $SLMODEMD_DEVICE - broken config?"
exit 1
;;
esac
case "$1" in
'start')
slmodemd_start
;;
'stop')
slmodemd_stop
;;
'restart')
slmodemd_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
Here's how running these commands looks like in slax and their messages
root@slax:~# tar -zxvf slmodem_2.9.11_20070430.tar.gz
slmodem-2.9.11-20070430/
slmodem-2.9.11-20070430/slamr_compile.txt
slmodem-2.9.11-20070430/Changes
slmodem-2.9.11-20070430/drivers/
slmodem-2.9.11-20070430/drivers/kernel-ver.c
slmodem-2.9.11-20070430/drivers/amrmo_init.c
slmodem-2.9.11-20070430/drivers/old_st7554.c
slmodem-2.9.11-20070430/drivers/Modules.symvers
slmodem-2.9.11-20070430/drivers/Makefile
slmodem-2.9.11-20070430/drivers/sysdep_amr.c
slmodem-2.9.11-20070430/drivers/st7554.c
slmodem-2.9.11-20070430/drivers/amrlibs.o
slmodem-2.9.11-20070430/drivers/Module.symvers
slmodem-2.9.11-20070430/Makefile
slmodem-2.9.11-20070430/README
slmodem-2.9.11-20070430/COPYING
slmodem-2.9.11-20070430/scripts/
slmodem-2.9.11-20070430/scripts/slmodemd.ubuntu.italy
slmodem-2.9.11-20070430/scripts/slmodem.spec
slmodem-2.9.11-20070430/scripts/suse/
slmodem-2.9.11-20070430/scripts/suse/slmodemd.SUSE
slmodem-2.9.11-20070430/scripts/suse/slmodemd.conf
slmodem-2.9.11-20070430/scripts/slackware/
slmodem-2.9.11-20070430/scripts/slackware/README
slmodem-2.9.11-20070430/scripts/slackware/rc.slmodemd
slmodem-2.9.11-20070430/scripts/slmodemd
slmodem-2.9.11-20070430/scripts/mandrake/
slmodem-2.9.11-20070430/scripts/mandrake/slmodemd
slmodem-2.9.11-20070430/scripts/debian/
slmodem-2.9.11-20070430/scripts/debian/slmodemd
slmodem-2.9.11-20070430/modem/
slmodem-2.9.11-20070430/modem/modem_main.c
slmodem-2.9.11-20070430/modem/sysdep_common.c
slmodem-2.9.11-20070430/modem/modem_ec.c
slmodem-2.9.11-20070430/modem/modem.c
slmodem-2.9.11-20070430/modem/modem_test.c
slmodem-2.9.11-20070430/modem/modem_param.c
slmodem-2.9.11-20070430/modem/modem_comp.c
slmodem-2.9.11-20070430/modem/modem_cmdline.c
slmodem-2.9.11-20070430/modem/modem_datafile.c
slmodem-2.9.11-20070430/modem/Makefile
slmodem-2.9.11-20070430/modem/modem_debug.h
slmodem-2.9.11-20070430/modem/modem.h
slmodem-2.9.11-20070430/modem/modem_pack.c
slmodem-2.9.11-20070430/modem/modem_homolog.h
slmodem-2.9.11-20070430/modem/modem_defs.h
slmodem-2.9.11-20070430/modem/modem_param.h
slmodem-2.9.11-20070430/modem/modem_timer.h
slmodem-2.9.11-20070430/modem/modem_timer.c
slmodem-2.9.11-20070430/modem/modem_debug.c
slmodem-2.9.11-20070430/modem/dsplibs.o
slmodem-2.9.11-20070430/modem/dp_dummy.c
slmodem-2.9.11-20070430/modem/modem_dp.h
slmodem-2.9.11-20070430/modem/modem_at.c
slmodem-2.9.11-20070430/modem/homolog_data.c
slmodem-2.9.11-20070430/modem/dp_sinus.c
slmodem-2.9.11-20070430/patches/
slmodem-2.9.11-20070430/patches/alsa-linux-2.6.0.patch
slmodem-2.9.11-20070430/patches/slmodem-usb-2.6.16.patch
slmodem-2.9.11-20070430/Smartlink.txt
slmodem-2.9.11-20070430/Readme2.txt
root@slax:~# cd sl
slmodem-2.9.11-20070430/ slmodem_2.9.11_20070430.tar.gz
root@slax:~# cd slmodem-2.9.11-20070430/
root@slax:~/slmodem-2.9.11-20070430# make KERNEL_VER=/lib/modules/2.6.21.1/build
make -C modem all
make[1]: Entering directory `/root/slmodem-2.9.11-20070430/modem'
rebuild profile...
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_main.o -c modem_main.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_cmdline.o -c modem_cmdline.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem.o -c modem.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_datafile.o -c modem_datafile.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_at.o -c modem_at.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_timer.o -c modem_timer.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_pack.o -c modem_pack.c
modem_pack.c: In function 'modem_async_get_bits':
modem_pack.c:100: warning: pointer targets in passing argument 2 of 'm->get_chars' differ in signedness
modem_pack.c: In function 'modem_async_put_bits':
modem_pack.c:148: warning: pointer targets in passing argument 2 of 'm->put_chars' differ in signedness
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_ec.o -c modem_ec.c
modem_ec.c: In function 'tx_info':
modem_ec.c:723: warning: pointer targets in passing argument 2 of 'l->modem->get_chars' differ in signedness
modem_ec.c: In function 'push_rest_data':
modem_ec.c:811: warning: pointer targets in passing argument 2 of 'l->modem->put_chars' differ in signedness
modem_ec.c: In function 'rx_info':
modem_ec.c:860: warning: pointer targets in passing argument 2 of 'l->modem->put_chars' differ in signedness
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_comp.o -c modem_comp.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_param.o -c modem_param.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_debug.o -c modem_debug.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o homolog_data.o -c homolog_data.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o dp_sinus.o -c dp_sinus.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o dp_dummy.o -c dp_dummy.c
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o sysdep_common.o -c sysdep_common.c
gcc -o slmodemd modem_main.o modem_cmdline.o modem.o modem_datafile.o modem_at.o modem_timer.o modem_pack.o modem_ec.o modem_comp.o modem_param.o modem_debug.o homolog_data.o dp_sinus.o dp_dummy.o dsplibs.o sysdep_common.o
gcc -Wall -g -O -I. -DCONFIG_DEBUG_MODEM -o modem_test.o -c modem_test.c
gcc -o modem_test modem_test.o modem_cmdline.o modem.o modem_datafile.o modem_at.o modem_timer.o modem_pack.o modem_ec.o modem_comp.o modem_param.o modem_debug.o homolog_data.o dp_sinus.o dp_dummy.o dsplibs.o sysdep_common.o
make[1]: Leaving directory `/root/slmodem-2.9.11-20070430/modem'
make -C drivers KERNEL_DIR=/lib/modules/2.6.21.1/build
make[1]: Entering directory `/root/slmodem-2.9.11-20070430/drivers'
make modules -C /lib/modules/2.6.21.1/build SUBDIRS=/root/slmodem-2.9.11-20070430/drivers
make[2]: Entering directory `/usr/src/linux-2.6.21.1'
WARNING: Symbol version dump /usr/src/linux-2.6.21.1/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /root/slmodem-2.9.11-20070430/drivers/amrmo_init.o
/root/slmodem-2.9.11-20070430/drivers/amrmo_init.c: In function 'amrmo_init':
/root/slmodem-2.9.11-20070430/drivers/amrmo_init.c:751: warning: 'pci_find_device' is deprecated (declared at include/linux/pci.h:470)
CC [M] /root/slmodem-2.9.11-20070430/drivers/sysdep_amr.o
CC [M] /root/slmodem-2.9.11-20070430/drivers/st7554.o
LD [M] /root/slmodem-2.9.11-20070430/drivers/slamr.o
LD [M] /root/slmodem-2.9.11-20070430/drivers/slusb.o
Building modules, stage 2.
MODPOST 2 modules
CC /root/slmodem-2.9.11-20070430/drivers/slamr.mod.o
LD [M] /root/slmodem-2.9.11-20070430/drivers/slamr.ko
CC /root/slmodem-2.9.11-20070430/drivers/slusb.mod.o
LD [M] /root/slmodem-2.9.11-20070430/drivers/slusb.ko
make[2]: Leaving directory `/usr/src/linux-2.6.21.1'
make[1]: Leaving directory `/root/slmodem-2.9.11-20070430/drivers'
root@slax:~/slmodem-2.9.11-20070430# make
make -C modem all
make[1]: Entering directory `/root/slmodem-2.9.11-20070430/modem'
make[1]: Leaving directory `/root/slmodem-2.9.11-20070430/modem'
make -C drivers KERNEL_DIR=/lib/modules/2.6.21.1/build
make[1]: Entering directory `/root/slmodem-2.9.11-20070430/drivers'
cc -I/lib/modules/2.6.21.1/build/include -o kernel-ver kernel-ver.c
make all KERNEL_VER=2.6.21.1
make[2]: Entering directory `/root/slmodem-2.9.11-20070430/drivers'
make modules -C /lib/modules/2.6.21.1/build SUBDIRS=/root/slmodem-2.9.11-20070430/drivers
make[3]: Entering directory `/usr/src/linux-2.6.21.1'
WARNING: Symbol version dump /usr/src/linux-2.6.21.1/Module.symvers
is missing; modules will have no dependencies and modversions.
Building modules, stage 2.
MODPOST 2 modules
make[3]: Leaving directory `/usr/src/linux-2.6.21.1'
make[2]: Leaving directory `/root/slmodem-2.9.11-20070430/drivers'
make[1]: Leaving directory `/root/slmodem-2.9.11-20070430/drivers'
root@slax:~/slmodem-2.9.11-20070430# make install
make -C modem all
make[1]: Entering directory `/root/slmodem-2.9.11-20070430/modem'
make[1]: Leaving directory `/root/slmodem-2.9.11-20070430/modem'
make -C drivers KERNEL_DIR=/lib/modules/2.6.21.1/build
make[1]: Entering directory `/root/slmodem-2.9.11-20070430/drivers'
cc -I/lib/modules/2.6.21.1/build/include -o kernel-ver kernel-ver.c
make all KERNEL_VER=2.6.21.1
make[2]: Entering directory `/root/slmodem-2.9.11-20070430/drivers'
make modules -C /lib/modules/2.6.21.1/build SUBDIRS=/root/slmodem-2.9.11-20070430/drivers
make[3]: Entering directory `/usr/src/linux-2.6.21.1'
WARNING: Symbol version dump /usr/src/linux-2.6.21.1/Module.symvers
is missing; modules will have no dependencies and modversions.
Building modules, stage 2.
MODPOST 2 modules
make[3]: Leaving directory `/usr/src/linux-2.6.21.1'
make[2]: Leaving directory `/root/slmodem-2.9.11-20070430/drivers'
make[1]: Leaving directory `/root/slmodem-2.9.11-20070430/drivers'
make install -C drivers KERNEL_DIR=/lib/modules/2.6.21.1/build
make[1]: Entering directory `/root/slmodem-2.9.11-20070430/drivers'
cc -I/lib/modules/2.6.21.1/build/include -o kernel-ver kernel-ver.c
mkdir -p /dev
mknod -m 600 /dev/slamr0 c 242 0 ; mknod -m 600 /dev/slamr1 c 242 1 ; mknod -m 600 /dev/slamr2 c 242 2 ; mknod -m 600 /dev/slamr3 c 242 3 ; echo -n
mknod -m 600 /dev/slusb0 c 243 0 ; mknod -m 600 /dev/slusb1 c 243 1 ; mknod -m 600 /dev/slusb2 c 243 2 ; mknod -m 600 /dev/slusb3 c 243 3 ; echo -n
make install KERNEL_VER=2.6.21.1
make[2]: Entering directory `/root/slmodem-2.9.11-20070430/drivers'
install -D -m 644 slamr.ko /lib/modules/2.6.21.1/extra/slamr.ko
install -D -m 644 slusb.ko /lib/modules/2.6.21.1/extra/slusb.ko
/sbin/depmod -a
make[2]: Leaving directory `/root/slmodem-2.9.11-20070430/drivers'
make[1]: Leaving directory `/root/slmodem-2.9.11-20070430/drivers'
install -D -m 755 modem/slmodemd /usr/sbin/slmodemd
rm -f -rf /var/lib/slmodem
install -d -D -m 755 /var/lib/slmodem
root@slax:~/slmodem-2.9.11-20070430# cd ..
root@slax:~# cd ungrab-winmodem/
root@slax:~/ungrab-winmodem# make
make modules -C /lib/modules/2.6.21.1/build SUBDIRS=/root/ungrab-winmodem
make[1]: Entering directory `/usr/src/linux-2.6.21.1'
WARNING: Symbol version dump /usr/src/linux-2.6.21.1/Module.symvers
is missing; modules will have no dependencies and modversions.
CC [M] /root/ungrab-winmodem/ungrab-winmodem.o
/root/ungrab-winmodem/ungrab-winmodem.c: In function 'softmodem_release_init':
/root/ungrab-winmodem/ungrab-winmodem.c:79: warning: 'pci_find_device' is deprecated (declared at include/linux/pci.h:470)
Building modules, stage 2.
MODPOST 1 modules
CC /root/ungrab-winmodem/ungrab-winmodem.mod.o
LD [M] /root/ungrab-winmodem/ungrab-winmodem.ko
make[1]: Leaving directory `/usr/src/linux-2.6.21.1'
root@slax:~/ungrab-winmodem# make install
make modules -C /lib/modules/2.6.21.1/build SUBDIRS=/root/ungrab-winmodem
make[1]: Entering directory `/usr/src/linux-2.6.21.1'
WARNING: Symbol version dump /usr/src/linux-2.6.21.1/Module.symvers
is missing; modules will have no dependencies and modversions.
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-2.6.21.1'
install -D -m 644 ungrab-winmodem.ko /lib/modules/2.6.21.1/extra/ungrab-winmodem.ko
/sbin/depmod -a
root@slax:~/ungrab-winmodem# cd ..
root@slax:~# /etc/rc.d/rc.slmodemd start
Starting SmartLink modem daemon: /usr/sbin/slmodemd
root@slax:~#
Now you can configure KPPP to dialout
Startup Dialup Internet Tool (KPPP)
Click on Configure
Select Manual Setup
Type Connection name and Phone Number
Then Click on Modems
Select Modems and put slmodemd in for Modem Name and ttySL0 for Modem device
Click then on Modem Tab and choose option Modem Commands
Click on Modem Commands and type
ATQ0 V1 E1 S0=0 X3 &C1 &D2 +MS=90as shown here
After that you are almost done.
Click on Misc options and choose options
"Dock into Panel" and
"Automatic redial on NO CARRIER"
As shown here
Now type in your login ID and password
Which looks like
Here the dialer KPPP is dialing out
Once you have connected successfully, you should be able to browse without any problems. As the following picture shows.