Agere Modem supported by Martian Driver on Slax Linux Live 6.0.0rc3

First Download scanModem.gz from LinModem Resource Page

Get scanModem from here

http://linmodems.technion.ac.il/packages/scanModem.gz

Then extract it with

# gunzip scanModem.gz
# chmod +x scanModem
# ./scanModem
it will generate some output and a Modem/ folder.  There you will find ModemData.txt 

run scanModem and look to see for the line

 Support type needed or chipset:        Agere.DSP

The modem has a supported Lucent/Agere  Mars or Apollo DSP (digital 
signal 
 processing) chipset. Support packages for 2.6.n kernels are at: 
 
http://phep2.technion.ac.il/linmodems/packages/ltmodem/kernel-2.6/martian/

 See AgereDSP.txt for Details.
  DSP=1

ModemData.txt generated from scanModem
=========================================================================
 Only plain text email is forwarded by the  [email protected] List 
Server.
 Do use the following as the email Subject Line:
           SomeName, YourCountry ===================================
 Welcome to SLAX
 The system is up and running now

 Login as root, password is toor
=================================== kernel 2.6.21.1 
 This will alert cogent experts, and  distinguish cases in the 
Archives.
 YourCountry will enable Country Code guidance.
 Occassionally responses are blocked by an Internet Provider mail 
filters.
 So in a day, also check the Archived responses at 
http://www.linmodems.org .
 Local Linux experts can be found through: 
http://www.linux.org/groups/index.html
--------------------------  System information 
----------------------------
CPU=i686,  ===================================
 Welcome to SLAX
 The system is up and running now

 Login as root, password is toor
===================================
Linux version 2.6.21.1 (root@slax) (gcc version 4.1.2) #1 SMP Wed May 2 
16:49:45 GMT 2007
 scanModem update of:  2007_June_06


ALSAversion 1.0.14rc2
USB modem not detected by lsusb

Modem or host audio card candidates have firmware information:

 PCI slot       PCI ID          SubsystemID     Name
 ----------     ---------       ---------       --------------
 00:0a.0        11c1:044e       11c1:044c       Communication controller: Agere Systems LT 
WinModem 

 Modem interrupt assignment and sharing: 
 15:       2303   IO-APIC-edge      ide1

 --- Bootup diagnositcs for card in PCI slot 00:0a.0 ----

 === Finished modem firmware and bootup diagnostics section. ===
 === Next deducing cogent software ===

 For candidate modem in PCI bus:  00:0a.0
   Class 0780: 11c1:044e Communication controller: Agere Systems LT 
WinModem
      Primary PCI_id  11c1:044e
 Support type needed or chipset:        Agere.DSP
 


 The modem has a supported Lucent/Agere  Mars or Apollo DSP (digital 
signal 
 processing) chipset. Support packages for 2.6.n kernels are at: 
 
http://phep2.technion.ac.il/linmodems/packages/ltmodem/kernel-2.6/martian/

 See AgereDSP.txt for Details.
  DSP=1

 Vendor 11c1 is Lucent Technologies with modem technology now under LSI 
Inc. 
Their Linux  code developer/maintainer is Soumyendu Sarkar. Support for 
a chipset and its 
 continued maintenance is only initiated at the request of a major 
chipset buyer,
 or comparable sponsor. Several different  modem chipset types  are 
produced: 
 with varying support under Linux.
 Device ID  Support        Name           Comment
 ---------  -------------  -----------    -----------------------------
 0480       serial drivers Venus           controller chipset 1673JV7
 0440-045d  martian        Mars/Apollo     DSP (digital signal 
processing) chipsets
 0462       none           56K.V90/ADSL Wildwire 
 048d none                 SV2P            soft modem 
 048(c or f) AGRSM         SV2P            soft modem
 0600       none           soft modem, very few in the field.
 0620       AGRSM          Pinball  soft modem, in some HP desktop PCs
 062(1-3)   none           SV92PP,Pinball  soft modem, in some HP 
desktop PCs

martian - At 
http://phep2.technion.ac.il/linmodems/packages/ltmodem/kernel-2.6/martian/

