#!/bin/bash UPDATE="2007_March_05" # maintainer Marvin Stodolsk y cat<>/dev/null Browse http://linmodems.technion.ac.il and download scanModem.gz . Within a Linux partition gunzip scanModem.gz To make it executable: chmod +x scanModem Run diagnositics with: ./scanModem Only the ouput ModemData.txt should be sent to Discuss@linmodems.org == Kona Hawaii-coffee == I find with google, the 11c11040 not only my problem. http://www.spinics.net/lists/alsa-devel/msg04663.html This link show the problem Lenovo laptop, same. But my laptop is Toshiba A110-110 PSAB6E ATI1 - OK ATI2 - OK ATI3 - TOSHIBA Software Modem Version 2.1.68 ATI4 - Built on 03/17/2006 14:36:36 ATI5 - 2.1.68, HDA MB, HDA, 22 ATI6 - OK ATI7 - HDA MB Modem driver inf found, AGRMDwxp.inf I try the alsa-driver and lib 1.0.14rc1 With my agere modem, Now, alsa working with 11c11040 detection line. (1.0.11 modified, and 1.0.13 not work ======= José Manuel Campaña Spanish GnomePPP problem Pap -secrets http://linmodems.technion.ac.il/bigarch/archive-sixth/msg0.html 02:06.4 104c:803d 103c:309f Communication controller: Texas ftp://ftp.linux.ncsu.edu/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/kernel-devel-2.6.18-1.2798.fc6.i686.rpm MacProblems http://ubuntuforums.org/archive/index.php/t-79605.html > slmodemd -c USA --alsa hw:0,6 IIRC you can also use modem:0 (or maybe just 'modem') as device name. > I was wondering if I should be able to hear the modem. It depends on the modem itself, I don't remember does HDA have buzzer control (will need to see). Anyway I think that si3045 driver does not support this yet. END if grep buntu /etc/issue >/dev/null ; then # $SUDO is signature of all Ubuntu related distros using sudo rather than "su - root" SUDO=sudo fi # if test "$UID" != 0 ; then # echo Run with Root permission: # if test -n "$SUDO" ; then # echo sudo $0 # else # echo $ su - root # echo # $0 # fi # echo # exit # fi PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # for eventual script testing, with $2 and $3 format VendorID:DeviceI if test "$1" = test ; then if test -z "$2" ; then echo "test mode syntax is: ./scanModem test PCIid PCIidSubsystem Distro KernelVersion CPU" echo " with a minimum of: ./scanModem test PCIid" echo exit fi TST=1 PCIDEV="$2" SUBSYS="$3" ISSUER="$4" SYS="$5" GCC123="$6" CPU="$7" fi if test -z "$SYS" ; then SYS=`uname -r` fi # Short term files have names 0tmpfile.1 2 3 etc. rm $TMPM 2>/dev/null if test -z "$TMPM" ; then TMPM=0tmpfile if test -d /dev/shm ; then # use /dev/shm RAM space if possible for transient writes SHM=`ls -dl /dev/shm | cut -d' ' -f1` if test "$SHM" = drwxrwxrwt ; then TMPM=/dev/shm/0tmpfile fi SHM= fi fi if test -z "$BN" ; then BN=`basename $0` fi if test "$BN" != scanModem ; then echo " Please rename this script scanModem, or some files will not print out." echo " Abort with Ctrl-C, or wait 5 seconds to continue." echo sleep 5 fi if test -d Modem ; then /bin/rm -r Modem 2>/dev/null fi mkdir -p Modem RECORD=Modem/ModemData.txt RECORD2=Modem/YourSystem.txt cat<$RECORD2 This file should NOT be sent to Discuss@Linmodems.org It has common guidance for modem usage after setup. END if test "`pwd`" = "/" -a -z "$RPM" ; then cat</dev/null ; then # SuSE is not the first word in /etc/issue ISSUER=SuSE fi fi echo>$TMPM # Here to reveal installed software if test -L /dev/modem ; then link=" The modem symbolic link is /`ls -l /dev/modem | cut -d/ -f2- 2>/dev/null`" echo $link > $TMPM fi if test -L /dev/ttySL0 ; then link2=" The slmodemd set symbolic link is /`ls -l /dev/ttySL0 | cut -d/ -f2- 2>/dev/null`" echo $link2 >>$TMPM fi link= link2= cat<>$RECORD Only plain text email is forwarded by the DISCUSS@linmodems.org List Server. Do use the following as the email Subject Line: SomeName, YourCountry $ISSUE kernel `uname -r` 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=`uname -m`, $ISSUE `cat /proc/version` scanModem update of: $UPDATE `cat $TMPM` END if grep -i slack /etc/issue >/dev/null ; then echo "Mike Mohr can provide assistance with Slackware related issues.">>$RECORD echo >>$RECORD fi KRPM=`echo $SYS | sed -e 's/-/_/g'` # KRPM needed for rpm underscore syntax # SYS=2.6.8.1-+3-686 , difficult parsing case KVER=`uname -r | cut -d- -f1 | cut -d+ -f1 | cut -d. -f1-3` KMAJOR=`echo $SYS | cut -d. -f1-2` KRELEASE=`echo $KVER | cut -d. -f3` KEXT=`echo $SYS | sed -e 's/'$KVER'//g'` ## GCC analysis # sed replace s ( and ) with spaces GCC_INPUT=`cat /proc/version | sed -e 's/)/ /g' | sed -e 's/(/ /g'` # Picks our version # following gcc GCC123=`for i in $GCC_INPUT ; do echo $i ; done | grep -A2 gcc | grep -A1 ersion | grep -v ersion` # last cut for rare names like: MyCompiler-3.3.5 GCC12=`echo $GCC123 | cut -d. -f1-2 | cut -d- -f2` GCC1=`echo $GCC12 | cut -d. -f1` GCC2=`echo $GCC12 | cut -d. -f2` # for later package name output SLMODEMD=SLMODEMD.gcc$GCC12.tar.gz # Check resident compiler GCCtests=`ls /usr/bin/gcc* | grep -v gccbug | grep -v gccmakedep 2>/dev/null` if test -n "$GCCtests" ; then for i in $GCCtests do GCCt=`$i -dumpversion | grep $GCC12 2>/dev/null` if test -n "$GCCt" ; then GCC=$GCCt GCCs=`echo $GCCt | cut -d. -f1-2` GCCt= fi done fi if test -z "$GCC" ; then GCC=none fi PNP=`dmesg | grep "IRQ XX"` if test -n "$PNP" ; then cat<> $RECORD If after boot up # dmesg | grep "IRQ XX" displays: IRQ XX nobody cared a change in the bootup BIOS may to a non-PNP choice is likely necessary. END fi CMD_PATH="/bin /usr/bin /sbin /usr/sbin" for i in $CMD_PATH do if test -x $i/lspci then LSPCI=$i/lspci fi done for i in $CMD_PATH do if test -x $i/dmesg then DMESG=$i/dmesg fi done for i in $CMD_PATH do if test -x $i/lsusb then LSUSB=$i/lsusb fi done if test "$LSUSB" -a -x $LSUSB -a $LSUSB &>/dev/null ; then echo Modem>$TMPM echo idVendor>>$TMPM echo idProduct>>$TMPM USBmodem=`$LSUSB | grep -i modem` if test "$USBmodem" ; then $LSUSB -v 2>/dev/null | grep -v 0x000 | grep -f $TMPM >>$RECORD if grep 0483:7554 $TMPM>/dev/null ; then USB_IDENT=slusb fi if grep 0483:7554 $TMPM>/dev/null ; then USB_IDENT=slusb fi else echo "USB modem not detected by lsusb" >>$RECORD fi elif test -f /proc/bus/usb/devices ; then if grep -i modem /proc/bus/usb/devices>/dev/null ; then grep -i modem /proc/bus/usb/devices >> $RECORD # S: Product=U.S. Robotics 56K Faxmodem USB # USB Vendor ID: 0572 Product ID: 1290 (Cadmus2 HCF, Conexant) # 0483:7554 SGS Thomson Microelectronics 56k SoftModem if grep "HSF Modem" /proc/bus/usb/devices>/dev/null ; then echo " Download the hsfmodem package from http://www.linuxant.com/drivers">> $RECORD fi # USB ID 0572:1300 with Conexant chips # USB ID 0572:1301 # USB ID 0572:1302 # USB ID 0572:1303 # USB ID 08E3:0111 (Olitec Speed'Com USB V92 Ready) # USB ID 0803:1300 (Zoom Telephonics USB V.92) else echo " USB modem not detected.">> $RECORD fi else echo " /proc/bus/usb/devices file not present, barring USB modem query. ">> $RECORD fi echo >> $RECORD if test -z $LSPCI then echo "+----------------------------------------------+" echo "| WARNING: lspci not found - exiting |" echo "| Please install the package: pciutils |" echo "| lspcidrake is not adequate for scanmodem |" echo "| Please install the package: pciutils |" echo "+----------------------------------------------+" echo exit 1 echo # else # if $LSPCI &> /dev/null ; then # echo "WARNING: $LSPCI returned error - not checking for modem" # echo # echo Exiting # echo # exit 1 # fi fi # HDA="8086:2668 8086:27d8 1002:437b 10de:026c" HDAbus=`$LSPCI | grep "High Definition Audio" | cut -d' ' -f1 | cut -d: -f2-` echo 10de:026c>$TMPM echo 1002:437b>>$TMPM echo 8086:2668>>$TMPM echo 8086:27d8>>$TMPM echo 10b9:5461>>$TMPM if test -z "$TST" -a "$HDAbus" ; then HDA=1 HDAdev=`$LSPCI-s $HDAbus -n 2>/dev/null | cut -d' ' -f 3` if test "$HDAdev" = 10de:026c ; then cat<>$RECORD If this High Definition Audio card hosts a Conexant softmodem, modem support may not yet been implemented by http://www.linuxant.com END fi HDAold=`$LSPCI -s $HDAbus -n | grep -f $TMPM` if test -z "$HDAold" ; then cat<>$RECORD New HDA card type: `$LSPCI-s $HDAbus 2>/dev/null` `$LSPCI-s $HDAbus -n 2>/dev/null` END fi fi echo Identifying PCI bus slots with candidate modems. cat</dev/null Modem modem erial controller ommunication controller M5451 High Definition Audio ATI Technologies Inc: Unknown device 437b END # filering for modem # 0403: 8086:2668 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio # BUS1=0000:00:12.0 BUS1=`$LSPCI -n 2>/dev/null | grep " 07..: " | grep -v "FIR Port" | grep -v arallel | cut -d' ' -f1` BUS2=`$LSPCI -n 2>/dev/null | grep " 0403: " | cut -d' ' -f1` BUS3=`$LSPCI -n 2>/dev/null | grep ALI5451 | cut -d' ' -f1` #older 07xx: Modem family PCIBUS="$BUS1 $BUS2 $BUS3" if test -n "$PCIBUS" ; then if test -z "$TST" ; then # Do a preliminary PCI ID readout, in case of a later script failure. echo Modem or host audio card candidates have firmware information:>>$RECORD for bus in $PCIBUS do cat<>$RECORD PCI slot PCI ID SubsystemID Name ---------- --------- --------- -------------- END if $LSPCI -n 2>/dev/null | grep $bus | grep Class >/dev/null ; then PCIDEV=`$LSPCI -n 2>/dev/null | grep $bus | cut -d' ' -f4` else PCIDEV=`$LSPCI -n 2>/dev/null | grep $bus | cut -d' ' -f3` fi SUBSYS=`$LSPCI -nv 2>/dev/null | grep -A1 $bus | grep Subsystem | cut -d' ' -f2-` IRQ=`$LSPCI -v 2>/dev/null | grep -A2 $bus | grep IRQ | cut -dQ -f2 | cut -d' ' -f2` NAME=`$LSPCI | grep $bus | cut -d' ' -f2- | cut -d'(' -f1` echo " $bus $PCIDEV $SUBSYS $NAME">>$RECORD echo >>$RECORD echo " Modem interrupt assignment and sharing: ">>$RECORD if test $IRQ: -a -f /proc/interrupts ; then grep -m 1 $IRQ: /proc/interrupts>>$RECORD BLOCKED=`grep -m 1 $IRQ: /proc/interrupts | grep $bus` fi echo >>$RECORD if test "$DMESG" ; then echo " --- Bootup diagnositcs for card in PCI slot $bus ----">>$RECORD $DMESG | grep $bus>>$RECORD DISABLED=`$DMESG | grep $bus | grep -i disabl` if test "$DISABLED" -o "$BLOCKED" ; then cat<>$RECORD The PCI slot $bus of the modem card may be disabled early in a bootup process, but then enabled later. If modem drivers load but the modem is not responsive, read Bootup.txt about possible fixes. Send dmesg.txt along with ModemData.txt to discuss@linmodems.org if help is needed. END cat /proc/interrupts >Modem/dmesg.txt echo >>Modem/dmesg.txt $DMESG>>Modem/dmesg.txt cat<Modem/Bootup.txt A modem device/card may be disabled at bootup, due to a variety of causes. Look at the bootup diagnostics record dmesg.txt written out through: $ dmesg > dmesg.txt and try to garner some understanding from it. Possibilities therein are too diverse to be automagically processed by scanModem. A line including the PCI bus slot $bus of your modem, and "disable" or "disabling" predicts problems, though sometimes corrected later in the bootup. Similarly a line with "@" in the interrupt (IRQ) for your $bus slot is predictive of problems. Possible corrections are: 0) Get unloading.gz from http://phep2.technion.ac.il/linmodems/packages/ This script unloads excess drivers which may be competing for resources. Before trying to set up the modem, do: $ gunzip unloading.gz $ chmod +x unloading $ su - root # ./unloading Or for Ubuntu related Distros $ sudo ./unloading 1) Within the boot up BIOS, change from a Windows to a non-PNP/Other Operating System type. Instructions for accessing BIOS are at: http://linmodems.technion.ac.il/resources.html within: Additional Resourcces. 2a) Add an option "pci=routeirq" to the kernel boot up line. Here is an example paragraph from /boot/grub/menu.lst : title Ubuntu, kernel 2.6.15-26-686 root (hd0,6) kernel /boot/vmlinuz-2.6.15-26-686 root=/dev/hda7 ro pci=routeirq initrd /boot/initrd.img-2.6.15-26-686 savedefault 2b) Same as above, but use "pollirq" instead of "pci=routeirq". 3) Within some BIOS setups, IRQ assignments can be changed. 4) On non-laptop systems, moving the modem card to another slot has helped. 5) Sometimes upgrading the kernel solves the problem. 6) Sometimes downgrading the kernel solves the problem. 7) Sometimes changing the Linux distribution solves the problem. END fi #Disabled fi # DMESG IRQ bus= PCIDEV= SUBSYS= NAME= DISABLED= BLOCKED= IRQ= done # first round echo>> $RECORD fi # TST of trial run ,PCIBUS still open cat</dev/null | grep $bus | grep Class >/dev/null ; then CLASS0=`$LSPCI -n 2>/dev/null | grep $bus | cut -d' ' -f3-4` else CLASS0=`$LSPCI -n 2>/dev/null | grep $bus | cut -d' ' -f2-3` fi # $LSPCI -n 2>/dev/null | grep $i | cut -d' ' -f2-4 > $TMPM CLASS="Class $CLASS0" class=`$LSPCI | grep $bus | cut -d' ' -f2- | grep ' 0403: ' >/dev/null` if test -n "$class" ; then NAME=`$LSPCI 2>/dev/null | grep $bus | cut -d' ' -f3- | cut -d'(' -f1 ` else NAME=`$LSPCI 2>/dev/null | grep $bus | cut -d' ' -f2- | cut -d'(' -f1` fi if test -z "$TST" ; then PCIDEV=`echo $CLASS | cut -d' ' -f3` fi Vendor=`echo $PCIDEV | cut -d: -f1` Device=`echo $PCIDEV | cut -d: -f2` IRQ=`$LSPCI -v 2>/dev/null | grep -A2 $bus | grep IRQ | cut -dQ -f2 | cut -d' ' -f2` if test "$IRQ" = 0 -o "$IRQ" = 255 ; then # `grep $IRQ /proc/interrupts` cat<>$RECORD =================================== The modem interrupt (IRQ) is $IRQ . IRQs of 0 or 255 are not functional!! The CPU cannot control the modem until this situation is corrected!! Possible corrections are: 1) Within the boot up BIOS, change from a Windows to a non-PNP/Other Operating System type. Instructions for accessing BIOS are at: http://linmodems.technion.ac.il/resources.html within: Additional Resourcces. 2a) Add an option "pci=routeirq" to the kernel boot up line. Here is an example paragraph from /boot/grub/menu.lst : title Ubuntu, kernel 2.6.15-26-686 root (hd0,6) kernel /boot/vmlinuz-2.6.15-26-686 root=/dev/hda7 ro pci=routeirq initrd /boot/initrd.img-2.6.15-26-686 savedefault 2b) Same as above, but use "pollirq" instead of "pci=routeirq". 3) Within some BIOS setups, IRQ assignments can be changed. 4) On non-laptop systems, moving the modem card to another slot has helped. 5) Sometimes upgrading the kernel changes IRQ assignment. ===================================== END fi # IRQ if test -z "$TST" -a -z "$SUBSYS" ; then SUBSYS=`$LSPCI -nv 2>/dev/null | grep -A1 $bus | grep Subsystem | cut -d' ' -f2-` SUBNAME=`$LSPCI -v 2>/dev/null | grep -A1 $bus | grep Subsystem | cut -d: -f2-` fi if test -n "$SUBSYS" ; then SUBven=`echo $SUBSYS | cut -d: -f1` SUBdev=`echo $SUBSYS | cut -d: -f2` $LSPCI -nv 2>/dev/null | grep -A2 $bus | grep Flags: >/dev/null else SUBSYS=none echo PCIbus=$bus>>$RECORD $LSPCI -v 2>/dev/null | grep -A4 $bus>>$RECORD echo >>$RECORD fi echo PCIDEV=$PCIDEV>>$OP echo CLASS='"'$CLASS'"'>>$OP echo NAME='"'$NAME'"'>>$OP echo Vendor=$Vendor>>$OP echo Device=$Device>>$OP echo SUBSYS=$SUBSYS>>$OP echo SUBNAME='"'$SUBNAME'"'>>$OP echo SUBven=$SUBven>>$OP echo IRQ=$IRQ>>$OP echo Test='"'./scanModem test $PCIDEV $SUBSYS'"'>>$OP SOFT= ## Recognizing soft modems echo "8086:2668 8086:2416 8086:2426 8086:7186 8086:7196 8086:2446 8086:2486 8086:24c6 8086:25a7 8086:24d6 8086:8280 8086:266d 8086:2669 8086:27d8 8086:27dd 1039:7013 1039:7018 10de:01c1 10de:00d9 1106:3068 1022:7446 10b9:5450 10b9:5451 10b9:5453 1025:5453 10b9:5457 1025:5457 1002:434d 1002:437b 1002:4378 1543:3052 10de:026c 10b9:5461" >$TMPM if test "$PCIDEV" ; then if grep $PCIDEV $TMPM>/dev/null ; then # among known ALSA compatible softmodem controller SOFT=$PCIDEV echo " Modem with PCI ID $PCIDEV is in the software modem category." echo SOFT=$SOFT>>$OP fi fi # echo SOFT=$SOFT if test -z "$SOFT" -o "$TST" ; then # Prepare for definitive PCI ID case rm $TMPM DEVnum=1120 # some DEVnum needed, but 1120 is not int the test range. if test "$Vendor" = 11c1 -o "$Vendor" = 115d ; then # preparing for Agere and Xircom DSP analysis, convert hexadecimal to number DEVnum=$(( 0x`echo $Device` + 0 )) # echo DEVnum=$DEVnum elif test "$Vendor" = 134d ; then # most common PCTEL family echo $Device>$TMPM if grep 789[0-7] $TMPM>/dev/null ; then # most common PCTEL family PCTEL=$PCIDEV fi else echo Reduce cases to existence>/dev/null cat< $TMPM 4005:0308 Avance ALS-300plus sound+softmodem combo PCI card, obsolete 1055:9178 STANDARD_MICROSYSTEM 10b9:545a ALI545A SL1801 10b9:5459 ALi Corporation SmartLink SmartPCI561 56K Modem, NetoDragon 10ec:8197 PCI SmartLAN56, RealTek ether/modem combo 1131:3400 SmartPCI56, Philips UCB1500 10a5:3052 Racal Interlan SL1900 10a5:5459 Racal Interlan SmartPCI561 SL1900 163c:5459 SmartLink SmartPCI561 SL1900 163c:3052 Modem: SmartLink SmartPCI562 56K Modem 2000:2800 Gateway SL2800 2003:8800 SmartLink SL2800 END if test -f $TMPM ; then slamr=`cat $TMPM | cut -d' ' -f1` # Uses dslmodemd + driver slamr fi rm $TMPM if test -z "$slamr" ; then # lightly modified for grep parsing from http://www.linuxant.com HSF and HCF pages cat<$TMPM HSF {127a,14f1}:{2013,2014,2015,2016} HSF.Riptide {127a,14f1}:4311 (RIPTIDE) HSF {127a,14f1}:{2004,2006} HSF {127a:2114 HSF {14f1:{2043,2044,2045,2046} HSF {14f1:{2063,2064,2065,2066} HSF {14f1:2093 HSF {14f1:{201a,201b} HSF {14f1:{204a,204b} HSF {14f1:{2143,2144,2145,2146} HSF {14f1:{2163,2164,2165,2166} HSF {14f1:{2343,2344,2345,2346} HSF {14f1:{2363,2364,2365,2366} HSF {14f1:{2443,2444,2445,2446} HSF {14f1:{2463,2464,2465,2466} HSF {14f1:{2f00,2f01,2f02,2f03,2f04} HSF {14f1:{2f10,2f11,2f12,2f13,2f14} HSF {14f1:{2702,2703,2704,2705} HSF {14f1:{2f20,2f30,2f50} HSF {158b:0001 (allied Data Technologies) HSF {158b:0005 (allied Data Technologies) HSF {16ec:2f00 (U.S. Robotics USR5660a (265660a) 56K PCI faxmodem) HSF {14f1:2215 not yet supported HCF.HSF {127a,14f1}:{1025,1085,2005} (if it doesn''t work, try HSF driver) HCF {127a,14f1}:{1002,1003,1004,1005,1006} (71DP v90) HCF {127a,14f1}:{1022,1023,1024,1026} HCF {127a,14f1}:{2004,2006} HCF {127a,14f1}:{1032,1033,1034,1035,1036} HCF.Riptide {127a,14f1}:{4321} (RIPTIDE) HCF {14f1:{10b3,10b4,10b5,10b6} HCF {127a:{1802,1804,1805} (LaN/Modem Combo) HCF {14f1:{1813,1815} (LaN/Modem Combo) HCF {14f1:{1f10,1f11,1f14,1f15} HCF {14f1:{1053,1054,1055,1056} (SmartHCF board rev 3) HCF {14f1:{1052,1057,1059} (SmartHCF board rev 4) HCF {14f1:{1063,1064,1065,1066} (SmartHCF US-only, Dell) HCF {14f1:{1453,1454,1455,1456} (SmartHCF mini-PCI board rev 3) HCF {14f1:{1452,1457,1459} (SmartHCF mini-PCI board rev 4) HCF {1024:1024 (Zenith Data Systems) HCF {148d:1003 (DIGICOM Systems) HCF {158d:0015 (allied Data Technologies Tornado VfM56x-PRC) HCF {141a:1035 (apache Micro) END if test -f $TMPM ; then CNX=`cat $TMPM | cut -d' ' -f1` fi fi # not SMART fi # Preparations # Proceed through mutually exclusive cases # IDENT=Something , is the signature of effective chipset ID success # so skip further tests # Conexant if test "$CNX" ; then IDENT=$CNX if test "$IDENT" = HSF ; then # use package name IDENT=hsfmodem fi if test "$IDENT" = HCF ; then IDENT=hcflinmodem fi # SmartLink modems elif test "$slamr" ; then IDENT=slamr # Lucent/Agere 11c1 and Xircom 115d DSP chipsets elif test "$DEVnum" -ge 0 -a "$DEVnum" -le 1023 -a "$Vendor" = 115d ; then # DEVICES 0x115d:0x0000-0x000f 0x115d:0x0010-0x03ff IDENT=Agere.DSP elif test "$Vendor" = 11c1 -o "$Vendor" = 115d && test "$DEVnum" -ge 1088 -a "$DEVnum" -le 1116 ; then # DEVICES 0x11c1:0x0440-0x045c 0x115d:0x0440-0x045c IDENT=Agere.DSP elif test "$Vendor" = 11c1 && test "$Device" = 0461 -o "$Device" = 0462 ; then IDENT=Agere.Wildwire_no_driver_available elif test "$Vendor" = 11c1 && test "$Device" = 048c -o "$Device" = 048e -o "$Device" = 048f ; then IDENT=Agere.SV2P_no_driver_available elif test "$PCIDEV" = 11c1:0480 ; then IDENT=Agere.Venus_serial_drivers elif test "$Vendor" = 11c1 && test "$Device" = 0600 -o "$Device" = 0620 ; then IDENT=Agere.SV2PP_no_driver_available # Intel 536EP & 537 secton elif test "$PCIDEV" = 8086:1080 && test "$SUBSYS" = 8086:1000 -o "$SUBSYS" = 8086:1007 -o "$SUBSYS" = 8086:1008 -o "$SUBSYS" = 8086:100a -o "$SUBSYS" = 1028:1000 ; then IDENT=INTEL537EP elif test "$PCIDEV" = e159:0001 -a "$SUBSYS" = 8086:0003 ; then IDENT=INTEL537 elif test "$PCIDEV" = 8086:1040 -a "$SUBSYS" = 8086:1005 ; then IDENT=INTEL537SP elif test "$PCIDEV" = 8086:1040 -a "$SUBSYS" = 8086:1000 ; then IDENT=INTEL536EP # several PCTEL and CM8737 elif test "$PCTEL" -o "$PCIDEV" = 13f6:0211 ; then IDENT=PCTEL elif test "$PCIDEV" = 134d:2189 ; then # PCTel Oasis modem supported by Smartlink slamr driver IDENT=slamr elif test "$PCIDEV" = 12b9:0062 -o "$PCIDEV" = 12b9:1008 ; then IDENT=USrobotics.serial elif test "$Vendor" = 10b7 -o "$Vendor" = 12b9 && test "$Device" = 1006 -o "$Device" = 1007 ; then IDENT=3COM.winmodem elif test "$Vendor" = 1057 -o "$Vendor" = 11d4 ; then IDENT=Motorola elif test "$Vendor" = 15f1 ; then IDENT=Topic elif test "$Vendor" = 14e4 ; then IDENT=Broadcom elif test "$Vendor" = 125d ; then IDENT=ESS.com elif test "$Vendor" = 1813 ; then IDENT=AmbientTech elif test "$Vendor" = 1013 ; then IDENT=CirrusLogic # Odds and ends elif test "$PCIDEV" = 104c:803d ; then echo "Communication controller: Texas Instruments is a card reader, not a modem">>$RECORD elif $LSPCI -v 2>/dev/null | grep CM8738 >/dev/null ; then # Some other Vendors used the CM8738 chip IDENT=PCTEL new=1 elif $LSPCI -v 2>/dev/null | grep "Intel 536" >/dev/null ; then # because Intel 536 may have PCI_IDs assigned by modem assemblers, not Intel IDENT=INTEL536EP new=1 elif $LSPCI -v 2>/dev/null | grep "Subsystem: Conexant" >/dev/null ; then # because the PCI_IDs may be assigned by modem assemblers, not Conexant if test -z "$TST" ; then IDENT=HCF.HSF new=1 echo package='"'both hcflinmodem and hsfmodem'"'>>$OP fi else echo " No definitive chipset IDENTification">/dev/null fi # Simple PCI ID cases if test "$new" ; then echo " New $IDENT device $PCIDEV" >>$RECORD fi # To clarify later displays fi # not soft # if not IDENTified do the SOFT modem cases, if test -z "$IDENT" ; then # skip it TST(test) and do only once, if ! test "$TST" -o "$SoftTest" ; then ALSAver=`aplay --version | cut -d' ' -f3` echo ALSAversion $ALSAver >>$RECORD ALSArel=`aplay --version | cut -d. -f3 | cut -d' ' -f1` CODECS=`find /proc/asound -name codec#*` for cod in $CODECS do grep -rs Modem $cod done if test -d /proc/asound ; then CNX=`grep -rs 0x14f12bfa /proc/asound | cut -dx -f2` if test -n "$CNX" ; then cat<>$RECORD `grep -rs 0x14f12bfa /proc/asound` ------ 14f1 is the Conexant Vendor ID, and 0x14f12bfa a softmodem chipset. Get a hsfmodem package through http://www.linuxant.com END fi fi if test -r /proc/asound/card0/codec#1 ; then AC01=/proc/asound/card0/codec#1 ## example of AC01=/proc/asound/card0/codec#1 # grep -rs 14f1 /proc/asound # Codec: Generic 14f1 ID 2bfa # Vendor Id: 0x14f12bfa if test "$PCIDEV" = 8086:2668 -o "$PCIDEV" = 8086:27d8 -o "$PCIDEV" = 1002:437b -o "$PCIDEV" = 10de:026c -o "$PCIDEV" = 10b9:5461; then echo $PCIDEV is a High Definition Audio card, possibly hosting a soft modem.>>$RECORD if test "$PCIDEV" = 8086:27d8 ; then if test "$KRELEASE" -le 15 -a "$KMAJOR" = 2.6 ; then echo " snd-hda-intel may not be competent to read /proc/asound/card0/codec#1">>$RECORD echo " before 2.6.15 kernels, for HDA card 8086:27d8">>$RECORD fi fi fi if test -z "$SOFT" ; then SOFT=HDA_NEW echo " and a NEW HDA softmodem controller.">>$RECORD echo PCIDEV=NEW_softmodem_$PCIDEV>>$OP newHDA=1 fi echo >>$RECORD Codec=`grep Codec: $AC01 | cut -d' ' -f3` VendorID=`grep Vendor $AC01 | cut -d' ' -f3` echo Codec=$Codec>>$OP echo VendorID=$VendorID>>$OP if test "$VendorID" = 0x14f12bfa -o "$Codec" = 14f1 ; then IDENT=hsfmodem HSF=1 else IDENT=slmodemd fi # ALSArel if ! test "$VendorID" = 0x14f12bfa ; then if test "$VendorID" = 0x11c11040 -a "$ALSArel" -le 14 ; then AVER=1.0.14rc2 fi if test "$VendorID" = 0x10573055 -o "$VendorID" = 0x10573155 -a "$ALSArel" -le 13 ; then AVER=1.0.13 fi if test -n "$AVER" ; then SLMODEMD_DEVICE=hw:0,? cat<>$RECORD The VendorID $VendorID softmodem chip is in principle supported by the snd-hda-intel driver included within the ALSA audio+modem driver set. However recognition of $VendorID first begins with ALSA version $AVER. There are instructions for upgrading snd-hda-intel and its dependent driver set at http://linmodems.technion.ac.il/archive-seventh/msg00282.html The ? in the device designation in hw:0,? will be manifest after the driver update. Typically ? is in the range of 0-6 . END fi fi if ! test "$VendorID" = 0x11c13026 -o "$VendorID" = 0x11c13055 -o "$VendorID" = 0x163c3055 -o "$VendorID" = 0x163c3155 -o "$VendorID" = 0x11c13026 -o "$VendorID" = 0x10573055 -o "$VendorID" = 0x10573155 -o "$VendorID" = 0x14f12bfa ; then newChipset=1 cp -a /proc/asound Modem/ tar cfz Modem/$Codec.tgz Modem/asound/ cat<>$RECORD There may be novel modem chipset information within the /proc/asound/ files. They have been copied and packed into a file: Modem/$Codec.tgz Please send $Codec.tgz to the scanModem maintainer: Marvin.Stodolsky@gmail.com END fi #AC01 else echo "The audio card is not a modem hosting type.">>$RECORD CMODEM=`grep -rs 14f1 /proc/asound` if test -n "$CMODEM" ; then echo "A vendor ID 14f1 in the /proc/asound/ files suggests a Conexant modem." fi fi if test -f /proc/asound/pcm ; then PCM=/proc/asound/pcm lineModem=`grep -i modem $PCM` if test "$lineModem" ; then IDENT=slmodemd if test -z "$SOFT" ; then echo " $PCIDEV is a NEW softmodem controller">>$RECORD echo PCIDEV=NEW_softmodem_$PCIDEV>>$OP fi # Identify the driver if grep snd_via82xx_modem /proc/asound/modules | grep modem >/dev/null ; then DRIVER_=snd_via82xx_modem elif grep snd_atiixp_modem /proc/asound/modules | grep modem >/dev/null ; then DRIVER_=snd_atiixp_modem elif grep snd_intel8x0m /proc/asound/modules >/dev/null ; then DRIVER_=snd_intel8x0m elif grep -i "ALI 5451 modem" $PCM >/dev/null ; then DRIVER_=snd_ali5451 OPTS="-s " elif grep snd_hda_intel /proc/asound/modules >/dev/null ; then HDA=1 # /proc/asound/modules is 0 snd_hda_intel if ! grep -i modem /proc/sound/cards >/dev/null ; then DRIVER_=snd_hda_intel fi else echo Future cases >/dev/null fi # Deduce the SLMODEMD_DEVICE from # lineModen="HDA 00-06: Si3054 Modem : Si3054 Modem : playback 1 : capture 1" if grep -i Modem $PCM | grep "00-0[1-9]: " >/dev/null ; then ## High Definition Audio line from $PCM # # 00-00 is the Audio card, the modem line is like: # 00-06: Si3054 Modem : Si3054 Modem : playback 1 : capture 1 cA=`grep -i Modem $PCM | cut -b4` cM=`grep -i Modem $PCM | cut -b5` # N=1,6 cases thus far observed SLMODEMD_DEVICE=hw:$cA,$cM if grep -i "ALI 5451" $PCM >/dev/null ; then # 00-01: ALI 5451 modem : ALI 5451 modem : playback 1 : capture 1 OPTS="-s " echo OPTS=$OPTS>>$OP # OPT --shortbuffer or -s needed by ALI5451 fi else ## typical mc97 codec modem, proc/asound/pcm modem line # 01-00: VIA 82XX modem : VIA 82XX modem : playback 1 : capture 1 n97=`grep -i modem $PCM | cut -b2` SLMODEMD_DEVICE=modem:$n97 # there are rare cases where modem:0 is necessary because a non-ALSA audio # driver is used, so hw:0 is the modem rather that the audio device. fi # if # fi fi # lineModem # for mc97 codec modems, not HDA types, and most Conexants REGISTERS=`find /proc/asound -name 'mc97#[0-3]-[0-3]+regs'` if test -n "$REGISTERS" ; then for REG in $REGISTERS do mc97=`echo $REG | cut -d+ -f1` mc97line=`cat $mc97 | grep Extended` if grep -i Conexant $mc97 >/dev/null ; then IDENT=hsfmodem HSF=1 fi hex1=`grep 0:7c $REG | cut -b 8-9` hex2=`grep 0:7c $REG | cut -b 10-11` hex3=`grep 0:7e $REG | cut -b 8-9` num=`grep 0:7e $REG | cut -b 10-11` cat<$TMPM 41 A 42 B 43 C 44 D 45 E 46 F 47 G 48 H 49 I 4a J 4b K 4c L 4d M 4e N 4f O 50 P 51 Q 52 R 53 S 54 T 55 U 56 V 57 W 58 X 59 Y 5a Z END B1=`grep $hex1 $TMPM | cut -b4` B2=`grep $hex2 $TMPM | cut -b4` B3=`grep $hex3 $TMPM | cut -b4` CODECd=$B1$B2$B3$num echo CODECd=$CODECd>>$OP COD=$B1$B2$B3 echo COD=$COD>>$OP if test "$COD" = CXT ; then IDENT=hsfmodem HSF=1 elif test -n "$CODECd" ; then IDENT=slmodemd TYPE=ALSA echo TYPE=ALSA >>$OP else echo No decision>/dev/null fi done fi # REGISTERS fi # PCM if test "$Codec" -a -z "$CODECd" ; then CODECd=$Codec fi SoftTest=1 if test -z "$IDENT" -a "$AC01" -a -z "$HSF" ; then # try to identify why there was no modem line, HSF done earlier # from the ALSA sources file driver/sound/pci/hda/patch_si3054.c if test "$newHDA" ; then Driver=snd-hda-intel SLMODEMD_DEVICE=hw:0,1 echo "A patch to snd-hda-intel is needed to implement service.">>$RECORD elif "$VendorID" = 0x11c13026 ; then echo " There shold be support for softmodem chip from AgereSystems: $VendorID ">>$RECORD Driver=snd-hda-intel SLMODEMD_DEVICE=hw:0,1 elif "$VendorID" = 0x11c13026 ; then echo " A patch to snd-hda-intel may be needed to support the softmodem chip from AgereSystems: $VendorID" >> $RECORD Driver=snd-hda-intel SLMODEMD_DEVICE=hw:0,1 elif "$VendorID" = 0x163c3055 -o "$VendorID" = 0x163c3155 ; then echo " A patch to snd-hda-intel may be needed to support the softmodem chip from Smartlink: $VendorID ">>$RECORD Driver=snd-hda-intel SLMODEMD_DEVICE=hw:0,1 elif "$VendorID" = 0x10573055 -o "$VendorID" = 0x10573155 -o "$VendorID" = 0x11c11040 ; then echo " A patch to snd-hda-intel is needed to support the softmodem chip from Motorola: $VendorID ">>$RECORD Driver=snd-hda-intel SLMODEMD_DEVICE=hw:0,1 else echo FutureCases >/dev/null fi fi # NoIdent fi # not TST or SoftTest if test -z "$HSF" ; then if test -z "$IDENT" ; then # Deduce dirver from PCI ID info if test "$PCIDEV" = 10b9:5457 ; then Driver=slamr SLMODEMD_DEVICE=/dev/slamr0 elif test "$PCIDEV" = 10b9:5451 ; then Driver=snd-ali5451 SLMODEMD_DEVICE=hw:0,1 OPTS="-s " elif test "$PCIDEV" = 1002:434d -o "$PCIDEV" = 1002:4378 ; then Driver=snd-atiixp-modem SLMODEMD_DEVICE=modem:1 elif test "$PCIDEV" = 1106:3068 ; then Driver=snd-via82xx-modem SLMODEMD_DEVICE=modem:1 else # "mixer error" is warning - this means your ALSA driver (intel8x0m) is old, Driver=snd-intel8x0m SLMODEMD_DEVICE=modem:1 fi fi # not HSF deduction from hardware echo SLMODEMD_DEVICE=$SLMODEMD_DEVICE >>$OP PORT="$OPTS$SLMODEMD_DEVICE" echo PORT='"'$PORT'"' >>$OP if test -z "$Driver" -a "$DRIVER_" ; then Driver=`echo $DRIVER_ | sed -e 's/_/-/g'` fi if test -z "$DRIVER_" -a "$Driver" ; then DRIVER_=`echo $Driver | sed -e 's/-/_/g'` fi echo Driver=$Driver>>$OP echo DRIVER_=$DRIVER_ >>$OP if test "$Driver" = snd-atiixp-modem ; then KDRIVER=SND_ATIIXP_MODEM elif test "$Driver" = snd-via82xx-modem ; then KDRIVER=SND_VIA82XX_MODEM elif test "$Driver" = snd-intel8x0m ; then KDRIVER=SND_NTEL8X0M elif test "$Driver" = snd-hda-intel ; then KDRIVER=SND_HDA_INTEL else echo NewCases>/dev/null fi echo KDRIVER=$KDRIVER>>$OP # preparing to grep CONFIG if test -f /boot/config-$SYS ; then CONFIG=/boot/config-$SYS elif test -f CONFIG=/boot/config-$SYS-default ; then CONFIG=/boot/config-$SYS-default else CONFIG= fi if test "$Driver" ; then MPLACE=`find /lib/modules/$SYS/ -name $Driver.ko*` Loaded=`grep $DRIVER_ /proc/modules | cut -d' ' -f1` if test "$MPLACE" ; then echo MPLACE=$MLPACE>>$OP elif test -n "$CONFIG" -a "$KDRIVER" ; then if grep $KDRIVER=y $CONFIG ; then echo $KDRIVER=InKernel>>$OP echo " The $Driver is integrated into the kernel.">>$RECORD fi else echo " The $Driver is not supported by this kernel.">>$RECORD fi else echo " A candidate driver could not be identified.">> $RECORD fi if test -n "$MPLACE" -a "$lineModem" ; then ASOUND=1 elif test -n "$MPLACE" -a -z "$Loaded" ; then echo " The modem driver $Driver is Not loaded." elif test -n "$MPLACE" -a -z "$lineModem" ; then echo " The modem driver $Driver is loaded but inactive." elif test "$UID" = 0 -a -n "$Driver" ; then /sbin/modprobe -r $Driver && sleep 1 && /sbin/modprobe $Driver ASOUND=1 else echo Other possibilities >/dev/null fi if test -z "$IDENT" -o -z "$ASOUND" -a -n "$Driver" -a "$Driver" != slamr ; then cat< RanOnce.txt exit else echo 2nd run of scanModem | tee RanOnce.txt fi fi echo ASOUND=$ASOUND>>$OP if test "$DMESG" ; then HSFboot=`$DMESG | grep HSF:` if test -n "$HSFboot" ; then echo "Bootup diagnostic `$DMESG | grep HSF:`" >>$RECORD fi SLAMR=`find /lib/modules/ -mindepth 3 -maxdepth 5 -name slamr.* | grep $SYS` if test -n "$DMESG" -a -n "$SLAMR" -a -n "$smart" ; then echo > $TMPM $DMESG | grep -v "SmartLink AMRMO modem" | grep slamr > $TMPM ### typical output # slamr: SmartLink AMRMO modem. # slamr: probe 8086:24c6 ICH4 card... # slamr: mc97 codec is SIL27 # slamr: slamr0 is ICH4 card. if grep slamr $TMPM >/dev/null ; then SLAMRout=1 elif test "$UID" = 0 ; then /sbin/modprobe -r slamr /sbin/modprobe slamr $DMESG | grep -v "SmartLink AMRMO modem" | grep slamr > $TMPM if grep slamr $TMPM >/dev/null ; then SLAMRout=1 fi else cat</dev/null cat $TMPM >/dev/null CODEC=`$DMESG | grep slamr | grep codec | cut -d' ' -f6` echo CODECslamr=$CODEC>>$OP if test -n "$CODEC" ; then COD=`echo $CODEC | cut -b 1-3` echo CODslamr=$COD>>$OP echo " The slamr diagnostic reports a codec is: $CODEC" >>$RECORD fi fi fi fi # DMESG fi # not "$HSF" rm -f $TMPM.2 > /dev/null if test "$SUBSYS" = none ; then # There are rare modem cards without a SUBSYS PCI ID in the firmware echo SUBSYS=none>>$OP else echo "Checking for match with Archived softmodem information." if test -f $TMPM.3 ; then rm $TMPM.3 fi cat</dev/null In the Archive below, the first field is the modem chipset manufacturer for HDA cards OR the mc97 codec for cards with a AC''97/MC97 compatible register, orginally read from the 0:7c and 0:7e fields and then translated. Following is the SubSystem PCI IDs of cards with that codec, which is grep filtered on. This field accepts comments diverse. The HDA cards are first listed. END if test "$PCIDEV" = 8086:2668 ; then HDA=1 # Class 0403: 8086:2668 Class 0403: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller cat<$TMPM.3 14f1 1025:008f 1028:01c9 1028:01cb 1028:01b5 104d:81bb 103c:30a5 1043:1993 11c1 1179:ff00 1025:0070 10cf:1326 163c 1558:0900 END elif test "$PCIDEV" = 8086:27d8 ; then HDA=1 # Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller cat<$TMPM.3 14f1 1028:01cd_14f12bfa 1043:81d8 17aa:2010 1028:01bd 1028:01d6 1028:01d7 1025:0090 1025:0093 1025:0094 152d:0753 104d:81ef 103c:309f 11c1 1179:ff00_11c13026 1179:0001_11c13026 1179:ff01 1179:ff10 ; 103c:30aa 103c:30a2 103c:30a3_11c13026 144d:c504 1019:0f71 1025:0110 1025:0102 1025:0107 17aa:2066_11c11040 14c0:0021_11c11040 17aa:3802_11c11040 10cf:1397 1057 1558:5405_10573055 1631:c022_11c11040 1584:9077_10573055 END elif test "$PCIDEV" = 1002:437b ; then HDA=1 # Audio device: ATI Technologies Inc SB450 HDA Audio (rev 01) cat<$TMPM.3 14f1 1025:009f 30b0:103c 1025:009f 1025:010f 11c1 1462:0369 , 10cf:1326 1179:ff31_11c11040 1057 1043:13d7 END elif test "$PCIDEV" = 10de:026c ; then HDA=1 # nVidia Corporation MCP51 High Definition Audio cat<$TMPM.3 14f1 103c:30b7 11c1 107b:0317_11c11040 END elif test "$PCIDEV" = 10b9:5461 ; then HDA=1 # ALI HDA cat<$TMPM.3 163c 1071:8317_163c3155 END elif test "$PCIDEV" = 8086:2416 ; then # 8086:2416 82801AA ICHAA cat<$TMPM.2 CXT 107b:0012 SIL21 109f:7140 SIL22 14c0:0012 COMPAL Electronics Inc Smartlink SIL27 8086:2416 EOF # cat $TMPM.2 elif test "$PCIDEV" = 8086:2426 ; then # 8086:2426 82801AB ICHAB cat<TMPM.2 SIL21 134d:4c21 END elif test "$PCIDEV" = 8086:7196 ; then # 8086:7196 82440 Banister ICH1 cat<$TMPM.2 SIL27 10cf:10d1 EOF elif test "$PCIDEV" = 8086:2446 ; then # 8086:2446 82801BA ICH2 cat<$TMPM.2 CXT 104d:80df 1025:1027 104d:80e0 CXT21 , SIL21 10cf:10d2 CitiCorp SIL27 1179:0001 EOF elif test "$PCIDEV" = 8086:2486 ; then # 8086:2486 82801CA/CAM AC97 CAM AC'97 ICH3 cat<$TMPM.2 CXT 1668:5421 CXT21, 14f1:5421 MD56ORD V.92 MDC Modem SIL27 103b:0757 Tatung Co , 1014:0223 1014:0503 IBM , 1179:0001 , 144d:2115 Samsung, 1014:0227 BCM64 14e4:4d64 SIL21 134d:4c21 SIL22 14c0:0012 COMPAL Electronics Inc END elif test "$PCIDEV" = 8086:24c6 ; then # 8086:24c6 82801DB ICH4 AC'97 Modem Controller cat<$TMPM.2 CXT 104d:8129 104d:818c_23 , 104d:816a , 1014:055a , 104d:80fa , 14f1:5422_22 , 161f:2030_23 1043:1826 , 103c:3084 , 1025:0064 103c:3080_30, 1014:0559_23 SIL27 152d:0706 152d:6601 QUANTA Computer, 144d:2115 Samsung , 1019:d551 1179:0001 1734:1033 1854:0005 0e11:0860 1025:0061 Acer, 1025:003d 1025:0071 1025:003c 1025:001f 1014:0544 10cf:10d1 17c0:1089 1854:000a 1019:d553 161f:202d 1014:051e 1014:0524 1014:0525 1014:0227 1071:8051 107b:0200 103c:3089 17c0:1069 1025:0038 1025:0051 1025:0035 AGR 107b:0405 SIL21 1071:8050 134d:4c21 4c21:5349 1071:8160 1734:1055 , 1071:8052 but Si3036,8 rev 7, SIL22 1584:4007 1734:102a 1734:106b 14ff:1008 1584:400b BCM64 14e4:4d64 SIL24 144f:1050 Askey Comp. with BroadCom, 1179:ff31 probably conexant END elif test "$PCIDEV" = 8086:24d6 ; then # 8086:24d6 82801EB ICH5 cat<$TMPM.2 CXT 103c:006a SIL27 1179:0001 104d:8128 1468:0601 BCM64 14e4:4d64 END elif test "$PCIDEV" = 8086:266d ; then # SIL2f 1179:0001 cat<$TMPM.2 CXT 1014:0574 1014:0576 1025:006a 14f1:5423 CXT23 no /proc/asound/mc97* 103c:3082 , 1025:0066 1179:ff31 CXT30 , 17aa:207c 103c:3080 107b:0610_30 152d:0745 probably Conexant SIL27 1509:3670 1179:0001 17c0:10bb 103c:3081 103c:099c 27/2f 103c:309d 103c:0944 , 10cf:10d1 14c0:0012 1025:005e 144d:2115 SIL2F 1025:007a END elif test "$PCIDEV" = 1039:7013 ; then # 1039:7013 SIS 630 , there is a SIL21 no Subsystem case. cat<$TMPM.2 CXT 104d:814e 025:0082_23 161f:2038_23 , 1043:1816 CXT22 1025:0082 1558:4201 SIL27 1043:1736 104d:8129 17c0:1059 1033:8216 1028:0195 1025:0028 SIL2f 1025:0083 SIL23 INTEL537 1509:3170 Si3036,8 rev 5 ; SIL22 1631:3003 NorthBridge , 1584:4003 1734:1055 1734:105f 1558:2202 1558:0360 1734:1031 1734:106c 1019:b713 17c4:3001 1558:4201 with, HAMR,http://linmodems.technion.ac.il/archive-fourth/msg01957.html SIL21 Pctel 1039:7013 (one SIL23 case) , 1019:0a14 , 1849:9739 13bd:102f 1019:0c04 1071:8575 1043:10c3 156d:b900 1043:1696 13e0:0270 1043:1457 1071:7522 1019:b732 AGR02 14a4:1027 01-00: Intel ICH - Modem : SiS SI7013 Modem - Modem : playback 1 : capture 1 MOT66 1584:4603 EOF elif test "$PCIDEV" = 1039:7018 ; then # 1039:7018 SIS 960 cat<$TMPM.2 none EOF elif test "$PCIDEV" = 10de:01c1 ; then # 10de:01c1 Nvidia Corp cat<$TMPM.2 none EOF elif test "$PCIDEV" = 10de:00d9 ; then # 10de:01d9 Nvidia Corp cat<$TMPM.2 CXT 1043:1856 Asustek SIL27 103c:006d HP , 1025:0059 Acer EOF elif test "$PCIDEV" = 1106:3068 ; then # 1106:3068 VIA cat<$TMPM.2 CXT 104d:8143 104d:80f6 , 1025:0030 CXT41 SIL27 1025:0046 1025:0033 1025:003e 1025:0046 AMD64, 1734:1078 1509:2870 , 1102:0033 CreativeLabs 1071:8889 1071:8965 1509:2170 SIL22 1743:1032 , 10cf:118e , 1734:1054 , 1462:309e , 1631:e004 , 1543:4c22 , 161f:2032 1584:4005 1558:4701 14ff:100b 14ff:1005 SIL21 10cf:118e , 13bd:1022 , 1543:4c21 1071:8375 1019:0c04 1458:1543 1019:b320 SML 1631:3054 26 , MOT66 1734:109b is a "custom" AgereSystems codec EOF elif test "$PCIDEV" = 1022:7446 ; then # 1022:7446 AMD AC_LINK cat<$TMPM.2 none EOF elif test "$PCIDEV" = 1543:3052 ; then # Silicon Inst cat<$TMPM.2 Motorola 1543:3020 EOF elif test "$PCIDEV" = 10b9:5451 ; then # Audio card with modem Subsystem cat<$TMPM.2 CXT 103c:0850 103c:0024 SIL21 1179:0221 SIL27 1179:0001 EOF elif test "$PCIDEV" = 10b9:5453 ; then # 10b9:5453 ALI 5453 cat<$TMPM.2 none EOF elif test "$PCIDEV" = 10b9:5457 ; then # 10b9:5457 ALI 5457 cat<$TMPM.2 CXT 103c:002a CXT21, 103c:0024 CXT41 , 103c:0029 103c:0850 161f:2027 , 152d:0705 CXT29 SIL27 1179:0001 , 1033:81f3 1019:df56 SIL22 1631:c00e EOF elif test "$PCIDEV" = 10b9:5459 ; then # 10b9:5459 ALI 5459 cat<$TMPM.2 SIL26 10a5:5459 Smart Link Ltd. EOF elif test "$PCIDEV" = 1002:434d ; then # 1002:434d ATI Technologies Inc: cat<$TMPM.2 CXT 1025:0080 SIL27 103c:006b 1179:0001 1025:0052 144d:2115 EOF elif test "$PCIDEV" = 1002:4378 ; then # ATI Technologies Inc ATI SB400 - AC'97 Modem Controller cat<$TMPM.2 CXT 1025:0080 103c:3085 1179:ff31 103c:3091_CXT30 103c:308b_CXT30 SIL27 1179:0001 1462:0131 SIL2f 1025:007e EOF ##ARCHIVEend else echo NEW=$PCIDEV.$SUBSYS>>$OP fi if test -f $TMPM.3 ; then # HDA cases, reduce to common case cut -d' ' -f1 $TMPM.3 > $TMPM.2 # get modem chipset subsys_chip=`cat $TMPM.3` for subsys in $subsys_chip do subcheck=`echo $subsys | cut -d_ -f1` CHIP=`echo $subsys | cut -b 11-` if test -n "$CHIP" -a "$subcheck" = "$SUBSYS" ; then HDAmodemChip=0x$CHIP echo HDAmodemChip=0x$CHIP>>$RECORD echo HDAmodemChip=0x$CHIP>>$OP subsys_chip= fi done fi if test -f $TMPM.2 ; then CODECp=`cat $TMPM.2 | cut -d' ' -f1` if test "$CODECp" = CXT -o "$CODECp" = 14f1 ; then IDENT=hsfmodem elif test -z "$CODECp" ; then CODECp= else IDENT=slmodemd fi fi echo CODECp=$CODECp>>$OP # echo CODECp=$CODECp fi # $SUBSYS if test "$SUBven" = 14f1 ; then subsytem=", $SUBven is a Conexant vendor ID" IDENT=hsfmodem COD=CXT elif test "$SUBven" = 14e4 -o "$SUBven" = 134d ; then subsytem=", $SUBven is an ALSA compatible identification" IDENT=slmodemd else subsytem= fi echo CODEC=$CODEC>>$OP echo COD=$COD>>$OP echo HDA=$HDA>>$OP fi # Already IDENT from PCI IDn if test -n "$IDENT" ; then # Sending IDENT to scanout.PCIbus, to be subsequently SOURCED. echo IDENT=$IDENT | tee -a $OP IDENTed=1 fi echo TST=$TST>>$OP # Clear if there are further analysis rounds package= IDENT= SOFT= PCIDEV= SUBSYS= NAME= hsfmodem= CNX= CLASS= slmodemd= slamr= HDA= TST= done # with a bus with PCIBUSes fi if test -z "$IDENTed" ; then cat<>$RECORD A modem was not detected among the PCI devices: ------------------------------------------------ `$LSPCI | grep -v USB | grep -v bridge` ------------------------------------------------ with USB and bridge devices not displayed. Please provide any independent information available on your modem. If your modem is mounted on an ISA card, scanModem could not access it. If an alternative boot into Microsoft windows can be done, do mouse clicks on: Start > Settings > Control Panel > Classical View (for Window XP) > System > Hardware > Device Manager > Modems > Click on the + > Modem. Double click to expand the graphic. Manufacturer information may be displayed. For example, CXT stands for Conexant. Click the Diagnostics Tab. Record any hardware ID or vendor and device information. Next do the Query Modem and record the ATI specifications displayed such as: ATI3 - Agere SoftModem Version 2.1.22 ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27 Try to identify the modem setup file, with name perhaps MODEM.INF. If may contain chipset Vendor informaton. END if test -f /proc/asound/pcm ; then cat<>$RECORD Checking for audio+modem support in /proc/asound/pcm `cat /proc/asound/pcm` END fi fi ## A few environmental variables governing ouputs # DPKG is characteristic of Debian and derivative Distros DPKG=`ls /usr/bin/dpkg /usr/sbin/dpkg 2>/dev/null` RPM=`ls /usr/bin/rpm /usr/sbin/rpm 2>/dev/null` ###### Begun writes off card specific data RUNS=`ls Modem/scanout.* 2>/dev/null` for run in $RUNS do # chmod a+rwx $run # cat Modem/scanout >> $run source $run OP=$run bus=`echo $run | cut -d. -f2-` if test -z "$IRQ" ; then IRQ=test echo using IRQ=test fi if test "$PCIDEV" = 10b9:5457 -a "$IDENT" = slmodemd ; then IDENT=slamr fi echo Using scanout.$bus data, and writing guidance to ModemData.txt NAME=`echo $NAME | cut -d'(' -f1` cat <>$RECORD For candidate modem in PCI bus: $bus $CLASS $NAME Primary PCI_id $PCIDEV END if test -z "$SOFT" ; then if test "$IDENT" = Agere.SV2P -o "$IDENT" = Agere.SV2PP -o "$IDENT" = Agere.Wildwire -o "$IDENT" = 3COM.winmodem -o "$IDENT" = AmbientTech -o "$IDENT" = CirrusLogic -o "$IDENT" = Broadcom -o "$IDENT" = HSF.Riptide -o "$IDENT" = HCF.Riptide ; then unsupported="Under Linux 2.6.n kernels, the chipset is NOT SUPPORTED . Read InfoGeneral.txt about alternatives." fi cat<>$RECORD Support type needed or chipset: $IDENT $unsupported END else cat<$TMPM , an Intel type. INT65 SIL26 unsupported , an AgereSystems type. SIL27 SIL2F MOT66 AGR01 AGR02 11c1 , a Pctel type. SIL21 SIL23 , a Smartlink type. SIL22 163c , a Broadcom type. SIL24 BCM64 , a Conexant type, using hsfmodem software.. CXT 14f1 , a Motorola type. 125d Motorola END if test -n "$CODECd" ; then if test "$COD" = CXT ; then dchipset=`grep CXT $TMPM | cut -d' ' -f1-4` else dchipset=`grep $CODECd $TMPM | cut -d' ' -f1-4` fi fi if test -n "$CODECp" ; then if test "$COD" = CXT ; then pchipset=`grep CXT $TMPM | cut -d' ' -f1-4` else pchipset=`grep $CODECp $TMPM | cut -d' ' -f1-4` fi fi if test -z "$CODECd" -a -n "$CODECslamr" ; then if test "$COD" = CXT ; then IDENT=hsfmodem else IDENT=slmodemd fi CODECd="$CODECslamr, from a slamr test." fi if test -n "$HDAmodemChip" ; then HDAchip="The HDA card softmodem chip is $HDAmodemChip" fi if test "$COD" = CXT -o "$CODECp" = CXT ; then cnx="CXT is a generic for all CXTnumbers, with Linuxant hsfmodem software support." fi if test -z "$HSF" -a -n "$CODECp" -a "$CODECd" -a "$CODECd" != "$CODECp" ; then differ=" Diagnostics and the Archive data DISAGREE" fi cat <>$RECORD Subsystem PCI_id $SUBSYS $subsytem Softmodem codec or Vendor from diagnostics: $CODECd$dchipset from Archives: $CODECp$pchipset $cnx$differ $HDAchip END if test -z "$pchipset" -a -n "$dchipset" ; then cat <>$RECORD This is a NEW softmodem case! Please send the output ModemData.txt to DISCUSS@linmodems.org , even if further assistance is not needed. It will enrich the Archive and help others! ------------------------------------------- END sleep 3 fi cat <>$RECORD Lacking a dsp (digital signal processing) chip, the modem is a software intensive or "softmodem" type. Its primary controller manages the traffic with the CPU. But the software needed is specified in the Subsystem. ----------------------------------------- END echo "Support type needed or chipset: $IDENT">>$RECORD echo >>$RECORD if test "$PCIDEV" = 8086:266d -a "$KRELEASE" -le 8 -a "$KMAJOR" = 2.6 ; then echo " ALSA modem drivers of kernel-version 2.6.8 and earlier lack support for the 8086:266d soft modem controller">>$RECORD fi if test -z "$IDENT" ; then maybe="may be" Smart=1 HSF=1 cat <>$RECORD Support can likely be achieved through two mutually exclusive alternatives: 1) An ALSA modem driver plus slmodemd. Read Smartlink.txt for details, and to test get the package $SLMODEMD from: http://linmodems.technion.ac.il/packages/smartlink/ 2) The hsfmodem software for Conexant chipset modems: Read Conexant.txt END fi if test "$IDENT" != hsfmodem ; then DONE=1 ALSABASE=`ls /usr/share/alsa* 2>/dev/null` if test -z "$ALSABASE" ; then cat<>$RECORD Packages providing alsa-base and alsa-utilities support should be installed, for necessary support of ALSA modem drivers and slmodemd actions. END fi if test "$TST" -a "$HDA" ; then PORT=hw:0,1 fi cat <>$RECORD An ALSA (Advanced Linux Sound Architecture) modem driver: $Driver provides Low Level support enabling contact with the modem hardware. For all BUT Conexant chip soft modems (using hsfmodem software) complementary High Level support is through a Smartlink utility: slmodemd Download from http://linmodems.technion.ac.il/packages/smartlink/ the package $SLMODEMD having a compiled slmodemd. Unpack under Linux with: $ tar zxf $SLMODEMD and read instructions therein. But briefly, the modem is setup with command: $SUDO slmodemd -c YOUR_COUNTRY --alsa $PORT reporting dynamic creation of ports: /dev/ttySL0 --> /dev/pts/N , with N some number Read Smartlink.txt and $RECORD2 for follow through guidance. END fi if test -z "$HSF" ; then cat<>$RECORD2 Complementation of $Driver, slmodemd and a dialer utility --------------------------------------------------------- THe ALSA (Advanced Linux Sound Architecture} modem driver $Driver provides ONLY a low level access to the hardware. The complementing HIGH level support for ALSA modem drivers is through a Smartlink utility: slmodemd An ALSA compatible and compiled slmodemd is in the package $SLMODEMD with download from http://linmodems.technion.ac.il/packages/smartlink/ Unpack under Linux with: $ tar zxf $SLMODEMD and read instructions therein. Typically the driver $Driver will be autoloaded on most Systems. Then a Root permission command: $SUDO slmodemd -c YOUR_COUNTRY --alsa $PORT will announce creation of ports /dev/ttySL0 --> /dev/pts/N , N some number The /dev/ttySL0 is a symbolic link to the true modem port /dev/pts/N USA is the YOUR_COUNTRY default. See other Country alternatives by: slmodemd --help slmodemd --countrylist Should there be a failure report like: -------- ALSA lib pcm_hw.c:1305:(_snd_pcm_hw_open) Invalid value for card error: alsa setup: cannot open playback device $PORT No such device error: cannot setup device $PORT -------- First verify that packages providing ALSA audio support are installed. Names vary with the Linux distribution but they are like "alsa-base" and "alsa-utilities". In these are installed, Next try as Root unloading and loading the driver: $SUDO modprobe -r $Driver $SUDO modprobe $Driver Then retest the: $SUDO slmodemd -c YOUR_COUNTRY --alsa $PORT slmodemd MUST be kept running throughout a dial out session. Note that mere loading does NOT establish that $Driver is the correct driver, rather than hsfmodem drivers for Conexant chipset modems. But $Driver may still support readout of Subsystem information. -------------------------------------------------------------------------- A dialer utility such as wvdial (perferable) is still needed for dialout. slmodemd MUST be kept running throughout a dialout session. On some Systems, putting the slmodemd process in the background with an &: $SUDO slmodemd -c USA --alsa $PORT & causes subsequent dialout failures. Read Testing.txt for follow through details and Smartlink.txt for additional information. END fi # HSF if test "$Driver" ; then if test "$Driver" = snd-ali5451 -a "$KMAJOR" = 2.6 -a "$KRELEASE" -le 12 ; then echo " Driver $Driver includes modem support beginning within 2.6.12 kernels.">>$RECORD fi if grep $DRIVER_ /proc/modules>>/dev/null ; then cat<>$RECORD Already loaded into the kernel is $Driver and audio drivers it depends on, displayed by: lsmod | grep $DRIVER_ Module Size Used by ------------------------------------- `lsmod | grep $DRIVER_` END fi if test -z "$HDA" -a -z "$REGISTERS" ; then cat<>$RECORD else cat<>$RECORD The diagnostic outputs for this softmodem section have their raw information in folders and text files under /proc/asound/ which you can browse. The information is from files: /proc/asound/pcm ------------------------------- `cat /proc/asound/pcm` /proc/asound/modules ------------------------------- `cat /proc/asound/modules` END if test "$AC01" ; then cat<>$RECORD $AC01 ------------------------------- `cat $AC01` ------------------------------- Current support status of HDA cards is: Vendor IDs Chip maker Support type ---------- ---------- ------------- 0x14f12bfa Conexant hsfmodem , not slmodemd compatible 0x11c13026 AgereSystems snd-hda-intel, slmodemd supported 0x11c11040 AgereSystems " " , patch needed 0x11c13055 AgereSystems " " , " 0x163c3055 Smartlink " " , " 0x163c3155 " " " , " 0x10573055 Motorola " " , " 0x10573155 " " " , "" as of October 2006. END fi if test "$REG" ; then cat<>$RECORD $REG ------------------------------- `grep 0:7c $REG` and `grep 0:7e $REG` which were translated from hexadecimal code into: $CODECd END fi if test "$REG" ; then cat<>$RECORD $mc97 ------------------------------- $mc97line END fi if test -x /usr/bin/aplay ; then cat<>$RECORD and from the command: aplay -l | grep -i modem `aplay -l | grep -i modem` END fi fi # /proc/asound echo "----------------end Softmodem section --------------">>$RECORD SOFTdone=1 fi # SOFT if test -z "$IDENT" ; then cat<>$RECORD scanModem could not identify the Support Type needed from diagnosics or archives. If an alternative boot into Microsoft windows can be done, do mouse clicks on: Start > Settings > Control Panel > Classical View (for Window XP) > System > Hardware > Device Manager > Modems > Click on the + > Modem. Double click to expand the graphic. Manufacturer information may be displayed. For example, CXT stands for Conexant. Click the Diagnostics Tab. Record any hardware ID or vendor and device information. Next do the Query Modem and record the ATI specifications displayed such as: ATI3 - Agere SoftModem Version 2.1.22 ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27 Try to identify the modem setup file, with name perhaps MODEM.INF. If may contain chipset Vendor informaton. END # ./scanModem test e159:0001 8086:0003 elif test "$Vendor" = e159 ; then IDENT=INTEL537 Vendor=8086 cat<>$RECORD Vendor e159 is Tiger Jet , http://www.tjnet.com/ Controller e159:0001 translates PCI commands to the serial link used by the silabs DAA from the si3034, si3044 and si3056 family. The e159:0001 with SubSystem 8086:0003 is TJ320 v2.0 is the first and still most common of the Intel537 modem family. However primary controller chip can have broader uses: http://www.tjnet.com/chips/tiger320.htm Though having its own driver package under 2.4.n. kernels, support (if any) from Intel is now included within the Intel-537EP package. ====== end Tigerjet section ======= END fi if test -z "$IntelDone" -a "$Vendor" = "8086" -o "$CODEC" = SIL26 -o "$CODEC" = INT65 ; then # ./scanModem test 8086:1040 8086:1000 # ./scanModem test 8086:1040 8086:1005 if test "$IDENT" = INTEL536EP -o "$IDENT" = INTEL537 -o "$IDENT" = INTEL537EP -o "$IDENT" = INTEL537SP ; then cat <>$RECORD In 2006, Intel appears to have ceased updates for Linux. For the INTEL537 and INTEL536 chipset modems, the most current support is provided at: http://phep2.technion.ac.il/linmodems/packages/intel/Philippe.Vouters/ But regular support is not available, see: http://archives.linmodems.org/24939 : The outdated official Intel support packages can be accessed through: http://developer.intel.com/design/modems/support/drivers.htm Read Intel.txt and $RECORD2 for follow through guidance. END fi echo>>$RECORD echo Writing Intel.txt | tee -a $RECORD cat<Modem/Intel.txt Intel modems ============================== Vendor=8086 is Intel, Inc. producing chipsets for 536EP host controller free (HCF) modems, 537 soft modems, several AC'97 softmodem controllers and HDA (High Definition Audio) cards. For INTEL537 and INTEL536 chipset modems, the most current support is provided at: http://linmodems.technion.ac.il/packages/intel/Philippe.Vouters/ In 2006, Intel appears to have ceased updates for Linux. But their offical support packages can be accessed through: http://developer.intel.com/design/modems/support/drivers.htm The AC'97/CNR controllers of softmodems usually do NOT use Intel software. Rather, the modem Subsystem determines the required software support. Subsystems with Conexant chips require hsfmodem software from http:/www.linuxant.com Other Subsytems are currently supported by Open Source ALSA drivers plus the slmodemd helper. The HDA cards may host softmodem chipsets, through a different bridging then the AC'97 types. Both Conexant chip and ALSA supported chipset types have been encountered. For the 537 class softmodems, prior to software release 2.70.95.0, there were distinct support packages: PCI_id SubSystem_id Older_package Comment ------------------------------------------------------------------------------- e159:0001 8086:0003 537 TJ320 v2.0 controller 8086:1080 8086:100[7,8,A,0] 537EP 8086:1080 AC'97 controller 8086:1040 8086:1005 537SP 8086:1080 AC'97 controller various various 537AA_secure primary AC'97 controller over si3054 chip with SIL25 codec si == Silicon Instruments various various 537EA primary CNR controller over si3038 chip with INT65 codec -------------------------------------------------------------------------------- But all are currently supported by a single Intel-537EP package The 537AA and EA types may be alternatively be supported by an ALSA modem driver and the Smartlink slmodemd. Intel-536 chipset modems have an onboard DSP (digital signal processor) chip. They may alternatively be served by the 537EP software, with added CPU burden. A very detailed installation report cogent to 537 type modems is at: http://linmodems.technion.ac.il/archive-fifth/msg00541.html For Debian like distros, a modified install script is at: http://members.lycos.co.uk/persianlinux/downloads/intel536EP/Intel536_inst_debian END if test "$IDENT" = Intel_DSVD ; then echo " PCI id 8086:1231, Serial controller: Intel Corp. DSVD Modem is without Linux support.">>$RECORD fi cat<>/dev/null There are Five types of Intel 537 chipsets sold to a variety of modem assemblers, though they may are all called out as Intel 537 by the LSPCI tool used in $0. Intel 537, a 8086:0003 subsystem PCI card modem with TigerJet PCI Controller - e159:0001 The installer is: Intel-537-MostRecentVersion.tgz Intel 537EP, an Intel PCI modem si3052 chip(Intel 537EP(G)), si=Silicon Instruments 8086:1080 Intel AC97 controller with modem subSystem 8086:100[7,8,A,0] with with installer is intel-537EP_MostRecentVersion.tgz at http://downloadfinder.intel.com/scripts-df/Product_Search.asp?Prod_nm=537ep Intel 537SP (was known as MD5690) a PCI modem with dsp on board but disabled. 8086:1040 Intel AC97 controller, with modem subsyst 8086:1005 with installer intel-537SP-MostRecentVersion.tgz There are ambiguities in identification of modems with two Intel537 AA and EA chipset types http://linmodems.technion.ac.il/archive-third/msg02463.html http://linmodems.technion.ac.il/archive-third/msg02476.html Intel 537AA/EA, MDC/AC97 controller with si3054 modem chip currently supported AC97 controllers - Intel (ICH3,4,5), VIA, NVIDIA, SIS, Realtek, ALI, ATI with installer intel-537AA_secure-MostRecentVersion.tgz serving also Intel 537EA, CNR controller with si3038 modem chip Intel 537AA/EA should be supported by ALSA modem drivers plus slmodemd END if test "$IDENT" = INTEL536EP -o "$IDENT" = INTEL537EP -o "$IDENT" = INTEL537 -o "$IDENT" = INTEL537SP ; then cat<>Modem/Intel.txt Intel 536EP Modem Driver For Fedora Core 5 from volunteer maintainer Philippe Vouters If you have a look at 537_boot in the driver's root directory, you will notice the device is /dev/537. $ export MODEM_TYPE= $ make 537 From a root account, you: $ make uninstall $ make install $ dmesg If you do not find any error, do proceed with the $ efax test in the previously sent attachment. You may also recall this $ efax command adding to the end "-t 537_inst". If efax answers busy, then it does sound good. If it answers "NO DIALTONE", then check if the modem is actually connected to a working phone line and if yes does send your $ dmesg along with $ efax output. If this does not work, reply with the $ efax output along with $ dmesg output. Note that the hamcore software is initializing with your data after a fresh install and the modem may not be immediately responding. However if the $ efax command works, then it should be responding on a wvdial command. Please do provide me with the exact command output along with $ dmesg data. Without these, it is difficult for me to pinpoint to the actual problem. Be also aware that in the AT+GCI=3D wvdial AT command the 3D is for France. Read the readme.txt in the driver's root directory to find out the correct AT+GCI command according to your country. Also providing you attempted to install a Fedora Core 2 537EP driver onto your Fedora Core 5 distribution, please do clean up all files. Yours truly, Philippe For FC5 users under FC5, Please read prior to rebuilding the 537EP driver. http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:23914:200607:amjpfhgkifkbjmnibmjf Intel claiming partial source and providing binaries built on a 32-bit Pentium aware computer, you may use the drivers ONLYon a 32-bit Linux and a Pentium instruction set compatible processor. The driver code also handles a SMP configuration, as found in modern multi-core processors, such as the Opteron and Xeon processors. 1/ 536EP and 537EP installation: First read the readme.txt file located in the detarred created directory. Make sure your computer has all the prerequisites (kernel-devel rpm installed in particuliar) and your /usr/src/kernels/'uname -r'/include/linux/autoconf.h does match your processor configuration. With this, check especially for: $ grep SMP /usr/src/kernels/'uname -r'/include/linux/autoconf.h for CONFIG_SMP defined whereas your computer only contains a single processor. If you have such a mismatch, reinstall your Linux distribution from scratch. 2/ From any account, you can under the detarred created directory: $ make clean $ make 536 or $ make 537 For a 537 family modem, you may have to: $ export MODEM_TYPE= prior to the: $ make 537 3/ Only from a root account, you can $ make install or $ make uninstall Check with: $ dmesg > dmesg.txt Read the dmesg.txt looking for any driver's run-time problem. The 536EP driver has proved to work fine with efax, hylafax, wvdial, KPPP. The 537 driver has proved to work fine on SuSE 10.1. 4/ Checking the installation. Assuming you have a 536EP modem, you should see the following: $ ls -l /dev/modem lrwxrwxrwx 1 root root 10 jan 22 12:37 /dev/modem -> /dev/536ep $ ls -l /dev/536* crw-rw-rw- 1 root root 240, 1 jan 22 13:08 /dev/536ep crw-rw---- 1 root root 240, 1 jan 22 13:08 /dev/536ep0 With such /dev/536ep protection modes, your modem is ready for use by software from any account. Such software includes efax. Your modem being connected to a phone line, it is advised to perform the following quick and simple check: $ efax -v ewinchmart wait for efax waiting for a phone call. Then abort it with CTRL-C. Check that driver is properly working with: $ dmesg 5/ Testing the modem for an Internet connection with wvdial: from a root account, gedit /etc/wvdial.conf containing information such as: [Modem0] Modem = /dev/modem Baud = 115200 SetVolume = 3 Dial Command = ATDT Init1 = ATZ Init2 = AT+GCI=3D Init3 = ATM1L3 Carrier Check = no FlowControl = CRTSCTS #Stupid Mode = yes [Dialer tiscali] Username = Password = Phone = Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Inherits = Modem0 tiscali is my Internet provider. You may replace the string [Dialer tiscali] by [Dialer ]. Do not attempt to set the Baud rate to a value greater than 115,200 bps. Stressing TCP/IP performance tests have shown that you will not get more overall performance, and you may cause the modem driver to lock your computer, forcing you to power down it. Still from a root account, test the Internet connection with the command: $ wvdial & Check if the modem correctly dials. Check if the ppp daemon is correctly synchronizing and authenticates you with no problem. Providing the ppp daemon does not work correctly, then $ kill 1% to abort wvdial. If ppp daemon is not working properly, you might remove in the proposed /etc/wvdial.conf file the comment on the line: #Stupid Mode = yes and restart $ wvdial & Check using an Internet browser, such as Firefox, that you can display pages from the Web. kill the wvdial program with the command: $ kill %1 6/ Configuring with KPPP. KPPP on Fedora Core 4 Gnome desktop can be configured clicking on Applications->Internet->KPPP and clicking on Configure and New. Enter the data relative to your Internet account. For configuring the modem, in the peripheral tab: Enter your string as the modem name. As the peripheral device, select in the listbox: /dev/modem. For flow control, select hardware [CRTSCTS] End of line CR/LF Connection speed 115200. Do not use a lock file and select the modem response delay to 120 secondes (maximum). Unselect "wait tone before dialing" and set "active wait" to 50 secondes. In the modem tab, clicking on modem commands, I set my 536EP modem to the following: Pre-initialization delay: 100 Init String 1: ATZ Init String 2 : Post-initialization delay : 156 Dialing speed : 100 Response after initialization: OK No tone detection : ATX3 Dialing string : ATDT "Connected" Response: CONNECT Busy Response: BUSY No Carrier Response: NO CARRIER No tone response: NO DIALTONE Hangup command: +++ATH Hangup response: OK Modem query command: ATA Ring response: RING Response "Response": CONNECT DLP response: DIGITAL LINE DETECTED Escape string: +++ Escape response: OK Guard time: 255 Mute/low/high volume: M0L0 M1L1 M1L3 If you freshly installed the modem and with KPPP you interrogate it it might happen the modem does not answer ATI commands the first time. Retrying once again, makes the modem answer. END fi echo " ======= end Intel section =======">>Modem/Intel.txt IntelDone=1 fi # ./scanModem test 127a:2013 some.thng for HSF # ./scanModem test 127a:1002 some.thng for HCF # ./scanModem test 127a:1025 some.thng for ambiguous HSF or HCF if test -z "$CXTdone" -a -n "$HSF" -o "$IDENT" = hcflinmodem -o "$IDENT" = hsfmodem -o "$Vendor" = 127a -o "$Vendor" = 14f1 -o "$IDENT" = HCF.HSF ; then cat <>$RECORD Formal support for Conexant chipset modems are available ONLY through http://www.linuxant.com/drivers. Read Conexant.txt for details. and $RECORD2 for follow through guidance. Driver speed is limited to 14,400 until a key is purchased. There is NO freeware alternative. There are two support package types: hsfmodem and hcflinmodem. http://www.lorenzobettini.it/linux/LinuxSonyVaioVGN-S5VP_B reports a problem and solution in stalling a key, after testing of the free low speed download. END if test "$PCIDEV" = 14f1:2f50 -o "$PCIDEV" = 14f1:2215 ; then echo " Support for the 14f1:2f50 and 14f1:2215 HSF modems is projected early in 2007 from Linuxant.">>$RECORD fi if test "$IDENT" = HCF.HSF ; then cat <>$RECORD $PCIDEV could be either a HSF or HCF Conexant modem, because of ambiguous use of the PCI ID by modem assemblers. First try the hcflinodem package. If the installation aborts, then use the hsfmodem package. Read Conexant.txt for details and $RECORD2 for follow through guidance. END fi if test "$IDENT" = HSF.Riptide -o "$IDENT" = HCF.Riptide ; then cat<>$RECORD Under 2.4.n kernels install both the RIPTIDE and HCF or HSF drivers, otherwise the modem will *not* work. http://www.linuxant.com/drivers/riptide/index.php explains why this modem which REQUIRES the additional installation of a Riptide driver. Under 2.6.n kernels, the hsfmodem package may provide modem support. But there will be no audio functions. See http://www.linuxant.com/drivers/riptide/index.php?PHPSESSID=19b31933499f87b5b150db2315f714bd END fi if test "$IDENT" = HCF ; then echo " The modem requires a hcflinmodem package.">>$RECORD fi if test "$IDENT" = hsfmodem -o "$IDENT" = HCF.HSF ; then version="$KRPM"_ubuntu_i386 echo " The hsfmodem package serves a great variety of Conexant chipset modems. ">>$RECORD if test "$HDA" -a "$KRELEASE" -le 15 -a "$KMAJOR" = 2.6 ; then cat<>$RECORD But for High Definition Audio cards hosting Conexant softmodems, and kernels before 2.6.16, a patched version must be used and is available at http://linmodems.technion.ac.il/packages/hsfhda/ . Under Linux do: $ tar zxf hsf*.tar.gz $ cd hsfmodem-7.47.00.03full Look around: $ ls Install the package with: $ $SUDO make install $ $SUDO hsfconfig should complete the setup. See wvdial.txt for follow through information. END else if test -n "$SUDO" ; then cat<>$RECORD From http://www.linuxant.com/drivers/hsf/full/downloads-ubuntu-x86.php download hsfmodem_VersionSpec_k$version.deb.zip with $KRPM equivalent to $SYS, your kernel version. Under Linux unpack with: $ unzip hsfmodem*.zip Then install with: $ $SUDO dpkg -i hsfmodem*.deb Subsequently, the modem should be found with $ $SUDO wvdialconf /etc/wvdial.conf Edit in your personal information with: $ $SUDO gedit /etc/wvdial.conf and try dialing out with: $ $SUDO wvdial. See Testing.txt for details. END else cat<>$RECORD Start at http://www.linuxant.com/drivers/hsf for eventually download of a hsfmodem-SomeVersion.zip package with SomeVersion containing your kernel_version $SYS in the filename if possible. These packages have compiled drivers. Otherwise download the generic hsfmodem-Version.tar.gz package. Its usage will require compiling. END fi fi fi echo " Read Conexant.txt">>$RECORD echo >>$RECORD if test -n "$KMAJOR" -a "$KMAJOR" = 2.4 ; then patch="For 2.4.n kernels, installation may require a patch variable: cnxinstall --patch" fi echo "Writing Conexant.txt" | tee -a $RECORD echo >>$RECORD cat<>Modem/Conexant.txt Conexant chipset modems section -------------------------------- Vendors 14f1 is Conexant, inheritor of the former vendor 127a Rockwell modem technology. There are also Conexant chipsets in some modems from vendors: 158b Allied Data Tech., 1024 Zenith 141a Apache Micro 148d Digicom Systems. Linux drivers for Conexant chipset modems are provided ONLY through http://www.linuxant.com/drivers. The HCF chipset modems have a dsp (digital signal processing) chip, while the HSF lack a dsp and this function is performed by the CPU under software direction. $patch For a crash issue with the 2.6.16 kernel, please make sure that your kernel was not compiled with the CONFIG_4KSTACKS option is not set as the HSF modem driver is known to requires more than 4K of stacks in a few cases. The are several alternate kernels supporting hsfmodem available at http://www.linuxant.com. Look for their Link/URL on the page with your needed hsfmodem package. To get software, go to http://www.linuxant.com/drivers -Find the HCF or HSF menu in the left part of the screen. -Read README. -Read INSTALLATION. -Click DOWNLOAD. -Accept conditions. -Find text: "You can download HCF (or HSF) modem packages from the driver download page." and click there. -Look for your distribution, your processor, and your kernel. -Download the matching file. -Read again and, if you do this under Windows, print the installation instructions matching the kind of driver file which you downloaded. -Now just follow these instructions. http://www.linuxant.com/drivers/hsf/downloads-patches.php has patches that may be necessary for recent kernels. A detailed software installation example is provided at: http://linmodems.technion.ac.il/archive-fourth/msg00350.html After loading of HSF drivers, there will be selective displayed by command: # /sbin/lsmod | grep hsf with an output like: ----------- Module Size Used by Tainted: P hsfich 119116 0 (autoclean) hsfserial 26388 0 (autoclean) hsfengine 1126348 0 (autoclean) [hsfserial] hsfosspec 35328 0 (autoclean) [hsfich hsfserial hsfengine] --------- plus many others not modem related. While drivers are pre-compiled for some Linux distributions, the installation of the HCF/HSF packages DOES in general require kernel-source/ preparation, as described in Modem/DriverCompiling.txt. There is good support from Linuxant.com, but first gather data. In a terminal # su - root or prefix commands with sudo for Ubuntu related distributions. hsfconfig --dumpdiag If this command crashes your machine, please try instead: hsfconfig --dumpdiag --noprobe Send the hsfdiag.txt located in the folder /tmp/ to MODEM.SUPPORT@linuxant.com There is a conflict between modules snd-intel8x0m and hsfmc97ich. The snd-intel8x0m Must be loaded first or the system may hang upon hsfmc97ich insertion. http://linmodems.technion.ac.il/archive-fourth/msg03027.html Rafael Espindola has ported old version 5.03.27 driver code to 2.6.12. This is an Experts ONLY resource with current information at http://www.ubuntuforums.org/showthread.php?t=180632 END if test -n "$maybe" ; then package=hsfmodem fi if test -n "$DPKG" ; then INSTALL="$SUDO dpkg -i $package*.deb" elif test -n "$RPM" ; then INSTALL="rpm -i $package*.rpm" else INSTALL="your distributions installation tools." fi if test "$SUDO" -o "$ISSUER" = debian ; then wvtest=/etc/wvdial.conf else wvtest=wvtest fi cat<>Modem/Conexant.txt From http://www.linuxant.com/drivers, get $package package(s) with $KRPM included in the filename. If such a package cannot be found, get the generic package, for which compiling drivers will be necessary. Copy the package to your Linux partition. Unpack with: unzip $package*.zip Under root/admin permission, install with package with $INSTALL Should the modem hardware not be a Conexant type, the installation will ABORT with an informative message. Continue with any output instructions. Following a successfull installation, The modem should be detected during the root/admin command: wvdialconf $wvtest Edit your personal information in with: $ $SUDO gedit $wvtest See details on dialout usage in Testing.txt END INSTALL= echo " ====== end Conexant section section =======">>Modem/Conexant.txt fi CXTdone=1 # ./scanModem test 134d:2189 if test "$PCIDEV" = 134d:2189 ; then IDENT=slamr Driver=slamr cat<>$RECORD 134d:2189 is a PCTel HSP56 MicroModem 688T modem with the Oasis chipset. Under 2.6.n kernels, it is only supported through the Smartlink slamr.ko driver. END fi if test "$IDENT" = slmodemd -o "$IDENT" = slamr -o -n "$slmodemd" -o -n "$maybe" ; then if test "$IDENT" = slamr -o "$PCIDEV" = 10b9:5457 ; then if test "$MAJOR" = 2.6 -a "$KRELEASE" -ge 18 ; then cat <>$RECORD Pending a fix for the slmodem-2.9.11 code, there is a current failure in the compilation of the slamr.ko driver for 2.6.18 and later kernel releases. Downgrade to a 2.6.17 or earlier kernel if necessary. Otherwise, END fi cat <>$RECORD The modem is supported by the Smartlink slamr driver plus the slmodemd helper utility. Read the Smartlink.txt and $RECORD2 for follow through guidance. END UG="$SUDO modprobe ungrab-winmodem" Driver=slamr SLMODEM_DEVICE=/dev/slamr0 cat<Modem/Smartlink.txt Smartlink modem setup. ----------------------------------------------------------- The modem should setup with: $UG $SUDO modprobe $Driver $SUDO slmodemd -c YOUR_COUNTRY $alsa $OPT $SLMODEM_DEVICE which should announce creation of ports: /dev/ttySL0 --> /dev/pts/N , N some number Specify the symbolic link /dev/ttySL0 as the port to be used by dailer software. END if test "$PCIDEV" = 10b9:5457 ; then cat<>Modem/Smartlink.txt Support for ALI5457 modem cards is irregular, ALI has not provided chipset specifications needed for rigourous improvements. Consequently these modems cannot be served by ALSA drivers, but are sometimes supported by the slamr driver. Support has been effective for some Systems, but has failed for others END fi cat<$TMPM slamr-2.6.10-5-386.tgz slamr-2.6.12-9-386.tgz slamr-2.6.12-9-686.tgz slamr-2.6.12-10-386.tgz slamr-2.6.12-10-k7.tgz slamr-2.6.15-23-386.tgz slamr-2.6.15-1.2054_FC5.tgz slamr-2.6.15-27-386.tar.gz END if grep $SYS $TMPM >/dev/null ; then cat<>$RECORD Download slamr-$SYS.tgz from http://linmodems.technion.il/packages/smartlink/ under Linux, open a terminal and unpack with: $ tar zxvf slamr-$SYS.tgz Move into the unpacked folder $ cd slamr-$SYS Look around $ ls Run the $ sudo ./setup Afterwards do: $ slmodemd --help $ slmodemd --countrylist &> Clist.txt If not in the USA, look for your COUNTRY_NAME therein. Do and edit with: $ sudo gedit /etc/default/sl-modem-daemon and therein replace the USA in the line: SLMODEMD_COUNTRY=USA This will provide for the correct Country setting in the automated: slmodemd -c COUNTRY /dev/slamr0 Read the Smartlink.txt and YourSystem.txt END fi fi enough="> $SLMODEMD will suffice for getting online, though read on about automation. <<<" if test -z "$SmartDone" ; then echo Writing Smartlink.txt | tee -a $RECORD cat<> Modem/Smartlink.txt SmartLink (http://www.smlink.com/) chipset modems are sold under a variety of BrandNames, and have vendor IDs 163c, 2000, 2003, and 2004. Conexant bought Smartlinks's modem techhology sector in 2005. While Linux updates are not expected from Conexant, Linux support is still very good thanks to volunteer Linux maintainer Sasha Khapyorsky. Get his updated software from: http://linmodems.technion.il/packages/smartlink/ A high level support component is a smart helper: slmodemd Acting through one of several drivers, it creats ports dynamically and supports COMM and FAXing functions. During facsimile usage, the AT&F command is not supported. A means of implmenting the CNG is lacking, because this function is encoded within the dsplibs.o precompiled at Smartlink, Inc. See http://marc.theaimsgroup.com/?t=116026350800001&r=1&w=2 http://marc.theaimsgroup.com/?l=hylafax&m=116041369404444&w=2 Usage of SMP (Symmetric MultiProcessor) mother boards is supported. For service on 64 bit AMD x86_64 processor mother boards, see http://linmodems.technion.ac.il/archive-fourth/msg02594.html http://linmodems.technion.ac.il/archive-fifth/msg02490.html However a 64 bit compilation of a proprietary dsplibs.o conponent is not available. Hence for modem usage the computers must be operated in 32 bit mode. The slmodemd supports a few different types of modem drivers. Below the suffix .ko means the modular form of a driver, before loading into the kernel. The slmodemd does not access the modem hardware directly. Rather access is provided through lower sophistication drivers. Prior to usage of a slamr driver, there must be a release of serial driver interference by loading of: ungrab-winmodem.ko For PCI card modems with Smartlink chips the driver used is: slamr.ko For USB modems with ID 0483:7554 use Smartlink driver: slusb.ko For ALSA (Advanced Linux Sound Architecture) modem drivers, see the Table below. Sasha's core resources are: ---------------------------- ungrab-winmodem.tar.gz - for compiling a ungrab-winmodem.ko driver slmodem-2.9.11-MostRecentDate.tar.gz - the core code resource for compiling and installing slmodemd, slamr.ko and slusb.ko. The slmodemd dynamically creates ports and provides higher level COMM functions, after driver loading. Not being a driver, slmodemd serves under alternative boot kernels. ALSA modem drivers, included with 2.6.n kernel+module releases. Some derivative resources at http://linmodems.technion.il/packages/smartlink/ $SLMODEMD - containing a compiled slmodemd and usage instructions. When used with ALSA modem drivers, further compiling is not necessary. $enough See Compiling_slmodemd below, for details. sl-modem-daemon-SomeVersion.deb - an installer for Debian related distros. It has slmodemd and scripts for starting slmodemd at boot. This package is also available from repositories of Debian related distros Ubuntu, Kbuntu, Ebuntu, Xandros, Kanotix and others. sl-modem-daemon-SomeVersion.tar.gz has the same contents, but is repackaged in an easily opened format, for access to its automation scripts. After unpacking, they are resident in the etc/ subfolder sl-modem-source-SomeVersion.deb - is a Debian installer for the slamr and slusb source code. It is Not necessary for ALSA driver usage. slamr-KernelVersion.tar.gz - for several Ubuntu KernelVersions, containing: ungrab-winmodem.ko, slamr.ko, slusb.ko, slmomdem, setup script and as a convenience, the sl-modem-daemon-SomeVersion.deb. Look in the folder: http://linmodems.technion.il/packages/smartlink/ubuntu/ Slmodemd actions ----------------------------------------- Start working with slmodemd with commands: slmodemd --help slmodemd --countrylist The long output can be written to a Clist.txt file with: slmodemd --countrylist &> Clist.txt Find your COUNTRY_NAME within the 2nd column if the list and record it. It will be used in capital letters during the modem setup command. Try USA if your COUNTRY is not in the list. Before modem setup root/adm capacity must be acquired with: su - root or by prefixing commands with "sudo" for Ubuntu Linux and its cousins. The setup command is: $SUDO slmodemd -c COUNTRY_NAME --alsa slmodemd_device if successful there will be reported dynamic creation of: /dev/ttySL0 --> /dev/pts/N , with N a number The /dev/ttySL0 is a symbolic link to the real modem port /dev/pts/N , and it is /dev/ttySL0 which should be named to dialup utilities such as wvdial. The "--alsa" is only needed for usage with ALSA modem drivers. Throughout a dialout session slmodemd MUST be kept running. Open another console/termimal to startup dialout software such as wvdial. The slmodemd device nodes --------------------------- The slmodemd_device is different for the several modem drivers. For usage with slamr.ko , the slmodemd_device is /dev/slamr0 , within the command sequence: $SUDO modprobe ungrab-windmodem $SUDO modprobe slamr $SUDO slmodemd -c COUNTRY_NAME /dev/slamr0 For USB modem usage: $SUDO modprobe slusb $SUDO slmodemd -c COUNTRY_NAME /dev/slusb0 For a modems using a ALSA driver, details are below. The /dev/slamr0 and /dev/slusb0 will be made the slmodem installation processes. However, they usually will NOT survice reboot, because most current Linux have ports created in volatile RAM space. However the these devices can be manually created under root/adm persmission with: $SUDO mknod -m 600 /dev/slamr0 c 242 0 $SUDO mknod -m 600 /dev/slusb0 c 243 0 if automation scripts are not yet in place. For automation of RPM using Linux distros see: http://www20.brinkster.com/olivares/slmodemd-setup-1.html For any Distro the following lines will serve in /etc/modprobe.conf or subfolders of /etc/modprobe.d/: -------------- alias char-major-243 slusb alias char-major-242 slamr # The following install and remove commands are to be written as single lines. # Preloads ungrab-winmodem and creates a device node upon "modprobe slamr" install slamr modprobe --ignore-install ungrab-winmodem ; modprobe --ignore-install slamr; test -e /dev/slamr0 || (/bin/mknod -m 660 /dev/slamr0 c 242 0 2>/dev/null && chgrp dialout /dev/slamr0) # rpm using distros should use "uucp" rather than "dialout" # Removes slamr and ungrab-winmodem successively: remove slamr /sbin/modprobe -r --ignore-remove slamr ; /sbin/modprobe -r --ignore-remove ungrab-winmodem # creates /dev/slusb uponn slusb driver loading. install slusb modprobe --ignore-install slusb ; test -e /dev/slusb0 || (/bin/mknod -m 660 /dev/slusb0 c 243 0 2>/dev/null && chgrp dialout /dev/slusb0) # rpm using distros should use "uucp" rather than "dialout" Usage with ALSA modem drivers -------------------------------- See SoftModem.txt for a description of the hardware. For a modem using an ALSA driver, the slmodemd_device only has to be specified within the slmodemd command line. A preliminary "mknod something" command is not necessary. The Table shows hardware PCI ID, its card type, driver and slmodemd_device name. The ALI5451 and HDA (High Definition Audio) cards can host softmodems. For these cards hw:0,0 is the audio card designation and the modem Subsystem on it is most commonly hw:0,1 , but there are some hw:0,6 cases. For the older soft modem controller family, the ALSA software first assigns hw:0 to an audio card, and the following modem designation is hw:1 or equivalently modem:1 An attempt to use modem:0 may initially appear successful, but modem:0 or hw:0 is actually the companion audio card. PCI ID controller ALSA driver slmodemd_device ========= =============== =============== =================== several HDA cards snd-hda-intel hw:0,1 or hw:0,6 10b9:5451 ALI5451 audio snd-ali5451 hw:0,1 ------------------ softmodem controllers -------------------------- 1002:434d ATI snd-atiixp-modem modem:1 1002:4378 ATI " " 1106:3068 VIA snd-via82xxx-modem " 8086:xxxx many Intel snd-intel8x0m " 10de:00d9 Nvidia Corp " " SIS 630 " " Others? " test " --------------------------------------------------------------------------- * The scanModem script tries to determine ALSA modem driver and slmodemd_device dynamically from /proc/asound/ information, or the internal Archive as a fallback. Do a precautionary unloading and reloading of the driver. su - root (not for Ubuntu) $SUDO modprobe -r driver $SUDO modprobe driver This precaution is sometimes necessary, because a driver may functionally die although loaded. But usually it can be skipped. For this System, scanModem deduced slmodemd_device is: $PORT For most modems the setup command is: $SUDO slmodemd -c COUNTRY_NAME --alsa modem:1 For modems on HDA cards, the command is: $SUDO slmodemd -c COUNTRY_NAME --alsa hw:0,1 though there have been cases of hw:0,6 For the ALI5451 hosted modems, a shortbuffer (-s) option is needed: $SUDO slmodemd -s -c COUNTRY_NAME --alsa hw:0,1 The slamr diagnostic --------------------- Sasha has provided slamr.ko with a capability for reporting softmodem codecs, even for modems not supported fully by slamr. This is useful when other resources do not report out the modem codec, needed to distinguish between hsfmodem, slamr and ALSA driver support alternatives. This slamr test is Not effective for softmodems on HDA audio cards. The test routine is: $SUDO modprobe ungrab-winmodem $SUDO modprobe slamr followed by a readout from the dmesg buffer with: dmesg | grep slamr Among the few output lines, there is one like: slamr: mc97 codec is SIL27 reporting in this example an ALSA driver supported, Agere Systems codec SIL27. Conexant codecs have format CXTnm, nm a number. These modems are not ALSA driver supported. Softmodems with all other codecs should be ALSA driver plus slmodemd supported. END if grep snd-trident /proc/modules >/dev/null ; then cat<>$RECORD The snd-trident driver is not fully compatible with slmodemd support. The may be errors written to /var/log/messages like: codec_semaphore: semaphore is not ready [0x1][0x1300] Check with: $ dmesg | grep semaphore A potential work around is to unload drivers: # modprobe -r snd-intel8x0m # modprobe -r snd-intel8x0 # modprobe -r snd-trident Then reload only: # modprobe snd-intel8x0 # modprobe snd-intel8x0m and test the modem. If snd-trident cannot be unloaded, it may be necessary to move /lib/modules/2.6.17-10-generic/kernel/sound/pci/trident/snd-trident.ko Compiling_slmodemd ------------------ slmodemd can be compiled with or without support for ALSA modem drivers. Within the slmodem code folder, the command sequence: make clean make compiles a slmodemd without ALSA support, and a following make install installs slmodemd to /usr/sbin/slmodemd and additionally slusb.ko and slamr.ko drivers. These two drivers do NOT need the additional ALSA support codes To compile slmodemd WITH support for ALSA modem drivers, there are two additional requisites. 1) additional ALSA code must be installed. For Debian/Ubuntu related Distros, these are provided by the package libasound2-dev, in addition to the standardly installed libasound2 For other Linuxes, the needed package may have another name 2) The compile must be done in the modem/ subfolder: $ cd modem $ make clean $ make SUPPORT_ALSA=1 will incorporate the needed libasound2-dev code in the resultant slmodemd. It should be manually installed: $ su root # cp slmodemd /usr/sbin/ # chmod +x /usr/sbin/slmodemd completes the installation of the ALSA competent slmodemd. END fi echo "============ end Smartlink section =====================" >>$RECORD cat<>/dev/null # patches Andreas Thienemann Aoril 28 USB http://phep2.technion.ac.il/linmodems/archive-sixth/msg01516.html http://phep2.technion.ac.il/linmodems/archive-sixth/msg01507.html ------- http://slax.linux-live.org/forum/viewtopic.php?t=10672&postdays=0&postorder=asc&start=0 Bottom line. JK's module found at http://slax.linux-live.org/modules.php?id=1031 Try the new update http://phep2.technion.ac.il/linmodems/packages/smartlink/slmodem-20060727.tar.gz under SuSE the command to restart the sound system is: sudo rcalsasound restart JoernHDA http://phep2.technion.ac.il/linmodems/archive-sixth/msg02324.html END fi # SmartDone SmartDone=1 fi # ./scanModem test 134d:7891 if test "$IDENT" = PCTEL ; then cat <>$RECORD At http://linmodems.technion.ac.il/pctel-linux Get the pctel-0.9.7-9-rht-6.tar.gz Unpack under Linux with: tar zxf pctel*.tar.gz and read instuctions therein. Read Pctel.txt and $RECORD2 for follow through guidance. END echo " Writing Pctel.txt" | tee -a $RECORD cat<Modem/Pctel.txt Vendor=134d is PCTel, but their modem sector has been sold to Conexant, and Conexant is Not providing official code updates. The volunteer maintainer for current updates is Robert Thornburrow, with downloads from http://linmodems.technion.ac.il/pctel-linux/ The AMR variants are supported by the pctel driver only under 2.4.n kernels Under 2.6.n kernels, the AMR Pctel variants and the HSP56 MicroModem 688T have support through the Smartlink software. The rest of this text is only cogent to modems using the 2.6.n driver triplet: pctel, ptserial and linmodem. Under 2.6.x kernels, these modems are supported by the pctel-0.9.7-9-rht-6 From the README file therein: PCI ID (x) Name Chip(set) HAL ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ ~~~~~~~ 134d:7890 PCtel HSP MicroModem 56 PCT789T-C1 pct789 134d:7891 PCtel HSP MicroModem 56 PCT 789T pct789 134d:7892 PCtel HSP MicroModem 56 PCT 789T-A pct789 134d:7893 PCtel HSP MicroModem 56 S911 K017 pct789 134d:7894 PCtel HSP MicroModem 56 FT13 pct789 134d:7895 PCtel HSP MicroModem 56 PCT789T-C1 pct789 134d:7896 PCtel HSP MicroModem 56 PCT789T-C1 pct789 134d:7897 PCtel HSP MicroModem 56 PCT789T pct789 13f6:0211 C-Media CM8738 CM8738 cm8738 Do the following preliminary steps: Unpack with command: tar zxvf pctel-0.9.7-*.tar.gz Change directory: cd pctel-0.9.7-9 (for example). Read README file less README (space bar goes to next page) Is a compiler installed? Test with: gcc If not found, install it from your Linux distribution. Become root: su root Seeing lspci? lspci If not, install the package pciutils . Now you can follow instructions in README The ISA card pct388p modem is not supported by the current driver series. During PCtel code installations, the node made is character device /dev/ttyS_PCTEL0 c 62 69 Check with: ls -l /dev/ttyS_PCTEL0 There is a pre-compiled binary component in the Pctel code which was assembled with a gcc 2.95 compiler A consequence is the loading fails under kernels compiled with gcc 3.n , unless forcing (-f) is used: # insmod -f pctel # insmod ptserial This can be automated by adding the following lines to /etc/modules.conf ####### for pctel modem ###### alias char-major-62 pctel alias /dev/modem ptserial install pctel /sbin/insmod "-f" "pctel" post-install pctel /sbin/insmod ptserial # country code for pctel modem, for USA options ptserial country_code=1 ######## pctel end #### then run: # depmod -a to inform the System and thereafter # $SUDO modprobe ptserial will load all three drivers, For some Systems, PCTel function requires disablement of apmd power monitoring function. System problems of various severity have been reported after modem usage. These may be alleviated by the following steps after a modem usage session. Log into a console as: # su - root # lsmod to display loaded modules. # $SUDO modprobe -r ptserial # lsmod ====== end Pctel section ======= END elif test "$IDENT" = Motorola ; then cat< Modem/Motorola.txt Vendor=1057 is Motorola with service provided through vendor=11d4 Analog Devices Inc. Installers are available at: http://www.motorola.com/softmodem/driver.htm as RPM packages containing binary images of drivers BUT very few kernels are supported: KERNEL , PackageName * RedHat 7.3 (kernel version 2.4.18-3, sm56-06.05.00-1.rh7.i386.rpm) * RedHat 8.0 (kernel version 2.4.18-14, sm56-06.05.00-1.rh8.i386.rpm) * RedHat 9.0 (kernel version 2.4.20-8, sm56-06.05.00-1.rh9.i386.rpm) * Mandrake Linux 9.2 (kernel vers 2.4.22-10mdk, sm56-06.05.02-1.mdk.i586.rpm) * Mandrake Linux 10.0 (kernel version 2.6.3-7mdk, sm56-06.05.02-2.mdk10_263-7.i586.rpm) * Suse Linux 9.0 (kernel version 2.4.21, sm56-06.05.02-1.suse90-020421-99.athlon.rpm) * Suse Linux 9.0 (kernel version 2.4.21, sm56-06.05.02-1.suse90-020421-99.i586.rpm) * Fedora FC3 (kernel version 2.6.9-1.667, sm56-06.09.05-1-fc3-2.6.9-1.667.i686.rpm at http://www.linux-xp-brasil.com.br/sm56-06.09.05-1-fc3-2.6.9-1.667.i686.rpm or http://linmodems.technion.ac.il/resources.html#motorola These packages will NOT serve with other kernels Some historical information is in Motorola.txt. There is also available a Legacy driver - SM56_5.1_I386.rpm for 2.4.n kernels ONLY for which the advice at http://www.sm56.tk/ may be effective. Some guidance for particular cases is: http://linmodems.technion.ac.il/archive-fourth/msg01751.html http://linmodems.technion.ac.il/archive-fourth/msg01749.html http://linmodems.technion.ac.il/archive-fourth/msg01750.html http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:13952:200405:enbjmmngagmdejkemacc http://users.volja.net/kutulu/sm56.tar.gz There is a volunteer Motorola site: http://www.sm56.tk/ The installation creates a driver sm56.o , the character devices /dev/motomem /dev/sm56 with symbolic link /dev/modem --> /dev/sm56 the /etc/modules.conf lines: alias char-major-24 sm56 options sm56 country=1 and documentation in usr/share/doc/HTML/en/sm56/ and "man sm56" An additional line in /etc/modules.conf alias /dev/modem /dev/sm56 would beneficially aid driver autoloading, without which there may be a failure of the wvdial functionality test: # /etc/wvdialconf /etc/wvdial.conf Achieving function with these PCI id 1057:xxxx modems is often difficult. If you computer alternatively boots Linux and Microsoft OS, do a complete PowerOff before starting Linux. Otherwise there may be an error during following Motorola usage: SM_DisplayFatalError ENTIRELY different from these PCI id 1057:xxxx modems, some softmodem controllers do have Subsystems with the Motorola Subvendor ID http://linmodems.technion.ac.il/archive-sixth/msg01898.html adds recognition of the Motorola Subsystem to the ALSA snd-hda-intel driver, to hosted modems with Motorola Subsytem ids 1057:3155 and 1057:3055 There softmodems are supported through the ALSA modem drivers plus slmodemd. See Slmodem-ALSA.txt for details. Jan Ibanez is our expert on Motorola problems END if ! grep $SYS Modem/Motorola.txt >/dev/null ; then status=NOT fi cat<>$RECORD Vendor=1057 is Motorola with some service provided through vendor=11d4 Analog Devices Inc. Drivers are available for VERY FEW 2.4.n kernels http://www.motorola.com/softmodem/driver.htm and for 2.6.n only a Fedora 2.6.9-1.667 at http://www.linux-xp-brasil.com.br/sm56-06.09.05-1-fc3-2.6.9-1.667.i686.rpm A driver is $status available for this kernel $SYS. Motorola seems to be only providing source code to some equipment mnaufacturers, who may provide particular compiled Linux drivers with their products. See details in Motorola.txt ---------------- end Motorola section ------------------------ END cat</dev/null From: Isamar Maia Date: Aug 17, 2006 9:22 AM Subject: Re: driver for sm56 Fedora 3 kernel 2.6.9-1.667 Motorola doesn't disclose the sources and doesn't supply support for that. That's why they don't put the driver on their page. :-) They are transferring all the support responsability to the OEMs. That's why they are only giving the drivers to the distributors and distributors pass to the OEMs. I believe they started this philosophy after they brought back the SM56 to the market couple years ago. END elif test "$IDENT" = Topic ; then cat<>$RECORD Vendor 151f is TOPIC SEMICONDUCTOR Corp, Class 0780 151f:0000 is a controller chipset modem using the Open Source serial drivers. See http://www.math.sunysb.edu/~comech/tools/PCImodems.html ====== end Topic section ======= END # ./scanModem test 125d:2898 some.thng elif test "$IDENT" = ESS.com ; then if test "$PCIDEV" = 125d:2898 ; then status=Supported if test "$SYS" = 2.6.15-23-386 ; then echo " Download ess_for_Ubuntu_2.6.15-23-386.tgz from http://linmodems.technion.ac.il/packages/ess">>$RECORD fi else status=NOT_Supported fi # Syed Karim uses USA pclinuxos cat<>$RECORD Vendor=125d is ESS Technologies, http://www.esstech.com/ The PCI id $PCIDEV modems are $status under 2.6.n kernels. The driver resources for 125d:2898 modems should be downloaded from http://tx.technion.ac.il/~raindel/ess_2.6-v0.2.tar.gz , benefitting from an update by Jeff Trull. There are brief instructions at http://ubuntuforums.org/showthread.php?t=185079 Under Linux, unpack with: $ tar zxf ess_2.6-v0.2.tar.gz Move into the folder wit: $ cd ess_2.6-v0.2 Browse the files therein and run as Root the: $ $SUDO ./setup The setup program creates a port: $ ls -l /dev/ttyS_ESS0 crw-rw-rw- 1 root root 62, 64 2006-09-23 23:08 /dev/ttyS_ESS0 and a symbolic link to it: /dev/modem --> /dev/ttyS_ESS0 Specify either /dev/modem or /dev/ttyS_ESS0 as the modem port for dialer utilities. A file is installed: /etc/udev/rules.d/ess.rules , with line: "KERNEL=\"ttyS_ESS0\", SYMLINK=\"modem\"" which supports automated port creation during driver loading. If the drivers do not autoload during bootup, they can be loaded by: $ $SUDO modprobe esscom after which the driver interdependencies can be displayed by: $ lsmod | grep esscom esscom 16580 0 esscom_hw 421328 1 esscom linmodems 345678 2 esscom esscom_hw The modem should be found by: $ $SUDO wvdialconf wvtest See wvdial.txt and Testing.txt for follow through details. =============== For 2.4.n Linux kernels and are there some kludges of fading utility: http://linmodems.technion.ac.il/archive-fourth/msg00317.html (2004Feb08) http://andrew.cait.org/ess/ http://sidlo.penguin.cz/ES2838/index_en.html http://tx.technion.ac.il/~raindel/ http://phep2.technion.ac.il/linmodems/archive/msg04424.html There was only formal support under for Linux for kernels 2.2.2. ====== end ESS.com section ======= END # ./scanModem test 125d:2898 some.thng elif test "$Vendor" = 12b9 -o "$Device" = 10b7 ; then if test $Device = 1006 -o $Device = 1007 ; then status=Not_Supported elif test "$PCIDEV" = 12b9:0062 -o "$PCIDEV" = 12b9:1008 ; then status=Supported act="$SUDO wvdialconf wvtest , should detect the modem. Read Testing.txt" else status=Uncertain_support_status fi cat<>$RECORD Vendor 10b7 3COM Inc. purchased the vendor 12b9 US Robotics modem technology. Their winmodems have no Linux support. Their controller chipset modems are supported by the Linux serial drivers. The PCI id $PCIDEV modem is $status. PCI ID Name Support status ------------------------------------------------------------------------------- 10b7:1006 3COM 0038TA AC101 - TF Mini-PCI winmodem, not supported 10b7:1007 3COM 3C556 V.90 Mini-PCI winmodem, not supported 12b9:1006 US Robotics 3cp803598 Voice winmodem, not supported 12b9:1007 US Robotics ERL3263A-0 DF GWPCI PC99 winmodem, not supported 12b9:0062 US Robotics erk41926a-0.6 usr 56k serial driver supported 12b9:1008 US Robotics 3cp803598 serial driver supported $act ====== end 3COM section ======= END # ./scanModem test 14e4:4212 1028:0002 elif test "$IDENT" = Broadcom ; then cat<>$RECORD Vendor 14e4 is Broadcom http://www.broadcom.com/ , now focusing on broadband tools. 14e4:4212 is the PCI id of a BCM V.90 56k modem There is no support under 2.6.n kernels for the 14e4:4212 modems. There is a driver for 2.2.n kernels called BCOM_WAN_V20. Search for it at http://www.dell.com However the code has not been updated for some time. For 2.4 kernels, a fix by Giacomo Comes must be used. See : http://linmodems.technion.ac.il/archive-third/msg01652.html http://cengique.2y.net/~cengiz/BCMSM/ There are BCM Subsystems 14e4:4d64 serving under Intel ICH series softmodem controllers. which are supported. Their AC97 codecs are BCM64 or SIL24. Kernels of version 2.6.6 or later are necessary. See success reports: http://linmodems.technion.ac.il/archive-fifth/msg02486.html http://linmodems.technion.ac.il/archive-fourth/msg03690.html http://oboc.ucdavis.edu/Marik/inspiron/ The support is typically achieved through the snd-intel8x0m driver, plus slmodemd helper. ====== end Broadcom section ======= END # ./scanModem test elif test "$IDENT" = CirrusLogic ; then cat<>$RECORD Vendor 1013 is Cirrus Logic. The Cirrus Logic CML modems were acquired by Intel, Inc. A driver for early 2.4.n kernels is at http://www.grapevine.net/~gromitkc/clm/clm-20020412.tar.gz There is no Linux support for later 2.4.n or 2.6.n kernels. See message: http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:9448:200210:fbhcoigfcimgkjdedjad Some 1013:4000 boards are supported (only under 2.4.n kernels) by the Intel MD563X-HaM package at http://linmodems.technion.ac.il/Intel/ham which includes precompiled drivers. ====== end Cirrus Logic section ======= END # IDENT=AmbientTech # ./scanModem test 1813:yyyy some:thng elif test "$IDENT" = AmbientTech ; then cat<>$RECORD Vendor=1813 Ambient Tech was acquired by Intel with its HaM (Host assisted Modem) chipsets. There is no support under 2.6.n kernels!! Intel-v92ham-453.tgz 2.4.n kernels was the FINAL 2.4.n update for HaM modems, available at: http://linmodems.technion.ac.il/packages/Intel/ham/ http://developer.intel.com/design/modems/support/drivers.htm It is NOT functional when compiled under 2.6.n kernels. But under the 2.4.nn kernels, all HaM chipsets were supported, with a single EXCEPTION: the odd PCI_ID 1813:4100 modems. For the explanation, see message: http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:9448:200210:fbhcoigfcimgkjdedjad ====== end AmbientTech section ======= END elif test "$IDENT" = Agere.DSP ; then cat<>$RECORD 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/ For a temporary fix for 2.6.18 kernels see See AgereDSP.txt for Details. DSP=1 END echo Writing AgereDSP.txt cat< Modem/AgereDSP.txt Modems with Lucent/Agere DSP chipsets -------------------------------------- For Lucent/Agere/Xircom modems with DSP (digital signal processing) chipsets http://phep2.technion.ac.il/linmodems/packages/ltmodem/kernel-2.6/martian/ has the support packages and information for 2.6. kernels. Support packages for 2.6.13 kernels are at: http://phep2.technion.ac.il/linmodems/packages/ltmodem/kernel-2.6/martian/ For 2.6.12 and earlier kernels use a package in the foler but http://linmodems.technion.ac.il/packages/ltmodem/kernel-2.6/ In Alexei Chentsov's new martian approach, the overall support is two component: 1) The driver loaded onto the running kernel, martian_dev, is Open Source; 2) The proprietary and closed source component from Agere Systems, ltmdobj.o of Agere version 8.30, is compiled into a martian_modem helper application. AMD x86x-64 processors are supported, though only in 32 bit mode. In addition to general compiling support, assembly of the martian_modem tool requires additional kernel_header files in /usr/include/ folders. For Debian and Ubuntu related Distros these are provided by the package libc6-dev. For Ubuntu, search for it at http://packages.ubuntu.com/ and install after download with: $ sudo dpkg -i *.deb For Fedora, the comparable packages (one to all of) have names like: glibc-headers-2.3.5-10.i386.rpm glibc-kernheaders-2.4-9.1.94.i386.rpm glibc-devel-2.3.5-10.i386.rpm which after download can be installed with: # rpm -i glibc*.rpm Beware that the martian_dev mostly provides low level contact with the hardware. Do read the accompanying documentation carefully!! The martian_modem provides higher level COMM functions and MUST be running throughout a dialout session. The modem port is in the dynamically created /dev/pts/N family, with symbolic link creatd by the martian_modem /dev/ttySM0 -->/dev/pts/N Usage of these ports requires that a line: Carrier Check = no be added to the configuration file /etc/wvdial.conf See the file wvdial.txt for details on this usage. For martian concept details see: http://martian.barrelsoutofbond.org To automate martian_modem action upon martian_dev loading, the following SINGLE line can be added to one of the files /etc/modprobe* or to a new file /etc/modprobe.d/martian install martian_dev modprobe --ignore-install martian_dev ; /usr/sbin/martian_modem However, there is a report that (at least in some Systems), boot up processes are slowed. This is associated with bootup testing of potentially needed modules. Thus you may choose not to use this automation. Support for the former driver pair, ltmodem + ltserial terminates with 2.6.15 kernels. Lucent/Agere Mars/WinModem drivers from version 8.30 onwards have the necessary fix for SMP machines which includes machines with hyperthreading turned on (virtually acting as two CPUs). Call waiting normally specified by, +pcw=1, is not implmented in the Linux drivers. For older ISA card modems, specification of resources through forcing is sometimes necessary: http://linmodems.technion.ac.il/archive-fifth/msg00055.html The remainder of this section is historical info, awaiting a final edit. ------------------------------------------------------------------------ Support packages for 2.6.n kernels are at: http://phep2.technion.ac.il/linmodems/packages/ltmodem/kernel-2.6/ with folders for debian/ containing some installers ubuntu/ containing some installers The ltmodem-8.26b1.tar.gz and ltmodem-8.31b1.tar.gz are driver compiling resources, with the 8.31 having support for SMP (symmetric multi processor) motherboards. These packages are more automated versions of the ltmodem-2.6-alk* packages The ltmodem-2.6-Nalk.src.rpm packages can be used with rpm using Distros. # rpmbuild --rebuild ltmodem-2.6-Nalk.src.rpm will deposit an installer at: /usr/src/rpm/RPMS/$CPU/ltmodem-kv_$SYS.rpm Check with # ls -l /usr/src/rpm/RPMS/$CPU/ltmodem* Then install with: # rpm -i /usr/src/rpm/RPMS/$CPU/ltmodem-kv_$SYS.rpm or similar. The martian.tar.gz represents a new developmental track, meeting emerging kernel requirements. See for details: http://martian.barrelsoutofbond.org/ http://linmodems.technion.ac.il/archive-sixth/msg00142.html AMD x86_64 competency is provided only bt the martian. For 2.4.n kernels packages are at http://ltmodem.heby.de/ or http://phep2.technion.ac.il/linmodems/packages/ltmodem/ There are some installer packages and also resources for compiling drivers. ---------------------- SuSE/Novell Linux and some other Distros provide compiled drivers +installers. Search package lists for ltmodem For other Distros and 2.6.n kernels, see: Packages for compiling drivers are: ResourceName Use for kernel ranges -------------------------------------------------------------------------------- ltmodem-8.26a.tar.gz 2.4.21 and earlier ltmodem-8.30a3.tar.gz 2.4.21 and subsequent 2.4.2n kernels which were assembled with a gcc-2.9 comiler ltmodem-8.31a10.tar.gz beginning with 2.4.21 and upto about 2.6.8 kernels martian.tar.gz 2.6.n SMP (symmetic multiprocessor) support not verified. ltmodem-8.31b1.tar.gz 2.6.n with SMP support, for some* Systems ltmodem-8.26b1tar.gz 2.6.n without SMP support * While SMP capacity should in principle be without ill effect on single processor systems, the are some cases of ill effects on single processor systems. Some additional 2.4.n installers are available from: http://dag.wieers.com/packages/kernel-module-ltmodem/ for some other 2.4.n installers. END if test "$KMAJOR" = 2.6 ; then if test "$SYS" = 2.6.3-4mdk ; then cat<>$RECORD There are ltmodem packages in Mandrake. Search for ltmodem in the package lists and check for installation already with: rpm -qa ltmodem There is also a ltmodem-2.6.3-4mdk.tgz at at http://linmodems.technion.ac.il/packages/ltmodem/kernel-2.6 END elif test "$KVER" = 2.6.8.1 ; then cat<>$RECORD Drivers compiled with ltmodem-2.6-alk-6.tar.bz2 have been effective with Mandrake 10 kernel versions $KVER-* . See within http://linmodems.technion.ac.il/packages/ltmodem/ ltmodem-2.6.8.1-10mdk.tar.gz END else echo>/dev/null fi fi # 2.6 if test "$ISSUER" = SuSE ; then cat<>$RECORD SuSE has a ltmodem packages for with pre-compiled drivers, beginning with the 8 releases For the SuSE 9.1 release, there is an update improving bootup automation. A failure had been reported for the 9.3 release ltmodem package, but the ltmodem-2.6-7-alk-7.tar.bz2 resource gave effective drivers. END fi else echo Some new mutually exclusive cases>/dev/null fi if test "$Vendor" = 11c1 ; then cat<>$RECORD Vendor 11c1 is Lucent Technologies or subsidiary Agere Systems, 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, and two have 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 048(c,d,f) none SV2P soft modem 0600 none soft modem, very few in the field. 062(0-3) none SV92PP,Pinball soft modem, in some HP desktop PCs END if test "$IDENT" = Agere.DSP ; then # Setting up board.info for grepping MODEL_DATA cat< $TMPM.2 0x0440 -- Mars 2 - data/fax/voice 0x0441 -- Mars 2 - data/fax only 0x0442 -- Mars 2 - data/fax/tam only 0x0448 -- Mars 2 Global Board - data/fax/voice 0x0449 -- Mars 2 Global Board - data/fax only 0x044a -- Mars 2 Global Board - data/fax/tam only 0x0444 -- Apollo 2 data/fax only : Modem/LAN combo board Apollo behind an Intel 82559 0x0445 -- Apollo 2 Global Board data/fax only : Modem/LAN combo board Apollo behind an Intel 82559 0x0446 -- Apollo 2 data/fax/voice : Modem/LAN combo board Apollo behind an Intel 82559 0x0447 -- Apollo 2 Global Board data/fax/voice : Modem/LAN combo board Apollo behind an Intel 82559 0x044c -- Mars 3 Perseus data/fax only:North America and Global board 0x044e -- Mars 3 Mercury data fax only 0x0450 -- Mars 3 Mercury data fax Global board 0x0451 -- Mars 3 Mercury data/fax/voice 0x0452 -- Mars 3 Mercury data/fax/voice Global board 0x0455 -- Mars 3 Perseus data/fax/voice: North America and Global board 0x0458 -- Mars 3 Mercury data/fax/tam only. 0x0459 -- Mars 3 Mercury data/fax/tam only. Global board. 0x045a -- Mars 3 Perseus data/fax/tam only.: North America and Global board 0x045b -- Apollo 3 Perseus data/fax only : Modem/LAN combo board Apollo behind an Intel 82559 0x045c -- Apollo 3 Mercury data/fax only : Modem/LAN combo board Apollo behind an Intel 82559 0x045d -- Mars 3 Mercury data/fax/tam only. Global board for Cardbus modem product. 0x044c -- Mars 3.2 Mercury data fax only when no eeprom is present, North America DAA ############## END if grep $Device $TMPM.2 > /dev/null ; then grep $Device $TMPM.2 >>$RECORD fi fi # DSP echo "-------------- end Agere Systems section -------------------" >>$RECORD fi if test "$Vendor" = 115d ; then cat<>$RECORD Vendor 115d is XIRCOM, which was purchased by Intel The following devices have Lucent/AgereSystems DSP chipsets supported by the Martian variant of the AgereSystems ltmodem software. XIRCOM 0x115d 0x0000-0x000F XIRCOM 0x115d 0x0440-0x045c XIRCOM 0x115d 0x0010-0x03ff END fi cat</dev/null VENDOR $MODEM_VENDOR DEVICE $MODEM_DEVICE ------------------------------------------ LUCENT 0x11c1 0x0440-0x045c XIRCOM 0x115d 0x0000-0x000F XIRCOM 0x115d 0x0440-0x045c XIRCOM 0x115d 0x0010-0x03ff ------------------------------------------- Driver installer and and their predecessor driver compiler kits are available through: http://ltmodem.heby.de/ and http://linmodems.technion.ac.il/packages/ltmodem/ EOF package= IDENT= SOFT= echo >>$RECORD done # scanout.bus echo " Completed candidate modem analyses.">>$RECORD echo echo " Writing residual guidance customized to your System." cat<Modem/UNSUBSCRIBE.txt For instructions to UNSUBSCRIBE from discuss@linmodems.org, send an email to: discuss-help@linmodems.org END echo >>$RECORD UD=`ls -d /dev/.u* 2> /dev/null` if test "$UD" ; then echo " The base of the UDEV device file system is: $UD" >>$RECORD else echo " A UDEV device file system is not active." >>$RECORD fi echo>>$RECORD if test "$GCC" = none ; then echo " The kernel was compiled with gcc version $GCC123 and a compiler is not installed">>$RECORD elif test "$GCCs" = "$GCC12" ; then echo " Versions adequately match for the compiler installed: $GCC123">>$RECORD echo " and the compiler used in kernel assembly: $GCC">>$RECORD elif test "$GCCs" -a "$GCCs" != "$GCC12" ; then cat<>$RECORD The Major.Minor versions differ for the the compiler used in kernel assembly: $GCC123 and the designated compiler: $GCC For such a mismatch, new compiled Drivers will fail to load with warning: Invalid module format!!" See http://linmodems.technion.ac.il/archive-fifth/msg04252.html END else echo " The was a failure in parsing the compiler version of the kernel">>$RECORD fi echo >>$RECORD BREEZY=`grep Breezy /etc/issue` if test "$GCC" = none ; then if test "$BREEZY" -a "$GCC12" = 3.4 ; then echo "To support compiling, get the BreezyGCC_3.4_i386.tar.gz from http://phep2.technion.ac.il/linmodems/packages/smartlink/ ">>$RECORD elif grep "Ubuntu 6.06" /etc/issue >/dev/null ; then cat<>$RECORD If compiling a modem driver proves to be necessary, one of the two procedures must be followed. If not yet on the Internet, put the Dapper install CD in the drive Open a terminal and therein: $ sudo apt-get install gcc-4.0 make Additionally the package linux-headers-$SYS must be downloaded. Go to http://packages.ubuntu.com/ and search for linux-headers-$SYS After downloading, it can be installed with: $ sudo dpkg -i linux-header*.deb Or alternatively if online through Ethernet do: $ sudo apt-get update $ sudo apt-get install build-essential will do all the necessary installations mentioned above. In either installation case, set a symbolic link which will be expected later: $ sudo ln -s /usr/bin/gcc-4.0 /usr/bin/gcc After check with: $ ls -l /usr/bin/gcc* which should display: lrwxrwxrwx 1 root root 16 2006-07-09 21:53 /usr/bin/gcc -> /usr/bin/gcc-4.0 -rwxr-xr-x 1 root root 93584 2006-04-20 18:22 /usr/bin/gcc-4.0 -rwxr-xr-x 1 root root 16245 2006-04-20 18:13 /usr/bin/gccbug-4.0 END fi fi if test -x /usr/bin/make ; then MAKE=/usr/bin/make fi # Checking for kernel-headers needed for compiling. SRCS=`ls -d /usr/src/* /usr/src/kernels/* /lib/modules/$SYS/build 2>/dev/null` if test -n "$SRCS" ; then for dir in $SRCS do if test -f $dir/include/linux/version.h ; then # check for right version if grep "$SYS" $dir/include/linux/version.h >/dev/null ; then if test -z "$BF" ; then # Don't replicate this line # echo " Kernel-headers supporting compiling are resident: ">>$RECORD BF=$dir # fi # if test -L $dir ; then # # reveal mere symbolic links # echo /`ls -l $dir | cut -d/ -f2-` >>$RECORD # else # echo $dir >>$RECORD fi fi fi done fi if test -z "$BF" ; then echo " Kernel-header resources needed for compiling are not manifestly ready!">>$RECORD fi HeadBaseFolder=$BF echo >> $RECORD if test -n "$MAKE" -a "$GCC" != none -a "$HeadBaseFolder" ; then cat<>$RECORD Compiling resources appear complete: make utility - $MAKE Compiler version $GCCs kernel_headers base folder $HeadBaseFolder END else echo " If compiling is necessary packages must be installed, providing:" >> $RECORD if test -z "$MAKE" ; then install="make" fi if test -z "$GCCs" ; then install="gcc-$GCC12 $install" fi if test -z "$HeadBaseFolder" ; then if test "$ISSUER" = Xanthos ; then install="xandros-kernel-source-$SYS.tar.bz2 $install" elif test "$SUDO" -o "$ISSUER" = debian ; then install="$install linux-headers-$SYS" elif test "$ISSUER" = fedora -o "$ISSUER" = redhat ; then if grep smp /proc/version >/dev/null ; then echo "$install kernel-smp-devel-$SYS" else echo "$install kernel-devel-$SYS" fi else install="$install kernel-source-$SYS" fi fi echo " $install" >>$RECORD fi SourceBZ2=`ls /usr/src/*.bz2 2>/dev/null` if test "$SourceBZ2" ; then echo Compressed files at: $SourceBZ2 >>$RECORD fi echo >> $RECORD if test -n "$DPKG" ; then if test "$KMAJOR" = 2.6 -a -z "$SUDO" ; then KBUILD=`ls -d /usr/src/kernel-kbuild-2.6* 2>/dev/null` if test -z "$KBUILD" ; then echo For Debian and some related distributions, a package kernel-kbuild-2.6-3 may be needed to support driver compiling >>$RECORD else echo kernel-kbuild is installed >>$RECORD fi echo >>$RECORD fi fi # PPPDPPPD # 'nomagic' as argument to pppd. This will ignore loopback related errors. if test -x /usr/sbin/pppd ; then cat<>$RECORD Checking pppd properties: `ls -l /usr/sbin/pppd` In case of an "error 17" "serial loopback" problem, see: http://phep2.technion.ac.il/linmodems/archive-sixth/msg02637.html END user=`ls -l /usr/sbin/pppd | grep rwsrwxrwx` if test -z "$user" ; then cat<>$RECORD To enable dialout without Root permission do: $ su - root (not for Ubuntu) $SUDO chmod a+x /usr/sbin/pppd or under Ubuntu related Linuxes $SUDO chmod a+x /usr/sbin/pppd END fi user= fi cat<>$RECORD Checking settings of: /etc/ppp/options `egrep -v '#|^ *$' /etc/ppp/options` 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 END COMMchannels=`ifconfig | grep Link | cut -d' ' -f1 | grep -v lo` if test -n "$COMMchannels" ; then echo Read $RECORD2 concerning other COMM channels: $COMMchannels >>$RECORD echo Which can interfere with Browser naviagation.>>$RECORD cat<>$RECORD2 Interfererce with browser naviagation: ------------------------------------- Other COMM channels can interfere with browsing under dialout. Suspect channels set during your scanModem run were shown by: ifconfig `ifconfig` A block with "lo" is an internal loopback test and harmless. However, other COMM channels such as ethernet "eth0" will block browser function through dialout connections. Domain Name Services (DNS) needed for browsing will be blocked by an ineffective default usage of the eth0 assigned DNS. If is wisest to disable bootup establishment of alternate channels in your Control Center. Depending on your Linux distribution, one of the following root/admin commands may alternatively be effective: # ifdown eth0 # ifconfig eth0 down # /etc/init.d/network stop # /etc/init.d/networking stop Be wary that some Systems will periodically try to re-establish internet. So if browsing should suspiciously fail, recheck with ifconfig ---------------------------- end COMM Channels -------------------------- END fi cat<>$RECORD Don't worry about the following, it is for the experts should trouble shooting be necessary. ========================================================== END # UD=`ls -d /dev/.u* 2> /dev/null` if test -n "$UD" ; then # echo " Checking for modem symbolic link support lines within /etc/udev/ files" >> $RECORD MODEMfiles=`find /etc/udev | grep modem` MODEMtrue=`for modem in $MODEMfiles ; do if ! test -L $modem ; then ls $modem ; fi ; done` for modem in $MODEMtrue do cat $modem >> $RECORD if grep ttyS[0123] $modem ; then echo " The standard modem symbol link support within $modem may conflict with winmodem support!!" >> /dev/null fi done MODEMfiles= MODEMtrue= cat<>/dev/null For information on modem port creation under the UDEV device file system see: http://linmodems.technion.ac.il/archive-fourth/msg03299.html for Conexnant modems http://linmodems.technion.ac.il/archive-fifth/msg01177.html for Lucent/Agere DSP modems END elif test -e /dev/.devfsd ; then DeviceFileSystem=old echo DeviceFileSystem=OldDeviceFS DEVFSD_PPP=`grep PPP $DEVFSD` echo tts/0 > $TMPM echo tts/1 >> $TMPM echo tts/2 >> $TMPM echo tts/3 >> $TMPM MODEM_link=`grep -f $TMPM $DEVFSD` if test -f /etc/devfsd.conf ; then DEVFSD=/etc/devfsd.conf elif test -f /etc/devfs/devfsd.conf ; then DEVFSD=/etc/devfs/devfsd.conf else DEVFSD=none fi else echo DeviceFileSystem>/dev/null fi # Check for /dev/modem link if test -L /dev/modem ; then Modem_link='"'/`ls -l /dev/modem | cut -d/ -f2-`'"' echo " Modem symbolic link is: /`ls -l /dev/modem | cut -d/ -f2-`" >>/dev/null else echo " A /dev/modem symbolic link is not set.">>/dev/null fi if test -n "$DEVFS" ; then DEVFSD_PPP=`grep PPP $DEVFSD` >>/dev/null MODEM_link=`grep -f $TMPM $DEVFSD` if test -z "$MODEM_link" ; then if test -d /etc/devfs ; then MODEM_link=`grep -rs modem /etc/devfs/ | grep -f $TMPM | grep :REGISTER` fi fi if test -n "$MODEM_link" ; then FILE=`grep -rs modem /etc/devfs/ | grep -f $TMPM | grep :REGISTER | cut -d: -f1` cat<>/dev/null Supporting /dev/modem symbolic link: $FILE ------------------------------ `cat $FILE` ------------------------------ EOF cat</dev/null Supporting /dev/modem symbolic link: $FILE ------------------------------ `cat $FILE` ------------------------------ is for device file system support of Controller chip modems and will conflict with usages of any other modem requiring a symbolic link: /dev/modem --> /dev/SomeNode It will for example conflict with support for the Lucent chip modems with support file /etc/devfs/conf.d/ltmodem.conf --------------------------------- ### /dev/modem symbolic link to /dev/tts/LT0 REGISTER ^tts/LT0$ CFUNCTION GLOBAL symlink $devname modem UNREGISTER ^tts/LT0$ CFUNCTION GLOBAL unlink modem --------------------------------- Thus unless use of a Controller chip modem is anticipated, either comment out those lines with a leading # or move $FILE somewhere else, say /root/ to avoid conflict with other modems!! Inform the devfsd (device file system) daemon of the edit with # killall -HUP devfsd See http://linmodems.technion.ac.il/archive-third/msg00869.html END fi # Check for /dev/modem link elif test -L /dev/modem ; then MODEMlink=`ls -l /dev/modem | cut -d'>' -f2- | cut -d" " -f2-` cat<> /dev/null The current modem symbolic link is: /dev/modem -> $MODEM_link The ports /dev/ttyS0 or 1,2,3 are for standard Controller chip modems END else echo A /dev/modem symbolic link is not present >>/dev/null fi cat<>$RECORD Checking for modem support lines: -------------------------------------- /device/modem symbolic link: `ls -l /dev/modem 2>/dev/null` slmodemd created symbolic link /dev/ttySL0: `ls -l /dev/ttySL0 2>/dev/null` Within /etc/udev/ files: `grep -rs modem /etc/udev/* 2>/dev/null` Within /etc/modprobe.conf files: `grep -rs modem /etc/modprobe* 2>/dev/null` Within any ancient /etc/devfs files: `grep -rs modem /etc/devfs 2>/dev/null` Within ancient kernel 2.4.n /etc/module.conf files: `grep -rs modem /etc/module* 2>/dev/null` --------- end modem support lines -------- END if test "$GCC1" = 3 ; then echo GCCversion=$GCC >>$RECORD2 ######### cat<>$RECORD2 --------------------------------------------------------------------------------------------- The proprietary Binary component of the some current winmodem drivers were compiled with version 2.9n gcc compiler. Red Hat 8.0 and Mandrake 9.0 releases utilize version 3.nn gcc compilers. This currently is causing difficulties either in compiling and/or insertion of updated winmodem drivers. The gcc compiler version of this System is: $GCC It will likely be necessary to force (-f) insertion of winmodem drivers, with credit to Jos Vos: http://phep2.technion.ac.il/linmodems/archive/msg04510.html For the ltmodem drivers with proprietary binary provided by Agere Systems, compiling with versions gcc=3.nn is successful. A minor edit required to compile PCTEL drivers has also been reported: http://phep2.technion.ac.il/linmodems/archive/msg04684.html Simple driver insertion fails in these cases with a message like: ----begin error---- % insmod lt_modem Using /lib/modules/2.4.18-14/ltmodem/lt_modem.o /lib/modules/2.4.18-14/ltmodem/lt_modem.o: The module you are trying to load (/lib/modules/2.4.18-14/ltmodem/lt_modem.o) is compiled with a gcc version 2 compiler, while the kernel you are running is compiled with a gcc version 3 compiler. This is known to not work. -----end error----- It is necessary as Root to force (-f) loading with commands like: insmod -f pctel respecting the dependency ordering of the drivers. Then check for insertion with: lsmod If driver insertion is successful, the forcing can be automated by putting the lines (credit to Bhaskaran Raman) like the following, install pctel /sbin/insmod --force pctel In order of preference depending on your particular Linux installation. Put these lines into ONLY ONE of the following files, within any modem loading subsection if present: /etc/modutils/ltmodem /etc/modutils/aliases /etc/modules.conf Then inform your System of the edit for Debian like Systems with update-modules which rewrites and reads /etc/modules.conf . For other System types depmod -a re-reads the edited /etc/modules.conf . Thereafter module loading should behave as previously. For the ltmodem drivers loading, it should suffice to either start a ppp session or $SUDO modprobe ptserial END fi if test "$ISSUER" = SuSE ; then cat<>$RECORD2 The following packages should be installed to support compiling and modem testing: make, glibc-devel, gcc-3.3 , libasound2-dev, wvdial and kernel-source-$SYS SuSE 9.0 and later has pre-compiled drivers supporting the following modem chipsets: Intel HaM and 536EP Conexant HSF (but not the HCF) Lucent/AgereSystems ltmodem (Digital Siggnal Processing type) IBM wmave Smart Link soft modems Unfortunately only the Intel HaM and 536EP are on the 3 CD Personal set, pending an update. Locations on the 6 CD Professional set are: CD4/suse/i586/smartlink-softmodem-2.7.9-89.i586.rpm - the slmodemd daemon CD3/suse/i586/km_smartlink-softmodem-2.7.9-89.i586.rpm - slmodem driver compiling CD4/suse/i586/hsfmodem-5.03.27mbsibeta02122600-92.i586.rpm - softmodem configuration CD4/suse/i586/km_hsfmodem-5.03.27mbsibeta02122600-92.i586.rpm -softmodem driver code installation report - http://linmodems.technion.ac.il/archive-fourth/msg00350.html CD4/suse/i586/ltmodem-8.26a-54.i586.rpm - a patch from SuSE may be needed for function installation report - http://linmodems.technion.ac.il/archive-fourth/msg00458.html CD4/suse/i586/Intel-536EP-4.51-200.i586.rpm CD4/suse/i586/Intel-v92ham-4.51-244.i586.rpm CD4/suse/i586/mwavem-1.0.4-110.i586.rpm Some pre-compiled SuSE 9.0 packages for the 2.4.21-99-default kernel are available at: http://linmodems.technion.ac.il/packages/SuSE-9.0/ including AgereSoftModem and the Intel537 modems IMPORTANT - The kernel-source-144/README.SuSE informs that the pre-assembled kernel-headers installed from the 9.0 kernel-source-99 have some flaws. Upgrading to a later kernel, such as 2.4.21-144 with matching kernel-source is the simplest may of avoiding problems. SuSE 9.1 comes with a SmartLink slamr.ko driver installed, aiding identification of softmodem codecs by: dmesg | grep slamr For the 9.1 Personal (single CD installation) winmodem packages have be downloaded from the SuSE 9.1 repository Should compiling drivers may be necessary, the following additional packages will have to be downloaded and installed: make, glibc-devel, gcc-3.3.3 and kernel-source. The kernel-headers are co-installed with the kernel-source. Thus subsequent driver compiling does Not require additional preparations. END elif test "$ISSUER" = debian -a "$slmodemd" = may ; then cat<>$RECORD2 There are Debian packages with modem drivers from SmartLink: sl-modem-daemon - SmartLink software modem daemon sl-modem-source - SmartLink software modem driver - module building source MANY modem subSystems serving under AC97/MC97 Controllers are also supported. END elif test "$ISSUER" = knoppix ; then if test "$DSP" -o "$slmodemd" -o "$slamr" ; then cat<>$RECORD2 Packages with precompiled drivers for Lucent/Agere DSP modems and SmartLink supported soft modes are available in http://linmodems.technion.ac.il/packages/Knoppix/ END fi cat<> $RECORD2 The bootable CDs of Knoppix releases 3.4 and 3.6 have boot kernels 2.4.26 and 2.4.27 These CDs are currently Hostile to winmodem installations for at least 3 reasons. 1) The kernels were compiled with gcc-2.95. While there is provided a /usr/bin/gcc-2.95 the default ggc found by compilers is set as: /usr/bin/gcc --> /usr/bin/gcc-3.3 Thus with casual usage of many winmodem driver packages, the drivers will be compiled with gcc-3.3 . Such mismatches between a kernel and driver can cause a system CRASH. Thus special effort is required to insure that driver compiles utilize the gcc-2.95 2) Winmodem packages typically try to write drivers to /usr/lib/ and installation files to /usr/sbin/ folders. But these folders are positioned on the ReadOnly CD, and the writes will fail; 3) Since compiled drivers cannot be placed in /lib/modules/, they are not perceived by a dependencies reading: depmod -a which would enable simple driver loading on demand or with a single: $SUDO modprobe Last_Modem_Driver A Bug Report/offer to help Knoppix with these problems has been filed. For Knoppix 3.8.1 the kernel-headers for kernel-version 2.6.11 are defective. A corrected package is available at http://www.linuxant.com/driverloader/wlan/full/archive/scripts-knoppix-3.8.1.tar.gz END elif grep Mandrake /etc/issue >/dev/null || grep Mandriva /etc/issue >/dev/null ; then cat<>$RECORD2 If the Mandrake installation disks do not include the dialer utility wvdial.rpm, then get instructions from http://linmodems.technion.ac.il/archive-fifth/msg01480.html END else echo " $ISSUER is not yet providing pre-compiled drivers for WinModems">>$RECORD2 fi if test "$BN" != scanModem -a "$TST" ; then /bin/rm -r ./Modem exit 0 fi if test "$1" != fast ; then # Output text files cat<Modem/1stRead.txt The files in this Modem/ folder have the following roles: ModemData.txt - Diagnostics and accumulated information cogent to your modem and host system. This is the ONLY file which should be sent to the List DISCUSS@LINMODEMS.ORG , if further help is needed. Send your email and attachments as plain text as other formats are rejected by the List Server, to avoid virus transmission. Always send the ENTIRE ModemData.txt, as It includes subtle diagnostic ouputs needed to best guide you. Please in the covering email mention your Country, to enable Country specific advice. Always use the most recent update of scanModem accessed ONLY at http://linmodems.technion.ac.il/packages/scanModem.gz to produce ModemData.txt URLs to cogent advice are regularly updated, so your problem may be solved therein. Please Do NOT send Do NOT send other files in this folder Modem/ A file(s) specific to your modem chipset will be written, such as: Smartlink.txt, Conexant.txt, Intel.txt , etc YourModem.txt - Guidance about operating your particular System, for your benefit It should NOT be sent to Discuss@linmodems.org Rational.txt - Motivations of this scanModem package. DriverCompiling.txt - Explains the roles of additional files which may have to be installed to support compiling of modem drivers, and the steps to take. SoftModem.txt - Information and instructions about "soft modems". For these modems, additional steps may be necessary for choice of supporting software. The primary PCI ID is that of the host audio or modem controller, which can support diverse Subsystems. It is the chipset of the Subsystem which determines the software needed. ModemTesting.txt SHOULD be read, but after drivers have been installed. InfoGeneral.txt has general information about the status of winmodem support under Linux, Do read it if ModemData.txt reports that your current modem is not supported under Linux. Unsubscribe.txt - Howto terminate email tranmissions from the List. If you are Linux newcomer, please do locate your local Linux group through: http://www.linux.org/groups/index.html . If you are not comfortable with English, a local Linux user can often be of substantial assistance in getting you on to the Internet. END cat<>Modem/Rational.txt RATIONAL This scanModem service is sadly necessary because of the pre-compiled format (binary, Closed Source) of some modem supporting code. Intellectual property is protected within the binary component. But this prevents compatibility assessments/debugging against Linux Open Source code. Skipping many details, the consequence is that some Linux distributions do not deliver Closed Source code, or tools adequate to fully identify the modem chipset. This script tries to close this information gap. This script primarily utilizes the "lspci" utility from the package PCIUTILS. Various component scriptlets interpret the information captured by lspci. For many modems, directions to supporting software and/or more detailed information is enabled. ISA bus modems, 16 bit PCMCIA card modems and USB modems will not be recognized. See the output files for guidance on these cases. The script originated as scanPCI written by Chris Hebeisen, to recognize modems with DSP (digital signal processing) chipsets made by Lucent/AgereSystems. It now aspires to provide useful information on other modems as well. For the Lucent/Agere DSP chip modems, System information is used to recommend Installers, from the Installer list output from the repository: http://ltmodem.heby.de/ For other modem chipsets fully identified, URLs to support sites are given. Three types of information are acquired from your System: 1) General system information necessary for your guidance; 2) The PCI_ID of the modem card, or for the increasingly prevalent "soft modems", the PCI_IDs of its AC97/MC97 controller and its modem subsystem. 3) For soft modems, a SIL_ID of the subsystem is either acquired OR instructions provided for manual agetting it. The remainder of $0 is a repository of "modem gossip" or URLs thereto. Only information blocks most relevant to your System will be output into files written to the Modem/ folder Should you need assistance after FIRST following all the advice and/or URLs, 1) Browse the general information at: http://linmodems.technion.ac.il/ 2) ONLY thereafter send ModemData.txt to: discuss@linmodems.org Modem/General.txt has common information the List need not be bothered with. 3) Also the archive SEARCH ENGINE at http://linmodems.technion.ac.il/ may be useful once PCI or SIL IDs are acquired. The scanModem script can be read and word searched with a text browser. Blocks of Information with little code begin and end with #####. In case of a failure concerning "lspci", rerun $0 after login to a console with # su - root as Root permission may be necessary for access to lspci. Updated on $UPDATE by Marv Stodolsk for access through: http://linmodems.technion.ac.il/packages/scanModem.gz Please do NOT use a scanModem.gz from any other site!! END cat< Modem/InfoGeneral.txt Do NOT send this text with common information to discuss@linmodems.org There are instructions to UNSUBSCRIBE from discuss@linmodems.org at http://www.linmodems.org ============== Several sections are included in this file: The Summary of modem Support under Linux description of the soft modem identity tests: SIL ids some output from scanModem specific to your System an explanation of the GCC 2.95 compiler warning ethernet Interference with DNS (domain name service) Please Linux Newbies read carefully, the companion Modem/DriverCompiling.txt and its Followup Modem/DriverTesting.txt section with dialout examples. It is the CHIPSET, and Not the modem BrandName which is informative for Linux support The chipset types that are fully supported under Linux, without proprietary drivers, have the more expersive controller chipsets. These include the 3COM,Inc 3CXM556 and AgereSystems FM560LK chipsets. Do a WWW search to find them. USB modems will not be detected through the acm.o driver with port /dev/ttyACM0 UNTIL proper USB support is installed. See http://www.linux-usb.org/USB-guide/x332.html, Linux_kernel_source/Documentation/usb/acm.txt, and http://www.usb.org/developers/devclass_docs/usbcdc11.pdf (page 15) Among the USB modems with proprietary interfaces, there is support for Conexant HSF modems are supported by the hsfmodem package at http://www.linuxant.com/drivers HSF USB with Vendor:Product IDs - 0572:1300 0572:1301 0572:1302 0572:1303 08E3:0111 with updates at http://www.linuxant.com/drivers/hsf/index.php HCF Vendor ID: 0572 Product ID: 1290 (Cadmus2 HCF, Conexant) is supported, but NOT the Cadmus I types: http://www.linuxant.com/drivers/hcf/faq.php#25 HCF USB Vendor ID: 05AC Product ID: 8202 (Cadmus2 HCF, for Apple/Mac and not PCs) SmartUSB56 (ST7554) based modems with ID: 0483:7554 The SWEEX USB modem has the ST7554 chipset Drivers are at http://www.smlink.com/main/index1.php?ln=en&main_id=40 http://linmodems.technion.ac.il/archive-fourth/msg00176.html is an installation report. To write out Smartlink information, use the proxy entry ./scanModem test 1131:3400 PCMCIA card modems can serve if your laptops modem is not supported under Linux. http://freewebhosting.hostdepartment.com/g/gromitkc/pcmcia_list.html The 3COM,Inc 3CXM556 and AgereSystems FM560LK chip modems use Open Source serial-cs.o drivers. For modems not recognized by scanModem, chipset information may be obtained under Microsoft Windows through: 1) Start > Settings > Control Panel > Classical View (for WinXP) > Modem or alternatively under Linux # cat /proc/asound/mc97* Try to identify the modem setup file, with name perhaps MODEM.INF 2) Open a COMM console, and send ATI commands to the modem (ATI, ATI1, ATI2, etc) which may elicit chipset and driver information. Here is an example ATI3 - Agere SoftModem Version 2.1.22 ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27 successfully identifying an Agere SoftModem chipset, both by name and through the:softmodem SIL ID: AC97 ID:SIL REV:0x27 SUPPORT SUMMARY - as of $UPDATE ------------------------------------- Controller chipsets are used in the most expensive modems and are supported. They utilize the same serial drivers included with kernel+module installations, and most commonly one of the ports /dev/ttyS0 thru 3. Such chipsets are produced by 3Com, AgereSystems (the Venus chipset), Topic Semiconductor Corp., and others. But the same companies may produce unsupported WinModems. Do not depend on the Brand Name. Look for an explicit statement of Linux support AVOID the following modem chipsets: ESS - no formal support since 2.2.2 kernels, though there are kluges: http://andywettstein.home.comcast.net/ess/ http://tx.technion.ac.il/~raindel/ 3Com/US Robotics winmodems - never supported under Linux SmartLink - newer chipsets are supported: http://www.smlink.com ftp://ftp.smlink.com/linux/unsupported/ Moreover, the slmodem-2.9.10 drivers will support Many but not all modem Ssubsystems that serve under AC97/MC97 controllers. Conexant - all modems supported with drivers at: http://www.linuxant.com Testcode for slow 14,400 mH support is free, BUT there is a one time charge for the full speed support. Intel Inc. - http://developer.intel.com/design/modems/support/drivers.htm For early releases check at: http://linmodems.technion.ac.il/resources.html The HaM modem is supported, but code is no longer being updated; there will likely be failures under emerging 2.6 kernels. The 536EP and five Intel537 modem chipset variants are actively supported. Lucent /AgereSystems The Venus chipset modem uses the Linux seraik drivers and is thus supported. Modems with digital signal processing (DSP) chipsets are supported: http:/ltmodem.heby.de For AC97/MC97 soft modems. Initiate software access through code sponsor IBM: http://www-3.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52698 Coding of support for has Not yet begun PCI soft modems with PCI_IDs 11c1:048? Motorola support is at: http://www.motorola.com/softmodem/sm56_download.htm through 2.4.22 kernels. PCTel modem business has been sold to Conexant Driver compiler resources are at: http://pctelcompdb.sourceforge.net/ However, the pre-compiled binary component is yet to be assembled with the gcc 3.nn used in newer Linux releases, so forced (-f) insertions may be necessary: insmod -f pctel Some of the HSP soft modems are supported by the SmartLink slmodem-2.9.10 drivers. Broadcom modems in Dell laptops and PCs - can be made to function under 2.4 kernels, but code has not been updated recently. --------- end chipset section ---------------------- SUPPORT under the current 2.6.nn kernels. The more expensive Controller chipset modems are functioning. SmartLink slmodem-2.9.9 drivers are functioning. Conexant has 2.6.n support The Lucent/Agere digital signal processing (DSP) chipsets do have informal service into 2.6.n kernels and an AgereSystems release is soon expected. Intel, Agere Systems and Linuxant are firmly expected to continue support into 2.6.nn, though the Intel HaM software will not be updated to 2.6.n service ------------------------------------ Preparing winmodem drivers will generally require compiling. If you are not familar with this process DEFINITELY read carefully the Modem/DriverCompiling.txt END cat<Modem/DriverCompiling.txt ======================================================= COMPILING DRIVERS, for Linux Newbies Within the workshop there is an instruction set, the Makefile, and a few tools. You command: make clean An elf named "make" comes in, reads Makefile and then cleans up any debris of previous efforts. Do ALWAYS command "make clean" as a first step before new driver compilations. The major work of compiling drivers and any associated tools is commanded with: make or perhaps make DriverName There only remains to command installation of the modem driver(s) and tools with: make install Configuration of a dialout utility is done elsewhere, and you can access the Internet. It is really that simple, once the workshop with tools has been prepared. But new drivers have to be compiled with every operaing system update. The remainder of this text is thus aids you in the preparations, dealing with a variety of special cases. Most points are covered in much more detail in the Linux Kernel-HOWTO, likely included among the HOWTO documentation set installed within /usr/share/doc/ folders. The core operating system of a PC is comprised of a motherboard, the software kernel, and its auxilliary code modules. The kernel is the file /boot/vmlinuz-$SYS. Modules located in subfolders of /lib/modules/$SYS/ . They can be inserted into or removed from the acting kernel upon demand. This provides adaptablity to the diverse hardware components of PCs and changing requirments. Modem drivers are one type of module. As contrasted to most Linux software, modem driver codes have some non-public code components. That is the drivers are not fully Open Source, to protect Intellectual Property of the providing companies. This has a consequence that many Linux distributions will not or cannot legally supply proprietary modem drivers. Rather the Users must get the modem code package and direct compiling of the code and driver installation. A complementary resource for compiling is a family of FileNames.h, collectively called kernel-headers. They are both code bits themselves and also call for other code bits their functioning depends on. Depending on the Linux distribution, kernel-headers may not be automatically installed. If not they will always be made available on installation media or some Linux repository. They can be searched for by package names including: kernel-source, linux-source, kernel-headers and 44 There are always some kernel-headers in afolder /usr/include/. But these are an INCOMPLETE, too small collection and DO NOT suffice for compiling processes. In addition some software utilities may have to be installed. The instructions for compiling are read by make. A set of compiler tools are installed as a gcc-SomeVersion package. After compiling, the various pieces and linked dynamically together with "ld". Together wiith some simpler software tools, the ld will already be installed on Linux systems. Systems using the Debian style maintanence system additionally require a package "kernel-kbuild-3.n" to properly utilize kernel-headers or 2.6.n kernels. The "kernel-headers" are matched with an installed kernel, or must be generated from a kernel-source package. These are provided in different ways by the various Linux distributions, under 2.6.n kernels: Redhat and Fedora - installation is coincident with kernel installation, with placement of the kernel-header base folder in /lib/modules/$SYS/build/ Mandrake and SuSE/Novell - installation as part of a kernel-source or linux-source packages, with location at /usr/src/kernel-headers-$SYS or /usr/src/linux-$SYS Debian and distros using its Package.deb format have names: kernel-headers-$SYS linux-headers-$SYS for Ubuntu and installation is into /usr/src/ for Xandros, there is a xandros-kernel-source-version.deb which has to be installed Unpack if necessary with # cd /usr/src/ # ls # tar jxf xandros-kernel-source-version.tar.bz2 see http://support.xandros.com/kb-view.php?topic=64 for details but for 2.6.n kernels, the step after: # make EXTRAVERSION=-x1 oldconfig should be # make EXTRAVERSION=-x1 bzImage Others - ??? For the prior generation of 2.4.n kernels, there are special cases. Skip this if your kernel is a 2.6.n or a Debian type. For RPM using distros, the kernel-source-$SYS or linux-source-$SYS packages must be installed and configured as described below: 1) SuSE with KernelVersion 2.4.21-144-* or later - install the matching kernel-source package, which does also contain the kernel-headers; 2) for Fedora II or later, kernel-headers are/were coinstalled with the kernel package; 3) for all other cases of 2.4.n kernels, the kernel-headers must be prepared from kernel-source. The preparation can be summarised in a few steps/actions: Install a kernel-source package representing your kernel. Change directory (cd) into its base folder. The kernel-source in general will match only one of several kernels that could have been installed and NOT necessarily yours. Thus clean out any remnants of earlier usages with: make mrproper Copy in your kernel configuration file and have it read with: make oldconfig If necessary edit ONLY the fourth line of the Makefile, which completes the specification of where drivers will be installed to (details below). The kernel-headers are then assembelled by either: a) for 2.4.nn kernels by make dep b) for 2.6.n kernels, make bzImage which includes an integral "make dep" step. Modem related resources may or may not have been installed during the primary Linux installation, as WinModem hardware is often NOT recognized. Search your Distro's package descriptions for "modem" to reveal the status of related resources. Read the package description to determine whether pre-compiled modem drivers were provided. RESOURCES of a few types are needed to get on line. Do PREFERABLE use your System's package maintenance system for the installation. This should guarantee that any DEPENDENT packages will be called into the installation process. As a preliminary 1) Install your distributions package providing the KPPP, WVDIAL and MINICOM dialer utilities. Dependencies within such packages will also drive the unpacking of ppp related modules from compressed to a functional form : module.o.gz --> modules.o or for 2.6.n kernels module.ko.gz --> module.ko In addition these dialers will later aid testing and configuration, which is to be performed only AFTER, the modem's drivers are installed. 2) Download if necessary and modem driver package specific to your modem hardware. 3a) Install if necessary your distrbution's kernel-source package, necessary for preparing kernel-headers under 2.4.n kernels Or for Debian style distributions, 3b) install the kernel-header-$SYS.deb package matching your kernel version $SYS. A KERNEL-SOURCE package must be installed, if a full kernel-header set is not otherwise provided. Kernel-source packages are now some 30-40 MB now even in compressed form. The package provided by your Linux Distro SHOULD preferentially be used. It will usually have some differences from that initially released at http://www.kernel.org . Typically the installation process will set two symbolic links: /lib/modules/$SYS/build --> PATH_to/kernel-source-version/ /usr/src/linux --> PATH_to/kernel-source-version/ These later enable access to the kernel-headers needed during the modem driver compiling. Check with: ls -l /lib/modules/$SYS/build ls -l /usr/src/linux The former link is more usefull for Systems with alternative boot kernels, and is mandatory for some modem compiler packages. HIGHLY IMPORTANT: the kernel-source as installed in generally does NOT represent your current kernel version, EVEN if the kernel-version is the same. Only one of several possible kernels was installed on your System, and the unpacked kernel-source need NOT represent it exactly!!! For example, in the RedHat Distro there is a set of kernel-configuration files within /usr/src/linux/configs/ Each is specialized for a different CPU (i586, i686, K6, etc), Yet each will be represented by the VERY SAME version name: "uname -r" . !!!! Thus a PROPER CONFIGURATION MUST BE DONE by You, before compiling drivers !!!! Examples provided below are partially customized from your System settings. CONFIGURATION is started by moving into the kernel-source folder with one of: cd /lib/modules/$SYS/build cd /usr/src/linux END if test -f /lib/modules/`uname -r`/build/Makefile ; then MKFL=/lib/modules/`uname -r`/build/Makefile elif test -f /usr/src/linux/Makefile ; then MKFL=/usr/src/linux/Makefile else echo Makefile not found>/dev/null fi if test -n "$MKFL" ; then cat<>Modem/DriverCompiling.txt There is a Makefile on your System at: $MKFL with first few lines: END grep -A3 -m 2 VERSION $MKFL >>Modem/DriverCompiling.txt echo>>Modem/DriverCompiling.txt else echo " A kernel-source packages is not evident on your System">>Modem/DriverCompiling.txt fi cat<>Modem/DriverCompiling.txt For your current kernel, the fourth line should be EXTRAVERSION = $EXTRAVERSION where $EXTRAVERSION has been read from your current kernel version: $SYS. But it this does not match what is Actually in the Makefile, then it represents a Different kernel-header set then that of your kernel!!! For Mandrake Linux their will generally be an included "mdk", such as: EXTRAVERSION = -3.1mdk SuSE 9.0 had: EXTRAVERSION = -99-default The first four makefile lines specify that: a) the compiled kernel modules/drivers will have encoded version labels such as: 2.4.21-3.1mkd OR 2.4.21-99-default b) such modules including modem drivers are installed into sub-folders of /lib/modules/2.4.21-3.1mkd/ /lib/modules/2.4.21-99-default/ The major points are that compiled drivers must be both kernel-release (the 2.4.21) AND EXTRAVERSION matched with the installed kernel. Otherwise they may be installed uselessly and not be detected by the kernel OR there will be a failure upon attempted insertion, with message including: a list of "unresolved symbols ". Kernel-headers may be resident from a prior usage of the kernel-source/. Check with: ls include/linux/ which may display abundant FileNames.h The version of these headers will be in the UTS line displayed by cat include/linux/version.h #define UTS_RELEASE "2.4.21-3.1mdk" (as an example) Next, list completely the contents of the kernel-source with: ls -a Where the " -a " additionally reveals ".dot-prefixed-confguration-files" such as .config .hdepend .depends which may be left over from the prior usage of the kernel-source. Below is an example: ------------------- .config .hdepend .depends COPYING Makefile Rules.make init mm CREDITS README arch drivers ipc net Documentation conf.vars fs kernel scripts MAINTAINERS REPORTING-BUGS crypto include lib Configuration of the kernel-source is where almost all the Mistakes occur!!! Here is a way to do it correctly (but read through EXCEPTIONAL CASES below). 1)Within kernel-source/ folder, browse the README file for general guidance. It will relate that the command: # make mrproper cleans up leftovers from any previous usage .dot-files and the include/linux/ folder. Additionally you may need to do an edit within Makefile, but ONLY that 4th line. 2) If necessary to edit, FIRST make a backup: cp Makefile Makefile.backup then edit ONLY the 4th line of Makefile to match the EXTRAVERSION of $SYS EXTRAVERSION = -$EXT NEVER change anything else within the Makefile. 3) Set the dependencies of the current kernel. For SuSE 9.0 and later, there is a command which does the following steps # make cloneconfig && make dep Also browse the excellent README.SuSE in the kernel-source/ folder For other Distros, the following steps are necessary, within the kernel-source/ folder copy the kernel-config file to .config and DO SPECIFY that " . " But where is it? For many Distros, it will be the file like /boot/config-$SYS matching the output of: uname -r Or it may be the target of a symbolic link: /boot/config --> So cp /boot/config-$SYS .config For SuSE 8.0 and earlier versions it is: cp /boot/vmlinuz.config .config PLEASE do not omit that "." in .config as it is crucially necessary. View .config with a text browser. It is simply a listing of the code components used in the kernel and its modules: # # Automatically generated make config: don't edit # CONFIG_X86=y # CONFIG_SBUS is not set CONFIG_UID16=y etc. 4) The .config file will be read during # make oldconfig which feeds its specifications through a process specifying the SAME inter-dependencies previously used in compiling your kernel, and may generate additional .dot-config files . They can be displayed with: # ls -al 5) Though it may be redundant after "make mrproper", it will do no harm to: make clean 5a) For the SuSe Linux versions 8.0 and previous , there will exist files: /boot/vmlinuz.autoconf.h /boot/vmlinuz.version.h They MUST be copied as: cp /boot/vmlinuz.autoconf.h /usr/src/linux/include/linux/autoconf.h cp /boot/vmlinuz.version.h /usr/src/linux/include/linux/version.h 6) Now build kernel-headers with: make dep for 2.4.n kernels or for 2.6.n kernels make bzImage during which you can walk your dog, take a shower, have tea, etc. 7) Check for resultant FileNames.h with: ls include/linux/ and cat include/linux/version.h to verify the version. COMPILING the MODEM DRIVERS can now finally be done. Unpack the compiler kit for your modem drivers, cd into its folder, read any README or INSTALL files, make clean FINALLY, your modem drivers will compiled by a command like make OR make ModuleName or perhaps make all During this process, some of the kernel-header code with be joined with the supplied modem specific code, and ModemDrivers.o will be produced. Follow and further instructions in the modem code resource to install the drivers, often with: make install THEORETICAL ISSUES WinModem driver packages commonly include: 1) a readible Open Source component, which can be readily debugged by experts in code. This component provides "wrappers" to common kernel functions for an already complied, or BINARY format, component of the modem code. 2) A Closed Source component compiled into the binary form, in which proprietary information is encrypted. This will include the copyrighted Vn.nn compression algorithms. In 2004, pre-compiled modem drivers are beginning to be included for a few winmodems by some Linux distributions. But the binary format precludes incorporation of the modem drivers in some Linux distributions for legal reasons, practical reasons, and/or reasons of principle. Since almost all the newer PCs are now equipped with WinModems, many users will have to compile their own linux modem drivers. Exceptions are the more expensive modems with Controller chipsets, characteristic of the earliest modems. They are supported by Open Source serial code included in Linux distributions (Distros hereafter). Winmodems are less expensive because of greatly reduced hardware costs. They lack Controller chips of the earliest modems, and may additionally lack Digital Signal Processor (DSP) chips of second generation modems. Functions of Controller based chipsets are replaced by a combination of software code and/or other System hardware. Modems without a controller chip are referred to as "controllerless modems" and modems lacking both a DSP and controller chips are referred to as "soft modems". With faster central processor units (CPU), some processing tasks are performed by the CPU for the controllerless modems. The CPU does nearly all the signal processing for the "soft modems" lacking a DSP. AC97 or MC97 soft modems conform to an ac97_codec, and can host a variety of Subsystems It is the CODEC of the Subsystem which determines which software should be utilized!! and any modem controllers can host one of a variety of soft modem Subsystems. There are additionally soft PCI modems without such controllers, which still utilize the common ac97_modem.o driver. In general it will be YOUR task to identify the Subsystem codec and compile the needed driver. ## end Modem/DriverCompiling.txt END cat<Modem/Testing.txt MODEM TESTING This text is complemented by the Post-Install at http://linmodems.technion.ac.il Please so consult it if the following does not suffice. The wvdial package provides for an automated hardware+driver test. This utility searches through ports with syntax: /dev/ttyS* (i.e. S0, S1, SL0 etc.) and also follows a symbolic link: /dev/modem --> /dev/ModemPort If your modem port name does not satisfy these requirements already, do a console login as: su - root Make the symbolic links as: ln -sf /dev/ModemPort /dev/modem ln -sf /dev/ModemPort /dev/ttyS15 wherein /dev/ttyS15 is reserved for experimental usage. Should there be problems with wvdial version 1.54.1-1 , drop back to 1.54.0-1 For recent RedHat and Fedora releases, wvdialconf is used by the Internet Wizard. Within the pop-up menus find the Wizard. Its actions will write a configuration file: /etc/wvdial.conf For other Linux distros, open a console and login with su - root If necessary load the modem drivers: $SUDO modprobe DriverNames Then run the test: wvdialconf /etc/wvdial.conf Checks /dev/modem and ports /dev/ttyS*, a success at port /dev/ttySLT0 would be: ttySLT0<*1>: ATQ0 V1 E1 -- OK ttySLT0<*1>: ATQ0 V1 E1 Z -- OK ttySLT0<*1>: ATQ0 V1 E1 S0=0 -- OK ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK etc. The /etc/wvdial.conf written looks like: [Dialer Defaults] Modem = /dev/ttySLT0 Baud = 115200 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ISDN = 0 Modem Type = Analog Modem ; Phone = ; Username = ; Password = For systems using the SmartLink slmodem drivers, the following line should be added to its /etc/wvdial.conf Carrier Check = no So after editing in your personal information a functional file is like: [Dialer Defaults] # lines beginning with # are Comments, not read by wvdial Modem = /dev/ttySLT0 Baud = 115200 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ## if there is problem with dial tone acquisition, add into the above line: # X3 # meaning "dial without waiting" ## for some Internet Provides, there may be problems with the new V92 mode codes. # This can be suppresses with an: # Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 +MS=90 ## Within Italy it is sometimes necessary to even force a slower mode # ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 +MS=34 # This mode is also useful for PBX dialout lines. ISDN = 0 Modem Type = Analog Modem # edit in your IP's phone number below. Phone = 3334445555 # Do not use - or spaceds in the Phone = line # Introducing a pause with a , is sometimes necessary with hotel/company switchboards # Phone = 8,3334445555 or 8,,,3334445555 for s 3 second pause Username = Your_Login_Name # for MSN.net, use instead # Username = MSN/Your_Login_Name Password = Your_Password # if not using the SmartLink slmodemd, comment out with # the following line. Carrier Check = no [ Dialer 2nd_home ] Phone = 7778889999 Then dialout with $ $SUDO wvdial or use the 2nd dialup number with: $ $SUDO wvdial 2nd_home The /etc/wvdial.conf generated by the RedHat/Fedora Internet Wizard has a different format, adapted to its own dialer. This includes a line Stupid Mode = yes More informative dialup feedback May be obtained if it is commented out: # Stupid Mode = yes A dialout with wvdial will then display like: # wvdial & --> WvDial: Internet dialer version 1.53 --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATQ0 V1 E1 M1 S0=0 &C1 &D2 +FCLASS=0 ATQ0 V1 E1 M1 S0=0 &C1 &D2 +FCLASS=0 OK --> Modem initialized. --> Sending: ATDT3019178111 --> Waiting for carrier. ATDT3019178111 CONNECT 53333 V42bis --> Carrier detected. Waiting for prompt. ** APX1.LNH.MD.RCN.NET Terminal Server ** Login: --> Looks like a login prompt. --> Sending: LoginName LoginName Password: --> Looks like a password prompt. --> Sending: (password) Entering PPP Session. IP address is 66.44.1.6 MTU is 1006. --> Looks like a welcome message. --> Starting pppd at Sat Jul 26 13:59:03 2003 --> pid of pppd: 2404 : pppd 2.4.1 started by root, uid 0 : Using interface ppp0 : Connect: ppp0 <--> /dev/tts/LT0 Jul 26 13:59:08 stodolsklap kernel: PPP BSD Compression module registered Jul 26 13:59:08 stodolsklap kernel: PPP Deflate Compression module registered : local IP address 66.44.1.6 : remote IP address 208.59.89.132 : primary DNS address 207.172.3.8 The & in "wvdial &" puts the process into the background, allowing further usage of the command prompt. To stop a backgrounded process: # fg wvdial # Ctrl -C TROUBLE SHOOTING Check for modem driver loading. Do FIRST read INSTRUCTIONS files provided with the modem driver resource. Some may have installed to /usr/share/doc/Modem_or_Driver_Name/ For RPM using distros, documentation files will be listed through rpm -q -d packageName (less the version part, sometimes) and all directly installed files can be listed by rpm -q -l packageName Depending upon your installation, the modem drivers may/may_not be autoloaded. Login as Root in a console with: # su - root # lsmod If the modem drivers are not already loaded onto the kernel, insert them with command # $SUDO modprobe ModuleDriver If there are multiple drivers such as the lt_modem.o and lt_serial.o pair, commanding the serial like driver: # $SUDO modprobe lt_serial should autoload all modules it depends on. Check with: # lsmod This proceeds through a reading of dependency files written to /lib/modules/$SYS/ during boot up through the "depmod -a" command. In constrast # insmod lt_serial would only attempt loading of that single driver and will FAIL, if its dependency on lt_modem.o has been satisfied by prior lt_modem.o insertion. Do read "man wvdial" and /usr/share/doc/vwdial documentation sometime browse the documentation that is written to /usr/share/doc/wvdial/ Therein are instructions for setting up alternative dialouts. %%% This wvdialconf action if successful generates the files: /etc/ppp/peers/wvdial /etc/ppp/peers/wvdial-pipe in addition to the /etc/wvdial.conf Many Users prefer to use the dialout utility KPPP. This is fine. But each User MUST run the configuration process separately. In principle, different Users on the same Linux System could have different Internet providers and/or use different modems. The configuration process generates a file: /home/UserFolder/.kde/share/config/kppprc Therein, non-standard modem port names can be entered, such as: [Modem] Device=/dev/ttySHSF0 for the Conexant hsfmodem port. Preparation for dialout if other COMM modes are active. --------------------------------------------------------------------------- Concurrent ethernet capability will compete for the Domain Name Service (DNS) needed for browser naviagation. So as root: # /sbin/ifconfig eth0 down before starting a dialout! With a Mandrake installation, it will be necessary to: # /etc/init.d/network stop Internet clients such as Netscape, Mozilla, Explorer etc. should be CLOSED during your first dial out trials. Should a URL on the Internet be specifed as the default URL/connect, then the Client may compete with ppp for connectivity functions. After PPP functionality has been verified, the effects of opened or launched browsers can be checked If you have installed the DIALD (dial on demand) package, stop it for initial tests: # /etc/init.d/diald stop Otherwise diald function will be initiated with modem usage, and could compilate issues. Test diald only after ppp by itself is fine. If your internet provider assigns DNS dynamically then add to /etc/ppp/options: usepeerdns To analyze a dialout attempt, it is useful to display kernel messages with: # tail -f /var/log/messages & The & puts the commanded process in the "background" allowing recovery of the command prompt. Some dialer packages (kppp etc) may automate the above steps. Note that for some Linux distributions (Mandrake for one), maintain modules in compressed module.gz format, if modem service was not specified during the Linux installation. A subsequent installation of any dialer package: wvdial - PPP dialer with built-in intelligence. kppp - PPP dialer for KDE dtmfdial - A DTMF Tone Dialer gkdial - Gtk-based PPP dial-up configuration tool. gkdial-gnome - GNOME-based PPP dial-up configuration tool. masqdialer - daemon for remote control of masqueraded dialup links pppconfig - Debian configuration toolset with command: pppconf will stimulate unpacking of ppp related modules during bootup. The cogent ppp related modules loaded during such a CONNECT are displayed within the output from: # lsmod ppp_deflate 3512 1 (autoclean) zlib_inflate 18980 0 (autoclean) [ppp_deflate] zlib_deflate 18648 0 (autoclean) [ppp_deflate] bsd_comp 4440 0 (autoclean) ppp_async 7744 1 (autoclean) ppp_generic 16380 3 (autoclean) [ppp_deflate bsd_comp ppp_async] slhc 5264 1 (autoclean) [ppp_generic For ealier 2.4.nn kernels, loading of these modules may require the following lines within /etc/module.conf : ### automate ppp modules loading ### alias /dev/ppp ppp_generic alias char-major-108 ppp_generic alias tty-ldisc-3 ppp_async alias tty-ldisc-14 ppp_synctty alias ppp-compress-21 bsd_comp alias ppp-compress-24 ppp_deflate alias ppp-compress-26 ppp_deflate ### end ppp block #### For more recent kernels with their modutils, these lines are no longer needed. For potential causes of a NO DIALTONE failure, read the Post-install.html at http://linmodems.technion.ac.il/ Not setting the Country Code may be and additional problem. COUNTRY CODE Issues ==================== The modem which you purchase locally or abroad may not be preset with the proper Country Code setting. An incorrect setting can hinder acquisition of dial tone. Inclusion of an X3 (dial without wainting) in the modem Init string of under wvdial, including in /etc/wvdial.conf a line Stupid Mode = yes Dialtone recognition depends on the setting of country and/or local phone line equipment. To properly get dialtone for your country phone experiment use AT+GCI=xx where xx is country code in hexidecimal format. Theoretically there could be 256 different countries but not all are valid. Tables in manuals are way off date, you have to write a small script to try all combinations for yourself if you can't guess by chance. After country select you can check textual name of the country it represents. For example: at+gci=00 OK ati9 Japan If you can't find exact country, choose the nearest one available. Nearby countries tend to have similar equipment and compatible dialtones. If a message like: Sep 20 09:32:42 localhost pppd[7355]: The remote system is required to authenticate itself is generated during an abort of a login, Then try adding a line to /etc/ppp/options no auth 8) After a successful CONNECT, the Domain Name Service (DNS) needed for Browser navigation can be checked with: # ping corel.com PING comcast.net (63.240.76.72): 56 data bytes 64 bytes from 63.240.76.72: icmp_seq=0 ttl=52 time=209.1 ms 64 bytes from 63.240.76.72: icmp_seq=1 ttl=52 time=189.9 ms 64 bytes from 63.240.76.72: icmp_seq=2 ttl=52 time=180.0 ms 64 bytes from 63.240.76.72: icmp_seq=3 ttl=52 time=179.9 ms # Ctrl-C aborts ping --- comcast.net ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 179.9/189.7/209.1 ms # ping 63.240.76.72 PING 63.240.76.72 (63.240.76.72): 56 data bytes 64 bytes from 63.240.76.72: icmp_seq=0 ttl=52 time=179.8 ms 64 bytes from 63.240.76.72: icmp_seq=1 ttl=52 time=190.0 ms 64 bytes from 63.240.76.72: icmp_seq=2 ttl=52 time=170.0 ms # Ctrl-C aborts ping Should there be a success with: # ping 63.240.76.72 BUT a failure with the named address: ping comcast.net Then DNS has not been acquired. Note that failure to stop ethernet service # /sbin/ifconfig eth0 down before starting a dialout, will commonly block DNS under ppp. To terminate the wvdial session, bring the action to the foreground (fg): # fg wvdial Ctrl-C to terminate: wvdial Caught signal #2! Attempting to exit gracefully... : secondary DNS address 207.172.3.9 : Terminating on signal 15. : Connection terminated. : Connect time 7.8 minutes. --> Disconnecting at Sat Jul 26 14:06:53 2003 The Debian distribution provides a utility: # pppconfig for setting up a chatscript for ppp initiation. Most dialers do use chatscripts and will produce similar records. Below is the record of a dial out initiated by: # pon : pppd 2.4.1 started by marv, uid 1000 : abort on (BUSY) : abort on (NO CARRIER) : abort on (VOICE) : abort on (NO DIALTONE) : abort on (NO DIAL TONE) : abort on (NO ANSWER) : abort on (DELAYED) : send (ATZ^M) : expect (OK) : ATZ^M^M : OK : -- got it : send (ATQ0V1E1M0S0=0W2&C1&D2+FCLASS=0^M) : expect (OK) : ^M : ATQ0V1E1M0S0=0W2&C1&D2+FCLASS=0^M^M : OK : -- got it : send (ATDT3019178111^M) : expect (CONNECT) : ^M : ATDT3019178111^M^M : CONNECT : -- got it : send (\d) : Serial connection established. : Using interface ppp0 : Connect: ppp0 <--> /dev/modem : kernel does not support PPP filtering Jul 26 14:08:39 stodolsklap kernel: PPP BSD Compression module registered Jul 26 14:08:39 stodolsklap kernel: PPP Deflate Compression module registered : local IP address 66.44.1.195 : remote IP address 208.59.89.132 : primary DNS address 207.172.3.8 Once your first CONNECT has been established, than in the future if should suffice just to use your dialer of choice: wvdial , kppp .gnomeppp or whatever. Good surfing to you. 10) GENERAL ITEMS If attemped insertion of a modem driver evokes a complaint like: unresolved symbol do_SAK_R9a0bcb74 then the kernel-headers using in compiling the modem drivers do not match those of your current kernel whose KernelVersion is displayed by: uname -r and whose kernel config file is often located at /boot/config-KernelVersion The section above "COMPILING DRIVERS, for Newbies" relates how to make corrections. There are definitely IPs whose login protocols are Linux hostile. If you cannot achieve a login, try another Internet Provider (IP). or ask for someone on discuss@linmodems.org to test your IP. Many driver packages provide for loading modem drivers on bootup. Here is a description on how to set it up, if necessary: http://linmodems.technion.ac.il/archive-fourth/msg00451.html PLEASE include the diagnostic output of the following Root command in any problem reports: # setserial -agv /dev/ttyS* For instructions on having modem drivers loaded on bootup, particularly the SmartLink slmodem drivers see: http://linmodems.technion.ac.il/archive-fourth/msg00451.html For automated removel of drivers after a PPP session see: http://linmodems.technion.ac.il/archive-fourth/msg00145.html For general upto date advice: http://linmodems.technion.ac.il/ http://linmodems.technion.ac.il/resources.html available in Russian at http://linmodems.nm.ru for a general PCI_ID database http://www.pcidatabase.com/ the original Linux winmodems URL is: http://linmodems.org with a mailing list on Winmodems: discuss@linmodems.org whose archives can be searched at: http://linmodems.technion.ac.il/ (near bottom of the page) There is an extensive modem database at: http://start.at/modem/ Locate your local Linux groups through: http://www.linux.org/groups/index.html USB modem information: http://www.linux-usb.org/USB-guide/x332.html Laptop users should browse http://tuxmobil.org/modem_linux_add1.html For debugging ppp: http://www.cisco.com/warp/public/471/debug_ppp_negotiation.html ---------- end FOLLOW UP STEPS --------------- END cat<>$RECORD2 The Modem/DriverCompiling.txt is a MUST READ, if you are not experienced in configuring kernel-source/ or get "unresolved symbols" upon driver insertion. Most recent WinModem fixes are in: http://linmodems.technion.ac.il/FAQ.html (4) For guidance on automation see http://linmodems.technion.ac.il/archive-fourth/msg03734.html and the scripts in the slmodem-2.9.n/scripts folder/ END cat<Modem/wvdial.txt Modem usage is accomplished through drivers, sometimes some helper software, and the core communication work horse "pppd". Usually it will be found at /usr/sbin/pppd with permissions shown on my Ubuntu system by: $ ls -l /usr/sbin/pppd -rwsr-xr-- 1 root dip 257720 2006-07-05 08:58 /usr/sbin/pppd The s means "sticky" meaning only one person can use pppd at a time. As installed, it requires Root/Adm permissions to use pppd, directly or through front end dialer tools. This is a security precaution common to all COMM channels. But if you want to enable a simple User to dialout, as is basically OK for a single user PC, do: $ su - root # chmod a+x /usr/sbin/pppd or for Ubuntu: $ $SUDO chmod a+x /usr/sbin/pppd after which there will be seen: $ ls -l /usr/sbin/pppd -rwsr-xr-x 1 root dip 257720 2006-07-05 08:58 /usr/sbin/pppd with the last x meaning any one can execute pppd, either directly or much more commonly through a front end dialer such as wvdial of KPPP. Configuration file for wvdial ------------------------------- There is a very smart dialer utility "wvdial" which can be used once basic modem setup is accomplished. A configuration file is needed, which begins below with [Dialer defaults]. This file can be accessed any where by: $ wvdial --config Path_to/configuration_file Most commonly the configuration file is saved as: /etc/wvdial.conf whereat it will serve all Users of the computer. If saved as: /home/LoginName/.wvdial.rc it will be found and used before /etc/wvdial.conf. Note that "." beginning a file name means "do not show it", excess through usage of: $ ls -a Many local configuration files are thus "hidden" in your /home/LoginName/ folder Some Linux installations have dialup tools like Kinternet, GnomePPP, and the Redhat/Fedora Internet Connection Wizard which are front ends for wvdial and will write /etc/wvdial.conf files. For this reason, it is advisable to test your configuration file first, before copying it to /etc/wvdial.conf. Typically a first test is run with: $ $SUDO wvdialconf wvtest WvModem<*1>: Cannot get information for serial port. ttySL0<*1>: ATQ0 V1 E1 -- OK ttySL0<*1>: ATQ0 V1 E1 Z -- OK ttySL0<*1>: ATQ0 V1 E1 S0=0 -- OK ttySL0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK ttySL0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK ttySL0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK ttySL0<*1>: Modem Identifier: ATI -- SmartLink Soft Modem ttySL0<*1>: Speed 4800: AT -- OK ttySL0<*1>: Speed 9600: AT -- OK ttySL0<*1>: Speed 19200: AT -- OK ttySL0<*1>: Speed 38400: AT -- OK ttySL0<*1>: Speed 57600: AT -- OK ttySL0<*1>: Speed 115200: AT -- OK ttySL0<*1>: Speed 230400: AT -- OK ttySL0<*1>: Speed 460800: AT -- OK ttySL0<*1>: Max speed is 460800; that should be safe. ttySL0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK Found a modem on /dev/ttySL0. Modem configuration written to wvtest. ttySL0: Speed 460800; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0" ------ will be included in a successful run, where in this case /dev/ttySL0 is the responding device port. The generated wvtest file is: [Dialer Defaults] Modem = /dev/ttySL0 Baud = 460800 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ISDN = 0 Modem Type = Analog Modem ; Phone = ; Username = ; Password = which at a minimim must be edited to a form like: [Dialer Defaults] Modem = /dev/ttySL0 Baud = 115200 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 ISDN = 0 Modem Type = Analog Modem Phone = 3334445555 Username = Your_Login_Name Password = Your_Password Additional if your modem port is of the type /dev/pts/N , with N a number, then there MUST be added a line: Carrier Check = no This requirement currently applies to dialups using the helper utility: slmodemd together with slamr, slusb or ALSA modem drivers, OR the " " : martian_helper used with the martian_dev for Lucent/Agere modems with DSP chipsets. Then a test dialput can be done with: $ $SUDO wvdial --config wvtest There are some Systems for which the wvdialcon test will stall at rfcomm ports. This is a wvdialconf bug and can be bypassed by just using wvdial with a trial wvtest, but you need to specify the port appropriate to your modem. If the configuration file below, lines beginning with # are comments. Removing a # will activate a line with wvdial instructions appropriate to special circumstances. [Dialer defaults] # Lines begining with # are comments. # wvdial will look for this file at /etc/wvdial.conf or /home/LoginName/.wvdial.rc # Redhat/Fedora have an Internet Connection Wizard in the popup menus # ICW will write a two part /etc/wvdial.conf supporting multiple modem usage. Modem = /dev/ttySL0 Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 # Lack of dialtone acquisition can be due to low line voltage, # a common problem in Italy. # Try inserting a "dial without waiting": X3 # Init2 = ATQ0 V1 E1 S0=0 X3 &C1 &D2 +FCLASS=0 # In case of connection instabilities, specify a lower frequency: # Init2 = ATQ0 V1 E1 S0=0 X3 &C1 &D2 +MS=34 # a MS=90 option is sometimes necessary for Internet Providers with buggy V92 protocols: # Init2 = ATQ0 V1 E1 S0=0 X3 &C1 &D2 +MS=90 ISDN = 0 Modem Type = Analog Modem Phone = Dialout_phone_number # if going through a switch board, a perhaps necessary pause can produced with a comma: # Phone = 1,Dialout_phone_number Username = LoginName # if Internet Provider is MSN.net, use under Linux: MSN/LoginName Password = YourPassWord # the following lines is NEEDED only for usage with slmodemd or martian_helper Carrier check = no # Kinternet appears to add it automatically. ## If CONNECT is achieved but browsing fails, try activating the following line # Auto DNS = yes ## To make a logfile wvdial.out # wvdial 2>&1 | tee wvdial.out # # For some Internet providers, the following line is necessary # Stupid Mode = yes ## for other wvdial options, do "man wvdial" or see the documentation in ## /usr/share/doc/wvdial/ # to dial an alternate provide use "wvdial 2nd" which will preferentially read: [Dialer 2nd] Phone = 2nd_phone_number Username = 2nd_LoginName Password = 2nd_PassWord ## End wvdial config file END cat<Modem/SoftModem.txt Modem Type Readout and Supporting Software Identification. ------------------------------------------------------- Most add on cards to motherboards (including modems) adhere to a PCI standard, for which there is firmware on the card which can be readout, providing setup parameters and specification of the required software. This works under Linux provided that drivers are resident. Herein is the practical problem. During the evolution of modems, some of the complementing software components became Proprietary and Closed Source. A consequence is that for reasons of Legality and/or Principle, many Linux distributions do not distribute such modem drivers with the regular releases, even when the modem chipset designer does provide Linux support code. Without the drivers, additional assistance is needed to identify the modem chipset and its complementing software. The scanModem script includes four routines to determine the software required: 1) Read outs with a lspci tool accessing firmware on PCI cards. 2) A test using modem drivers already on your system as part of the ALSA (Advanced Linux Sound Architecture) software package. See Smartlink.txt for details. 3) Comparison of Primary+Subsystem PCI IDs with others historically gathered, and then archived within scanModem. 4) A test requiring the SmartLink slamr.ko driver. See Smartlink.txt for details. Should these not be adequate, there are directions below for doing diagnostics during an alernate Microsoft Windows bootup. Stop here on a first reading, and just run ./scanModem Read on later if you are interested in details, OR need instructions for doing modem diagnostics under Microsoft. Using MicroSoft(MS) Windows: ----------------------------- MS installations do generally have adequate diagostic capability. Try the following routine 1), beginning with mouse clicks on: 1) Start > Settings > Control Panel > Classical View (for Window XP) > System > Hardware > Device Manager > Modems > Click on the + > Modem. Double click to expand the graphic. Manufacturer information may be displayed. For example, CXT stands for Conexant. Click the Diagnostics Tab. Record any hardware ID or vendor and device information. Next do the Query Modem and record the ATI specifications displayed such as: ATI3 - Agere SoftModem Version 2.1.22 ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27 Try to identify the modem setup file, with name perhaps MODEM.INF. 2) Open a COMM console. Send ATI commands to the modem (ATI, ATI1, ATI2, etc) which may elicit chipset and driver information. Here is an example: ATI3 - Agere SoftModem Version 2.1.22 ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27 successfully identifying an Agere SoftModem chipset, both by name and through the softmodem SIL ID: AC97 ID:SIL REV:0x27 The IBM mwave modem: This has a DSP chip usually seated on the motherboard. Not carried on a PCI card it cannot be detected by scanModem. However, the mwave driver is included in 2.6.n kernel releases. So try: # modprobe mwave Either the module will load or the absence of the modem will be indicated by: FATAL: Error inserting mwave (/lib/modules/2.6.10-1- 686/kernel/drivers/char/mwave/mwave.ko): Input/output error See http://www.linuxdocs.org/HOWTOs/mini/ACP-Modem/ for details on this modem. Modem evolution: ---------------- Here is a very abbreviated history on how modem evolutionary development. The earliest modems (MOdulate and DEModulate signals for phone lines transmission) managed all signal proceesing on the modem card through actions of expensive Controllers chipsets with DSP (digital signal processing) capability. Copyrighted Vn.nm compression routines were also encoded in the chipset. Under Linux, an Open Source serial driver was the minimal complementing software. This generation of Controller chipset modems placed minimal burden on the early slow central processing unips (CPU) of personal computers, such as the Intel 386. As CPUs became faster, it was feasible to transfer some modem functions to the CPU. A 2nd generation of modems retained a DSP chip, but Controller functions were software driven on the CPU. A benefit was that modem hardware became cheaper. But sadly the supporting software was Proprietary. Worst, some Intellectual Property components were Closed Source to protect large investment in code development. Such Controller free modems include the Conexant HCF, Intel-537EP and Mars chipset modems from Lucent or its later subsidary, Agere Systems Inc. As CPUs became even faster, even DSP functions could be software code driven on the CPU. This third generation of modems are commonly called "softmodems". Their complementing software is comparable in sizeto that of the Linux kernel itself. The residual "modem chip" is very cheap, but the development of the complementing software is a large investment on the part of the chip designer/maker. Modem chipset determination under Linux: --------------------------------------- The chipset of a modem determines which complementing software is required. The Manufacturer and Model of an assembled modem are often inadequate to identify the chipset. But sometimes there is an easy chipset identification. There is a "lspci" utility provided in the Linux pciutils package. It reports the PCI identifiers (IDs hereafter) or the Primary card, its Subsystem, and some setup parameters written in firmware. For example, there is a softmodem in the PCI bus of address 00:11.6 on my laptop. Shown below is firmware information acquired by two lspci commands: $ lspci -s 00:11.6 00:11.6 Communication controller: VIA Technologies, Inc. AC'97 Modem Controller $ lspci -s 00:11.6 -nv 00:11.6 0780: 1106:3068 (rev 80) Subsystem: 14ff:100b Flags: medium devsel, IRQ 193 I/O ports at e000 [size=256] The translation is: The card inserted into PCI bus slot 00:11.6 is named "Communication controller: VIA Technologies, Inc. AC'97 Modem Controller". The modem was assembled by a Vendor with ID identification code 1106 . Among 1106's products, it has a Device ID of 3068 in its 80th revison. This usually provides adequate information, to get software from the Vendor designated by 1106 (VIA Technologies, Inc. in this case) for their device designation 3068. The parameters Flags: medium devsel, IRQ 193 I/O ports at e000 [size=256] are determining by the environment of the host computer as reading modem firmware. It may change if other hardware is added/removed from the host computer, or under a change or Operating System (OS) kernel. The problem for softmodems is that additional information is needed for the software specification. The Subsystem Vendor_ID identifies only the assembler company. But the modem chip housed in the Subsystem could be of a variety of types, each requiring different support software. In general, a single Subsystem assembler could use a variety of different softmodem chips. The Subsystem firwmare information on the chipset is not accessible to lspci. Rather it requires usage of a modem driver, if one first had some competent modem driver for minimal diagnositcs. Fortunately there are the software tools and drivers of the ALSA (Advanced Linux Sound Architecture) suite. This includes modem drivers lacking COMM proficiency by themselves, but enough capability to readout the Subsystem firmware. For the VIA modem above, the encoded modem codec is SIL22, reporting that the softmodem chip was made by SmartLink Inc. It is important to emphasis, that AC'97 Modem Controllers are made by a variety of companies, and each may house many different Subsystem modem chips. There is an Archive within scanModem of those with previously identified codecs. For example, the table for the 1106:3068 AC'97 Controller is: codec SubSystems_with_codec ------------> CXT 104d:8143 104d:80f6 1025:0030 SIL27 1102:0033 1025:0046 1025:0033 1734:1078 1509:2870 1025:0046 SIL22 1743:1032 10cf:118e 1734:1054 1462:309e 1631:e004 1543:4c22 161f:2032 and_more SIL21 10cf:118e 13bd:1022 1543:4c21 1071:8375 1019:0c04 1458:1543 1019:b320 MOT66 1734:109b Because of hardware configuration issues, the ALSA tools may initially fail. Then this Archive is a fall back reporting the codec, and therefrom the needed software. For reasons obscure, a single Subsystem ID may have different codecs under different Primary controllers. Thus the pair Primary+Subsystem IDs must BOTH be retained to record the codec. In addition to the Modem Controllers adhering to the AC'97 specifications, softmodem Subsystems may be hosted by High Definition Audio (HDA) cards such as the: 8086:2668 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller These lack a softmodem codec. Instead the softmodem chip information acquired with ALSA tools is within a folder: /proc/asound/card0/codec#1/ and includes the Vendor ID of the softmodem chip, such as 14f1 corresponding to Conexant. The software support: --------------------- The CXT designation above is an abbreviation of CXT_some_number, for Conexant HSF softmodem codecs. These now number some 41 (perhaps more) CXT. Fortunately, all these codecs are supported by a single hsfmodem software package provided through http://www.Linuxant.com The trial package is free, but locked to speeds of 14,400 K. A software key must be purchased to enable full speed support, with future software updates free. There is NO freeware alternative for the hsfmodem software. But Linuxant does provide pre-compiled drivers for the more common Linux kernels, and their support services are good. In the Table below, there are currently some 13 other softmodem codecs. Fortunately all are supported by a combination of the ALSA modem drivers, the ALSA audio drivers the modem drivers depend on, and a very smart helper utility from Smartlink Inc., the slmodemd helper. Sasha Kharposky wrote the Linux slmodemd utility and remains its volunteer maintainer. It provides the cleverness to interface between the low level ALSA modem driver and the pppd package communications codes. For details do: $ slmodemd --help and read associated documentation. The slmodemd is provided with some Linux distributions, and can also be downloaded in SLMODEMD packages from: http://linmodems.technion.ac.il/packages/smartlink/ Subsystems of AC'97 Modem Controllers --------------------------------------- Subsystems for softmodems are primarily made by Silicon Labs (SIL) under contract to companies like Intel, Agere Systems, Motorola etc. In the Table below, ChipMadeBy does NOT imply software support directly from that manufacturer. The chart of information below is largely harvested from messages to discuss@linmodems.org. A codec_indent such as REV:0x27 is reported by diagnostics under Microsoft, as illustrated above. The matching designations such as SIL27 are translations under Linux, which are output by a diagnostic of the slamr.ko driver from the SmartLink slmodem software. SIL is an abbreviation for Silicon Laboratories Inc., which provides Subsystems on order to many modem assemblers. SML is used below as abbreviation for SmartLink Inc. with official driver resources at http://www.smlink.com/main/index1.php?ln=en&main_id=40 . BUT use updated resources at http://linmodems.technion.ac.il/packages/smartlink/. ALSA+SML means use an ALSA modem driver plus the Smartlink slmodemd helper, with the particular driver depending on the AC'97 or HDA host controller. ID was originally a hexadecimal readout from 7c and 7e registers of the SubSystem, but are translated into "english", as done automatically by the slamr driver. ID chip_maker driver/helper sources ---------------- ---------------------- CXTnm Conexant hsfmodem package from http://www.linuxant.com with several hsf* drivers. nm - a number SIL25 Intel ALSA+SML or INTEL-537EP supported AA variant INT65 Intel ALSA+SML or INTEL-537EP supported EA variant SIL26 SML SML, slamr driver plus slmodemd SIL27 AgereSystems ALSA+SML SIL2F " ALSA+SML MOT66 " ALSA+SML AGR01 " ALSA+SML AGR02 " ALSA+SML SIL21 PCTel ALSA+SML SIL23 PCTel ALSA+SML SIL22 SML ALSA+SML SIL24 Broadcom ALSA+SML BCM64 Broadcom ALSA+SML, under Intel ICH family, AC'97 controllers. ---------------------------------------------- Subsystems with the above characteristics could reside under any of the primary softmodem controllers listed below. Ignore the stuff after the > . It serves during parsing of the Table by scan modem Primary PCI_IDs Name Possible support by: --------------- ----------------------------- ------------------------- 8086:2416 82801AA ICHAA AC97 Modem Controller> + A a p c . 8086:2426 82801AB ICHAB AC97 Modem Controller> + A a . 8086:7186 > c . 8086:7196 82440MX Banister AC97 Modem Controller > + A a c . 8086:2446 82801BA/BAM ICH2 AC97 Modem Controller > + A a p c . 8086:2486 82801CA/CAM ICH3 AC97 Modem Controller > + A a p c i . 8086:24c6 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)1DB ICH4 AC97 Modem Controller> + A a c i b . 8086:25a7 6300ESB AC97 Modem Controller NEW > 8086:24d6 82801EB/ER ICH5/ICH5SR AC97 Modem Controller> + A c i . 8086:8280 1EB ICH6 AC97 Modem Controller> + A c . 8086:2668 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller> H c . 8086:266d Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC97 Modem Controller > 8086:2669 631xESB/632xESB AC97 Modem Controller NEW > 8086:27d8 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller HDA > . 8086:27dd (ICH7 Family) AC97 Modem Controller NEW > 8086:xxxx types above are from Intel> 1039:7013 SIS 630 > + a p c i . 1039:7018 SIS 960 > + i . 10de:01c1 Nvidia Corp > + i . 10de:00d9 Nvidia Corp > A c . 1106:3068 VIA > + a p c i . 1022:7446 AMD AC_LINK > + . 10b9:5450 ALI 5450 > 10b9:5451 ALI 5451 > + a c . 10b9:5453 ALI 5453 AC-Link > p c . 1025:5453 ALI 5453 AC-Link > c . 10b9:5457 ALI 5457 AC-Link > + p c i . 1025:5457 ALI 5457 AC-Link > c . . 1002:434d ATI > T a c i . 1002:437b ATI Audio device: ATI Technologies Inc SB450 HDA Audio a . 1002:4378 ATI > c . 1543:3052 SI3052 > Class 0403, High Definition Audio Controllers (HDA) ----------------------------------------------------- 8086:2668 Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) HDA Controller 8086:27d8 Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller 1002:437b Audio device: ATI Technologies Inc SB450 HDA Audio (rev 01) 10de:026c nVidia Corporation MCP51 High Definition Audio ---------------------------------------------------- are the members of this family encountered as of September 2006. From the file /proc/asound/card0/codec#1/, there are the following Subsystem chips: Vendor IDs Chip maker Support type ---------- ---------- ------------- 0x14f12bfa Conexant hsfmodem , not slmodemd compatible 0x11c13026 AgereSystems snd-hda-intel, slmodemd 0x163c3055 Smartlink " " 0x163c3155 " " " 0x10573055 Motorola " " 0x10573155 " " " END fi # fast if test "$ISSUER" = debian -a -z "$BEST" ; then echo " For Debian users, the linux-headers-$SYS.deb can be used instead of kernel-source/" >> $RECORD echo >> $RECORD fi # rm Modem/scanout cat</dev/null ; then rm RanOnce.txt fi fi echo