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=90 
as 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.

To summarize what was done to configure KPPP this is what is done.
  1. click on configure
  2. Click on manual setup
  3. Type Connection Name and Phone No.
  4. Leave everything else as is.
  5. Next click on modems New
  6. and type slmodemd and choose ttySL0 as the device
  7. then click on modem tab
  8. you then click on Modem Commands
  9. Initialization string 2:
  10. Type ATQ0 V1 E1 S0=0 X3 &C1 &D2 +MS=90 and click OK and OK again
  11. You will return back to this screen
  12. Click on Misc Tab and check tab with "dock into panel" and "Automatic redial on NO CARRIER"
  13. Click on OK
  14. Type in Connection Name and Password
Hosted by www.Geocities.ws

1