AGRSM - At 
http://phep2.technion.ac.il/linmodems/packages/ltmodem/kernel-2.6/ 
agrsm-alpha.tar.bz2 potentially provides support for PCI_id chipsets
   11c1:048c,  11c1:048f and 11c1:0620
in addition to prior support of Subsystems under Intel 8086:???? below
11C1:048C
11C1:048F
11C1:0620
8086:(2416 2426 7196 2486 24C6 24CD6 266D) are soft modem controllers, 
better
   supported through ALSA modem drivers and the Smartlink slmodemd 
helper.
   
There has only been one reported success for 11c1:048c, 11c1:048f and 
11c1:0620. See:
http://linmodems.technion.ac.il/bigarch/archive-seventh/msg00849.html
http://linmodems.technion.ac.il/bigarch/archive-seventh/msg00970.html
Interaction with experts will likely be necessary to get any of these 
modems working.

 0x044e -- Mars 3 Mercury data fax only
-------------- end Agere Systems section -------------------

 Completed candidate modem analyses.

 The base of the UDEV device file system is: /dev/.udev

 Versions adequately match for the compiler installed: 4.1.2
             and the compiler used in kernel assembly: 4.1.2

 Kernel-header resources needed for compiling are not manifestly ready!

 If compiling is necessary packages must be installed, providing:
         kernel-source-2.6.21.1


Checking pppd properties:
        -rwxr-xr-x 1 root root 366440 Jun 29  2006 /usr/sbin/pppd

In case of an "error 17" "serial loopback" problem, see:
    http://phep2.technion.ac.il/linmodems/archive-sixth/msg02637.html

To enable dialout without Root permission do:
        $ su - root  (not for Ubuntu)
         chmod a+x /usr/sbin/pppd
or under Ubuntu related Linuxes
         chmod a+x /usr/sbin/pppd

Checking settings of:   /etc/ppp/options
asyncmap 0
crtscts
lock
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

In case of a message like:
   Warning: Could not modify /etc/ppp/pap-secrets: Permission denied
see http://linmodems.technion.ac.il/bigarch/archive-sixth/msg04656.html


 Don't worry about the following, it is for the experts
 should trouble shooting be necessary.
==========================================================

 Checking for modem support lines:
 --------------------------------------
     /device/modem symbolic link:   
slmodemd created symbolic link /dev/ttySL0:  
     Within /etc/udev/ files:

     Within /etc/modprobe.conf files:
/etc/modprobe.d/blacklist:# ALSA modules to support sound modems.  
These should be loaded manually
/etc/modprobe.d/blacklist:blacklist snd-atiixp-modem
/etc/modprobe.d/blacklist:blacklist snd-via82xx-modem
     Within any ancient /etc/devfs files:

     Within ancient kernel 2.4.n /etc/module.conf files:

--------- end modem support lines --------

==========================================

Instructions for martian driver

Installation
Build and install the kernel module and martian_modem
issuing
$ make all
# make install
You have to run second command as root. 
Remove files left from previous installation:
# scripts/remove_outdated.sh
Usage
Load kernel module and launch user space driver 
# modprobe martian_dev
# martian_modem
Leave it running and you can access the modem by
/dev/ttySM0 file. 

==========================================

here's how extraction and building of martian drivers

root@slax:~# tar -zxvf martian-full-20061203.tar.gz
martian/
martian/kmodule/
martian/kmodule/Makefile
martian/kmodule/kmartian.h
martian/kmodule/marsio.h
martian/kmodule/mfifo.c
martian/kmodule/mfifo.h
martian/kmodule/fifo.h
martian/kmodule/mixspinlock.h
martian/kmodule/marsio.c
martian/kmodule/martian_ids.c
martian/kmodule/martian.c
martian/modem/
martian/modem/core_if.c
martian/modem/mport.c
martian/modem/smp.c
martian/modem/mixspinlock.h
martian/modem/profile.c
martian/modem/coreadd.c
martian/modem/Makefile
martian/modem/coresubst.c
martian/modem/mport.h
martian/modem/sysdep.c
martian/modem/tweakcore.sh
martian/modem/watch.h
martian/modem/README
martian/modem/elf386tweakrelocs.c
martian/modem/pty.c
martian/modem/sysdep.h
martian/modem/ltmdmobj.o
martian/modem/dumpers.c
martian/modem/log.c
martian/modem/session.c
martian/modem/main.c
martian/modem/ASWMLICENSE
martian/modem/log.h
martian/modem/main.h
martian/modem/debug_script.in
martian/modem/tweakrelocsdynamic.c
martian/modem/link.c
martian/modem/isr.c
martian/modem/common.h
martian/modem/watch2.gdb
martian/modem/watch3.gdb
martian/modem/watch4.gdb
martian/modem/watch.gdb
martian/ChangeLog
martian/martian.h
martian/scripts/
martian/scripts/remove_outdated.sh
martian/scripts/automate.sh
martian/scripts/martian
martian/scripts/martian.in
martian/scripts/wv.conf
martian/INSTALL
martian/Concept
martian/Makefile
martian/README
root@slax:~# cd ma
martian/                     
martian-full-20061203.tar.gz
martian-20061203.tar.bz2
root@slax:~# cd martian
root@slax:~/martian# make
make -C kmodule/ modules
make[1]: Entering directory `/root/martian/kmodule'
make -C /lib/modules/2.6.21.1/build
M="/root/martian/kmodule"  modules
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/martian/kmodule/martian.o
/root/martian/kmodule/martian.c: In function
'martian_isr':
/root/martian/kmodule/martian.c:160: warning: value
computed is not used
/root/martian/kmodule/martian.c: In function
'martian_add':
/root/martian/kmodule/martian.c:662: warning: passing
argument 2 of 'request_irq' from incompatible pointer
type
  CC [M]  /root/martian/kmodule/marsio.o
  CC [M]  /root/martian/kmodule/mfifo.o
  LD [M]  /root/martian/kmodule/martian_dev.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/martian/kmodule/martian_dev.mod.o
  LD [M]  /root/martian/kmodule/martian_dev.ko
make[2]: Leaving directory `/usr/src/linux-2.6.21.1'
make[1]: Leaving directory `/root/martian/kmodule'
make -C modem/ all
make[1]: Entering directory `/root/martian/modem'
    CC  main.o
    CC  dumpers.o
    CC  log.o
    CC  session.o
    CC  mport.o
    CC  pty.o
    CC  sysdep.o
    CC  isr.o
    CC  smp.o
    CC  core_if.o
    CC  coresubst.o
    CC  link.o
    CC  tweakrelocsdynamic.o
    CC  coreadd.o
    CC  elf386tweakrelocs
    LD  marscore.o
    TWEAK       marscore.o
    LD  martian_modem
make[1]: Leaving directory `/root/martian/modem'
root@slax:~/martian# make install
make -C kmodule/ install
make[1]: Entering directory `/root/martian/kmodule'
make -C /lib/modules/2.6.21.1/build
M="/root/martian/kmodule" modules_install
make[2]: Entering directory `/usr/src/linux-2.6.21.1'
  INSTALL /root/martian/kmodule/martian_dev.ko
  DEPMOD  2.6.21.1
make[2]: Leaving directory `/usr/src/linux-2.6.21.1'
if ! /sbin/modprobe -nq martian_dev ; then
/sbin/depmod -a; fi
make[1]: Leaving directory `/root/martian/kmodule'
make -C modem/ install
make[1]: Entering directory `/root/martian/modem'
    LD  martian_modem.debug
    STRIP       martian_modem.debug
    STRIP       martian_modem.stripped
    INSTALL     /usr/sbin/martian_modem
    INSTALL    
/usr/lib/debug/usr/sbin/martian_modem.debug
make[1]: Leaving directory `/root/martian/modem'
root@slax:~/martian#

Copy the file martian in the directory /martian/scripts to rc.martian

root@slax:~/martian# cd scripts
root@slax:~/scripts# cp martian rc.martian

Modify the rc.martian script by changing the device /dev/ttySM0 to /dev/modem
Why?  Slax does not have wvdial, and wvdial and wvstreams failed to install on Slax.  We need to use KPPP to achieve a connection.  Also add a line
modprobe martian_drv to the file 

From 
# edit to set other name
DEVICE="/dev/ttySM0"

to

# edit to set other name
DEVICE="/dev/modem"

and before this "if" statement in rc.martian add 

if [ `/sbin/lsmod | grep -c ${MARTIANMOD}` -lt "1" ]; then
        echo "kernel module is not loaded!"
        exit 0
fi

modprobe martian_dev   <---- add this here
if [ `/sbin/lsmod | grep -c ${MARTIANMOD}` -lt "1" ]; then
        echo "kernel module is not loaded!"
        exit 0
fi

Save the modified file rc.martian and copy it to /etc/rc.d/ directory
root@slax:~/martian/scripts# cp rc.martian /etc/rc.d/
root@slax:~/martain/scripts# cd /etc/rc.d/
root@slax:/etc/rc.d# chmod +x rc.martian 

with these adjustments now you can start/stop/restart martian modem by doing
root@slax:/etc/rc.d# /etc/rc.d/rc.martian
Usage: /etc/rc.d/rc.martian {start|stop|restart|reload|status}
root@slax:/etc/rc.d#  


Hope this helps users of slax.  Full copy of rc.martian follows so you can compare.

/etc/rc.martian
root@slax:/etc/rc.d# cat rc.martian
#!/bin/bash
#
# Init file for martian_modem
#
# chkconfig: 2345 45 60
# description: martian_modem
#
# processname: martian_modem
#
### BEGIN INIT INFO
# Provides: martian_modem
# Default-Start: 2 3 4 5
# Short-Description: martian_modem
# Description: martian_modem
# Author: Stefan Puch
# Adjustments for 2006/11 release A. Chentsov
### END INIT INFO

#VPNCLIENT="/opt/cisco-vpnclient/bin/vpnclient"
NAME="martian_modem"
MARTIANMOD="martian_dev"
USER_DRIVER="/usr/sbin/martian_modem"

# edit to set other name
DEVICE="/dev/modem"

modprobe martian_dev
if [ `/sbin/lsmod | grep -c ${MARTIANMOD}` -lt "1" ]; then
        echo "kernel module is not loaded!"
        exit 0
fi



# See how we were called.
case "$1" in
  start)
        echo -n "Starting ${NAME}: "
        if [ `ps -A | grep -c ${NAME}` -gt "0" ]; then
                echo "${NAME} is already running. Use restart instead."
                exit 1
        fi

        if [ ${DEVICE} != "/dev/ttySM0" ]; then
                ARGDEV=${DEVICE}
        else
                ARGDEV=
        fi
        /usr/sbin/martian_modem --daemon ${ARGDEV}
        echo "Done"
        ;;
  stop)
        echo -n "Shutting down ${NAME}: "
        if [ `ps -A | grep -c "martian_modem"` -lt "1" ]; then
                echo "${NAME} is not running."
                exit 1
        fi
        PID=`/sbin/pidof ${NAME}`

        # cease now
        /bin/kill ${PID}

        if [ -L ${DEVICE} ]; then
                rm -f ${DEVICE}
        fi
        echo "Done"
        ;;
  status)
        PID=`/sbin/pidof ${NAME}`
        if [ -n "${PID}" ] ; then
                echo ${NAME} "(PID ${PID}) is running..."
        else
                echo ${NAME} "is stopped"
        fi
        ;;
  restart|reload)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|reload|status}"
        exit 1
esac

exit 0

Now remains to configure KPPP to your ISP and get connected with SLAX Linux Live and your Agere winmodem supported by Martian drivers.

File edited by Antonio A. Olivares 
root@slax:~# echo $(date +%Y%m%d~%H:%M:%S)
20070731~15:12:24
root@slax:~# uname -ipr
2.6.21.1 pentium3 i386
root@slax:~# 

1
Hosted by www.Geocities.ws