Update Ulrich Dangel's email address
[grml-network.git] / sbin / scanmodem
1 #!/bin/bash
2 echo
3 NOTE="  ONLY use scanModem downloaded as: http://linmodems.technion.ac.il/packages/scanModem.gz"
4 UPDATE="2005_June_02"
5 cat<<END>/dev/null
6
7  Browse http://linmodems.technion.ac.il   and 
8  download scanModem.gz . Within a Linux partition only:
9     gunzip scanModem.gz
10  To make it executable:
11     chmod +x scanModem
12  Run diagnositics with:
13     ./scanModem
14
15 This following is admittedly a hodge podge of historically entered code bits and diverse contributions.
16 The maintainers weekly updates are based on User's problems and Other's expert advice. 
17 These are in the  Archives at http://www.linmodems.org with 
18 a searchable copy at http://linmodems.technion.ac.il/
19 Maintainer Marvin Stodolsk y  (MarvS) does occassionally simplify this informal code heap.
20
21 Outputs are written to a newly created folder Modem/  
22 The ModemData.txt therein has the major diagnostic output.  
23 It is overly VERBOSE by design, so that all information Potentially Usefull is presented.  
24 This enables more experienced discuss@linmodems.org Volunteers
25 to pick out the bits cogent to a Novices query, without having to search elsewhere.
26 Thus help queries from Novices can be quickly returned with minimal effort. 
27
28 scanPCI written by Chris Hebeisen is the predecessor of scanModem.  It was written to serve
29 within the ltmodem software support packages at http://ltmodem.heby.de .  The role is now
30 fullfilled  by this this script, but called by name "scanmodem", to limit non-relevant output in 
31 the ltmodem package environment.
32
33 END
34
35 echo UPDATE=$UPDATE
36 # BaseName can be inherited from the ltmodem script ./build_module or Installers or checkout
37 if test -z "$BN" ; then  BN=`basename $0` ; fi
38 if [ "$BN" = "scanModem" ] ; then  echo $NOTE ; fi
39
40 # for script testing, with $2 and $3 format  VendorID:DeviceID
41 if [ "$1" = "test" ] ; then
42   TST=1
43   PCIDEV="$2"
44   SUBSYS="$3"
45   DISTR="$4"
46   SYS="$5"
47   GCCmajor="$6"
48   CPU="$7"
49 fi
50
51 # Short term files have names 0tmpfile.1 2 3 etc.
52 if test -z "$TMPM" ; then
53   if test -d /dev/shm ; then
54     # use /dev/shm RAM space if possible for transient writes
55     SHM=`ls -dl /dev/shm | cut -d' ' -f1`
56     if [ "$SHM" = "drwxrwxrwt" ] ; then 
57       TMPM=/dev/shm/0tmpfile
58     else
59       TMPM=0tmpfile
60     fi  
61   fi
62 else
63   TMPM=0tmpfile
64 fi
65 echo > $TMPM
66 echo 
67 # conditional when scanmodem is used in ltmodem.deb or .rpm installation
68 #  with stops disabled
69 mkdir -p Modem
70 if ! [ "$BN" = "scanModem" ] ; then
71   FAST=yes
72   RECORD2=/dev/null
73 else
74   RECORD2=Modem/YourModem.txt
75   echo  $0 should ONLY be run within a Linux/UNIX partition.
76   echo  If within a MicroSoft/DOS partition, abort with Ctrl-C now !!!
77   echo  Copy scanModem.gz to your Linux partition and restart.
78   echo
79 fi
80 if [ "`pwd`" = "/" ] && ! [ "$ENVIR" = "rpm" ] ; then
81   cat<<END
82
83  $0 should NOT be run in the / directory!!
84  Copy scanModem to /root/ or /tmp/ of some /home/User/ folder.
85  Exiting now
86
87 END
88   exit
89 fi
90
91 if test -z "$RECORD" ; then
92   mkdir -p Modem
93   RECORD=Modem/ModemData.txt
94   echo > $RECORD
95 else
96   echo ------------ beginning SCANMODEM section ------ >>$RECORD
97 fi
98 echo > $RECORD2
99
100 # Defining other needed variables, there may be testing inputs
101 if test -z "$SYS" ; then
102   SYS=`uname -r`
103 fi
104 FILTER="$SYS"_
105 # FILTER needed for Debian style distros
106
107 # SYS=2.6.8.1-3-686
108 MAJOR=`echo $SYS | cut -d. -f1-2`
109 Ktest1=`echo $SYS | cut -d- -f1`
110 Ktest2=`echo $Ktest1 | cut -d. -f4`
111 KERNEL_RELEASE=`echo $SYS | cut -d. -f3-`
112 KERNEL_RELEASE_NUM=`echo $KERNEL_RELEASE | sed 's/^\([0-9][0-9]*\).*/\1/'`
113 if test -n "$Ktest2" ; then
114   KVER=`echo $SYS | cut -d. -f1-3`
115   KEXT=.$Ktest2
116   BASE=`echo $SYS | cut -d- -f1`
117   LOCAL=`echo $SYS | cut -d- -f2-`
118   PVER="$BASE"_"$LOCAL"
119 else
120   KVER=`echo  $SYS | cut -d- -f1`
121   KEXT=`echo  $SYS | cut -d- -f2-`
122   PVER="$KVER"_"$KEXT"
123 fi
124 # PVER needed for rpm underscore syntax
125
126 if test -z "$CPU" ; then
127   CPU=`uname -m`
128 fi
129 # CPU=i686
130 # Define version, currently 8.26a9, within ltmodem CVS maintained by Mark Spieth
131 LT_VERSION=8.31a10
132
133 if test -z "$DISTR" ; then
134   STEM=`cat /etc/issue | cut -c 2- | cut -d' ' -f1`
135   distro=`ls /etc/* | grep $STEM | grep version | cut -d_ -f1 | cut -d- -f1 | cut -d/ -f3`
136  # Acquire distribution data
137   DISTRO_FILES="redhat-release SuSE-release mandrake-release conectiva-release  \
138    bluepoint-release  slackware-version  gentoo-release debian_version knoppix-version \
139    fedora-release xandros-desktop-version "
140    # redhat MUST proceed mandrake in this listing as Mandrake has an /etc/redhat-release
141  for i in $DISTRO_FILES
142  do
143   if [ -a /etc/$i ] ; then
144     DISTRO=$i
145     # generating short name
146     if [ -n "$DISTRO" ] && [ "$DISTRO" = "fedora-release" ] ; then
147       FEDORA=1
148     else
149       DISTR=`ls /etc/$i | cut -d/ -f3 | cut -d"-" -f1`
150     fi
151     if [ "$DISTR" = "debian_version" ] ; then
152        DISTR=debian
153     fi
154     DVERSION=`cat /etc/$i`
155   fi
156   done
157 fi
158
159 if [ -z "$DISTRO" ] && [ -z "$DISTR" ]  ; then
160   DISTR="Not_identified"
161 fi # DISTR
162 if [ -f /etc/issue ] ; then 
163   ISSUE=`cat /etc/issue | cut -d' ' -f1-2`
164 fi
165 if [ "$BN" = "scanModem" ] ; then
166   cat<<END>Modem/UNSUBSCRIBE.txt
167    For instructions to UNSUBSCRIBE from discuss@linmodems.org,
168    send an email to:   discuss-help@linmodems.org
169 END
170   cat<<END>>$RECORD
171
172  DO use the following line as the email Subject Line, to alert cogent experts:
173       $BN, $ISSUE kernel $SYS
174  Occassionally reponses are blocked by an Internet Providers mail filters.
175  So do in a day also check the Archived responses at DISCUSS@linmodems.org
176 Code updated on:  $UPDATE
177 ------------ --------------  System information ------------------------
178 `cat /etc/issue | cut -d'\' -f1`
179  distro=$distro
180  on System with processor: $CPU
181  currently under kernel:   $SYS
182 END
183 fi
184 if [ "$DISTR" = "slackware" ] ; then
185     echo "  m.mohr@laposte.net will help with Slackware problems" >>$RECORD
186 fi 
187 if [ "$CPU" = "x86_64" ] || [ "$CPU" = "x86_64-smp" ] ; then
188   cat<<END>>$RECORD
189   
190  See success reports on a softmodem installation on AMD Athlon 64 system
191  http://linmodems.technion.ac.il/archive-fourth/msg02592.html -  slmodem compatible
192  http://linmodems.technion.ac.il/archive-fourth/msg03581.html -   Conexant hsfmodem
193
194 END
195 fi
196 if [ "$MAJOR" == "2.6" -a $KERNEL_RELEASE_NUM -ge 10 ]; then
197   cat<<END>>$RECORD
198
199 There are emerging complications under 2.6.10 and later kernels.  Concerning code for:
200 Smartlink slmodem :
201    slmodem-2.9.9d.tar.gz at http://linmodems.technion.ac.il/packages/smartlink/
202       has the current fixes.  Related messages are:
203    http://www.datiku.com/documents/2610_migration.php
204    http://www.ussg.iu.edu/hypermail/linux/kernel/0409.3/0345.html 
205    http://linmodems.technion.ac.il/archive-fourth/msg03736.html .
206    http://linmodems.technion.ac.il/packages/smartlink/  has an upgrab-winmodem.tar.gz,
207        providing a driver to alleviate inappropriate capture of a winmodem by a serial port driver. 
208 Lucent/Agere DSP/ltmodem:
209   http://linmodems.technion.ac.il/archive-fourth/msg03733.html 
210 Concerning Intel-536ep and 537
211    http://www.ubuntulinux.org/wiki/IntelFiveThreeSixEPModemHowto/ 
212    http://linmodems.technion.ac.il/archive-fifth/msg00280.html
213    http://linmodems.technion.ac.il/archive-fifth/msg00881.html
214    
215 END
216 fi
217
218 ls /boot/config* &> $TMPM
219 if grep config $TMPM >/dev/null ; then
220   if grep "CONFIG_REGPARM=y" /boot/config*>/dev/null ; then
221     cat<<END>>$RECORD
222
223  The kernel-$SYS was compiled with CONFIG_REGPARM, providing more compact and faster code.
224
225 END
226   fi
227 fi
228 if [ "$SYS" = "2.4.25-1-multimedia-686" ] ; then
229    cat<<END>>$RECORD
230    
231  For the Debian derived DeMudi multimedia distribution, the kernel-headers do Not faithfully
232  represent the installation kernel  version 2.4.25-1-multimedia-686.  This may block compilation
233  of certain drivers.  To compile auxiliary drivers,
234  update to a more recent Debian kernel and matching kernel-headers. Subsequently compile
235  modem drivers under the new kernel.  For the Lucent/AgereSystems DSP modem, a driver pair
236  and instructions are included in  ltmodem-2.4.25-1-multimedia-686.tar.gz
237  at http://linmodems.technion.ac.il/packages/ltmodem/Demudi/
238  
239 END
240 fi
241
242 GCC_INPUT=`cat /proc/version |  sed -e 's/)/ /g' | sed -e 's/(/ /g'`
243 # sed to remove (  and  )
244 GCC_PC=`for i in $GCC_INPUT ; do echo $i ; done | grep -A2 gcc | grep -A1 ersion | grep -v  ersion` 
245 # Picks our version following gcc
246 echo " The kernel was assembled with compiler:  $GCC_PC">> $RECORD
247 GCC_TEST=`echo $GCC_PC | cut -d. -f1`
248 echo $GCC_TEST > $TMPM
249 if grep "-" $TMPM >/dev/null ; then
250   GCCmajor=`echo $GCC_TEST | cut -d- -f2`
251 else
252   GCCmajor=$GCC_TEST
253 fi
254
255 if test -z "$GCC" ; then
256   # could be test input
257   GCC=`gcc -dumpversion`
258   GCCs=`echo $GCC | cut -d. -f 1-2`
259 fi
260 if test -z "$GCC" ; then
261   echo " a $GCCmajor package must be installed to support driver compiling">>$RECORD
262   GCC=none
263 else
264   echo " with current System compiler GCC=$GCC">>$RECORD
265   GCCsys=`echo $GCC  | cut -d. -f1-`
266   if [ -L /usr/bin/gcc ] ; then
267     echo "    /`ls -l /usr/bin/gcc | cut -d/ -f2-`" >>$RECORD
268   fi
269 fi
270 echo >>$RECORD
271 echo "Checking for kernel-headers needed for compiling.">>$RECORD
272 SRCS=`ls -d /usr/src/lin* /usr/src/ker*  /lib/modules/$SYS/build  2>/dev/null`
273 if test -n "$SRCS" ; then
274   for d in $SRCS
275   do
276     if test -f $d/include/linux/version.h ; then
277       if grep $SYS $d/include/linux/version.h >/dev/null ; then
278         echo " kernel-headers have base folder $d">>$RECORD
279       fi
280     fi
281   done
282 else
283   cat<<END>>$RECORD
284 Kernel-header resources are not evident.
285 Within your Linux distributions' installation CD or online resource (and mirrows), search for :
286   Distribution  PackageName                     OnLine
287   ----------------------------------------------------------------------
288  Debian                 kernel-headers-$SYS     http://www.debian.org/distrib/packages or install CD
289  Ubuntu                 linux-headers-$SYS              http://http://packages.ubuntu.com/ or install CD
290     Debian & Ubuntu will also require installation of kernel-kbuild package 
291  Mandrake       kernel-source-$SYS         If not present on install CDs search
292         http://mirror.switch.ch/ftp/mirror/mandrake/official/10.0/i586/Mandrake/RPMS/ 
293         http://rpms.mandrakeclub.com/rpms/mandrake/official/LByName.html, or other mirrors.
294   SuSE          kernel-source-$SYS               , kernels are named k_deflt
295 One of which must be installed if compiling drivers to match kernel $SYS proves necessary.
296 Within the output Modem/ folder, read CompilingDrivers.txt for details.
297   
298 END
299 fi
300 echo >>$RECORD
301
302 # Check for /dev/modem link
303 if [ -L /dev/modem ] ; then
304   echo " Modem symbolic link is:  /`ls -l /dev/modem | cut -d/ -f2-`" >>$RECORD
305 else
306   echo " A /dev/modem symbolic link is not set.">>$RECORD
307 fi
308
309 if test -d /dev/tts ; then
310    echo " Checking for /dev/tts/  devices" >> $RECORD
311    ls -l /dev/tts/ >> $RECORD
312    echo >> $RECORD
313 fi
314 if test -f  /proc/bus/usb/devices ; then
315    if grep odem /proc/bus/usb/devices>/dev/null ; then
316        grep odem /proc/bus/usb/devices  >> $RECORD
317        # S:  Product=U.S. Robotics 56K Faxmodem USB
318        if grep "USB  HSF Modem" /proc/bus/usb/devices>/dev/null ; then
319           echo "  Download the hsfmodem package from http://www.linuxant.com/drivers">> $RECORD 
320        fi
321    else
322       echo " USB modem not detected.">> $RECORD 
323    fi
324 else
325    echo "   /proc/bus/usb/devices file not present, barring USB modem query.  ">> $RECORD 
326 fi
327 echo >> $RECORD
328
329 PNP=`dmesg | grep "IRQ XX" `
330 if test -n "$PNP"  ;  then
331   cat<<END>> $RECORD
332
333   If after boot up
334 # dmesg  | grep "IRQ XX" 
335 displays:
336     IRQ XX nobody cared
337  a change in the bootup BIOS may be necessary to a non-PNP choice is likely necessary.
338  
339 END
340 fi
341
342 if [ "$DISTR" = "mandrake"  ] ; then
343    cat<<END |  tee -a $RECORD
344    
345    For Mandrake 9.1 later, installation of the pciutils.rpm  package providing  lspci is necessary.
346    The installed utility   lspcidrake  is NOT an adequate alternate for scanModem support.
347
348 END
349 fi
350
351 LSPCI_PATH="/bin /usr/bin /sbin"
352 for i in $LSPCI_PATH
353 do
354   if test -x $i/lspci
355   then
356     LSPCI=$i/lspci
357   fi
358 done
359 if test -z $LSPCI
360 then
361   echo "+----------------------------------------------+"
362   echo "|    WARNING: lspci not found  - exiting       |"
363   echo "|    Please install the package:  pciutils     |"
364   echo "+----------------------------------------------+"
365   echo
366   exit 1
367   echo
368 else
369   if ! $LSPCI &>/dev/null
370   then
371     echo "WARNING: $LSPCI returned error - not checking for modem"
372     echo
373     echo Exiting
374     echo
375     exit 1
376   fi
377 fi
378 # ending lspci test section
379
380 # Acquire PCI bus slots.
381 echo Modem > $TMPM
382 echo modem >> $TMPM
383 echo "erial controller" >> $TMPM
384 # filering for modem
385 PCIBUS=`$LSPCI 2>/dev/null  | grep -f $TMPM | cut -d' ' -f1`
386 BUS2=`$LSPCI -n 2>/dev/null | grep " 07..: " | cut -d' ' -f1`
387 # add CLass 07 devices if not already recognized
388 echo "$PCIBUS" > $TMPM.1
389 if ! [ "$BUS2" = "" ]  ; then
390   for i in $BUS2
391   do
392   if ! $LSPCI 2>/dev/null  | grep $i | grep "FIR Port" >/dev/null ; then
393     # exclude Infrared controllers
394     if ! grep $i $TMPM.1 >/dev/null ; then
395       # exclude already captured PCIBUS
396       PCIBUS="$PCIBUS $i"
397     fi
398   fi
399   done
400 fi
401 if test -n "$TST" ; then
402   PCIBUS=`echo $PCIBUS | cut -d' ' -f1`
403 fi
404
405 if test -z "$PCIBUS" && [ -z "$PCIDEV" ] ; then
406   # Display all PCI devices only if no candidates.
407   echo --------- lspci scan ---------------- >>$RECORD
408   echo " PCI_bus">>$RECORD
409   $LSPCI 2>/dev/null >>$RECORD
410   echo ------------------------------------- >>$RECORD
411
412 # if no modem candidates AND not PCIDEV input test
413   if  $LSPCI 2>/dev/null  | grep "udio controller" | grep M5451 >/dev/null ; then
414     AUDIO=`$LSPCI 2>/dev/null  | grep "udio controller" | cut -d' ' -f2-`
415     cat<<END>>$RECORD
416
417  Though not displayed, an embedded soft modem may reside in this Audio card:
418     $AUDIO
419  which sadly is not yet supported under Linux.  However a low level driver may 
420  in the future become available, which provide access to the higher level COMM
421  functions already avialable in the SmartLink slmodemd. 
422  Browse the Modem/Slmodem.txt for some details. 
423
424 END
425   fi
426   
427   cat<<END>>$RECORD
428
429  A modem was not detected among the above PCI devices.
430  This indicates that the modem, if present has a non-standard or ISA bridge.
431  Please follow the directions in Modem/SoftModem.txt  for identifying the modem properties
432  when booting under Microsoft Windows. Also access any documentation sources
433  on yourchipset.  Guidance can only be provided AFTER
434  the chipset and/or its drivers have been identified.
435  
436  The IBM mwave modem does have a driver within 2.6.n kernel+module releases.  If is at:
437          /lib/modules/$AYA/kernel/drivers/char/mwave/mwave.ko
438 and can be loaded only if Mwave hardware is present  Test with: 
439  #  su - root
440  followed by
441  # modprobe wmave
442  If successful see: 
443         http://tedfelix.com/Mwave/
444         http://www.linuxdocs.org/HOWTOs/mini/ACP-Modem/   , section 2.4 and later.
445         http://www.freenetpages.co.uk/hp/mjbou/dwtpul.html
446         http://tedfelix.com/Mwave/
447         
448  A failure response has output like:
449         FATAL: Error inserting mwave (/lib/modules/2.6.10-1-686/kernel/drivers/char/mwave/mwave.ko): Input/output error
450 indicating absence of an Mwave modem
451
452 END
453 else
454
455 $LSPCI | grep audio >>$RECORD
456 echo >>$RECORD
457 # The 2nd Table in Modem/SoftModem.txt is parsed if a soft modem controller is resident
458 cat<<END>Modem/SoftModem.txt
459     
460                   Soft Modem Information
461
462 The earlier generations of modems had chips with digital signal processing (DSP) capability in which
463 most of the total modem effort proceeded.  The "soft modem" is a generic name for modems 
464 which lack DSP.  Rather, the CPU does almost all the signal processing as directed by software code. 
465 There are a few soft modems which are fully identified by the primary PCI ID of the modem card, 
466 such as the Agere Systems 11c1:048(a,b,c,d) series.
467
468 The larger family is more troublesome, for identification of supporting software. 
469 They are comprised of a primary modem controller which can host a variety of Subsystems. 
470 Both the primary PCI ID and "mc97 codec"  written in a Subsystem firmware chip are required,
471 for assessing support under Linux.  Only subsequently is the Subsystem PCI ID useful, for record keeping.  
472
473 The scanModem script contains five routines for acquiring  the critical mc97 codec identification:
474 1) a modem driver independent test, only usefull for some of the earliest soft modems,
475    described at the end of this file;
476 2) a test using modem drivers already on your System,  as part of  the ALSA (Advanced Linux Sound
477  Architecture) software package ; See Slmodem-ALSA.txt for details.
478 3) a test requiring the SmartLink slamr.ko driver:  see Slmodem.txt ;
479 4) comparison with PCI IDs with codecs historically gathered and stored within scanModem;
480 5) In case 1-4 are not adequate, there are the following instructions for running ATI queries under Microsoft windows.
481 Chipset information may be obtained under Microsoft Windows through:
482  1) Start > Settings > Control Panel > Classical View (for WinXP) > Modem  , or alternatively,
483    Start > Settings > Control Panel > Classical View (for WinXP) > System > Devices > Modem
484    Do the modem diagnostics test, if available, looking for manufacturer chipset,
485    It is within information output in lines:  ATI - specifications
486       Try to identify the modem setup file, with name perhaps MODEM.INF
487  2) Open a COMM console, and send ATI commands to the modem (ATI, ATI1, ATI2, etc)
488    which may elicit chipset and driver information. Here is an example
489        ATI3 - Agere SoftModem Version 2.1.22
490        ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27
491    successfully identifying an Agere SoftModem chipset, both by name and through
492    the:softmodem SIL ID:              AC97 ID:SIL REV:0x27
493  
494  The IBM mwave modem cannot be detected by scanModem.  
495  But the mwave driver is included in 2.6.n kernel releases.  So try
496  # modprobe mwave
497  Either the module will load, or the absence of the modem will be indicated by:
498 FATAL: Error inserting mwave (/lib/modules/2.6.10-1-686/kernel/drivers/char/mwave/mwave.ko): Input/output error
499 See http://www.linuxdocs.org/HOWTOs/mini/ACP-Modem/  for details on this modem.
500
501 Subsystems for softmodems are primarily made by Silicon Labs (SIL), 
502 under contract to companies like Intel, Agere Systems, Motorola  etc.
503 In the Table below,
504 The ChipMadeBy does NOT imply software support directly from that manufacturer.
505
506 The chart of information below is largely harvested from messages to discuss@linmodems.org.
507  A codec_indent  like REV:0x27 is reported by diagnostics under Microsoft, as illustrated above. 
508 The matching designation like SIL27 are translations under Linux, 
509     output by a diagnostic of the slamr.ko driver, from the SmartLink slmodem software. 
510 The SIL is an abbreviation for  Silicon Laboratorys Inc., which provides Subsystems for many total modem assemblies. 
511 SML is used below as abbreviation for SmartLink Inc.,  with official driver resources at
512        http://www.smlink.com/main/index1.php?ln=en&main_id=40  and recent patches provided at:
513        http://linmodems.technion.ac.il/packages/smartlink/ 
514
515    codec_ident    ID translation     driver sources 
516 ---------------------  ------------------      -------------------------       
517  0x21      SIL21   PCTel     for 2.4.n kernels, pctel-2.7.9 at http://linmodems.technion.ac.il/pctel-linux,
518                                              and SML for  2.4.n or 2.6.n kernels
519  0x23      SIL23   PCtel      same as SIL21               
520  0x22      SIL22   SML              
521  0x24      SIL24   Broadcom, use   SML drivers
522  ????      BCM64  Broadcom, use   SML in ALSA mode,  but only under the Intel ICH modem controllers.
523 0x25      SIL25   Intel 537AA           "  or SML
524 ????        INT65   Intel 537EA http://linmodems.technion.ac.il/packages/Intel/537/ or SML
525 0x26      SIL26    Silicon Integrated Systems (SiS), use SML drivers
526 0x27      SIL27   AgereSystems(AS), use  SML  needed under 2.6.n kernels,
527                              but for  2.4.n, there are also AS drivers through  http://www-3.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52698  
528  ????       CXT(21,22,23,29,41  and others)   Conexant -        http://www.linuxant.com/drivers, the hsfmodem package      
529  -------------------------------------------------------------------------------- 
530   If a novel identifier is displayed during diagnostics, please report to discuss@linmodems.org
531  
532 A rough/practical guide is first given, with some qualifications and exceptions to follow:
533      SILnm  (n,m digits) are SML supportable;
534      CXTnm are ONLY supported by the  http://www.linuxant.com/drivers, the hsfmodem package ;
535      INTnm  are supported by Intel drivers and perhaps slmodemd with ALSA support;
536      BCMnm, INT65  (and similar name styles) have had successes with SmartLink slmodem in ALSA mode.
537      See the companion Slmodem-ALSA.txt for details.
538 Qualifications  to the Table below relate to Linux software support for soft modem controllers.
539 In particular,  no software package provides support for all soft modem controllers.
540              
541 Primary              
542 PCI_IDs           Name                     Possible support by:
543 ---------------  -----------------------------  -------------------------
544 8086:1080 ac97 controller                               i . 
545 8086:2416 82801AA ICHAA >               + A a  p c .
546 8086:2426 82801AB ICHAB >               + A a .
547 8086:7186 >                                                             c .
548 8086:7196 82440 Banister  >             + A a      c .
549 8086:2446 82801BA ICH2  >               + A a p c .
550 8086:2486 82801CA/CAM ICH3 >    + A a p c i .
551 8086:24c6 82801DB ICH4 >                + A a   c i b .
552 8086:24d6 82801EB ICH5 >                + A     c i .
553 8086:266d 82801EB ICH6>                 +       c .
554 8086:xxxx types above are from Intel   
555
556 1039:7013  SIS 630 >                            + a p c i .
557 1039:7018  SIS 960 >                            +       i .
558 10de:01c1  Nvidia Corp >                        +       i .
559 10de:00d9  Nvidia Corp >                            A      c   .
560 1106:3068  VIA >                        + a p c i .
561 1022:7446  AMD AC_LINK >                + .
562 10b9:5450  ALI 5450 >                     
563 10b9:5451  ALI 5451 >                     
564 10b9:5453  ALI 5453 AC-Link  >          p c .
565 1025:5453  ALI 5453 AC-Link  >              c .
566 10b9:5457  ALI 5457 AC-Link >   +    p   c i .
567 1025:5457  ALI 5457 AC-Link  >               c .                   .
568 e159:0001  TigerJet >                                           i .
569 1002:434d  ATI >                                          T  a    c i .
570 1543:3052  SI3052 >                                             i .
571 10ec:8197  RealTek >                             + .
572   --------------------------------------------------------
573 The following letters indicate compatibility for the modem controller,
574 BUT do NOT gaurantee support by the software. 
575 Support MUST be ascertained by identifing the soft modem codec.
576
577   +   SmartLink (SML) - http://www.smlink.com,  the slmodem-2.9.9 series
578   A   SML slmodem-2.9.9d-alsa software supporting the ALSA intel8x0m-modem driver
579       Soft modems with the Broadcom codec BCM64 should thus be served. 
580   T   SML slmodem-2.9.9d-alsa software supporting the ALSA snd-atiixp-modem driver
581 With the above SML software, port creation is controlled by a daemon, slmodemd,
582 rather than being a static feature of the /dev/ files.
583   a   AgereSystems only under 2.4.n
584   p   PCtel support at http://pctelcompdb.sourceforge.net/
585   c   Conexant/Rockwell - http://www.linuxant.com
586   i   Intel - http://www.intel.com
587   b   Broadcom, under 2.4.n kernels, with ALSA code under 2.6.n
588   for details on A and T slmodem implementations, see Modem/ALSA.txt
589  ===========================================================
590
591 To achieve codec readouts for SmartLink (SML) compatible modem controllers listed above,
592 follow the directions in Slmodem.txt.
593
594 The 1) driver independent test, some details
595 During bootup, kernel diagnostics on the System are stored for later display by:
596         dmesg
597 This information may include a SIL_id of modems under AC97/MC97 Controllers,
598 depending upon the type of bridging of the modem card to the motherboard.
599 The scanModem script processes dmesg output to capture AC97 modem information,
600 parses it into a SIL_id if possible, and then displays of modem chipset information.
601 Guidance to sources of modem supporting software may thus be obtained.
602
603 The transfer of the AC97 information to the dmesg buffer requires that modules supporting
604 both the digital audio card and the ac97_codec be loaded during bootup:
605    modprobe ac97_codec
606    modprobe audio_drivers  (such as i810_audio)
607 This can be checked after bootup with:
608    lsmod
609
610 This script can also be used by entering a test block with nomenclature:
611         $0 SILtest
612 with SILtest a text file in This Folder
613 containing a section of a dmesg output or /var/log/messages like:
614
615   i810: Intel ICH 82801AA found at IO 0xdc00 and 0xd800, IRQ 11
616   i810_audio: Audio Controller supports 2 channels.
617   ac97_codec: AC97 Audio codec, id: 0x4144:0x5340 (Analog Devices AD1881)
618   i810_audio: AC97 codec 0 Unable to map surround DAC's (or DAC's not present), total channels = 2
619   ac97_codec: AC97 Modem codec, id: 0x5349:0x4c22 (Silicon Laboratory Si3036)
620
621 which does include a line beginning with:   ac97_codec: AC97 Modem codec, id:
622  
623 END
624   # detected modem devices
625
626    echo "Modem candidates are at PCI_buses:  $PCIBUS">>$RECORD
627    echo PCIBUS=$PCIBUS
628 fi 
629 #  Start modem displays
630 for i in $PCIBUS
631 do
632   if $LSPCI -n 2>/dev/null  | grep $i | grep Class >/dev/null ; then
633     CLASS0=`$LSPCI -n 2>/dev/null  | grep $i | cut -d' ' -f3-4`
634   else
635     CLASS0=`$LSPCI -n 2>/dev/null  | grep $i | cut -d' ' -f2-3`
636   fi 
637   # $LSPCI -n 2>/dev/null  | grep $i | cut -d' ' -f2-4 > $TMPM
638   # echo "0000:00:02.6 0703: 1039:7013 (rev a0)" > $TMPM
639   CLASS="Class $CLASS0"
640   NAME=`$LSPCI -v 2>/dev/null | grep $i | cut -d' ' -f2-`
641   if test -n "$TST" ; then
642     echo Using the test inputs.
643     cat<<END | tee -a $RECORD
644
645     Substituted test inputs:
646  PCIDEV=$PCIDEV
647  SUBSYS=$SUBSYS
648
649 END
650   else     
651     PCIDEV=`echo $CLASS | cut -d' ' -f3`
652     cat<<END | tee -a $RECORD 
653     
654 Providing detail for device at  $i
655   with vendor-ID:device-ID
656             ----:----
657 $CLASS   $NAME
658 END
659   fi
660   Vendor=`echo $PCIDEV | cut -d: -f1`
661   Device=`echo $PCIDEV | cut -d: -f2`
662   # Now Subsystem info
663   # It would be more elegant in the above queries to select  -s PCI_bus.
664   # But for older lspci versions, there is failure of    lspci -s PCI_bus
665   # when the PCIBUS has an "f" as on some Acer motherboards with a PCI slot   00:1f.6
666   SUBNAME=`$LSPCI -v 2>/dev/null  | grep -A1 $i | grep Subsystem | cut -d: -f2-`
667   if test -n "$TST" ; then
668     echo "Using test  $SUBSYS   Subsystem"
669     # skip if test SUBSYS was input
670   else
671     SUBSYS=`$LSPCI -nv  2>/dev/null  | grep -A1 $i | grep Subsystem: | cut -d' ' -f2`
672     echo "  SubSystem $SUBSYS  $SUBNAME" | tee -a $RECORD
673     $LSPCI -nv 2>/dev/null | grep -A2 $i | grep -v Class | grep -v Subsystem: | tee -a $RECORD
674     IRQ0=`$LSPCI -v 2>/dev/null  | grep -A2 $i | grep IRQ | grep "IRQ 0"`
675     if test -n "$IRQ0" ; then
676       cat<<END>>$RECORD
677
678  The modem will NOT function because of interrupt assignment: IRQ 0
679  Possible corrections are:
680    1) to access the  the boot up BIOS change to a non-PNP mode.
681    Instructions for accessing BIOS are at:
682       http://linmodems.technion.ac.il/resources.html within:  Additional Resourcces.
683    2) Within some BIOS setups, IRQ assignments can be changed.
684    3) On non-laptop systems moving the modem card to another slot has helped.
685    4) Sometimes upgrading the kernel changes IRQ assignment.
686
687 END
688     fi
689   fi
690   if test -n "$SUBSYS" ; then
691     SUBven=`echo $SUBSYS | cut -d: -f1`
692     SUBdev=`echo $SUBSYS | cut -d: -f2`
693   fi
694   cat<<END | tee -a $RECORD
695   
696                   -----PCI_IDs-------                    --CompilerVer- 
697     Feature List:  Primary  Subsystem Distr  KernelVer   kernel default  CPU
698  ./scanModem test $PCIDEV $SUBSYS $DISTR $SYS  $GCC_PC $GCC    $CPU
699
700 END
701     ## Checking for major chipset types
702   if grep  $PCIDEV Modem/SoftModem.txt >/dev/null ; then
703     # Check for support under the Controller of the unknown Subsystem chip
704     CNTRL=`grep $PCIDEV Modem/SoftModem.txt | cut -d">" -f1`
705     cat<<END | tee -a $RECORD
706        
707  The soft modem Subsystem operates under a controller
708    $CNTRL
709  capable of supporting under Linux AT LEAST modem Subsystem chips from manufacturers:
710 END
711 echo >>$RECORD
712     if grep $PCIDEV Modem/SoftModem.txt | grep "p " >/dev/null ; then
713        echo "   Pctel"  | tee -a $RECORD
714        SOFT=PCTEL
715     fi
716     if grep $PCIDEV Modem/SoftModem.txt | grep "b " >/dev/null ; then
717        echo "   Broadcom"  | tee -a $RECORD
718        SOFT=$SOFT" BRD"
719     fi
720     if grep $PCIDEV Modem/SoftModem.txt | grep "a " >/dev/null ; then
721        echo "   AgereSystems"  | tee -a $RECORD
722        SOFT=$SOFT" AGR"
723        AGR=1
724     fi
725     if grep $PCIDEV Modem/SoftModem.txt | grep "c " >/dev/null ; then
726        echo "   Conexant" | tee -a $RECORD
727        SOFT=$SOFT" CNX"
728        CNX=1
729     fi 
730     if grep $PCIDEV Modem/SoftModem.txt | grep "i " >/dev/null ; then
731        echo "   Intel"  | tee -a $RECORD
732        SOFT=$SOFT" INTEL537"
733        AAEA=1
734        INTEL537=1
735     fi
736     echo $SOFT>$TMPM.soft
737     if grep $PCIDEV Modem/SoftModem.txt | grep "+ " >/dev/null ; then
738        echo "   Smartlink"  | tee -a $RECORD
739         SMLok=" Driver slamr from the SmartLink slmodem package can identify the soft modem codec."
740     smart=may
741     fi
742     if grep $PCIDEV Modem/SoftModem.txt | grep "A " >/dev/null ; then
743        echo >> $RECORD
744        echo "   Smartlink software in ALSA mode may support this modem "  >> $RECORD
745        Smart=ALSA
746     fi
747      # finished softmodem chip candidates  
748     if grep $PCIDEV Modem/SoftModem.txt>/dev/null ; then
749        SOFT=1
750     fi    
751     # Decisive Subsystem IDENTS
752     echo >$TMPM.3 
753     if [ "$SUBven" = "134d" ]  ||  [ "$SUBven" = "14e4" ] ; then
754        echo Use the SmartLink slmodem software for support. |  tee -a $RECORD
755        IDENT=PCTEL
756        if [ "$SUBven" = "14e4" ] ; then
757           IDENT=BCM64
758           echo For this Broadcom subsystem modem,  the slmodemd daemon must be used in ALSA mode |  tee -a $RECORD 
759           echo  "       slmodemd --alsa --country=YOURS modem:1"  |  tee -a $RECORD
760        fi       
761     elif [ "$SUBven" = "14f1" ] ; then
762        # Conexant HSF
763         echo ONLY the hsfmodem software from http://www.linuxant.com/drivers  can support this Conexant subsystem soft modem |  tee -a $RECORD
764         IDENT=CXT
765      else
766         echo " The Subsystem PCI id does not itself identify the modem Codec.">>$RECORD
767      fi
768      
769      # Choose driver for codec test
770      if [ "$PCIDEV"  = "1002:434d" ]  ; then
771         MODULE=snd-atiixp-modem 
772         MCONFIG=ATIIXP_MODEM
773      elif [ "$PCIDEV"  = "1106:3068" ]  ; then
774         MODULE=snd-via82xx-modem 
775         MCONFIG=VIA82XX_MODEM
776      else
777         MODULE=snd-intel8x0m 
778         MCONFIG=INTEL8X0M
779      fi 
780      MOD_=`echo $MODULE | sed -e 's/-/_/g'`
781      MPLACE=`find /lib/modules/$SYS/ -name $MODULE.ko`
782      #  Rhywek <rhywek@o2.pl>
783      
784 #     case $PCIDEV in
785 #       "1002:434d") MODULE=snd-atiixp-modem ;;
786 #       "1106:3068") MODULE=snd-via82xx-modem ;;
787 #       *) MODULE=snd-intel8x0m ;;
788 #    esac
789
790     # Check for driver in kernel or modules    
791     echo  >>$RECORD
792     if grep $MCONFIG /boot/config-$SYS | grep "=y" > /dev/null ; then
793        echo  "  Driver $MODULE is included in the kernel. "  >>$RECORD
794        ASOUND=1
795     elif   test -n "$MPLACE" ; then
796        echo  "  Driver $MODULE  may enable codec acquisition "  >>$RECORD
797        if grep $MOD_  /proc/modules >/dev/null ; then
798          ASOUND=1  
799       elif [ "$UID" = "0" ]  ;  then
800          /sbin/modprobe $MODULE
801          ASOUND=1
802       else   
803           echo This line is strangely necessary >/dev/null 
804           cat<<END
805             
806  To enable capture of codec information, please briefly login as Root:
807          su - root
808   Load $MODULE with:
809          modprobe $MODULE
810   Exit Root status
811          exit
812   and rerun
813         ./scanModem
814        
815 END
816          exit
817       fi
818     else
819        echo  "  $MODULE  support not included in $SYS  kernel+modules " >>$RECORD
820     fi
821    
822 # I guess you mean '/proc/asound/cardN/codec97#0/mc97*'.
823 # If it does not exist after intel8x0m loading this may indicate that device
824 # was not initialized, for instance because it is in use by other driver,
825 # like hsf*, slamr or even serial - device has 0703 pci class - COMMUNICATION_MODEM.
826     if test -n "$ASOUND" ; then 
827        MC97=`find /proc/asound -name "mc97*" | grep -v regs`
828        #  MC97=`find /proc/asound -name 'mc97#[0-3]-[0-3]'`    # Sasha's alternate
829        if !  test -n "$MC97" ; then
830           echo "  /proc/asound lacks an mc97 codec file.">>$RECORD        
831        else       
832           echo "  === Begin mc97 codec query  ===">>$RECORD
833        for codec in $MC97     
834 #Also note there are new modems in the wild equipped by SiLabs 3054/5 codec,
835 #it works with ALSA drivers, but many of such codecs encode codec vendorid1,
836 # vendorid2 registers not with "traditional" "SILXX", but with other values
837 #(few "AGRXX" was reported already, and "BCM64" is from this group too)     
838        do
839        if grep  0x42434d64  $codec >/dev/null ; then
840          echo  " $SUBSYS has a Broadcom BCM64 codec" >>$RECORD
841          IDENT1=BCM64
842          elif  grep   Conexant  $codec >/dev/null ; then
843          NM=`grep Conexant  $codec | cut -d' ' -f2-`  
844          grep  Si3036 $codec >>$RECORD
845          echo  " $SUBSYS has a $NM" >>$RECORD     
846          IDENT1=CXT
847          elif  grep   "Si3036/8 rev "  $codec >/dev/null ; then
848            grep  Si3036 $codec >>$RECORD
849            revision=`for i in $INPUT ; do echo $i ; done | grep  -A1 rev`
850            REV=`echo $revision | cut -d" " -f2`
851            echo  " Subsystem $SUBSYS has a SIL2$REV codec"  >>$RECORD   
852            IDENT1=SIL2$REV
853            elif  grep   "Motorola (rev 4 IIRC)"  $codec >/dev/null ; then  
854            echo  " $SUBSYS has a Motorola codec " >>$RECORD     
855            IDENT1=ALSA       
856            cat<<END>/dev/null
857
858 > RE:new modems in the wild equipped by SiLabs 3054/5
859 > Should slmodem in ALSA mode should be recommended for these cases uniformly?
860
861 Yes, but note that vendor's drivers (if exist) may work too, at least I think
862 that Agere driver supports 'AGRxx' codecs.  
863 END
864         else
865           echo File $codec >>$RECORD
866           echo " --------" >>$RECORD
867           cat $codec >>$RECORD
868           echo " --------" >>$RECORD    
869           if grep 3054/5 $codec >/dev/null && grep snd_intel8x0m >/dev/null ; then
870             # for non SILnm codecs such as AGRnm and INT65
871             echo " Try using slmodemd in ALSA mode with driver snd-intel8x0m"  >>$RECORD
872           fi
873         fi
874         codec=
875       done
876       echo "  === End mc97 codec query  ===">>$RECORD
877       fi  # codec aquisition 
878     fi  # module loaded
879    
880 echo >$TMPM
881 echo >$TMPM.1
882 echo >> $RECORD
883 echo " Beginning check for older ac97_codec modems." >> $RECORD
884 echo audio > $TMPM
885 echo ac97 >> $TMPM
886 # for grep filter
887 dmesg | grep -f $TMPM > $TMPM.3
888 # first check for audio_codec, needed later
889 if grep "AC97 Modem codec" $TMPM.3 > /dev/null ; then
890     ac97_codec=1
891     echo " ----- Raw output ------" >> $RECORD 
892     # unusual case:   ac97_codec: AC97 Modem codec, id: CXT41 (Unknown)
893     grep "AC97 Modem codec" $TMPM.3  | tee -a  $RECORD
894 fi
895 # manual test
896 if [ "$1" = "SILtest" ] ; then
897   cp SILtest  $TMPM.3
898 fi
899 codec_id=`cat $TMPM.3 | sed -n -e '/^ac97_codec: AC97 Modem codec, id: /s/^ac97_codec: AC97 Modem codec, id: \(.*\)(.*)$/\1/p'`
900 # codec_id=0x5349:0x4c22  # for testing
901 if test -n "$codec_id" ; then
902 for codec_id in $codec_id ; do
903   echo $codec_id | grep -e '^SIL[0-9].*$' > /dev/null
904   if [ $? -ne 0 ] ; then
905     # < linux-2.4.20
906     codec_cid=`echo $codec_id | sed -n -e '/0x5349:0x4c/s/^0x5349:0x4c\(2[1-7]\)$/\1/p'`
907     # echo codec_cid=$codec_cid
908     if [ -n "$codec_cid" ] ; then
909       codec_id=`printf "SIL%d" 0x$codec_cid`
910       CODEC=$codec_id
911     else
912       SIL_id=$codec_id not processed
913     fi
914   else
915     SIL_id=$codec_id
916   fi
917   if test -f $TMPM.3 ; then
918     cat<<END  >>$RECORD
919
920 --- processed from dmesg -----
921 `cat  $TMPM.3`
922 ------------------------------
923  SIL_id=$SIL_id
924
925 END
926   fi # TMPM.3
927 done  # end of for
928 fi # codec_id
929 if test -z "$SIL_id" ; then
930   echo " An older ac97_modem codec was not detected.">>$RECORD
931   echo >>$RECORD
932 else
933   echo " An ac97_modem codec was detected.">>$RECORD
934 fi # SIL_id
935
936 # slamr.ko test
937 if [ -x /bin/dmesg ] ; then
938   DMESG=/bin/dmesg
939   SLAMR=$(find /lib/modules/ -mindepth 3 -maxdepth 5 -name slamr.* | grep $SYS)
940 fi
941
942 if test -n "$DMESG" -a -n "$SLAMR" -a -n "$smart" ; then
943    echo > $TMPM
944   $DMESG | grep -v "SmartLink AMRMO modem" | grep slamr > $TMPM
945   ###  typical output
946 # slamr: SmartLink AMRMO modem.
947 # slamr: probe 8086:24c6 ICH4 card...
948 # slamr: mc97 codec is SIL27
949 # slamr: slamr0 is ICH4 card.
950   if grep slamr $TMPM >/dev/null ; then
951      SLAMRout=1
952   elif [ "$UID"  = "0" ] ; then
953      /sbin/modprobe -r slamr
954      /sbin/modprobe slamr
955      $DMESG | grep -v "SmartLink AMRMO modem" | grep slamr > $TMPM   
956      if grep slamr $TMPM >/dev/null ; then
957         SLAMRout=1
958      fi 
959   else
960      cat<<END  | tee -a $RECORD
961      
962  Please rerun scanModem after login as 
963  #  su - root
964  WithIn Modem/Slmodem.txt, see the slamr test for an explanation.
965  
966 END
967   sleep 3
968   fi   
969   if test -n "$SLAMRout" ; then  
970     echo " ------ dmesg slamr filtered -------">>$RECORD
971     cat $TMPM >>$RECORD     
972     CODEC=`$DMESG | grep slamr | grep codec | cut -d' ' -f5`
973     if test -n "$CODEC" ; then
974     COD=`echo $CODEC | cut -b-3`
975     echo " The softmodem Codec is:  $CODEC">>$RECORD
976     fi
977   fi  
978   $DMESG | grep HSF: > $TMPM
979   if grep HSF: $TMPM>/dev/null ; then
980     $DMESG | grep HSF: >>$RECORD
981   fi
982 fi 
983     ##ARCHIVEbegin
984     # Used as backup to a CODEC acquisition
985     rm $TMPM.2 &>/dev/null
986     echo " Checking through information gathered from LinModem ARCHIVES">>$RECORD
987     if  [ "$PCIDEV"  =  "8086:1080" ] ; then
988         cat<<EOF>$TMPM.2
989 INTEL537EP 8086:1000 8086:1007 8086:1008 8086:100A 1028:1000
990 EOF
991     elif [ "$PCIDEV" = "8086:2416" ] ; then
992     # 8086:2416 82801AA ICHAA 
993       cat<<EOF>$TMPM.2
994 CXT 107b:0012
995 SIL22 14c0:0012 COMPAL Electronics Inc Smartlink
996 EOF
997 # cat $TMPM.2
998     elif [ "$PCIDEV" = "8086:2426" ] ; then
999     # 8086:2426 82801AB ICHAB
1000       cat<<END>TMPM.2
1001 SIL21 134d:4c21
1002 Unknown 107b:9019 Gateway
1003 END
1004     elif [ "$PCIDEV" = "8086:7196" ] ; then
1005     # 8086:7196 82440 Banister ICH1
1006       cat<<EOF>$TMPM.2
1007 Unknown 10cf:10d2 Fujitsu Limited
1008 EOF
1009     elif [ "$PCIDEV" = "8086:2446" ] ; then
1010     # 8086:2446 82801BA ICH2
1011       cat<<EOF>$TMPM.2
1012 CXT 104d:80df 
1013 SIL21 10cf:10d2 CitiCorp
1014 Unknown 1025:1027 Acer 
1015 EOF
1016     elif [ "$PCIDEV" = "8086:2486" ] ; then
1017     # 8086:2486 82801CA/CAM AC97 CAM AC'97 ICH3
1018       cat<<END>$TMPM.2
1019 CXT   1668:5421 CXT21, 14f1:5421 MD56ORD V.92 MDC Modem
1020 SIL27 103b:0757 Tatung Co , 1014:0223 IBM , 1179:0001 , 144d:2115   Samsung, 1014:0227 
1021 BCM64 14e4:4d64 
1022 SIL22 14c0:0012 COMPAL Electronics Inc
1023 Unknown 1558:1800 CLEVO/KAPOK Computer , 104d:813c Sony, CMedia CXT?, 1014:0503
1024 END
1025     elif [ "$PCIDEV" = "8086:24c6" ] ; then
1026     # 8086:24c6 82801DB ICH4 AC'97 Modem Controller
1027     cat<<END>$TMPM.2
1028 SIL27 152d:0706 QUANTA Computer, 144d:2115 Samsung , 1019:d551 1179:0001 1734:1033  1854:0005 1014:0227 0e11:0860  1014:0524 1014:0525 mc97 , 1025:0061 Acer, 1025:003d  107b:0200 1025:0071  1014:0544  10cf:10d1
1029 SIL21 1071:8050  134d:4c21 4c21:5349 1071:8160  1734:1055  
1030 SIL22 1734:102a  
1031 CXT 104d:8129 Sony , 104d:818c CXT23 , 104d:816a , 1014:055a , 104d:80fa , 14f1:5422 , 1043:1826  , 103c:3084  1025:0064  CXT30,  1014:0559  CXT23
1032 BCM64 14e4:4d64  
1033 SIL24 144f:1050 Askey Comp. with BroadCom, 
1034 Unknown 104d:816a 1509:2970 
1035 END
1036     elif [ "$PCIDEV" = "8086:24d6" ] ; then
1037     # 8086:24d6 82801EB ICH5
1038       cat<<END>$TMPM.2
1039 SIL27 1179:0001  104d:8128
1040 BCM64 14e4:4d64 
1041 CXT   103c:006a
1042 END
1043     elif [ "$PCIDEV" = "8086:266d" ] ; then
1044       echo " The 8086:266d modems may be supported by hsfmodem OR slmodem-2.9.9c ,but not both" >>$RECORD
1045       cat<<END>$TMPM.2
1046 SIL27 1509:3670
1047 CXT 14f1:5423 CXT23 no /proc/asound/mc97* ,
1048 END
1049     elif [ "$PCIDEV" = "1039:7013" ] ; then
1050     # 1039:7013  SIS 630 
1051       cat<<EOF>$TMPM.2  
1052 SIL27 1043:1736 , 104d:8129 17c0:1059 , 1033:8216 1028:0195
1053 SIL23 1039:7013
1054 CXT 104d:814e Sony CXT23, 1043:1816 CXT22
1055 SIL22 1631:3003  NorthBridge , 1584:4003 ,  1734:105f ,1558:2202 CLEVO/KAPOK Computer: HAMR,http://linmodems.technion.ac.il/archive-fourth/msg01957.html
1056 SIL21 Pctel 1039:7013 1849:9739  13bd:102f
1057 Unknown 1019:0a01  1558:4201 , 1509:2470 First Int. Comp. ,  1734:105f with AMD64 processor, 1509:2470 , 1043:1456  Asustek
1058 EOF
1059  
1060     elif [ "$PCIDEV" = "1039:7018" ] ; then  
1061     # 1039:7018  SIS 960
1062       cat<<EOF>$TMPM.2
1063 none
1064 EOF
1065     elif [ "$PCIDEV" = "10de:01c1" ] ; then
1066     # 10de:01c1  Nvidia Corp 
1067       cat<<EOF>$TMPM.2
1068 none
1069 EOF
1070     elif [ "$PCIDEV" = "10de:00d9" ] ; then
1071     # 10de:01d9  Nvidia Corp
1072      Smart=ALSA
1073       cat<<EOF>$TMPM.2
1074 CXT 1043:1856 Asustek
1075 SIL27 103c:006d HP ,  
1076 EOF
1077     elif [ "$PCIDEV" = "1106:3068" ] ; then 
1078     # 1106:3068  VIA
1079       cat<<EOF>$TMPM.2
1080 SIL27 1102:0033 CreativeLabs , 1025:0046 Acer , 1025:0033 , 1734:1078 
1081 SIL22 1743:1032 , 10cf:118e , 1734:1054 , 1462:309e , 1631:e004 , 1543:4c22 , 161f:2032 1584:4005 
1082 SIL21 10cf:118e , 13bd:1022 , 1543:4c21 1071:8375
1083 CXT 104d:8143 104d:80f6 , 1025:0030 CXT41 ,
1084 Unknown 1584:4005 Uniwell, 1025:0030 Acer 104d:80f6CXT?
1085 EOF
1086     elif [ "$PCIDEV" = "1022:7446" ] ; then
1087     # 1022:7446  AMD AC_LINK
1088       cat<<EOF>$TMPM.2
1089 none
1090 EOF
1091     elif [ "$PCIDEV" = "10b9:5453" ] ; then
1092     # 10b9:5453  ALI 5453
1093       cat<<EOF>$TMPM.2
1094 none
1095 EOF
1096     elif [ "$PCIDEV" = "1543:3053" ] ; then
1097     # Silicon Inst
1098       cat<<EOF>$TMPM.2
1099 Unknown 1543:3052
1100 EOF
1101     elif [ "$PCIDEV" = "e159:0001" ] ; then
1102     # Tiger Jet
1103       cat<<EOF>$TMPM.2
1104 INTEL537 8086:0003
1105 EOF
1106     elif [ "$PCIDEV" = "1543:3052" ] ; then
1107     # SILabs  SI3052 
1108       cat<<END>$TMPM.2
1109 none
1110 END
1111     elif [ "$PCIDEV" = "10b9:5457" ] ; then 
1112     # 10b9:5457  ALI 5457
1113       cat<<EOF>$TMPM.2
1114 SIL27 1179:0001 , 1033:81f3
1115 CXT 103c:002a CXT21, 103c:0024 CXT41 ,  103c:0029
1116 Unknown 0e11:005a 5457 Compaq
1117 EOF
1118     elif [ "$PCIDEV" = "10b9:5459" ] ; then 
1119     # 10b9:5457  ALI 5457
1120       cat<<EOF>$TMPM.2
1121 SIL26 10a5:5459   Smart Link Ltd.
1122 EOF
1123     elif [ "$PCIDEV" = "1002:434d" ] ; then
1124       # 1002:434d  ATI Technologies Inc:
1125       IDENT=ATI
1126       Smart=ALSA 
1127       ALSA=1002:434d
1128       cat<<EOF>$TMPM.2 
1129 SIL27 103c:006b HP, 1179:0001 Toshiba ,  1025:0052 Acer
1130 EOF
1131     ##ARCHIVEend
1132     else
1133       cat<<EOF | tee -a $RECORD
1134  This combination of softmodem controller and Subsystem:
1135         Primary   $PCIDEV
1136         SubSystem $SUBSYS
1137  has not been previously reported.
1138
1139 EOF
1140     fi
1141     # Analysis of Archival info 
1142     if test -f $TMPM.2 ; then
1143       CODECp=`grep $SUBSYS $TMPM.2 | cut -d' ' -f1`
1144       if test -z "$CODECp" ; then
1145         echo " Modem codec information on Subsystem $SUBSYS is not in the records.">>$RECORD      
1146       elif [ "$CODECp" = "Unknown" ] ; then
1147           echo " A codec for this Subsystem record under controller $PCIDEV was not been reported".>>$RECORD        
1148         if [ -n "$CODEC" ] ; then 
1149           echo " Please report this New assignment to Discuss@linmodems.org : $PCIDEV $SUBSYS  $CODEC" | tee -a $RECORD
1150         fi
1151       else
1152         echo " From prior reports, the modem codec type of the Subsystem is: $CODECp">>$RECORD
1153       fi
1154     fi 
1155
1156     # This section compares diagnostis from slamr test and Archival records:
1157     if [ -z "$CODEC" ] ; then
1158          # echo " Using archived information for soft modem codecs.">>$RECORD   
1159          CODEC=$CODECp
1160          CODECnone=1
1161          COD=`echo $CODEC | cut -b-3`
1162     elif [ "$CODEC" = "$ ALG10" ] ; then
1163          echo " ALG10 is an audio codec, the modem hardware has not been properly accessed.">>$RECORD
1164     elif [ "$COD" = "CXT" ] && [ "$CODECp" = "CXT" ] ; then
1165          CODEC=$COD
1166          echo " Agreement between slamr diagostic and Archive.">>$RECORD
1167     elif [ "$CODECp" = "$CODEC" ] ; then
1168          echo " Agreement between slamr diagostic and Archive.">>$RECORD
1169     elif ! [ "$CODECp" = "$CODEC" ] ; then 
1170          echo " DisAgreement between slamr diagostic and Archive.  Using slamr diagnostic: CODEC=$CODEC">>$RECORD  
1171          CODECp=$CODEC
1172     else
1173          echo "All cases should be covered">/dev/null
1174     fi
1175
1176     # Case by case of CODEC
1177     if test -n "$CODEC" && ! [ "$CODEC" = "Unknown" ] ; then 
1178       if   [ "$CODECp" = "INTEL537" ] ; then
1179          echo   " The modem has an Intel 537 chipset"  | tee -a $RECORD
1180          echo  "  Use driver resource Intel-537-MostRecentVersion.tgz" >>$RECORD
1181          IDENT=INTEL537
1182       elif   [ "$CODECp" = "INTEL537EP" ] ; then
1183          echo   " The modem has an Intel 537EP chipset"  | tee -a $RECORD
1184          echo  "  Use driver resource Intel-537EP-MostRecentVersion.tgz" >>$RECORD
1185          IDENT=INTEL537EP
1186       elif [ "$COD" = "CXT" ] ; then
1187         CXT=yes
1188         Smart=
1189         smart=
1190         echo " The modem has a Conexant codec: $CODEC" | tee -a $RECORD
1191         if test -z "$CNX" ; then
1192            echo "   BUT $CNTRL is not yet supported by Linuxant code." | tee -a $RECORD
1193         else
1194           IDENT=CXT
1195           cat<<END | tee -a $RECORD
1196  and there is support for the modem controller: $CNTRL
1197  Some Linux Distributions include the hsfmodem driver.
1198  Search your packages information for "hsfmodem" and "Conexant".
1199  If not found there, download a hsfmodem package from http://www.linuxant.com .
1200  
1201  For 2.4.n kernels, If there is not an exact match your kernel version: `uname -r`
1202  then kernel-sources must be prepared as described in Modem/DriverCompiling.txt
1203  before the hsfmodem driver compiling can be successfull. 
1204  For recent  kernel-source-2.4.6 ,configuration steps are not necessary.
1205  
1206 END
1207          fi
1208       elif [ "$CODEC" = "SIL22" ] ; then
1209         echo " The Subsystem has the a SmartLink codec" | tee -a $RECORD
1210         if [ "$smart" = "may" ] ; then
1211           echo " with a supported $PCIDEV modem controller" | tee -a $RECORD
1212           IDENT=SMART
1213         else
1214            echo " but sadly, support is lacking for the $PCIDEV modem controller." | tee -a $RECORD
1215         fi
1216       elif [ "$CODEC" = "BCM64" ] || [ "$CODEC" = "SIL24" ] ; then
1217         IDENT=$CODEC
1218         echo " The Subsystem has a Broadcom codec $CODEC" | tee -a $RECORD
1219       elif [ "$CODEC" = "INT65" ] || [ "$CODECp" = "SIL25" ] ; then
1220         IDENT=$CODEC
1221         Smart=yes
1222                cat<<END>>$RECORD
1223                
1224  The Subsystem has the INTEL codec $CODEC              
1225  The Intel_secure-537AA driver and possibly the SmartLink driver support the modem.
1226  Details below and read Modem/Slmodem.txt
1227 END
1228       elif [ "$CODEC" = "SIL24" ] || [ "$CODEC" = "SIL26" ] ; then
1229         echo " The Subsystem has a Broadcom codec $CODEC" | tee -a $RECORD
1230         IDENT=SMART
1231       elif [ "$CODEC" = "SIL21" ] ; then
1232         IDENT=Smart
1233         echo " The Subsystem has a PCTel codec $CODEC" | tee -a $RECORD 
1234         if [ "$MAJOR" = "2.4" ] ; then
1235           IDENT=PCTEL
1236           echo "The pctel-0.97 drivers may support this modem.">>$RECORD
1237         fi
1238       elif [ "$CODEC" = "SIL23" ] ; then
1239          IDENT=Smart
1240          echo " The Subsystem has Silicon Integrated Systems (SiS) codec $CODEC" | tee -a $RECORD       
1241       elif  [ "$CODEC" = "SIL27" ] ; then
1242         echo " The Subsystem has an Agere Systems codec $CODEC" | tee -a $RECORD
1243         if [ "$MAJOR" = "2.4" ]  && [ -n "$AGR" ] ; then
1244           IDENT=AGR
1245           echo " Under 2.4.n kernels, there are AgereSoftModem drivers">>$RECORD        
1246         else
1247           IDENT=Smart
1248         fi
1249       else
1250           echo " Please report this new SIL type to Discuss@linmodems.org "
1251       fi 
1252       if [ "$smart" = "may" ] && ! [ "$COD" = "CXT" ] && ! [ "$IDENT" = "ATI" ] ; then
1253         Smart=may
1254         echo " SmartLink software should support this modem">>$RECORD
1255         if [ "$CODEC" = "BCM64" ] ; then
1256           Smart=ALSA
1257           echo " Only the SmartLink slmodem-2.9.9d-alsa software supports this modem">>$RECORD
1258         fi
1259       fi      
1260     else
1261       echo " There are the following routes toward support:">>$RECORD
1262       echo "    Follow instructions in Modem/SoftModem.txt for identifying the modem under a Microsoft boot.">>$RECORD
1263       if [ "$smart" = "may" ] ; then
1264         if [ "$DISTR" = "SuSE" ] && [ "$MAJOR" = "2.6" ] ; then
1265           cat<<END | tee -a $RECORD
1266           
1267  SuSE has a slamr driver.  Please run the diagnostic:
1268  # su - root
1269  # modprobe slamr
1270  # dmseg | grep slamr
1271  and report the results to discuss@linmodems.org.  
1272  Read Modem/Slmodem.txt for details.
1273 END
1274         else
1275           echo "        Read Modem/Slmodem.txt instruction for doing the slamr diagnostic.">>$RECORD
1276         fi
1277       fi
1278       if test -n "$CNX" ; then
1279          echo "  Test the effectiveness of the hsfmodem package from http://www.linuxant.com/drivers/hsf/index.php.">>$RECORD
1280       fi
1281     # Distro specific issues
1282       if [ "$DISTR" = "debian" ]  ||   [ "$DISTR" = "Ubuntu" ]   ||  [ "$DISTR" = "knoppix" ] && ! [ "$IDENT" = "ATI" ] ; then
1283         cat<<END>>$RECORD
1284
1285  The $DISTR Linux includes sl-modem packages with Smartlink drivers
1286    Install the kernel-headers-$SYS.deb
1287    If necessary, set a symbolic link needed for slmodem compiling:
1288      # ln -s /usr/src/kernel-headers-$SYS /lib/modules/$SYS/build
1289      as described in Modem/DriverCompiling.txt
1290    Then install the two sl-modem/slmodem packages and follow their directions.
1291    Thereafter the above slamr diagnositic can be run.
1292
1293 END
1294       elif [ "$DISTR" = "SuSE" ] && ! [ "$PCIDEV" = "1002:434d" ] && ! [ "$CODECp" = "CXT" ] && !  [ "$CODECp" = "BCM64" ] ; then
1295             cat<<END>>$RECORD
1296             
1297  Install kernel-source package, the slmodem and km_slmodem packages.
1298  If necessary, set a symbolic link needed for slmodem compiling:
1299  # ln -s /usr/src/linux-$SYS /lib/modules/$SYS/build
1300  Then install the packages and compile the drivers.
1301  The compiling process is described in:
1302    http://linmodems.technion.ac.il/archive-fourth/msg00176.html
1303
1304 END
1305       elif [ "$DISTR" = "Mandrake" ] && [ "$MAJOR" = "2.6" ] ; then
1306         cat<<END>>$RECORD
1307  Current Mandrake installations have slmodem packages.    
1308  http://linmodems.technion.ac.il/packages/smartlink/
1309
1310 END
1311       else
1312          echo  Leaving space for expansion >/dev/null
1313       fi # Distros specific
1314     fi # CODECnot 
1315   fi # soft
1316   echo >$TMPM.2
1317   if test -z "$IDENT" ; then
1318     cat<<END>$TMPM.2
1319  4005:0308  Avance ALS-300plus sound+softmodem combo PCI card (obsolete).
1320  1055:9178  STANDARD_MICROSYSTEM
1321  10b9:545a  ALI545A SL1801
1322  10b9:5459  ALI 5459 SmartPCI561
1323  10b9:5459  Subsystem: 10a5:5459  ALi Corporation SmartLink SmartPCI561 56K Modem (NetoDragon)
1324  10ec:8197  PCI SmartLAN56 (RealTek ether/modem combo)
1325  1131:3400  SmartPCI56 (Philips UCB1500)
1326  10a5:3052  Racal Interlan SL1900
1327  10a5:5459  Racal Interlan SmartPCI561 SL1900
1328  163c:5459  SmartLink SmartPCI561 SL1900
1329  2000:2800  Gateway SL2800
1330  2003:8800  SmartLink  SL2800
1331 END
1332   fi
1333   # marv
1334   if grep $PCIDEV $TMPM.2>/dev/null  ; then
1335     IDENT=SMART
1336     SMT=`grep $PCIDEV $TMPM.2`
1337     cat<<END | tee -a $RECORD
1338
1339  SmartLink drivers support this modem:
1340    $SMT
1341 END
1342     if [ "$PCIDEV" = "2003:8800" ] ; then
1343       echo " But version slmodem-2.9.10 or later is necessary." | tee -a $RECORD
1344     fi
1345   elif [ "$Vendor"  = "11c1" ] ; then
1346     IDENT=AGERE
1347   elif [ "$Vendor" = "115d" ] ; then
1348     IDENT=XIRCOM
1349   elif [ "$v" = "127a" ] ||  [ "$v" = "14f1" ] ||  [ "$v" = "148d" ] || [ "$PCIDEV" = "158b:0001" ] || [ "$PCIDEV" = "158b:0005" ] || [ "$PCIDEV" = "158b:0015" ]  ; then 
1350     IDENT=CXT
1351     # Intel 536EP & 537 secton
1352   elif [ "$PCIDEV" = "e159:0001" ] && [ "$SUBSYS" = "8086:0003" ] ; then
1353     echo "      Use driver resource Intel-537-MostRecentVersion.tgz">>$RECORD
1354     IDENT=INTEL537
1355   elif [ "$PCIDEV" = "8086:1040" ] ; then
1356     if [ "$SUBSYS" = "8086:1005" ] ; then
1357       echo SUBSYS=$SUBSYS
1358       echo "    Use driver resource Intel-537SP-MostRecentVersion.tgz">> $RECORD
1359       IDENT=INTEL537SP
1360     fi
1361     if [ "$SUBSYS" = "8086:1000" ] ; then
1362       IDENT=INTEL536ep
1363       echo " Use driver resource Intel-536ep-MostRecentVersion.tgz ">>$RECORD
1364       # no SMP      http://linmodems.technion.ac.il/archive-third/msg00855.html
1365     fi
1366   elif grep $PCIDEV Modem/SoftModem.txt >/dev/null && $LSPCI -v 2>/dev/null | grep "Intel 537" >/dev/null ; then
1367    # 1st line, because of mistakes in the PCI id databset
1368     echo "      Due to a PCI ID database error, the Intel 537 designation is commonly incorrect." | tee -a $RECORD
1369     AMBIG=537
1370   else
1371     echo No definitive Intel 537 soft modem>/dev/null
1372   fi
1373   echo $IDENT >$TMPM
1374
1375   echo > $TMPM.soft
1376   if test -z "$IDENT" ; then
1377   # Special cases
1378    if $LSPCI -v 2>/dev/null | grep CM8738 >/dev/null ; then
1379      IDENT=CM8738
1380    elif $LSPCI -v 2>/dev/null | grep "Intel 536"  >/dev/null ; then
1381    # because Intel 536 may have PCI_IDs assigned by modem assemblers, not Intel
1382      IDENT=INTEL536ep
1383    elif $LSPCI -v 2>/dev/null | grep "Subsystem: Conexant" >/dev/null ; then
1384    # because the PCI_IDs may be assigned by modem assemblers, not Conexant
1385      IDENT=CXT
1386    else
1387      echo "probably not a Conexant modem" >/dev/null
1388    fi
1389    
1390       if $LSPCI -v 2>/dev/null | grep "Smart Link HAMR5600"  >/dev/null ; then
1391        # because the PCI_IDs may be assigned by modem assemblers, not SmartLink
1392        #  and mistakes in the PCI ID database
1393        AMBIG=$AMBIG" HAMR5600"
1394        #XX some misidentified softmodem
1395       fi
1396     fi 
1397   
1398     if test -z "$IDENT" ; then
1399       AMBIG=
1400       cat<<END>>$RECORD
1401       
1402  Information on several modem chipset providers is provided below,
1403  because ambiguities remain on the correct choice of supporting software.
1404             
1405 END
1406     fi
1407     PRIMARY=
1408     if test -n "$SOFT" ; then
1409       VEND="$SUBven $Vendor"
1410       if [ "$Vendor" = "$SUBven" ] ; then
1411         VEND=$Vendor
1412       fi
1413     else
1414       VEND="$Vendor"
1415       # SUBven not important if not softmodem
1416     fi
1417     for v in $VEND
1418     do
1419       echo " == Checking PCI IDs through modem chip suppliers ==">>$RECORD 
1420
1421     if [ "$Vendor" = "1002" ] && ! [ "$ATI" = "done" ] ; then
1422         ATI=done
1423         smart=1
1424       cat<<END>>$RECORD
1425
1426  Vendor 1002 is ATI Technolgies, http://www.ati.com, producing video cards, motherboard and
1427  a 1002:434d  ATI soft modem controller with a variety of Subsystems.
1428   There is a modem driver, snd-atiixp_modem.ko , becoming available through http://www.alsa-project.org ,
1429  with complementary port creation through the SmartLink slmodem-2.9.9d-alsa
1430  For history see:  http://website.lineone.net/~bryanrpoole/atiixp-modem.htm
1431  For details on setup and testing, see Modem/ATI.txt
1432  
1433 END
1434     fi
1435     if [ "$Vendor"  = "151f" ] ; then
1436       IDENT=Topic
1437       cat<<END>>$RECORD
1438       
1439  Vendors $v is TOPIC SEMICONDUCTOR Corp.
1440  Class 0780 151f:0000 is a controller chipset modem using the standard drivers.
1441  See http://www.math.sunysb.edu/~comech/tools/PCImodems.html
1442
1443 END
1444     fi
1445     if [ "$v" = "10de" ] ; then
1446       cat<<EOF>>$RECORD
1447       
1448  Vendor 10de is Nvidia, producing the video cards and 
1449  two softmodem controllers: 10de:01c1 and 10de:00d9
1450  For subsystems with SILnm codecs,
1451      slmodem-2.9.n software in ALSA mode provides support.
1452       
1453 EOF
1454     fi 
1455     if [ "$PCIDEV" = "10de:00d9" ] ; then 
1456        cat<<EOF>>$RECORD
1457        
1458  At least some of the 10de:00d9 chipset modems have a Conexnant codec, with support by the hsfmodem package from http://www.linuxant.com/drivers/hsf.   
1459  After installation of the software, an edit may be necessary in the file:
1460    /usr/lib/hsfmodem/mod_mc97ich.c
1461  Search for "0x01C1" , which will reveal a line beginning:
1462     { 0x10DE, 0x01C1, PCI_ANY_ID,  PCI_ANY_ID,   
1463  and change to: 
1464     { 0x10DE, 0x00D9, PCI_ANY_ID,  PCI_ANY_ID,    
1465     
1466 EOF
1467     fi    
1468     if [ "$v" = "e159" ] ; then
1469       cat<<END>>$RECORD
1470
1471  Vendor $v is Tiger Jet (TJ).
1472   $v:0001  translates PCI commands to the serial link used by
1473      the silabs DAA from the si3034, si3044 and si3056 family.
1474   $v:0001  8086:0003  TJ320 v2.0 , with subsystem 8086:0003 is an Intel-537 soft modem
1475      supported by:  Intel-537-MostRecentVersion.tgz
1476   $v:0001  0359:0003  TJ320 v3.1
1477
1478 END
1479     fi
1480     if [ "$v" = "1106" ]  ; then
1481       VIA=1
1482       cat<<END>>$RECORD
1483
1484  Vendor $v is VIA  Technologies Inc.,producing diverse bridges including devices:
1485     1106:3068    VT82C686/686A/686B AC97 Modem Codec
1486  Under the later, the  10cf:118e  the "Intel 537" is partially supported
1487    by the SmartLink slmodem-2.7.10 software
1488     Subsystem 1102:0033 has an AgereSystems soft modem chip
1489
1490 END
1491     fi
1492     if [ "$v" = "13f6" ] ; then
1493       PCTEL=13f6
1494       cat<<END>>$RECORD
1495
1496  Vendor $v is C-Media Electronics, which produced modem:
1497      13f6:0211  C-Media Electronics Inc CM8738,
1498      13f6:0211  subsystem HSP56 Audiomodem Riser
1499  supported under 2.4.n kernels by PCTEL software.
1500  BUT there is no support under 2.6.n kernels.
1501
1502 END
1503     fi
1504     if [ "$v" = "14e4" ] || [ -n "$BRD" ] ; then
1505       cat<<END>>$RECORD
1506
1507  Vendor 14e4 is BroadCom 
1508    14e4:4212   is a  BCM V.90 56k modem
1509  There is a driver for 2.2.n kernels called  BCOM_WAN_V20.
1510     Search for it at http://www.dell.com 
1511  However the code has not been updated for some time.
1512  For  2.4 kernels, fix by Giacomo Comes must be used. See :
1513    http://linmodems.technion.ac.il/archive-third/msg01652.html
1514  When serving under softmodem controllers like the Intel ICH series,
1515  the Broadcom Subsystem 14e4:4d64 has mc97 codec BCM64.
1516  For 2.6.n kernels, see success reports:
1517    http://linmodems.technion.ac.il/archive-fourth/msg03690.html
1518    http://oboc.ucdavis.edu/Marik/inspiron/ 
1519    The support is achieved through a combination of:
1520    1) the snd-intel8x0m.ko of 2.6.n kernel releases, which provides a low level interface with the modem;
1521    2) an slmodemd daemon which creates ports and provides higher level functions.
1522    Get the slmodem-2.9.9d-alsa.tar.gz from  http://linmodems.technion.ac.il/packages/smartlink/
1523    To compile the slmodemd, it is first Necessary to install a libasound2-dev package, providing alsa headers.
1524    3) After compilation and installation of slmodemd, initiate service with:
1525    # modprobe  snd-intel8x0m
1526    # slmodemd --alsa --country=YOURCOUNTRY hw:1
1527    Read the slmodem documentation for details and Modem/Slmodem.txt
1528
1529 END
1530     fi
1531     if [ "$v" = "104d" ]; then
1532       cat<<END>>$RECORD
1533
1534  Vendor 104d is Sony. Subsystem 104d:8129 under a 8086:2486 Intel modem controller
1535  has a Conexant chip in a Sony Vaio grx560 laptop. 
1536  A bootup "acpi=on" was required for IRQ acquisition.
1537 END
1538     fi
1539     if [ "$v" = "1039" ] ; then
1540       echo " Vendor $v is SiS, Silicon Integrated System, producing  soft modem controllers and subsystems.">>$RECORD
1541     fi
1542     if [ "$v" = "1014" ] ; then
1543       echo Vendor=1014 is IBM.>>$RECORD
1544       if test -n "$SOFT" ; then
1545         cat<<END>>$RECORD
1546
1547  Some thinkPad laptops have soft modem Subsystems with AgereSystems codec: 1014:0227 and 1014:0524. 
1548  Software access is through IBM:
1549        http://www-3.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52698
1550 END
1551       fi
1552     fi #beginESS
1553     if [ "$v" = "125d" ] ; then
1554       IDENT=ESS
1555       cat<<END>>$RECORD
1556
1557  Vendor=$v is ESS Technologies, making devices:
1558  There has been no formal support for Linux since kernels 2.2.2
1559  Some kludges are of fading utility as the 2.4.n Linux kernels and hardware evolves:
1560    http://linmodems.technion.ac.il/archive-fourth/msg00317.html   (2004Feb08)
1561    http://andrew.cait.org/ess/
1562    http://sidlo.penguin.cz/ES2838/index_en.html
1563    http://tx.technion.ac.il/~raindel/
1564    http://phep2.technion.ac.il/linmodems/archive/msg04424.html
1565       
1566  There is no hope for support under 2.6.n kernels.
1567
1568 END
1569     fi
1570     if [ "$v" = "1025" ] ; then
1571       cat<<END>>$RECORD
1572
1573  Vendor=$v is Acer, http://global.acer.com/ PC and latop manufacturer with devices including:
1574   1025:5453   M5453 AC-Link Controller Modem Device
1575   1025:0038   an AC97 link modem.
1576
1577 END
1578     fi
1579     # beginMotorola
1580     if [ "$v" = "1057" ] || [ "$v" = "11d4" ] ; then
1581       IDENT=Motorola
1582       cat<<END>>$RECORD
1583
1584  -----------------------------
1585  Vendor=1057 is Motorola with service provided through vendor=11d4 Analog Devices Inc.
1586  Installers are available at: http://www.motorola.com/softmodem/sm56_download.htm
1587 as RPM packages containing binary images of drivers 
1588 applicable for installation on the following systems:
1589 * RedHat 7.3 (kernel version 2.4.18-3, sm56-06.05.00-1.rh7.i386.rpm)
1590 * RedHat 8.0 (kernel version 2.4.18-14, sm56-06.05.00-1.rh8.i386.rpm)
1591 * RedHat 9.0 (kernel version 2.4.20-8, sm56-06.05.00-1.rh9.i386.rpm)
1592 * Mandrake Linux 9.2 (kernel version 2.4.22-10mdk, sm56-06.05.02-1.mdk.i586.rpm)
1593 * Mandrake Linux 10.0 (kernel version 2.6.3-7mdk, sm56-06.05.02-2.mdk10_263-7.i586.rpm)
1594 * Suse Linux 9.0 (kernel version 2.4.21, sm56-06.05.02-1.suse90-020421-99.athlon.rpm)
1595 * Suse Linux 9.0 (kernel version 2.4.21, sm56-06.05.02-1.suse90-020421-99.i586.rpm)
1596  There is also available a Legacy driver - SM56_5.1_I386.rpm for 2.4.n kernels ONLY
1597  for which the advice at http://www.sm56.tk/ may be effective.
1598  
1599  Jan Ibanez  <jmibanez@gmail.com> is our expert on Motorola problems
1600  
1601  Achieving function with these drivers is often difficult.
1602  If you computer alternatively boots Linux and Microsoft OS,
1603  do a complete PowerOff before starting Linux. 
1604  Otherwise there may be an error during following Motorola usage:
1605      SM_DisplayFatalError
1606
1607  Some guidance for particular cases is:
1608    http://linmodems.technion.ac.il/archive-fourth/msg01751.html
1609    http://linmodems.technion.ac.il/archive-fourth/msg01749.html
1610    http://linmodems.technion.ac.il/archive-fourth/msg01750.html
1611    http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:13952:200405:enbjmmngagmdejkemacc
1612    http://users.volja.net/kutulu/sm56.tar.gz
1613  There is a volunteer Motorola site: http://www.sm56.tk/
1614  The installation creates a driver sm56.o , the character devices
1615       /dev/motomem
1616       /dev/sm56
1617          with symbolic link  /dev/modem --> /dev/sm56
1618   the /etc/modules.conf lines:
1619       alias char-major-24 sm56
1620       options sm56 country=1
1621   and documentation in  usr/share/doc/HTML/en/sm56/  and "man sm56"
1622   An additional line in /etc/modules.conf
1623       alias /dev/modem /dev/sm56
1624   would beneficially aid driver autoloading, without which there may be a failure of the wvdial functionality test:
1625   # /etc/wvdialconf /etc/wvdial.conf
1626  --------------------------------- End Motorola ------------------
1627
1628 END
1629     fi # begin3com
1630     if [ "$v" = "10b7" ] || [ "$v" = "12b9" ] ; then
1631       smart=
1632       IDENT=3COM
1633       cat<<END>>$RECORD
1634
1635  10b7 is 3COM
1636        :1006    0038TA <- AC101 - TF Mini-PCI 56K V.90 WinModem  no Linux support
1637        :1007    3C556 V.90 Mini-PCI     WinModem  no Linux support
1638  12b9 is US Robotics. acquired by 3COM
1639        :0062    erk41926a-0.6 usr 56k internal modem
1640        ;1006    3cp803598  Voice          WinModem  no Linux support
1641        :1007    ERL3263A-0 DF GWPCI PC99  WinModem  no Linux support
1642        :1008    3cp803598  is Supported by the standard:  serial.o
1643  The following may be supported  by Conexant drivers at   http://www.linuxant.com
1644    14f1:2f12 (3COM/USR model 3094-3095)
1645    14f1:2f13 (USR OEM)
1646    14f1:2f14 3COM/USR
1647  though they carry USR labels.
1648
1649 END
1650     fi
1651     if [ "$v" = "1543" ] ; then
1652 echo >>$RECORD
1653 echo  "Vendor 1543 is Silicon Laboratories (SIL).  SIL produces "blanks" for soft modem Subsystems"  >>$RECORD
1654 echo  which subsequent acquire the Subsystem PCI ID from the final Subsystem assembler. >>$RECORD
1655 echo  Subsystems for soft modems are also produced. >>$RECORD
1656 echo >>$RECORD
1657     fi    
1658     if [ "$v" = "10b9" ] ; then
1659           cat<<END>>$RECORD
1660
1661  Vendor 10b9 is Acer Labs, producing highly integrated motherboards and Ali components.
1662  The tight integration unfortunately ofter blocks identification of the modem chipset.
1663  Desired information may be gained by using a COMM console under MS Windows,
1664    and using ATI commands to elicit chipset and driver information.
1665  10b9:5450  ALI 5450 and  10b9:5451  ALI 5451 are controllers for unsupported "sound  modems"
1666  
1667 END
1668       if [ "$Device" = "545a" ] || [ "$Device" = "5459" ] ; then
1669         cat<<END>>$RECORD
1670  $PCIDEV ALI545A SL1801 and $PCIDEV  ALI 5459 SmartPCI561 have SmartLink chipsets.
1671
1672 END
1673       fi
1674
1675       if [ "$Device" = "5457" ] || [ "$Device" = "5459" ] ; then
1676         cat<<END>>$RECORD
1677
1678  These messages may aid setup of soft modems under $v:M5457 controllers:
1679    http://linmodems.technion.ac.il/archive-third/msg02518.html
1680    http://linmodems.technion.ac.il/archive-third/msg02100.html
1681  The slmodem-2.9.9 support was developed for $v:5459,
1682    but there a range of reports the related $v:5457 modemd controllers:
1683      fully functional;
1684      functional only after a power on reboot from Microsoft windows;
1685      hang/crash upon initiation of modem usage.
1686  
1687  10b9:5457   Modem: ALi Corporation [M5457 AC-Link Modem] 
1688  SubSystem 1179:0001   Toshiba America Info Systems: Unknown device 0001
1689  has an AgereSoftModem chip which may be supported by the Smartlink slmodem-2.9.9 driver 
1690      
1691 END
1692       fi
1693     fi # beginPctel
1694
1695     if ! [ "$PCTEL" = "DONE" ] ; then
1696       if [ -z "$IDENT" ] || [ "$IDENT" = "PCTEL" ] || [ "$IDENT" = "CM8738" ] ; then
1697         if [ "$v" = "134d" ] || [ "$v" = "134c" ] || [ -n "$CM8738" ] || [ "$PCTEL" = "13f6" ] || [ "$CODECp" = "SIL21" ] ; then
1698           if [ "$CODECp" = "SIL21" ] ; then
1699             cat<<END>>$RECORD
1700
1701  For Pctel AMR under $CNTRL,
1702  the SmartLink slmodem-2.9.n  software can serve.
1703  The advantage is current updates, extending into the 2.6.n kernels.
1704
1705 END
1706               smart=1
1707           fi
1708           echo " Read ModemData.txt  and Pctel.txt in the new sub-folder Modem/" | tee -a $RECORD
1709           if [ "$PCIDEV" = "134d:2189" ] ; then   
1710             echo " The 134d:2189 is a PCTel 688T modem which is currently NOT supported see:" >>$RECORD
1711             echo "      http://linmodems.technion.ac.il/archive-fifth/msg00057.html" >>$RECORD      
1712           fi
1713                    cat<<END> Modem/Pctel.txt
1714
1715  Vendor=134d is PCTel and Vendor=134c is Chori Joho System Co. Ltd, 
1716  producing idenitcal devices including deviceIDs. For supported PCtel modems
1717   The PCTel Inc., modem sector has been sold to Conexant. 
1718   Thus official updates for Linux support are unlikely!!
1719   
1720   Through volunteer efforts, there are  code releases are at 
1721       http://linmodems.technion.ac.il/pctel-linux .
1722   Download the pctel-0.9.7-9.tar.gz
1723   Do the following preliminary steps:
1724           Unpack with command :       tar zxvf pctel-0.9.7-9.tar.gz
1725         Change directory:                 cd pctel-0.9.7-9
1726         Read README file                   less README   (space bar goes to next page)
1727         Is a compiler installed?  Test with:           gcc 
1728         If not found, install it from your Linux distribution.
1729         Become root:               su  root
1730         Seeing lspci?                    lspci    
1731           If not, install the package   pciutils .
1732         Now you can follow instructions in README
1733       
1734   For guidance on compiling and installing the pctel drivers, read the  PCTel minHOWTO: 
1735       http://www.peacefulaction.org/sayamindu/docs.php
1736   and the remainder of this file
1737
1738  The ISA card pct388p modem is not supported by the current driver series see:
1739        http://linmodems.technion.ac.il/archive-fifth/msg00166.html
1740  The PCI ID 134d:2189 modem is a PCTel 688T modem which is currently NOT supported see:
1741      http://linmodems.technion.ac.il/archive-fifth/msg00057.html 
1742  There are No success reports under current 2.6.nn kernels using PCTel code,
1743    though volunteer efforts are in progress to achieve support under 2.6.n kernels.
1744  The slmodem Smartlink code can however support the AMR PCtel modems under 2.4.n and 2.6.n kernels.
1745  
1746  During PCtel code installations, the node made is character device /dev/ttyS15  c 62 69
1747  Check with:
1748      ls -l dev/ttyS15
1749      
1750  There is a pre-compiled binary component in the Pctel code which was assembled with a gcc 2.95 compiler
1751  A consequence is the loading fails under kernels compiled with gcc 3.n , unless forcing (-f) is used:
1752         # insmod -f pctel
1753          # insmod ptserial
1754 This can be automated by adding the following lines to /etc/modules.conf
1755  
1756 ####### for pctel modem ######
1757 alias char-major-62 pctel
1758 alias /dev/modem ptserial
1759 install pctel /sbin/insmod "-f" "pctel"
1760 post-install pctel /sbin/insmod ptserial
1761
1762 # country code for pctel modem, for USA
1763 options ptserial country_code=1
1764 ######## pctel end ####
1765
1766 then run:
1767 # depmod -a
1768 to inform the System and thereafter
1769 # modprobe ptserial
1770 will load both drivers,
1771
1772  For some Systems, PCTel function requires disablement of apmd power monitoring function.
1773
1774  System problems of various severity have been reported after modem usage.
1775  These may be alleviated by the following steps after a modem usage session.
1776  Log into a console as:
1777  # su - root
1778  # lsmod 
1779  to display loaded modules.
1780  # modprobe -r ptserial
1781  # lsmod
1782
1783  For a case of a 134d:7897 modem on a VIA686 motherboard PCTEL drivers compiled with
1784      hal=via686
1785   did NOT provide effective drivers while the drivers were effective when compiled with
1786      hal=pct789 
1787      
1788  For pctel-0.9.7-9 with variant hal=via686a, a fix is needed:
1789    # cd src
1790    # make clean
1791    # ./configure -auto
1792 Search the Makefile for a line containing DAUDIO.  Edit that line into:
1793    AUDIOROUTING=-DVIA
1794 Then:  
1795    # make
1796    # make install
1797     
1798 END
1799         fi
1800       PCTEL=DONE
1801      fi
1802     fi # IDENT
1803     
1804     if [ "$v" = "158b" ] ; then
1805       cat<<END>>$RECORD
1806
1807  echo Vendor 158b is Allied Data Technologies, http://
1808  158b:0001 and 158b:0005 have Conexant HSF chipsets.
1809  158b:0015 has a Conexant HCF chipset.
1810  There are 158b:xxxx modems with the Intel 536ep chipset.
1811
1812 END
1813     INTEL536ep=1
1814     fi
1815     if  [ "$v" = "1013" ] ; then
1816       cat<<END>>$RECORD
1817
1818  There is no CURRENT SUPPORT for the Vendor=1013 chipsets of CML, Cirrus Logic Modems,
1819   with modem business acquired by Intel, Inc.
1820  See message: http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:9448:200210:fbhcoigfcimgkjdedjad
1821
1822 END
1823     fi
1824     if [ "$v" = "1813" ] ; then
1825       cat<<END>>$RECORD
1826
1827  Vendor=1813 Ambient Tech was acquired by Intel with its HaM (Host assisted Modem) chipsets.
1828  Intel-v92ham-453.tgz ifor 2.4.n kernels is FINAL update for HaM modems, available at:
1829     http://linmodems.technion.ac.il/packages/Intel/ham/ 
1830     http://developer.intel.com/design/modems/support/drivers.htm
1831     It is NOT functional when compiled under 2.6.n kernels and will NOT be updated to support
1832     the 2.6.n kernels, Intel maintainer Dorian Araneda has reported.
1833  But under the 2.4.nn kernels, all HaM chipsets are supported,
1834      with a single EXCEPTION: the odd PCI_ID 1813:4100 modems.  For the explanation, see message:
1835      http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:9448:200210:fbhcoigfcimgkjdedjad
1836
1837 END
1838     fi 
1839     # beginCXT
1840     if test -z "$Dcnx" ; then 
1841       Dcnx=done
1842       echo "148d 158b 141a 127a 14f1 1024" > $TMPM
1843       # hcfpciconfig
1844       if [ "$IDENT" = "CXT" ] || grep $v  $TMPM >/dev/null  ;  then
1845          # Conexant HSF, adapted from www.linuxant.com   HSF page
1846 cat<<END>$TMPM
1847
1848    HSFi tyes
1849  -----------
1850  14f1:2f00, Subsystem ID 2002:14f1
1851  14f1:2f00, Subsystem ID 2003:14f1
1852  14f1:2f00, Subsystem ID 2004:14f1
1853  14f1:2f01
1854  14f1:2f02
1855  14f1:2f03
1856  14f1:2f04
1857   
1858    HSF types
1859  ----------
1860  14f1:2013
1861  14f1:2014
1862  14f1:2015
1863  14f1:2016
1864  14f1:2f10
1865  14f1:2f11
1866  14f1:2f12
1867  14f1:2f13
1868  14f1:2f14
1869  14f1:4311 (RIPTIDE - sound not supported)
1870  127a:2013
1871  127a:2014
1872  127a:2015
1873  127a:2016
1874  127a:4311 (RIPTIDE - sound not supported)
1875  127a:2114
1876
1877  Basic2 / SmartDAA types
1878  --------------------------
1879  14f1:2043
1880  14f1:2044
1881  14f1:2045
1882  14f1:2046
1883  14f1:2443
1884
1885   Athens (Yukon)
1886  -----------------
1887  14f1:1631
1888  14f1:1636
1889  14f1:1637
1890
1891  8086:2486 104d:8129 SoftK56 CModem in a Sony Vaio grx560 laptop required a bootup "acpi=on" for IRQ acquisition.
1892  
1893 END
1894
1895 if [ "$PCIDEV" = "14f1:2f00" ] ; then
1896   echo $Vendor:2002 > $TMPM.0
1897   echo $Vendor:2003 >> $TMPM.0
1898   echo $Vendor:2004 >> $TMPM.0
1899 #  cat $TMPM.0
1900   if grep 14f1:2f00 $TMPM | cut -dD -f2- | grep -f $TMPM.0 >/dev/null ; then
1901     HSF=1
1902   fi
1903 fi
1904 if grep $Vendor $TMPM >/dev/null ; then
1905   grep $Vendor $TMPM > $TMPM.1
1906   if grep $Vendor:$Device $TMPM.1 >/dev/null ; then
1907     HSF=1
1908   fi
1909 fi
1910 if test -n "$HSF" ; then
1911    echo "  $PCIDEV is a Conexant HSF modem." | tee -a $RECORD
1912 fi
1913 # END Conexant HSF
1914 # the four set  127a,14f1:1025,2005 can be HCF and HSF and are included in the following HCF section
1915
1916 # www.linuzant.com HCF page adaptation
1917 cat<<END>$TMPM
1918 # Vendor:-------devices-----  of HCF List
1919  127a:1002:1003:1004:1005:1006 (71DP v90)
1920  14f1:1002:1003:1004:1005:1006 (71DP v90)
1921  127a:1022:1023:1024:1026
1922  14f1:1022:1023:1024:1026
1923  127a:1025:1085:2005 (if it doesn't work: try HSF driver)
1924  14f1:1025:1085:2005 (if it doesn't work: try HSF driver)
1925  127a:2004:2006
1926  14f1:2004:2006
1927  127a:1032:1033:1034:1035:1036
1928  14f1:1032:1033:1034:1035:1036
1929  127a:14f1:4321 (RIPTIDE)
1930  14f1:10b3:10b4:10b5:10b6
1931  127a:1802:1804:1805 (LAN/Modem combo)
1932  14f1:1813:1815 (LAN/Modem combo)
1933  14f1:1f10:1f11:1f14:1f15
1934  14f1:1053:1054:1055:1056 (Smart HCF board rev 3)
1935  14f1:1052:1057:1059 (Smart HCF board rev 4)
1936  14f1:1063:1064:1065:1066 (Smart HCF US-only: Dell)
1937  14f1:1453:1454:1455:1456 (Smart HCF mini-PcI board rev 3)
1938  14f1:1452:1457:1459 (Smart HCF mini-PcI board rev 4)
1939  1024:1024 (Zenith Data Systems)
1940  148d:1003 (DIGICOM Systems)
1941  158b:0015 (Allied Data Technologies Tornado VfM56x-PRc)
1942  141a:1035 (Apache Micro)
1943
1944 END
1945 if grep " $Vendor:" $TMPM >/dev/null ; then
1946   grep " $Vendor:" $TMPM > $TMPM.1
1947   if grep :$Device $TMPM.1>/dev/null ; then
1948   #for the four set  127a,14f1:1025,2005
1949     if grep $Vendor:1025:1085:2005 $TMPM.1 >/dev/null ; then
1950        echo " $PCIDEV could be either an HSF or an HCF Conexant modem" | tee -a $RECORD
1951     else
1952        echo "  $PCIDEV is a Conexant HCF modem." | tee -a $RECORD 
1953     fi 
1954   fi 
1955 fi
1956           cat<<END>>$RECORD
1957
1958  Vendors 127a and 14f1 are Conexant, inheritor of  Rockwell modem  technology. There are also Conexant chipsets
1959  in some modems from vendors 158b - Allied Data Tech., 1024 - Zenith ,141a - Apache Micro and 148d Digicom Systems.
1960  With respect to software support there are two main types, hcfpcimodem* and hsfmodem* .
1961  Download drivers from http://www.Linuxant.com/drivers/
1962  
1963  At   http://linmodems.technion.ac.il/resources.html#conexant  , there are scripts aiding installation:
1964       For HSF modems.
1965       For HCF modems.
1966  There is additional Conexant information written to Modem/Conexant.txt 
1967  
1968 END
1969  
1970    cat<<END> Modem/Conexant.txt 
1971    
1972   Linuxant Inc.  provides Linux drivers for Conexant chipset modems
1973   Go to http://www.linuxant.com/drivers
1974 -Find the HCF or HSF menu in the left part of the screen.
1975 -Read README.
1976 -Read INSTALLATION.
1977 -Click DOWNLOAD.
1978 -Accept conditions.
1979 -Find text: "You can download HCF (or HSF) modem packages from the driver
1980             download page." and click there.
1981 -Look for your distribution, your processor, and your kernel.
1982 -Download the matching file.
1983 -Read again and, if you do this under Windows, print the installation
1984  instructions matching the kind of driver file which you downloaded.
1985 -Now just follow these instructions.
1986
1987 http://www.linuxant.com/drivers/hsf/downloads-patches.php has patches
1988     that may be necessary for recent kernels. 
1989
1990  A detailed software installation example is provided at:
1991    http://linmodems.technion.ac.il/archive-fourth/msg00350.html
1992    
1993  The HCF (Host Controller Free) modems which have a digital signal processsing (DSP) chipset,
1994  while the HSF in the soft modem family without a DSP.
1995  HSF support is included with SuSE 9.0 and later releases
1996  Modems with the following PCI_IDs also have Conexant HCF (Controller free) chipsets.
1997   1024:1024 (Zenith Data Systems)
1998   148D:1003 (DIGICOM Systems)
1999   158B:0015 (Allied Data Technologies Tornado  VFM56x-PRC)
2000   141A:1035 (Apache Micro)
2001  The following six may be either HCF of HSF modems. Test the HSF package first
2002   (127a,14f1):(1025,1085, 2005)
2003   Should a HCF driver installation fail to serve among there,
2004   then uninstall and instead try the HSF driver resource.
2005  Subsystem HSF Conexant soft modems serve under AC97 or MC97 controllers. These include:
2006   14f1:(5422 2002) , plus many others with vendors assigned PCI IDs.
2007  
2008  After loading of HSF drivers, there will be displayed by command: /sbin/lsmod
2009 Module                  Size  Used by    Tainted: P
2010 hsfich                119116   0  (autoclean)
2011 hsfserial              26388   0  (autoclean)
2012 hsfengine            1126348   0  (autoclean) [hsfserial]
2013 hsfosspec              35328   0  (autoclean) [hsfich hsfserial hsfengine]
2014      plus many others not modem related.
2015  While drivers are pre-compiled for some Linux distributions,
2016    the installation of the HCF/HSF packages DOES in general require kernel-source/ preparation,
2017    as described in Modem/DriverCompiling.txt.
2018    
2019  There is a conflict between modules snd-intel8x0m and  hsfmc97ich.
2020  The snd-intel8x0m Must be loaded first or the system may hang upon hsfmc97ich insertion.
2021       http://linmodems.technion.ac.il/archive-fourth/msg03027.html
2022       
2023  A post install suggestion for adjusting PCI latency is:
2024          http://phep2.technion.ac.il/linmodems/archive/msg05210.html
2025
2026 END
2027       fi 
2028     fi # cnxt # beginIntel
2029
2030     echo $IDENT>$TMPM
2031     if [ -z "$Dintel" ] ; then
2032       if grep INTEL $TMPM >/dev/null || [ "$v" = "8086" ]  || [ "$v" = "1813" ] || [ "$AMBIG" = "INTEL537" ] || [ "$CODECp" = "INT" ]; then
2033         Dintel=done
2034         cat<<END>>$RECORD
2035
2036  Vendor=8086 is Intel, Inc. producing HaM and 536ep host controller free (HCF) modems, 537 soft modem
2037  and AC97 and MC97 controllers managing a varierty of non-Intel soft modem Subsystems.
2038  These subSystems often have PCI_IDs assigned by the modem assembler, rather than the chip provider.
2039  Download available drivers through:  http://developer.intel.com/design/modems/support/drivers.htm  with Intel-537 types at:
2040  http://downloadfinder.intel.com/scripts-df/Filter_Results.asp?selCat=all&strOSs=39&ProductID=1230&page_nbr=2
2041  Also check at: http://linmodems.technion.ac.il/packages/Intel/537/  
2042  for beta releases and perhaps Already compiled drivers for some Linux distributions
2043  A very detailed installation report cogent to 537 type modems is at:
2044                   http://linmodems.technion.ac.il/archive-fifth/msg00541.html
2045  Setup call id with:
2046         Type 1 : When the phone line is not in use                    at+vcid=1
2047         Type 2 : When the phone line is already in use on a call      at+pcw=0
2048  ---------------------
2049 END
2050         if [ "$IDENT" = "INTEL536ep" ] ; then
2051             cat<<END>>$RECORD
2052 :
2053  The older 2.4.n driver pair have a dependency on one other.
2054  with result that these messages may be seen upon driver loading:
2055         depmod****Unable to resolve symbol in 536ep.o
2056         depmod****Unable to resolve symbol in 536epcore.o
2057  but function is NOT affected.
2058  Bur when the message is any longer, the drivers probably have not been properly compiled.
2059    In which case carefully read Modem/DriverCompiling.txt
2060
2061  A problem maintaining CONNECT under the version 4.62 drivers was resolved
2062  by dropping back to the 4.60 version. See:
2063     http://linmodems.technion.ac.il/archive-third/msg02127.html
2064
2065   The Intel-537SP-MostRecentVersion.tgz driver package may alternatively provide support.
2066   
2067   For Debian like distros, a modified install script is:  
2068 http://members.lycos.co.uk/persianlinux/downloads/intel536ep/Intel536_inst_debian
2069
2070 END
2071         fi # 536ep
2072         if [ "$AMBIG" = "INTEL537" ] || [ "$CODECp" = "INT" ] ; then
2073            echo "  Recent Intel-537 fixes are  related in http://linmodems.technion.ac.il/archive-fifth/msg00013.html ,   http://linmodems.technion.ac.il/archive-fifth/msg00166.html">>$RECORD
2074           if [ "$DISTR" = "SuSE" ] ; then
2075             cat<<END>>$RECORD
2076
2077   Within http://linmodems.technion.ac.il/packages/Intel
2078   there are packages with compiled Intel 537 drivers for 2.4.nn kernels with name formats like:
2079           intel-537EP_SuSE-9.0_2.4.21-99-default_ONLY.tgz
2080
2081 END
2082           fi
2083           if [ "$AMBIG" = "INTEL537" ] ; then
2084               cat<<END>>$RECORD
2085  The installer code candidate is:
2086         Intel_secure-537AA-MostRecentVersion.tgz 
2087  But the Intel 537 readout needs confirmation !!
2088  Sadly there are a few mis-designations in the pciids dataset, which $0 relies on
2089  Too many modems are being labeled Intel537 types.
2090    http://linmodems.technion.ac.il/archive-third/msg02463.html
2091    http://linmodems.technion.ac.il/archive-third/msg02476.html
2092  This includes the distinct Agere, Conexant and SmartLink chipsets types. Conseqeuntly
2093  YOU must manually obtain further information under Microsoft Windows through modem ATI tests/queries
2094  as instructed in $RECORD2  Please include this information in any report to discuss@linmodems.org
2095
2096 END
2097           fi
2098         cat<<END>>/dev/null
2099
2100  There are Five types of Intel 537 chipsets sold to a variety of modem assemblers,
2101     though they may are all called out as Intel 537  by the LSPCI tool used in $0.
2102     Intel 537, a 8086:0003 subsystem PCI card  modem with TigerJet PCI Controller - e159:0001
2103        The installer is:  Intel-537-MostRecentVersion.tgz 
2104     Intel 537EP, an Intel PCI modem  si3052 chip(Intel 537EP(G)), si=Silicon Instruments
2105        8086:1080 Intel AC97 controller with modem  subSystem 8086:100[7,8,A,0] with
2106        with installer is intel-537EP_MostRecentVersion.tgz
2107          at http://downloadfinder.intel.com/scripts-df/Product_Search.asp?Prod_nm=537ep
2108     Intel 537SP (was known as MD5690) a PCI modem with dsp on board but disabled.
2109        8086:1040 Intel AC97 controller, with modem subsyst 8086:1005
2110        with installer intel-537SP-MostRecentVersion.tgz
2111     There are ambiguities in identification of modems with two Intel537 AA and EA chipset types
2112        http://linmodems.technion.ac.il/archive-third/msg02463.html
2113        http://linmodems.technion.ac.il/archive-third/msg02476.html
2114      Intel 537AA/EA, MDC/AC97 controller  with si3054 modem chip
2115        currently supported AC97 controllers - Intel (ICH3,4,5), VIA, NVIDIA, SIS, Realtek, ALI, ATI
2116        with installer  intel-537AA_secure-MostRecentVersion.tgz
2117     serving also Intel 537EA, CNR controller with  si3038 modem chip
2118
2119 END
2120         fi # IDENT
2121       fi # End Intel section
2122     fi # DONE
2123 # EOF    
2124     # Lucent or Xircom DSP
2125     if [ "$IDENT" = "AGERE" ] || [ "$IDENT" = "XIRCOM" ] ; then
2126      DEVICES="0x11c1:0x0440-0x045c"
2127      DEVICES=$DEVICES" 0x115d:0x0000-0x000f"
2128      DEVICES=$DEVICES" 0x115d:0x0440-0x045c"
2129      DEVICES=$DEVICES" 0x115d:0x0010-0x03ff"
2130      DEVVEN=$(( 0x`echo $PCIDEV | cut -d':' -f1` + 0 ))
2131      DEVNUM=$(( 0x`echo $PCIDEV | cut -d':' -f2` + 0 ))
2132      for DEV in $DEVICES
2133      do
2134       VENDOR=$(( `echo $DEV | cut -d':' -f1` + 0 ))
2135       DEVMIN=$(( `echo $DEV | cut -d':' -f2 | cut -d'-' -f1` + 0 ))
2136       DEVMAX=$(( `echo $DEV | cut -d':' -f2 | cut -d'-' -f2` + 0 ))
2137       FOUND=
2138       if test $DEVVEN -eq $VENDOR && test $DEVNUM -ge $DEVMIN && test $DEVNUM -le $DEVMAX
2139       then
2140         FOUND="yes"
2141         PCI_ID="$PCIDEV"
2142         MODEM_VENDOR=0x`echo $PCIDEV | cut -d':' -f1`
2143         MODEM_DEVICE=0x`echo $PCIDEV | cut -d':' -f2`
2144         if [ "$MODEM_VENDOR" = "0x11c1" ] ; then
2145           VENDED=LUCENT
2146         else
2147           VENDED=XIRCOM
2148         fi
2149         if test -n "$PCI_ID" ; then
2150           DSP=1
2151           cat<<END  |  tee -a $RECORD
2152
2153  The modem has a supported Lucent/Agere DSP (digital signal processing) chipset
2154   with primary PCI_ID:  $PCI_ID
2155  DSP=1
2156         
2157  Agere Systems, Inc provides periodic software releases for there DSP modems,
2158  which are made more Newbie friendly by volunteers.  There are some installer packages
2159  and also resources for compiling drivers:
2160  http://ltmodem.heby.de  is a repository for installers for later 2.4.2n and early 2.6.n  kernels.
2161       Packages below are for compiling drivers:
2162             ResourceName                Use for kernel ranges
2163         --------------------------------------------------------------------------------------------------          
2164         ltmodem-8.26a.tar.gz         kernels 2.4.21 and earlier
2165         ltmodem-8.30a3.tar.gz       kernels 2.4.21 and subsequent 2.4.2n kernels
2166         ltmodem-8.31a10.tar.gz     beginnig with 2.4.21 through and into 2.6.n  kernels 
2167  
2168  http://linmodems.technion.ac.il/packages/ltmodem/
2169         has installers for older 2.4.n kernels moved from http://ltmodem.heby.de 
2170         and subfolder kernel-2.6/  for 2.6.n  kernel support.  The latest resouce is:
2171         ltmodem-2.6-7-alk-7.tar.bz2  from Alex Kondratenko
2172         ltmodem-2.6-7alk.src.rpm is a repackaging for by Stephan Puck.  After installation
2173             of a kernel-source package (not necessary for fedora releases) use by:
2174             rpmbuild --rebuild ltmodem-2.6-7alk.src.rpm  , which will deposit an installer at:
2175                 /usr/src/rpm/RPMS/i586/ltmodem-kv_YourVersion.rpm          Check with  
2176             # ls -l   /usr/src/rpm/RPMS/i586/ltmodem*
2177             Then install with:
2178             # rpm -i /usr/src/rpm/RPMS/i586/ltmodem-kv_YourVersion.rpm
2179
2180 Support is effective at least into  2.6.11-1.14_FC3.        
2181 PCMCIA ltmodem support is still being  ported from 2.4.n to 2.6.n, as of May 2005
2182          
2183  http://dag.wieers.com/packages/kernel-module-ltmodem/ for some 2.4.n installers     
2184  SuSE/Novell has some ltmodem installers at their repositories and newer install CDs.
2185  More related output is below.
2186  
2187 END
2188
2189           cat<<EOF>>$RECORD2
2190
2191     VENDOR $MODEM_VENDOR         DEVICE $MODEM_DEVICE
2192    ------------------------------------------
2193     LUCENT 0x11c1          0x0440-0x045c
2194     XIRCOM 0x115d          0x0000-0x000F
2195     XIRCOM 0x115d          0x0440-0x045c
2196     XIRCOM 0x115d          0x0010-0x03ff
2197   -------------------------------------------
2198  Driver installer and and their predecessor driver compiler kits are available through:
2199        http://ltmodem.heby.de/  and  http://linmodems.technion.ac.il/packages/ltmodem/
2200
2201 EOF
2202         else
2203           cat<<END > $TMPM
2204
2205  While ISA and PCMCIA card modems would not be detected,
2206  if the modem is a PCI type it will not be served by these
2207  drivers for Lucent/Agere digital signal processor modems.
2208
2209 END
2210           PCI_ID=
2211         cat $TMPM
2212         cat $TMPM >>$RECORD
2213         fi
2214       fi
2215      done
2216     fi # end Lucent DSP section
2217     ## begin LUCENT
2218     if [ -z "$IDENT" ] || [ "$IDENT" = "AGR" ] || [ "$IDENT" = "AGERE" ] || [ -n "$DSP" ] && ! [ "$ALSA" = "snd-atiixp-modem" ] && [ -z "$ADONE" ] ; then
2219       ADONE=1
2220       if [ "$v" = "11c1" ] || [ "$CODEC" = "SIL27" ] || [ -n "$AGR" ] && ! [ "$SMART" = "only" ]  ; then
2221           cat<<END>>$RECORD
2222
2223  Vendor 11c1 corresponds to Lucent Technologies or subsidiary Agere Systems, Inc.
2224  Information is at:  http://www.agere.com/client/modem_dsp.html. Produced are both:
2225    1) modems identifiable from their primary PCI IDs and 
2226    2) soft modem Subystem chips requiring identification through codec readouts.
2227  
2228 END
2229         fi
2230         if  [ "$CODECp" = "SIL27" ] || [ -n "$AGR" ] ; then
2231           Smart=AGR
2232           cat<<END>>$RECORD
2233  AgereSoftModem drivers only support AC97 or MC97 modem controllers with codecs charcterized by one of:
2234    SIL_id = 39 
2235    mc97 codec is SIL27 
2236    0x27 , as output by modem diagnostics under Microsoft Windows
2237  If uncertain, identity the softmodem codec through tests described in Modem/SoftModem.txt
2238  Support is currently ONLY for 2.4.n kernels and the following modem controllers:
2239    8086:(2416 2426 2446 7196 2486 24C6)  , with 8086 == Intel
2240    1039:7013  SIS
2241    1106:3068  VIA
2242  Access the soft modem software through code sponsor IBM at:
2243    http://www-3.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52698
2244  The SmartLink slmodem-2.9.9 may serve for modems not served by this AgereSystems software.
2245  
2246  If may be necessary to add -DMODVERSIONS to the compile flags, 
2247  depending on whether your kernel was thus compiled. See
2248  http://linmodems.technion.ac.il/archive-fourth/msg01408.html
2249
2250 END
2251         elif [ "$Device" = "0462" ] ; then
2252           cat<<END>>$RECORD
2253
2254  56K.V90/ADSL Wildfire Modem with PCI_ID 11c1:0462
2255    http://www.lucent.com/press/0598/980505.mea.html
2256  currently lacks support under Linux.
2257
2258 END
2259         elif [ "$Device" = "048c" ] || [ "$Device" = "048e" ] || \
2260         [ "$Device" = "048f" ] ||  [ "$Device" = "0600" ] ; then
2261          smart=
2262          SMART=
2263          cat<<END>>$RECORD
2264
2265   Class 0703:  $v:$Device is still NOT supported under Linux, as of $UPDATE
2266   It is a "software" modem without a digital signal processing (DSP) chipset.
2267   The ltmodem drivers from http://ltmodem.heby.de resources for DSP modems do NOT provide support,
2268     A dialout terminates with "No Carrier" or a Hang if usage of the ltmodem drivers is attempted.
2269
2270 END
2271         elif  [ "$Device" = "0480" ] ; then
2272           echo " The Venus controller chipset 1673JV7 modems use the serial.o driver." >>$RECORD
2273         elif test -n "$DSP" ; then
2274           echo " Call waiting specified by, +pcw=1, is not implmented in the ltmodem drivers." >>$RECORD
2275           echo  Configuration with forcing is described in:   http://linmodems.technion.ac.il/archive-fifth/msg00055.html >> $RECORD
2276 # Setting up board.info for grepping MODEL_DATA
2277           cat<<END > $TMPM.2
2278  0x0440 -- Mars 2 - data/fax/voice
2279  0x0441 -- Mars 2 - data/fax only
2280  0x0442 -- Mars 2 - data/fax/tam only
2281  0x0448 -- Mars 2 Global Board - data/fax/voice
2282  0x0449 -- Mars 2 Global Board - data/fax only
2283  0x044a -- Mars 2 Global Board - data/fax/tam only
2284  0x0444 -- Apollo 2 data/fax only : Modem/LAN combo board Apollo behind an Intel 82559
2285  0x0445 -- Apollo 2 Global Board data/fax only : Modem/LAN combo board Apollo behind an Intel 82559
2286  0x0446 -- Apollo 2 data/fax/voice : Modem/LAN combo board Apollo behind an Intel 82559
2287  0x0447 -- Apollo 2 Global Board data/fax/voice : Modem/LAN combo board Apollo behind an Intel 82559
2288  0x044c -- Mars 3 Perseus data/fax only:North America and Global board
2289  0x044e -- Mars 3 Mercury data fax only
2290  0x0450 -- Mars 3 Mercury data fax Global board
2291  0x0451 -- Mars 3 Mercury data/fax/voice
2292  0x0452 -- Mars 3 Mercury data/fax/voice Global board
2293  0x0455 -- Mars 3 Perseus data/fax/voice: North America and Global board
2294  0x0458 -- Mars 3 Mercury data/fax/tam only.
2295  0x0459 -- Mars 3 Mercury data/fax/tam only. Global board.
2296  0x045a -- Mars 3 Perseus data/fax/tam only.: North America and Global board
2297  0x045b -- Apollo 3 Perseus data/fax only : Modem/LAN combo board Apollo behind an Intel 82559
2298  0x045c -- Apollo 3 Mercury data/fax only : Modem/LAN combo board Apollo behind an Intel 82559
2299  0x045d -- Mars 3 Mercury data/fax/tam only. Global board for Cardbus modem product.
2300  0x044c -- Mars 3.2 Mercury data fax only when no eeprom is present, North America DAA
2301 ##############
2302 END
2303           if grep $MODEM_DEVICE $TMPM.2 > /dev/null ; then
2304             grep $MODEM_DEVICE $TMPM.2   >>$RECORD
2305           fi
2306           if [ "$MAJOR" = "2.6"  ] ; then
2307             if [ "$SYS" = "2.6.3-4mdk" ] ; then
2308               cat<<END>>$RECORD
2309
2310  There are ltmodem packages in Mandrake. Search for ltmodem in the package lists
2311  and check for installation already with:
2312         rpm -qa ltmodem
2313  There is also a ltmodem-2.6.3-4mdk.tgz at
2314     at http://linmodems.technion.ac.il/packages/ltmodem/kernel-2.6  
2315
2316 END
2317             fi
2318             if [ "$KVER" = "2.6.8.1" ] ; then
2319               cat<<END>>$RECORD
2320
2321  Drivers compiled with ltmodem-2.6-alk-6.tar.bz2 have been effective with Mandrake 10
2322  kernel versions $KVER-* . See within http://linmodems.technion.ac.il/packages/ltmodem/
2323  ltmodem-2.6.8.1-10mdk.tar.gz  
2324   
2325 END
2326             fi
2327           fi
2328           if [ "$DISTR" = "SuSE" ] ; then
2329             cat<<END>>$RECORD
2330
2331   SuSE has a ltmodem packages for with pre-compiled drivers, beginning with the 8 releases 
2332   For the SuSE 9.1 release, there is an update improving bootup automation. 
2333   A failure had been reported for the 9.3 release ltmodem package, 
2334   but the ltmodem-2.6-7-alk-7.tar.bz2  resource gave effective drivers.
2335
2336 END
2337           fi
2338           if [ "$Device" = "0442" ] ; then
2339     echo "The device=$Device  modems have an electro-optical coupling" >>$RECORD
2340     echo "which in some hardware is Not adequately supported by these drivers." >>$RECORD
2341     echo >>$RECORD
2342           fi
2343         fi #DSP  
2344     fi # IDENT2
2345       
2346     if [ "$v" = "115d" ]  || [ "$PCIDEV" = "11c1:0420" ] ; then
2347       cat<<END>>$RECORD
2348
2349  Vendor=115d corresponds to Xircom, now an Intel subsidiary.
2350    http://www.intel.com/support/peripherals/xc/modems/index.htm
2351    http://appsr.intel.com/scripts-df/support_intel2.asp
2352    http://support.intel.com/
2353                           Device ID Range
2354                             -------------
2355     XIRCOM 0x115d          0x0000-0x000F
2356     XIRCOM 0x115d          0x0440-0x045c
2357     XIRCOM 0x115d          0x0010-0x03ff
2358    --------------------------------------
2359  are supported by the resources at http://ltmodem.heby.de/
2360
2361  Some other Xircom modems and Lucent 11c1:0420 modems
2362     MAY BE accessed by Insertion Options
2363  Download from http://ltmodem.heby.de/  the:   ltmodem-$LT_VERSION.tar.gz
2364  Open with:    tar zxvf  ltmodem-$LT_VERSION.tar.gz
2365  Within the ltmodem/DOCs/  folder read the Insertion-param files
2366  and for fun, the history:   andreas.txt
2367
2368  To get a recommendation for an Installer kit, run
2369     $0  kit
2370
2371 END
2372       if test -z "$DSP" ; then
2373         echo " The ltmodem drivers do NOT support this modem.">>$RECORD
2374       fi
2375     fi # Xircom
2376
2377     if [ -z "$ALT" ] ; then
2378     # SmartLink section
2379       ALT=1
2380       
2381        if [ "$Smart" = "ALSA" ] ; then
2382                 cat<<END>>$RECORD
2383
2384  Under the controller $CNTRL,
2385  with modem subSystem $SUBSYS 
2386  Only ALSA mode usage of slmodem-2.9.n  code may provide support.
2387  
2388 END
2389        fi
2390
2391        if  [ -n "$Smart" ] && ! [ "$Vendor" = "163c" ] && [ -n "$CNTRL" ] && ! [ "$IDENT" = "ATI" ] && ! [ "$Smart" = "ALSA" ] ; then
2392
2393           cat<<END>>$RECORD
2394
2395  Under the controller $CNTRL,
2396  with modem subSystem $SUBSYS     
2397  Alternative supporting packages are the SmartLink slmodem-2.9.n using its proprietary slamr driver, 
2398  or dependent on  $CNTRL, an  Open Source driver from the  ALSA package.
2399  See Modem/Slmodem-ALSA.txt for details.
2400   
2401  For SuSE 9.2 users, there is an update  for driver slamr.ko loading during bootup. 
2402  To find it easily, search for "slamr" within  http://www.novell.com/linux/download/updates/92_i386.html
2403      
2404 END
2405        fi
2406     fi #ALT
2407
2408     if [ -z "$SMDONE"  ] && [ -z "$DSP" ] && ! [ "$PCIDEV" = "8086:1040" ] ; then
2409       echo "163c 2000 2003 2004" > $TMPM
2410       # make all KERNEL_VER=2.6.0-test7  , due to lack of  kernel-headers
2411       if grep $v $TMPM>/dev/null || [ -n "$smart" ] || [ -n "$SMART" ] || [ "$IDENT" = "SMART" ] && [ -z "$CXT" ] && ! [ "$IDENT" = "ATI" ] ; then
2412         cat<<END>>$RECORD
2413
2414  SmartLink at http://www.smlink.com/ owns vendor IDs 163c, 2000, 2003, and 2004
2415  The official download site is:  http://www.smlink.com/main/index1.php?ln=en&main_id=40 ,
2416   but http://linmodems.technion.ac.il/packages/smartlink/ has older packages and new fixes.
2417       For the emerging 2.6.10 kernels, use the slmodem-2.9.9d.tar.gz  therefrom.
2418       Also DO download the ungrab-winmodem.tar.gz
2419  For details read Slmodem.txt,  Slmodem-ALSA.txt  and 
2420     http://linmodems.technion.ac.il/slmodem-serial.html
2421    
2422 END
2423       # a HowTo http://www.raspberry.co.za/michael/slmodem.html
2424         SMART=
2425         smart=
2426       fi
2427       SMDONE=1
2428     fi
2429     done
2430     # with Vendor and SUBven
2431     echo  >>$RECORD  
2432
2433 if [ -n "$DSP" ] ; then
2434   # || [ "$1" = "kit" ] ||
2435   if ! [ "$DISTR" = "Not_identified" ] ; then
2436     # No use if the distribution is not known
2437     if [ "$DISTR" = "slackware" ] ; then
2438       echo Installers are not available for Slackware Linux  >>$RECORD
2439     fi
2440     if [ "$DISTR" = "gentoo" ] ; then
2441       cat<<END>>$RECORD
2442
2443  LTmodem packages are within the Gentoo package system, so you can just run "emerge ltmodem".
2444   This will download the source, configure, compile, and install the driver modules.
2445
2446 END
2447     fi
2448     # DISTR=mandrake
2449     # echo DISTR=$DISTR
2450     # pick out the Distro section
2451     echo >  $TMPM
2452     if [ "$DISTR" = "conectiva" ] ; then
2453       if ! [ "$GCCmajor" = "3" ] ; then
2454         cat<<EOF>$TMPM
2455
2456 ltmodem-kv_2.4.18_586-6.28a8-1.i386.rpm
2457 ltmodem-kv_2.4.19_1U80_13cl-8.26a9-1.i386.rpm
2458 ltmodem-kv_2.4.19_1U80_2cl-8.26a9-1.i386.rpm
2459 ltmodem-kv_2.4.19_1U80_5cl-8.26a9-1.i386.rpm
2460 ltmodem-kv_2.4.19_1U80_8cl-8.26a9-1.i386.rpm
2461
2462 EOF
2463
2464       else
2465         cat<<EOF>$TMPM
2466
2467 ltmodem-kv_2.4.21_28872cl-8.26a9-1.i386.rpm
2468
2469 EOF
2470       fi
2471     fi
2472     if [ "$DISTR" = "debian" ] ; then
2473       cat<<END>>$RECORD
2474
2475  Add either of the following lines to the Debian  /etc/apt/sources.list
2476  to enable automatic updates on installer availability:
2477    deb http://www.physcip.uni-stuttgart.de/heby/ltmodem/dists/debian/ ./
2478    deb http://www.sfu.ca/~cth/ltmodem/dists/debian/ ./
2479
2480 END
2481       if ! [ "$GCCmajor" = "3" ] ; then
2482         cat<<EOF > $TMPM
2483 ltmodem-2.2.20-compact_6.00c2_i386.deb
2484 ltmodem-2.2.20-idepci_6.00c2_i386.deb
2485 ltmodem-2.2.20-reiserfs_6.00c_i386.deb
2486 ltmodem-2.2.20_6.00c2_i386.deb
2487 ltmodem-2.2.21-compact_6.00c2_i386.deb
2488 ltmodem-2.2.21-idepci_6.00c2_i386.deb
2489 ltmodem-2.2.22_6.00c_i386.deb
2490 ltmodem-2.2.22-compact_6.00c_i386.deb
2491 ltmodem-2.2.22-idepci_6.00c_i386.deb
2492 ltmodem-2.2.25_6.00c_i386.deb
2493 ltmodem-2.2.25-compact_6.00c_i386.deb
2494 ltmodem-2.2.25-idepci_6.00c_i386.deb
2495
2496 ltmodem-2.4.17-386_8.00a3_i386.deb
2497 ltmodem-2.4.17-586tsc_8.00a3_i386.deb
2498 ltmodem-2.4.17-686-smp_8.00a3_i386.deb
2499 ltmodem-2.4.17-686_8.00a3_i386.deb
2500 ltmodem-2.4.17-bf2.4_8.00a3_i386.deb
2501 ltmodem-2.4.17-k6_8.00a3_i386.deb
2502 ltmodem-2.4.17-k7_8.00a3_i386.deb
2503 ltmodem-2.4.17_8.00a3_i386.deb
2504 ltmodem-2.4.18-386_8.00a3_i386.deb
2505 ltmodem-2.4.18-586tsc_8.00a3_i386.deb
2506 ltmodem-2.4.18-686-smp_8.00a3_i386.deb
2507 ltmodem-2.4.18-686_8.00a3_i386.deb
2508 ltmodem-2.4.18-bf2.4_8.00a3_i386.deb
2509 ltmodem-2.4.18-k6_8.00a3_i386.deb
2510 ltmodem-2.4.18-k7_8.00a3_i386.deb
2511 ltmodem-2.4.18_8.00a3_i386.deb
2512
2513 ltmodem-2.4.19-386_8.26a9_i386.deb
2514 ltmodem-2.4.19-586tsc_8.26a9_i386.deb
2515 ltmodem-2.4.19-686-smp_8.26a9_i386.deb
2516 ltmodem-2.4.19-686_8.26a9_i386.deb
2517 ltmodem-2.4.19-k6_8.26a9_i386.deb
2518 ltmodem-2.4.19-k7_8.26a9_i386.deb
2519 ltmodem-2.4.19-k7-smp_8.26a9_i386.deb
2520 ltmodem-2.4.19_8.26a9_i386.deb
2521
2522 ltmodem-2.4.20_8.26a9_i386.deb
2523 ltmodem-2.4.20-speakup_8.26a9_i386.deb
2524 ltmodem-2.4.20-1-386_8.26a9_i386.deb 
2525 ltmodem-2.4.20-1-586tsc_8.26a9_i386.deb
2526 ltmodem-2.4.20-1-686_8.26a9_i386.deb  
2527 ltmodem-2.4.20-1-k6_8.26a9_i386.deb
2528 ltmodem-2.4.20-1-k7_8.26a9_i386.deb 
2529 ltmodem-2.4.20-1-k7-smp_8.26a9_i386.deb
2530
2531 ltmodem-2.4.18-k7_8.26a9_i386.deb
2532
2533 EOF
2534       else
2535       cat<<EOF>$TMPM
2536
2537 ltmodem-2.4.21-5-386_8.26a9_i386.deb
2538 ltmodem-2.4.21-5-586tsc_8.26a9_i386.deb
2539 ltmodem-2.4.21-5-686_8.26a9_i386.deb
2540 ltmodem-2.4.21-5-686-smp_8.26a9_i386.deb
2541 ltmodem-2.4.21-5-k6_8.26a9_i386.deb
2542 ltmodem-2.4.21-5-k7-smp_8.26a9_i386.deb
2543 ltmodem-2.4.21-5-k7_8.26a9_i386.deb
2544 ltmodem-2.4.21-5_8.26a9_i386.deb
2545
2546 ltmodem-2.4.22-1-386_8.26a9_i386.deb
2547 ltmodem-2.4.22-1-586tsc_8.26a9_i386.deb
2548 ltmodem-2.4.22-1-686_8.26a9_i386.deb
2549 ltmodem-2.4.22-1-686-smp_8.26a9_i386.deb
2550 ltmodem-2.4.22-1-k6_8.26a9_i386.deb
2551 ltmodem-2.4.22-1-k7-smp_8.26a9_i386.deb
2552 ltmodem-2.4.22-1-k7_8.26a9_i386.deb
2553 ltmodem-2.4.22-speakup_8.26a9_i386.deb
2554 ltmodem-2.4.22-1-386_8.31a3_i386.deb
2555 ltmodem-2.4.22-1-586tsc_8.31a3_i386.deb
2556 ltmodem-2.4.22-1-686_8.31a3_i386.deb
2557 ltmodem-2.4.22-1-686-smp_8.31a3_i386.deb
2558 ltmodem-2.4.22-1-k6_8.31a3_i386.deb
2559 ltmodem-2.4.22-1-k7-smp_8.31a3_i386.deb
2560 ltmodem-2.4.22-1-k7_8.31a3_i386.deb
2561 ltmodem-2.4.22-speakup_8.31a3_i386.deb
2562
2563 ltmodem-2.4.25-1-686_8.30a3_i386.deb
2564 ltmodem-2.4.25-586tsc_8.30a3_i386.deb
2565 ltmodem-2.4.25-686-smp_8.30a3_i386.deb
2566 ltmodem-2.4.25-k6_8.30a3_i386.deb
2567 ltmodem-2.4.25-k7-smp_8.30a3_i386.deb
2568 ltmodem-2.4.25-k7_8.30a3_i386.deb
2569
2570 ltmodem-2.4.26-1_8.31a3_i386.deb
2571 ltmodem-2.4.26-1-386_8.31a3_i386.deb
2572 ltmodem-2.4.26-1-586tsc_8.31a3_i386.deb
2573 ltmodem-2.4.26-1-686-smp_8.31a3_i386.deb
2574 ltmodem-2.4.26-1-686_8.31a3_i386.deb
2575 ltmodem-2.4.26-1-k6_8.31a3_i386.deb
2576 ltmodem-2.4.26-1-k7-smp_8.31a3_i386.deb
2577 ltmodem-2.4.26-1-k7_8.31a3_i386.deb
2578 ltmodem-2.4.26-speakup_8.31a3_i386.deb
2579
2580 ltmodem-2.6.8-1-686_8.31a8_1.i686.deb
2581 EOF
2582       fi
2583     fi
2584     if [ "$DISTR" = "mandrake" ] ; then
2585       if ! [ "$GCCmajor" = "3" ] ; then
2586         cat<<EOF > $TMPM
2587
2588  Only installers compiled with gcc = 3.n are stored at http://ltmodem.heby.de
2589  Older packages are at  http://linmodems.technion.ac.il/
2590
2591 EOF
2592       else
2593         cat<<EOF> $TMPM
2594
2595 ltmodem-kv_2.4.21_0.11mdk-8.26a9-1.i586.rpm
2596 ltmodem-kv_2.4.21_0.13mdk-8.26a9-1.i586.rpm
2597 ltmodem-kv_2.4.21_0.13mdk-8.30a3-1.i586.rpm
2598 ltmodem-kv_2.4.21_0.18mdk-8.26a9-1.i586.rpm
2599 ltmodem-kv_2.4.21_0.25mdk-8.26a9-1.i586.rpm
2600 ltmodem-kv_2.4.21_0.25mdk-8.26a9-1.i686.rpm
2601 ltmodem-kv_2.4.21_0.26mdk-8.26a9-1.i586.rpm
2602
2603 ltmodem-kv_2.4.22_10mdk-8.26a9-1.i586.rpm
2604 ltmodem-kv_2.4.22_21mdk-8.26a9-1.i586.rpm
2605 ltmodem-kv_2.4.22_26mdk-8.26a9-1.i586.rpm
2606 ltmodem-kv_2.4.22_28mdk-8.26a9-1.i586.rpm
2607 ltmodem-kv_2.4.22_29mdk-8.26a9-1.i586.rpm
2608 ltmodem-kv_2.4.22_30mdk-8.26a9-1.i586.rpm
2609
2610 ltmodem-kv_2.4.22_32mdk-8.30a3-1.i686.rpm
2611 ltmodem-kv_2.4.22_36mdk-8.30a3-1.i686.rpm
2612 ltmodem-kv_2.4.25_6mdk-8.30a3-1.i686.rpm
2613 ltmodem-kv_2.4.25_7mdk-8.30a3-1.i686.rpm
2614
2615 EOF
2616       fi
2617     fi
2618
2619     if [ "$DISTR" = "redhat" ] ; then
2620             echo " Many installers for RedHat are available at  http://dag.wieers.com/packages/kernel-module-ltmodem ">>$RECORD
2621       if [ -n "$FEDORA" ] ; then
2622         cat<<EOF>$TMPM
2623
2624 ltmodem-kv_2.4.22_1.2115.nptl-8.26a9-1.i386.rpm
2625 ltmodem-kv_2.4.22_1.2115.nptl-8.26a9-1.i686.rpm
2626 ltmodem-kv_2.4.22_1.2129.nptl-8.26a9-1.i386.rpm
2627 ltmodem-kv_2.4.22_1.2129.nptl-8.26a9-1.i686.rpm
2628 ltmodem-kv_2.4.22_1.2135.nptl-8.26a9-1.i386.rpm
2629 ltmodem-kv_2.4.22_1.2138.nptl-8.26a9-1.i386.rpm
2630 ltmodem-kv_2.4.22_1.2138.nptl-8.26a9-1.i686.rpm
2631 ltmodem-kv_2.4.22_1.2140.nptl-8.26a9-1.i386.rpm
2632 ltmodem-kv_2.4.22_1.2140.nptl-8.26a9-1.i686.rpm
2633 ltmodem-kv_2.4.22_1.2166.nptl-8.26a9-1.i386.rpm
2634 ltmodem-kv_2.4.22_1.2174.nptl-8.26a9-1.i386.rpm
2635 ltmodem-kv_2.4.22_1.2174.nptl-8.30a1-1.i686.rpm
2636 ltmodem-kv_2.4.22_1.2174.nptl-8.30a1-1.i686.rpm
2637 ltmodem-kv_2.4.22_1.2197.nptl-8.31a5-1.i686.rpm
2638 ltmodem-kv_2.6.6_1.427-8.31a7-1.i686.rpm
2639 ltmodem-kv_2.6.6_1.435-8.31a7-1.i686.rpm
2640 ltmodem-kv_2.6.7_1.494.2.2-8.31a8-1.i686.rpm
2641 ltmodem-kv_2.6.8_1.521-8.31a8-1.i686.rpm
2642
2643 EOF
2644       else
2645         cat<<EOF>$TMPM
2646
2647 ltmodem-kv_2.4.20_2.2-8.26a9-1.i386.rpm
2648 ltmodem-kv_2.4.20_2.2-8.26a9-1.i486.rpm
2649 ltmodem-kv_2.4.20_2.2-8.26a9-1.i586.rpm
2650 ltmodem-kv_2.4.20_2.2-8.26a9-1.i686.rpm
2651 ltmodem-kv_2.4.20_6-8.26a9-1.athlon.rpm
2652 ltmodem-kv_2.4.20_8-8.26a9-1.i386.rpm
2653 ltmodem-kv_2.4.20_8-8.26a9-1.i486.rpm
2654 ltmodem-kv_2.4.20_8-8.26a9-1.i586.rpm
2655 ltmodem-kv_2.4.20_8-8.26a9-1.i686.rpm
2656 ltmodem-kv_2.4.20_9-8.26a9-1.i386.rpm
2657 ltmodem-kv_2.4.20_9-8.26a9-1.i486.rpm
2658 ltmodem-kv_2.4.20_9-8.26a9-1.i586.rpm
2659 ltmodem-kv_2.4.20_9-8.26a9-1.i686.rpm
2660 ltmodem-kv_2.4.20_13.8-8.26a9-1.i386.rpm
2661 ltmodem-kv_2.4.20_13.9-8.26a9-1.i386.rpm
2662 ltmodem-kv_2.4.20_13.9-8.26a9-1.i486.rpm
2663 ltmodem-kv_2.4.20_13.9-8.26a9-1.i586.rpm
2664 ltmodem-kv_2.4.20_13.9-8.26a9-1.i686.rpm
2665 ltmodem-kv_2.4.20_18.9-8.26a9-1.i386.rpm
2666 ltmodem-kv_2.4.20_18.9-8.26a9-1.i486.rpm
2667 ltmodem-kv_2.4.20_18.9-8.26a9-1.i586.rpm
2668 ltmodem-kv_2.4.20_18.9-8.26a9-1.i686.rpm
2669 ltmodem-kv_2.4.20_19.9-8.26a9-1.i386.rpm
2670 ltmodem-kv_2.4.20_19.9-8.26a9-1.i486.rpm
2671 ltmodem-kv_2.4.20_19.9-8.26a9-1.i586.rpm
2672 ltmodem-kv_2.4.20_19.9-8.26a9-1.i686.rpm
2673 ltmodem-kv_2.4.20_20.7-8.26a9-1.i686.rpm
2674 ltmodem-kv_2.4.20_20.8-8.26a9-1.i386.rpm
2675 ltmodem-kv_2.4.20_20.8-8.26a9-1.i686.rpm
2676 ltmodem-kv_2.4.20_20.9-8.26a9-1.i386.rpm
2677 ltmodem-kv_2.4.20_20.9-8.26a9-1.i486.rpm
2678 ltmodem-kv_2.4.20_20.9-8.26a9-1.i586.rpm
2679 ltmodem-kv_2.4.20_20.9-8.26a9-1.i686.rpm
2680 ltmodem-kv_2.4.20_24.7-8.26a9-1.i686.rpm
2681 ltmodem-kv_2.4.20_24.8-8.26a9-1.i386.rpm
2682 ltmodem-kv_2.4.20_24.9-8.26a9-1.i386.rpm
2683 ltmodem-kv_2.4.20_24.9-8.26a9-1.i486.rpm
2684 ltmodem-kv_2.4.20_24.9-8.26a9-1.i586.rpm
2685 ltmodem-kv_2.4.20_24.9-8.26a9-1.i686.rpm
2686 ltmodem-kv_2.4.20_27.9-8.26a9-1.athlon.rpm
2687 ltmodem-kv_2.4.20_27.9-8.26a9-1.i386.rpm
2688 ltmodem-kv_2.4.20_27.9-8.26a9-1.i486.rpm
2689 ltmodem-kv_2.4.20_27.9-8.26a9-1.i586.rpm
2690 ltmodem-kv_2.4.20_27.9-8.26a9-1.i686.rpm
2691 ltmodem-kv_2.4.20_30.9-8.26a9-1.i686.rpm
2692
2693 ltmodem-kv_2.4.21_4.EL-8.30a1-1.athlon.rpm
2694 ltmodem-kv_2.4.21_4.EL-8.30a1-1.i686.rpm
2695
2696 EOF
2697       fi
2698     fi
2699
2700     if [ "$DISTR" = "SuSE" ] ; then
2701       cat<<END>$TMPM
2702 ltmodem-kv_2.4.20_4GB-8.26a9-1.i386.rpm,  SuSE 8.2
2703
2704 END
2705
2706     fi
2707
2708 ################### Listing from http://ltmodem.heby.de/ ends
2709
2710     fi #  Done choosing DISTR block
2711     echo >>$RECORD
2712     echo "  The desired installer name is like:" >>$RECORD
2713     echo "========================================"  >>$RECORD
2714     # echo Checking for suitable ltmodem Installers
2715     if [ "$DISTR" = "debian" ] ; then
2716       echo ltmodem-"$FILTER""8.nn"_i386.deb >>$RECORD
2717       # FILTER=2.4.18-6_
2718       if grep $FILTER $TMPM > /dev/null ; then
2719         grep $FILTER $TMPM > $TMPM.1
2720         BEST=$TMPM.1
2721       fi
2722     else
2723       # conectiva mandrake redhat SuSE, fedora  all .rpm
2724       if [ "$DISTR" = "mandrake" ] || [ "$DISTR" = "redhat" ] ; then
2725         echo ltmodem-kv-$PVER-$LT_VERSION-1.$CPU.rpm >>$RECORD
2726         # http://linmodems.technion.ac.il/archive-fourth/msg03230.html Marv
2727       fi
2728       if [ "$DISTR" = "conectiva" ] || [ "$DISTR" = "SuSE" ] ; then
2729         echo "ltmodem-kv-$PVER-$LT_VERSION-i386.rpm" >>$RECORD
2730       fi
2731       grep $PVER $TMPM  > $TMPM.2
2732       grep $CPU $TMPM.2 >  $TMPM.1
2733       if grep "ltmodem-" $TMPM.1 >/dev/null ; then
2734         BEST=$TMPM.1
2735       elif grep "ltmodem-" $TMPM.2 >/dev/null ; then
2736         BEST=$TMPM.2
2737       else
2738         BEST=
2739       fi
2740     fi
2741     # AGERES=`echo $LT_VERSION | cut -da -f1`
2742     AGERES=8.nn
2743     cat<<END>>$RECORD
2744 ----------------------------------------
2745  ltmodem-kv-Kernel_FL-LTver--.CPU.rpm   explains the versioning.
2746  For your System
2747             `echo Kernel_FL is  $SYS , the full kernel version displayed by:  uname -r`
2748                       `echo LTver is $LT_VERSION, the release of the compiler kit`
2749                                `echo $AGERES is the Agere core code designation.`
2750        The proccesor type or CPU is:  $CPU      dispayed by:  uname -m
2751  used in compiling and assembling driver packages.
2752
2753 END
2754
2755     # Results
2756     if [ "$DISTR" = "redhat" ] && [ -n "$FEDORA" ] ; then
2757       DISTR=fedora
2758       echo " For usage with the udev file system of fedora core 3, see  http://linmodems.technion.ac.il/archive-fifth/msg01177.html">>$RECORD
2759       # changed back to redhat after this message section
2760     fi
2761     if [ "$SYS" = "2.6.8.1-12mdk" ]  ||  [ "$SYS" = "2.6.8.1-10mdk" ]  &&  [ "$DISTR" = "mandrake" ]  ; then
2762      cat<END >> $RECORD
2763      
2764  At  http://linmodems.technion.ac.li/packages/ltmodem/kernel-2.6/
2765  there is an installer  ltmodem-"$SYS".tar.gz
2766  Unpack under Linux with: 
2767      tar zxvf ltmodem-2.6.8.1-12mdk.tar.gz
2768
2769 END
2770     elif [ "$BEST" = "$TMPM.1" ] ; then
2771         cat<<END > $TMPM.3
2772   A suitable Installer is at    http://ltmodem.heby.de/
2773     in the section:     $DISTR
2774        `cat $BEST`
2775
2776 END
2777     cat $TMPM.3 >>$RECORD
2778     cat $TMPM.3
2779     elif [ "$BEST" = "$TMPM.2" ] ; then
2780         cat<<END > $TMPM.3
2781  Installers that may suffice are at http://ltmodem.heby.de/
2782  in the section:        $DISTR
2783 ------------------------------------------------------
2784  `cat $BEST`
2785 ------------------------------------------------------
2786  The closest match to your   $CPU=CPU   is recommended.
2787  For example replacements in order of preference for an
2788     i686 would be i586, i486 and i386
2789  The Kernel_FLavor section MUST match.
2790  If not the ltmodem-$LT_VERSION.tar.gz compiler MUST BE USED.
2791
2792 END
2793     cat $TMPM.3 >>$RECORD
2794     cat $TMPM.3
2795     else
2796      echo >/dev/null
2797       cat<<END>>$RECORD
2798       
2799  A suitable installer is not available as of this $UPDATE update.
2800  Check in the section $DISTR at  http://ltmodem.heby.de/
2801    for a subsequent Installer submission.
2802  Older releases have been archived at:
2803    http://linmodems.technion.ac.il/packages/ltmodem/archive/
2804  Also there is a RPM search engine at:   http://rpm.pbone.net
2805  The closest match to your   $CPU=CPU   is recommended.
2806    The closest match to your   $CPU=CPU   is recommended.
2807    For example replacements in order of preference for an
2808      i686 would be i586, i486 and i386
2809  If not present use the  ltmodem-$LT_VERSION.tar.gz compiler kit.
2810
2811  The list of available Installers for $DISTR as of this $UPDATE
2812  is inserted into to $RECORD2
2813 END
2814 # RC2
2815       cat<<END>>$RECORD2
2816
2817 GCCmajor=$GCCmajor
2818 -----------Installer list for $DISTR --------
2819 `cat $TMPM`
2820 ------- end Installer List ------------------
2821 END
2822     fi
2823   fi # DISTR not recognized
2824   if [ "$DISTR" = "fedora" ] ; then
2825     DISTR=redhat
2826   # changed back to redhat after above message section
2827   fi
2828   if grep smp $TMPM >/dev/null ; then
2829 ########### RC2
2830 cat<<END>/dev/null
2831
2832    Symmetric Multi Processors (SMP) issues
2833 ----------------------------------------------------------------------------------
2834   Beginning with the Agere version 8.00 core code, the ltmodem drivers are
2835   functional on Systems with SMP kernels such as your kernel-$SYS ,
2836   so far as supporting dialout and initiation of ppp.
2837   However these dialout sessions  inevitable stall,
2838   evidently because of inadequate interrupt handling by the core ltmodem code.
2839   This problem can be bypassed with some loss of performance by
2840   using the bootup option: noacpi
2841
2842   The November 2004  AgereSystems 8.30 release is SMP proficient.
2843
2844 END
2845 ############
2846
2847 fi # DSP
2848   done
2849  #  TESTS
2850 echo "  ======= PCI_ID checking completed ====== ">>$RECORD
2851 ## RC2
2852 cat<<END>>$RECORD2
2853
2854  If the Primary and Subsystem Vendor information was not adeqaute,
2855  it may be useful to search at  http://www.pcidatabase.com/
2856
2857 END
2858
2859 # Just to be sure the Update is reported:
2860 echo " Update=$UPDATE">>$RECORD
2861
2862 # echo Scanning for a PCI bridge to a CardBus with:  "$LSPCI 2>/dev/null  | grep CardBus"
2863 echo ---------------------------------------- > $TMPM
2864 $LSPCI 2>/dev/null  | grep -E CardBus | cut -d' ' -f1 >$TMPM.1
2865 if grep 0000: $TMPM.1 >/dev/null; then
2866   CARDBUS=`cat $TMPM.1 | cut -d: -f2-`
2867 else
2868   CARDBUS=`cat $TMPM.1`
2869 fi
2870
2871 if test -z "$CARDBUS" ; then
2872    echo A PCMCIA CardBus is not detected on this System. >> $RECORD
2873 else
2874     port=0
2875     for i in $CARDBUS ; do
2876         echo  >> $RECORD
2877         echo Analyzing information for PCMCIA device at PCI Bus $i >> $RECORD
2878         $LSPCI -s $i -v 2>/dev/null >> $TMPM
2879         echo "GREPping for an inserted PCMCIA modem with filter:        ommunication"  >> $RECORD
2880         MODEM=`$LSPCI -v 2>/dev/null | grep ommunication`
2881         if test -n "$MODEM" ; then
2882             port=1
2883         fi
2884     done
2885     if test $port -gt 0 ; then
2886       echo " A PCMCIA modem is detected." | tee -a $RECORD
2887       cat<<END>>$RECORD
2888       
2889  The stardard ltmodem resources should suffice for modem support:
2890      http://ltmodem.heby.de/
2891  if the modem has a Lucent/Agere digital processing chipset.
2892  
2893 END
2894     else
2895        cat<<END>>$RECORD
2896  If a PCMCIA modem is currently inserted and the sockets activated by
2897     /etc/init.d/pcmcia start
2898  then the PCMCIA bridge is NOT transparent.
2899
2900  If the modem is known to have a Lucent digital signal processing chipset,
2901  then PCMCIA.tar.gz variant assembled by Joern Wustenfeld is necessary,
2902  rather than the standard ltmodem-$LT_VERSION.tar.gz at  http://ltmodem.heby.de/
2903 END
2904      fi
2905      echo
2906 fi
2907
2908 # gcc problem
2909 if [ "$GCCmajor" = "3" ] ; then
2910   echo GCCversion=$GCC >>$RECORD
2911 #########
2912   cat<<END>>$RECORD2
2913
2914  ---------------------------------------------------------------------------------------------
2915  The proprietary Binary component of the some current winmodem drivers were compiled with
2916  version 2.9n gcc compiler.  Red Hat 8.0 and Mandrake 9.0 releases utilize
2917  version 3.nn gcc compilers.  This currently is causing difficulties either
2918  in compiling and/or insertion of updated winmodem drivers.
2919
2920  The gcc compiler version of this System is:   $GCC
2921  It will likely be necessary to force (-f) insertion of winmodem drivers, with credit to
2922  Jos Vos: http://phep2.technion.ac.il/linmodems/archive/msg04510.html
2923
2924  For the ltmodem drivers with proprietary binary provided by Agere Systems,
2925  compiling with versions gcc=3.nn is successful.
2926  A minor edit required to compile PCTEL drivers has also been reported:
2927      http://phep2.technion.ac.il/linmodems/archive/msg04684.html
2928
2929   Simple driver insertion fails in these cases with a message like:
2930 ----begin error----
2931 % insmod lt_modem
2932 Using /lib/modules/2.4.18-14/ltmodem/lt_modem.o
2933 /lib/modules/2.4.18-14/ltmodem/lt_modem.o: The module you are trying to
2934 load (/lib/modules/2.4.18-14/ltmodem/lt_modem.o) is compiled with a gcc
2935 version 2 compiler, while the kernel you are running is compiled with
2936 a gcc version 3 compiler. This is known to not work.
2937 -----end error-----
2938
2939  It is necessary as Root to force (-f) loading with commands like:
2940      insmod -f pctel
2941
2942  respecting the dependency ordering of the drivers.
2943  Then check for insertion with:
2944     lsmod
2945
2946  If driver insertion is successful, the forcing can be automated
2947  by putting the lines (credit to Bhaskaran Raman)  like the following,
2948     install pctel  /sbin/insmod --force pctel
2949
2950  In order of preference depending on your particular Linux installation.
2951  Put these lines into ONLY ONE of the following files,
2952  within any modem loading subsection if present:
2953     /etc/modutils/ltmodem
2954     /etc/modutils/aliases
2955     /etc/modules.conf
2956
2957  Then inform your System of the edit for Debian like Systems with
2958     update-modules
2959  which rewrites and reads /etc/modules.conf . For other System types
2960     depmod -a
2961  re-reads the edited      /etc/modules.conf .
2962
2963  Thereafter module loading should behave as previously.
2964  For the ltmodem drivers loading,
2965  it should suffice to either start a ppp session or
2966     modprobe ptserial
2967
2968 END
2969 ###############
2970 fi
2971
2972 if test -d /etc/udev ; then
2973    cat<<END>>$RECORD
2974    
2975 For information on modem port creation under the UDEV device file system see:
2976    http://linmodems.technion.ac.il/archive-fourth/msg03299.html  for Conexnant modems
2977    http://linmodems.technion.ac.il/archive-fifth/msg01177.html  for Lucent/Agere DSP modems
2978    
2979 END
2980
2981 fi
2982
2983 # A general Advisory
2984 ETHER=`$LSPCI 2>/dev/null  | grep Ether | cut -d' ' -f1`
2985 if test -n "$ETHER" ; then
2986   #RC2
2987   cat<<END>>$RECORD2
2988
2989   -----------------------------------------------------
2990   The System has Ethernet capability. If not expert, 
2991   shut down ethernet before initiated modem usage with:
2992   # ifconfig eth0 down
2993
2994 END
2995   #RC2
2996   $LSPCI -s $ETHER -v 2>/dev/null >>$RECORD2
2997   echo >>$RECORD2
2998 fi
2999 if [ "$MAJOR" = "2.6" ] ; then
3000   MODCONF=/etc/modprobe.*
3001 else
3002   MODCONF=/etc/modules.conf
3003 fi
3004 ############
3005
3006   cat<<END >>$RECORD
3007 The following information blocks just query some ppp support items.
3008
3009 ====================================================
3010    grep -rs ppp $MODCONF
3011 -------------------------------------
3012 `grep -rs ppp $MODCONF`
3013 -------------------------------------
3014 END
3015 # Check for unziped drivers
3016 if [ "$MAJOR" = "2.4" ] || [ "$MAJOR" = "2.2" ] ; then
3017   SUF=o
3018 else
3019   SUF=ko
3020 fi 
3021 Modules="bsd_comp. ppp_async. ppp_generic. slhc ppp_deflate. zlib_deflate."
3022 for i in $Modules
3023 do
3024   find /lib/modules/ -name $i* 2>/dev/null  >> $TMPM
3025   if ! grep $i $TMPM>/dev/null ; then
3026     echo " PPP support module  $i$SUF  not found!">>$RECORD
3027   fi
3028 done
3029 if grep "o.gz" $TMPM > /dev/null ; then
3030   cat<<END>>$RECORD
3031
3032   The following ppp related modules should be unpacked by root with:
3033 # gunzip PathTo/ModuleName.$SUF.gz
3034 `cat $TMPM`
3035
3036  On most Systems, this will driven by installing the wvdial.rpm
3037  and the package providing the KPPP graphical dialing interface.
3038
3039 END
3040 else
3041   echo " Resident PPP support modules are properly uncompressed .">>$RECORD
3042 fi
3043 if test -x /sbin/ifconfig ; then
3044   if /sbin/ifconfig | grep Link | grep -v Loopback >/dev/null ; then
3045     echo "----active COMM services are ------------">>$RECORD
3046     /sbin/ifconfig | grep Link | grep -v Loopback >>$RECORD
3047     echo "This COMM mode should be closed before using the modem, or DNS services may fail.">>$RECORD
3048   else
3049     echo " COMM services are not active">>$RECORD
3050   fi
3051 fi
3052
3053 if ! grep ppp $MODCONF >/dev/null ; then
3054   echo
3055   echo Be sure to read the section about ppp related modules and aliases in $RECORD2 >>$RECORD
3056
3057   cat<<END>>$RECORD2
3058
3059  Within /lib/modules/You_Kernel_Version/kernel/drivers/net/
3060  at least the following modules needed for communication should be found
3061    ppp_deflate.o
3062    zlib_inflate.o 
3063    zlib_deflate.o 
3064    bsd_comp.o
3065    ppp_async.o
3066    ppp_generic.o
3067    slhc.o
3068  BUT they may be present instead as ModuleName.o.gz
3069  If so unpack them with a commands like:
3070    # gzip /lib/modules/You_Kernel_Version/kernel/drivers/net/ModuleName.o.gz
3071  Alternatively, installing the dialer package KPPP may force their unpacking.
3072  
3073  Following a dialout attempt, display loaded modules with:
3074 # /sbin/lsmod
3075  If there are not displayed lines like:
3076
3077 ppp_deflate             3512   1  (autoclean)
3078 zlib_inflate           18980   0  (autoclean) [ppp_deflate]
3079 zlib_deflate           18648   0  (autoclean) [ppp_deflate]
3080 bsd_comp                4440   0  (autoclean)
3081 ppp_async               7744   1  (autoclean)
3082 ppp_generic            16380   3  (autoclean) [ppp_deflate bsd_comp ppp_async]
3083 slhc                    5264   1  (autoclean) [ppp_generic
3084
3085 addition of the following lines to $MODCONF or $MODCONF.d/ folders may be needed:
3086
3087 ### automate ppp modules loading ###
3088 alias /dev/ppp          ppp_generic
3089 alias char-major-108    ppp_generic
3090 alias tty-ldisc-3       ppp_async
3091 alias tty-ldisc-14      ppp_synctty
3092 alias ppp-compress-21   bsd_comp
3093 alias ppp-compress-24   ppp_deflate
3094 alias ppp-compress-26   ppp_deflate
3095 ### end ppp block ####
3096
3097  After any edit of $MODCONF or $MODCONF.d/ folders ,
3098  inform the System by logging into a console with
3099  # su - root
3100  and running the update command:
3101  #  depmod -a
3102  which re-reads /etc/modules.conf and parses all the modules dependencies.
3103  Debian like Distros should instead use:
3104    update-modules
3105
3106 END
3107 fi
3108 # ethernet and isdn can hinder DNS acquisition
3109 if test -x /sbin/ifconfig ; then
3110   /sbin/ifconfig | grep Link> $TMPM
3111   #RC2
3112     cat<<END>> $RECORD2
3113
3114   Attempted or effective networking links are displayed by command:
3115   #  /sbin/ifconfig
3116   A block with "lo" is an internal loopback test and harmless.
3117   However, ethernet "eth0" can be problematic for PPP connections,
3118   because of competition for DNS (domain name service).
3119   The default is to use the DNS specified for etherenet and
3120   without expert configuration, this will block browser naviagation through PPP.
3121   ========== ifconfig test =============
3122   `cat $TMPM`
3123
3124   If is wisest to disable bootup establishment of ethernet in your Control Center.
3125   Depending on your Linux distribution,
3126       one of the following Root commands way alternatively be effective:
3127   # ifdown eth0
3128   # ifconfig eth0 down
3129   # /etc/init.d/network stop
3130   # /etc/init.d/networking stop
3131
3132 END
3133   if  grep eth $TMPM>/dev/null ; then
3134     echo " Be sure to read the Ethernet section of $RECORD2 " >>$RECORD
3135   fi
3136   if grep tap $TMPM>/dev/null ; then
3137     echo ISDN function should be stopped before initiating modem usage>>$RECORD
3138     echo >>$RECORD
3139   fi   
3140 fi
3141
3142 if test -e /dev/ppp ; then
3143   DEVPPP=`ls -l /dev/ppp`
3144   echo DEVPPP=$DEVPPP  >>$RECORD
3145 else
3146   cat<<END>>$RECORD
3147
3148   A port needed for the PPP protocol is absent!!!
3149   echo "  crw-------    1 root     root     108,   0 Dec 31  1969 /dev/ppp"
3150
3151 END
3152 fi
3153
3154 if test -e /dev/.devfsd ; then
3155   DEVFS=active
3156   echo DEVFS=$DEVFS >>$RECORD
3157 # Check for /dev/modem link
3158 elif [ -L /dev/modem ] ; then
3159   MODEM=`ls -l /dev/modem | cut -d'>' -f2- | cut -d" " -f2-`
3160   cat<<END>> $RECORD
3161
3162   The current modem symbolic link is: /dev/modem -> $MODEM
3163   The ports /dev/ttyS0 or 1,2,3 are for standard Controller chip modems
3164
3165 END
3166 else
3167   echo A /dev/modem symbolic link is not present >>$RECORD
3168 fi
3169
3170 if test -f /etc/devfsd.conf ; then
3171   DEVFSD=/etc/devfsd.conf
3172 elif test -f /etc/devfs/devfsd.conf ; then
3173   DEVFSD=/etc/devfs/devfsd.conf
3174 else
3175   cat<<END>>$RECORD
3176
3177  No devfsd.conf file found, indicated absense of the devfsd daemon package
3178  for device file system (devfs) symbolic link support.
3179
3180 END
3181 fi
3182 echo DEVFSD=$DEVFSD>>$RECORD
3183
3184 if ! [ "$DEVFSD" = "" ] ; then
3185   DEVFSD_PPP=`grep PPP $DEVFSD` >>$RECORD
3186   echo tts/0 > $TMPM
3187   echo tts/1 >> $TMPM
3188   echo tts/2 >> $TMPM
3189   echo tts/3 >> $TMPM
3190   echo
3191   MODEM=`grep -f $TMPM $DEVFSD`
3192   if test -z "$MODEM" ; then
3193     if test -d /etc/devfs ; then
3194       MODEM=`grep -rs modem /etc/devfs/ | grep -f $TMPM | grep :REGISTER`
3195     fi
3196   fi
3197   if test -n "$MODEM" ; then
3198     FILE=`grep -rs modem /etc/devfs/ | grep -f $TMPM | grep :REGISTER | cut -d: -f1`
3199 #    echo $FILE
3200     cat<<EOF>>$RECORD
3201
3202  Supporting /dev/modem symbolic link:
3203  $FILE
3204 ------------------------------
3205 `cat $FILE`
3206 ------------------------------
3207
3208 EOF
3209     cat<<END>>$RECORD2
3210
3211  Supporting /dev/modem symbolic link:
3212  $FILE
3213 ------------------------------
3214 `cat $FILE`
3215 ------------------------------
3216  is for device file system support of Controller chip modems
3217  and will conflict with usages of any other modem requiring a
3218  symbolic link:  /dev/modem --> /dev/SomeNode
3219
3220  It will for example conflict with support for the Lucent chip modems
3221  with support file /etc/devfs/conf.d/ltmodem.conf
3222 ---------------------------------
3223 ### /dev/modem symbolic link to /dev/tts/LT0
3224 REGISTER        ^tts/LT0$       CFUNCTION GLOBAL symlink $devname modem
3225 UNREGISTER      ^tts/LT0$       CFUNCTION GLOBAL unlink modem
3226 ---------------------------------
3227  Thus unless use of a Controller chip modem is anticipated,
3228  either comment out those lines with a leading #
3229  or move $FILE somewhere else, say /root/
3230  to avoid conflict with other modems!!
3231
3232  Inform the devfsd (device file system) daemon of the edit with
3233  # killall -HUP devfsd
3234  See http://linmodems.technion.ac.il/archive-third/msg00869.html
3235
3236 END
3237   fi
3238 fi
3239 echo acpi>$TMPM
3240 echo disabled>>$TMPM
3241 echo APM>>$TMPM
3242 echo apm>>$TMPM
3243 echo " ---- dmesg queries -------" >> $RECORD
3244 dmesg | grep -f $TMPM  >> $RECORD
3245
3246
3247 #   cat /etc/Redhat   displays:  Fedora Core release 1 (Yarrow)
3248 if  grep Fedora $RECORD >/dev/null || [ -n "$FEDORA" ] ; then
3249   if [ "$MAJOR" = "2.4" ] ; then
3250     cat<<END>>$RECORD
3251
3252  For usage of winmodems with the kernel-2.4.nn Fedora releases   a change in the serial-like driver code of WinModems  is necessary.
3253  See for guidance:  http://hepunx.rl.ac.uk/~wmurray/pctel/pctel.html
3254  Basically , the line:
3255      if ((tty->count == 1) && (state->count != 1)) {
3256   should be changed into:
3257      if (atomic_read(&tty->count) == 1 && state->count != 1) {
3258   This works in the ltmodem code too. See
3259      http://linmodems.technion.ac.il/archive-third/msg02360.html
3260   An error about "rs_close" during compiling is a signature that the fedora fix is needed
3261
3262 END
3263   fi
3264   if [ "$MAJOR" = "2.6" ] ; then
3265     cat<<END>>$RECORD
3266
3267   Beginning with Fedora 2  kernel-2.6.6-1.427, kernel-headers needed 
3268   for compiling drivers are provide at: /lib/modules/kernel-version/build/
3269   Thus upgrading above kernel 2.6.5-1.358 to 2.6.6-* is Stongly Recommended
3270   
3271   pppd version 2.4.2 may not be fully compatible with 2.6.8 kernel releases.
3272   If an initial CONNECT is achieved without PPP being subsequently established,
3273   drop back to a 2.4.1 version.  This has worked for PCTEL AMR modem users,
3274   supported by the http://www.smlink.com  slmodem software.
3275   Check pppd version with:
3276     pppd --version
3277   See  http://linmodems.technion.ac.il/archive-fourth/msg03167.html
3278     
3279 END
3280   fi
3281 fi
3282 ### DISTR specific information.
3283 if [ "$DISTR" = "redhat" ] ; then
3284   cat<<END>>$RECORD
3285   
3286  For kernel-version 2.4.20-8 , a failure in utomatic loading of PPP related modules 
3287  has been reported. It was necessary to manually load with:
3288   /sbin/modprobe /lib/modules/2.4.20-8/kernel/drivers/net ppp_generic 
3289   /sbin/modprobe /lib/modules/2.4.20-8/kernel/drivers/net ppp_deflate 
3290   /sbin/modprobe /lib/modules/2.4.20-8/kernel/drivers/net ppp_synctty 
3291   /sbin/modprobe /lib/modules/2.4.20-8/kernel/drivers/net ppp_async 
3292  or dialout efforts failed.
3293   
3294   The Internet Configuration Wizard writes a configuration file:
3295     /etc/wvdial.conf
3296   containing a line default line
3297     Stupid Mode = yes
3298   Better dialup performance may be achieved by commenting out this line as:
3299     # Stupid Mode = yes
3300   Also non-USA Users may need to add to the [Modem0] block:
3301     Init2 = AT+GCI=hexadecimal_country_code
3302   but test without it first.
3303
3304 END
3305 fi
3306 if [ "$DISTR" = "SuSE" ] ; then
3307   cat<<END>>$RECORD
3308
3309   SuSE 9.0 has pre-compiled drivers supporting the following modem chipsets:
3310      Intel HaM and 536ep
3311      Conexant HSF (but not the HCF)
3312      Lucent/AgereSystems ltmodem (Digital Siggnal Processing type)
3313      IBM wmave
3314      Smart Link soft modems
3315   Unfortunately only the  Intel HaM and 536ep are on the  3 CD Personal set, pending an update.
3316   Locations on the 6 CD Professional set are:
3317      CD4/suse/i586/smartlink-softmodem-2.7.9-89.i586.rpm  - the slmodemd daemon
3318      CD3/suse/i586/km_smartlink-softmodem-2.7.9-89.i586.rpm - slmodem driver compiling
3319      CD4/suse/i586/hsfmodem-5.03.27mbsibeta02122600-92.i586.rpm - softmodem configuration
3320      CD4/suse/i586/km_hsfmodem-5.03.27mbsibeta02122600-92.i586.rpm -softmodem driver code
3321         installation report -  http://linmodems.technion.ac.il/archive-fourth/msg00350.html
3322      CD4/suse/i586/ltmodem-8.26a-54.i586.rpm - a patch from SuSE may be needed for function
3323         installation report - http://linmodems.technion.ac.il/archive-fourth/msg00458.html
3324      CD4/suse/i586/Intel-536ep-4.51-200.i586.rpm
3325      CD4/suse/i586/Intel-v92ham-4.51-244.i586.rpm
3326      CD4/suse/i586/mwavem-1.0.4-110.i586.rpm
3327 Some pre-compiled SuSE 9.0 packages for the 2.4.21-99-default kernel are available at:
3328       http://linmodems.technion.ac.il/packages/SuSE-9.0/
3329   including AgereSoftModem and the Intel537 modems
3330
3331   IMPORTANT - The kernel-source-144/README.SuSE informs that the pre-assembled kernel-headers installed
3332   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.
3333   
3334   SuSE 9.1 comes with a SmartLink slamr.ko driver installed,
3335   aiding identification of softmodem codecs by:
3336     dmesg | grep slamr
3337  
3338   For the 9.1 Personal (single CD installation) winmodem packages
3339   have be downloaded from the SuSE 9.1 repository
3340   Should compiling drivers may be necessary,  the following additional packages
3341   will have to be downloaded and installed:
3342         make, glibc-devel, gcc-3.3.3 and kernel-source.
3343   The kernel-headers are co-installed with the kernel-source.
3344   Thus subsequent driver compiling does Not require additional preparations.
3345     
3346 END
3347   
3348 elif [ "$DISTR" = "debian" ] && [ "$Smart" = "may" ] ; then
3349   cat<<END>>$RECORD
3350
3351   There are Debian packages with modem drivers from SmartLink:
3352       sl-modem-daemon - SmartLink software modem daemon
3353       sl-modem-source - SmartLink software modem driver - module building source
3354   MANY modem subSystems serving under AC97/MC97 Controllers are also supported.
3355
3356 END
3357 elif [ "$DISTR" = "knoppix" ] ; then
3358   if [ -n "$DSP" ] || [ -n "$Smart" ] || [ -n "$SMART" ] ; then
3359     cat<<END>>$RECORD
3360   
3361  Packages with precompiled drivers for Lucent/Agere DSP modems
3362  and SmartLink supported soft modes are available in
3363  http://linmodems.technion.ac.il/packages/Knoppix/
3364
3365 END
3366   fi
3367   cat<<END>> $RECORD
3368
3369  The bootable CDs of Knoppix releases 3.4 and 3.6 have boot kernels 2.4.26 and 2.4.27
3370  These CDs are currently Hostile to winmodem installations for at least 3 reasons.
3371  1) The kernels were compiled with gcc-2.95.  While there is provided a /usr/bin/gcc-2.95  
3372  the default ggc found by compilers is set as:      
3373     /usr/bin/gcc --> /usr/bin/gcc-3.3
3374  Thus with casual usage of many winmodem driver packages,
3375  the drivers will be compiled with gcc-3.3 . Such mismatches between
3376  a kernel and driver can cause a system CRASH. 
3377  Thus special effort is required to insure that driver compiles utilize the gcc-2.95
3378  2) Winmodem packages typically try to write drivers to /usr/lib/ 
3379  and installation files to /usr/sbin/ folders.
3380  But these folders are positioned on the ReadOnly CD, and the writes will fail;
3381  3) Since compiled drivers cannot be placed in /lib/modules/, 
3382  they are not perceived by a dependencies reading:
3383     depmod -a
3384  which would enable simple driver loading on demand or with a single:
3385     modprobe Last_Modem_Driver
3386  A Bug Report/offer to help Knoppix with these problems has been filed.
3387  
3388  For Knoppix 3.8.1 the kernel-headers for kernel-version 2.6.11 are defective.
3389  A corrected package is available at
3390      http://www.linuxant.com/driverloader/wlan/full/archive/scripts-knoppix-3.8.1.tar.gz
3391   
3392 END
3393 elif [ "$DISTR" = "mandrake" ] ; then
3394   cat<<END>>$RECORD
3395
3396 In the Mandrake installation disks do not include the dialer utility wvdial.rpm,
3397 then get instructions from http://linmodems.technion.ac.il/archive-fifth/msg01480.html
3398 END
3399 else
3400   echo "  $DISTR is not yet providing pre-compiled drivers for WinModems">>$RECORD
3401   echo >>$RECORD
3402 fi
3403
3404 if ! [ "$BN" = "scanModem" ] ; then
3405   /bin/rm -r ./Modem
3406   exit 0
3407 fi
3408
3409 # Output text files
3410   cat<<END>Modem/1stRead.txt
3411    
3412                 The files in this Modem/ folder have the following roles:
3413
3414 ModemData.txt - Diagnostics and accumulated information cogent to your modem.
3415      If further help is needed, send a description of your problem to:
3416             discuss@linmodems.org 
3417     with ModemData.txt attached as a PLAIN TEXT file.  Do NOT send other files in this folder Modem/
3418     Always send the ENTIRE ModemData.txt,  as It includes subtle diagnostic ouputs needed 
3419     to best guide you. If your PC is a laptop, please provide Make and Model information.
3420     
3421     ModemData.txt with companion files on specific modems/situations may suffice to solve your problems.
3422     It recommends sites for needed software, or additional tests You must perform.
3423     Always use the most recent update of scanModem accessed ONLY at
3424         http://linmodems.technion.ac.il/packages/scanModem.gz 
3425     to produce ModemData.txt
3426     URLs to cogent advice are regularly updated, so your problem may be solved therein.
3427
3428 YourModem.txt has guidance about operating your particular System.
3429 It should NOT be sent to Discuss@linmodems.org
3430
3431 Rational.txt - Motivations of this scanModem package.  
3432
3433 DriverCompiling.txt -  Explains the roles of additional files which may have to be installed
3434    to support compiling of modem drivers, and the steps to take.   
3435              
3436 SoftModem.txt - Information and instructions about "soft modems".
3437      For these modems, additional steps may be necessary for choice of supporting software.
3438      The primary PCI ID is that of the "modem controller", which can support diverse Subsystems.
3439      It is the "modem codec" of the Subsystem which determines the software needed.
3440
3441 Slmodem.txt - The slmodem software from SmartLink supports a variety of soft modems.
3442      However new Users need to be aware of its special port setup features.
3443   
3444 Slmodem-ALSA.txt   About ALSA mode usage for slmodem.
3445 .
3446 ModemTesting.txt SHOULD be read, but  after drivers have been installed.
3447
3448 InfoGeneral.txt has general information about the status of winmodem support under Linux,
3449     Do read it if ModemData.txt  reports that your current modem is not supported under Linux. 
3450   
3451  If you are Linux newcomer, please do locate your local Linux group through:
3452     http://www.linux.org/groups/index.html  .  If you are not comfortable with English,
3453     a local Linux user can often be of substantial assistance in getting you on to the Internet.
3454  
3455 END
3456
3457   cat<<END>>Modem/Rational.txt
3458
3459  This script primarily utilizes the "lspci" utility from the package PCIUTILS.
3460  Various component scriptlets interpret the information captured by lspci.
3461  For many modems, directions to supporting software and/or more detailed information is enabled.
3462  ISA bus modems, 16 bit PCMCIA card modems and USB modems will not be recognized.
3463  See the output files for guidance on these cases.
3464
3465  The script originated as scanPCI written by Chris Hebeisen,
3466  to recognize modems with DSP (digital signal processing) chipsets made by Lucent/AgereSystems.
3467  It now aspires to provide useful information on other modems as well.
3468  For the  Lucent/Agere DSP chip modems, System information is used to recommend Installers,
3469  from the Installer list output from the repository:   http://ltmodem.heby.de/
3470  For other modem chipsets fully identified, URLs to support sites are given.
3471
3472  Three types of information are acquired from your System:
3473  1) General system information necessary for your guidance;
3474  2) The PCI_ID of the modem card, or for the increasingly prevalent "soft modems",
3475   the PCI_IDs of  its AC97/MC97 controller and its modem subsystem.
3476  3) For soft modems, a SIL_ID of the subsystem is either acquired
3477  OR instructions provided for manual agetting it.
3478
3479  The remainder of $0 is a repository of "modem gossip" or URLs thereto.
3480  Only information blocks most relevant to your System will be output into
3481  files written to the Modem/ folder
3482  Should you need assistance after FIRST following all the advice and/or URLs,
3483  1) Browse the general information at:  http://linmodems.technion.ac.il/ 
3484  2) ONLY thereafter send ModemData.txt to:   discuss@linmodems.org
3485  Modem/General.txt  has common information the List need not be bothered with.
3486  3) Also the archive SEARCH ENGINE at  http://linmodems.technion.ac.il/
3487  may be useful once PCI or SIL IDs are acquired.
3488
3489  The scanModem script can be read and word searched with a text browser.
3490  Blocks of Information with little code begin and end with #####.
3491
3492  In case of a failure concerning "lspci", rerun $0 after login to a console with
3493  # su - root
3494  as Root permission may be necessary for access to lspci.
3495
3496  Updated on $UPDATE by  Marv Stodolsk for access through:
3497      http://linmodems.technion.ac.il/packages/scanModem.gz
3498  Please do NOT use a scanModem.gz from any other site!!
3499
3500 END
3501   cat<<END > Modem/InfoGeneral.txt
3502
3503  Do NOT send this  text  with common information to discuss@linmodems.org
3504  There are instructions to UNSUBSCRIBE from discuss@linmodems.org at http://www.linmodems.org
3505  ==============
3506  RATIONAL
3507  This $0 service is sadly  necessary because of the pre-compiled format
3508  (binary, Closed Source)  of some modem supporting code. Intellectual property
3509  is protected within the binary component.  But this prevents compatibility
3510  assessments/debugging against Linux Open Source code. Skipping many details,
3511  the consequence is that some Linux distributions do not deliver Closed Source code,
3512  or tools adequate to fully identify the modem chipset.
3513  This script tries to close  this information gap.
3514
3515   Several sections are included in this file:
3516    The Summary of modem Support under Linux
3517    description of the soft modem identity tests: SIL ids
3518    some output from scanModem specific to your System
3519    an explanation of the GCC 2.95 compiler warning
3520    ethernet Interference with DNS (domain name service)
3521    Please Linux Newbies read carefully, the companion
3522    Modem/DriverCompiling.txt and its
3523      Followup Modem/DriverTesting.txt section  with dialout examples.
3524
3525  USB modems will not be detected through the acm.o driver with port /dev/ttyACM0
3526    UNTIL proper USB support is installed.
3527    See http://www.linux-usb.org/USB-guide/x332.html,
3528    Linux_kernel_source/Documentation/usb/acm.txt, and
3529    http://www.usb.org/developers/devclass_docs/usbcdc11.pdf (page 15)
3530  Among the USB modems with proprietary interfaces, there is support for
3531     Conexant HSF modems are supported by the hsfmodem package at http://www.linuxant.com/drivers
3532          HSF USB with Vendor:Product IDs -  0572:1300  0572:1301  0572:1302  0572:1303  08E3:0111
3533             with updates at         http://www.linuxant.com/drivers/hsf/index.php
3534          HCF Vendor ID: 0572 Product ID: 1290 (Cadmus2 HCF, Conexant) is supported,    
3535              but NOT the Cadmus I types:  http://www.linuxant.com/drivers/hcf/faq.php#25
3536          HCF USB Vendor ID: 05AC Product ID: 8202 (Cadmus2 HCF, for Apple/Mac and not PCs)
3537   SmartUSB56 (ST7554) based modems with ID: 0483:7554  
3538     The SWEEX USB modem has the ST7554 chipset
3539     Drivers are at http://www.smlink.com/main/index1.php?ln=en&main_id=40
3540     http://linmodems.technion.ac.il/archive-fourth/msg00176.html is an installation report.
3541     To write out Smartlink information, use the proxy entry
3542       ./scanModem test 1131:3400
3543
3544  PCMCIA card modems can serve if your laptops modem is not supported under Linux.
3545    http://freewebhosting.hostdepartment.com/g/gromitkc/pcmcia_list.html
3546  The 3COM,Inc 3CXM556 and AgereSystems FM560LK chip modems use the Open Source serial-cs.o driver.
3547
3548 It is the CHIPSET, and Not the modem BrandName which is informative for Linux support.
3549  For modems not recognized by $0, chipset information may be obtained under Microsoft Windows through:
3550  1) Start > Settings > Control Panel > Classical View (for WinXP) > Modem  
3551  or alternatively under Linux
3552 # cat  /proc/asound/mc97*
3553       Try to identify the modem setup file, with name perhaps MODEM.INF
3554  2) Open a COMM console, and send ATI commands to the modem (ATI, ATI1, ATI2, etc)
3555    which may elicit chipset and driver information. Here is an example
3556        ATI3 - Agere SoftModem Version 2.1.22
3557        ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27
3558    successfully identifying an Agere SoftModem chipset, both by name and through
3559    the:softmodem SIL ID:              AC97 ID:SIL REV:0x27
3560
3561  SUPPORT SUMMARY - as of $UPDATE
3562  -------------------------------------
3563  Controller chipsets are used in the most expensive modems and are supported.
3564   They utilize the same driver, serial.o , and most commonly the ports /dev/ttyS0 thru 3.
3565   Such chipsets are produced by 3Com, AgereSystems (the Venus chipset),
3566   Topic Semiconductor Corp., and others. But the same companies may
3567   produce unsupported WinModems. Do not depend on the Brand Name.
3568   Look for an explicit statement of Linux support
3569
3570  AVOID the following modem chipsets:
3571    ESS -       no formal support since 2.2.2 kernels, though there are kluges:
3572       http://andywettstein.home.comcast.net/ess/
3573       http://tx.technion.ac.il/~raindel/
3574    3Com/US Robotics winmodems - never supported under Linux
3575
3576  SmartLink - newer chipsets are supported:   http://www.smlink.com
3577    ftp://ftp.smlink.com/linux/unsupported/
3578    Moreover, the slmodem-2.9.10  drivers will support Many but not all modem Ssubsystems
3579    that serve under AC97/MC97 controllers.
3580
3581  Conexant -  all modems supported with drivers at:  http://www.linuxant.com
3582    Testcode for slow 14,400 mH support is free, BUT
3583    there is a one time charge for the full speed support.
3584
3585  Intel Inc. -  http://developer.intel.com/design/modems/support/drivers.htm
3586    For early releases check at: http://linmodems.technion.ac.il/resources.html
3587     The HaM modem is supported, but code is no longer being updated;
3588       there will likely be failures under emerging 2.6 kernels.
3589     The 536ep and five Intel537 modem chipset variants are actively supported.
3590
3591  Lucent /AgereSystems
3592    The Venus chipset modem uses the serial.o driver and is thus supported.
3593    Modems with digital signal processing (DSP) chipsets are supported:  http:/ltmodem.heby.de
3594    For AC97/MC97 soft modems. Initiate software access through code sponsor IBM:
3595        http://www-3.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52698
3596    Coding of support for has Not yet begun PCI soft modems with PCI_IDs 11c1:048?
3597     and probably will first be available within 2004.
3598
3599  Motorola support is at: http://www.motorola.com/softmodem/sm56_download.htm
3600    through 2.4.22 kernels.
3601
3602  PCTel modem business has been sold to Conexant
3603    Driver compiler resources are at: http://pctelcompdb.sourceforge.net/
3604   However, the pre-compiled binary component is yet to be assembled
3605    with the gcc 3.nn used in newer Linux releases,
3606    so forced (-f) insertions may be necessary:
3607      insmod -f pctel
3608    Some of the HSP soft modems are supported by the SmartLink slmodem-2.9.10 drivers.
3609
3610  Broadcom modems in Dell laptops and PCs - can be made to function under 2.4 kernels, but code has not been updated recently.
3611
3612  --------- end chipset section ----------------------
3613
3614   SUPPORT under the current 2.6.nn kernels.
3615
3616  The more expensive Controller chipset modems are functioning.
3617  SmartLink slmodem-2.9.9 drivers are functioning.
3618  Conexant has 2.6.n support
3619  The Lucent/Agere digital signal processing (DSP) chipsets do have
3620    informal service into 2.6.n kernels and an AgereSystems release is soon expected.
3621  Intel, Agere Systems and Linuxant are firmly expected to continue support into 2.6.nn,
3622    though the Intel HaM software will not be updated to 2.6.n service
3623
3624  ------------------------------------
3625   Preparing winmodem drivers will generally require compiling.
3626   If you are not familar with this process DEFINITELY read carefully
3627   the Modem/DriverCompiling.txt
3628   
3629 END
3630
3631 cat<<END>Modem/DriverCompiling.txt
3632
3633  =======================================================
3634           COMPILING DRIVERS, for Linux Newbies
3635           
3636 Within the workshop there is an instruction set, the Makefile, and a few tools.   You command:
3637         make clean
3638 An elf named "make" comes in, reads Makefile and then cleans up any debris of previous efforts.  
3639 Do ALWAYS command "make clean" as a first step before new driver compilations.
3640 The major work of compiling drivers and any associated tools is commanded with:
3641         make  
3642 or perhaps  
3643        make DriverName
3644 There only remains to command installation of the modem driver(s) and tools with:
3645         make install
3646 Configuration of a dialout utility is done elsewhere, and you can access the Internet.
3647
3648 It is really that simple, once the workshop with tools has been prepared.
3649 But new drivers have to be compiled with every operaing system update.
3650 The remainder of this text is thus aids you in the preparations, dealing with a variety of special cases.
3651 Most  points are covered in much more detail in the Linux Kernel-HOWTO, likely included among the
3652 HOWTO documentation set installed within /usr/share/doc/ folders.
3653
3654 The core operating system of a PC is comprised of a motherboard, the software kernel, 
3655 and its auxilliary code modules.  The kernel is the file  /boot/vmlinuz-$SYS. 
3656 Modules located in subfolders of /lib/modules/$SYS/  .  They can be inserted into or removed 
3657 from the acting kernel upon demand. This provides adaptablity to the diverse 
3658 hardware components of PCs and changing requirments. 
3659
3660 Modem drivers are one type of module.  As contrasted to most Linux software, modem driver codes have
3661 some non-public code components. That is the drivers are not fully Open Source, to protect 
3662 Intellectual Property of the providing companies.   This has a consequence that many Linux distributions
3663 will not or cannot legally  supply proprietary  modem drivers.  Rather the Users must get the 
3664 modem code package and direct  compiling of the code and driver installation.
3665
3666 A complementary resource for compiling is a family of FileNames.h, collectively called kernel-headers.
3667 They are both code bits themselves and also call for other code bits their functioning depends on.
3668 Depending on the Linux distribution, kernel-headers may not be automatically installed.
3669 If not they will always be made available on installation media or some Linux repository.
3670 They can be searched for by package names including:  kernel-source, linux-source, kernel-headers and linux-headers
3671 There are always some kernel-headers in afolder /usr/include/.   But these are an INCOMPLETE, too small collection 
3672 and DO NOT suffice for compiling processes.
3673
3674 In addition some software utilities may have to be installed.  The instructions for compiling are read by make.
3675 A set of compiler tools are installed as a  gcc-SomeVersion package.  After compiling, the various pieces 
3676 and linked dynamically together with "ld". Together wiith some simpler software tools, the ld will 
3677 already be installed on Linux systems.  Systems using the Debian style maintanence system
3678 additionally require a package "kernel-kbuild-3.n" to properly utilize kernel-headers or 2.6.n kernels.
3679
3680 The  "kernel-headers" are matched with an installed kernel, or must be generated from a kernel-source package. 
3681 These are provided in different ways by the various Linux distributions, under 2.6.n kernels:
3682      Redhat and Fedora - installation is coincident with kernel installation, 
3683          with placement of the kernel-header base folder in /lib/modules/$SYS/build/
3684     Mandrake and SuSE/Novell - installation as part of a kernel-source or linux-source  packages,
3685          with location at /usr/src/kernel-headers-$SYS  or /usr/src/linux-$SYS 
3686     Debian and distros using its Package.deb format have names:
3687           kernel-headers-$SYS
3688           linux-headers-$SYS  for Ubuntu
3689           and installation is into  /usr/src/
3690     Others - ???
3691
3692 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.
3693 For RPM using distros, the kernel-source-$SYS or linux-source-$SYS packages must be installed and configured as described below:
3694  1) SuSE with KernelVersion 2.4.21-144-* or later - install the matching kernel-source package, which does also contain the kernel-headers;
3695 2) for Fedora II or later, kernel-headers are/were coinstalled with the kernel package;
3696 3) for all other cases of 2.4.n kernels, the kernel-headers must be prepared from kernel-source.      
3697   The preparation can be summarised in a few steps/actions:
3698   Install a kernel-source package representing your kernel.
3699   Change directory (cd) into its base folder. The kernel-source in general
3700   will match only one of several kernels that could have been installed
3701   and NOT necessarily yours. Thus clean out any remnants of earlier usages with:
3702         make mrproper
3703   Copy in your kernel configuration file and have it read with:
3704         make oldconfig
3705   If necessary edit ONLY the fourth line of the Makefile, which completes
3706   the specification of where drivers will be installed to (details below).
3707   The kernel-headers are then assembelled by either: 
3708   a) for 2.4.nn kernels by
3709         make dep
3710   b) for 2.6.n kernels,
3711         make bzImage
3712 which includes an integral "make dep" step. 
3713
3714 Modem related resources may or may not have been installed during the primary Linux installation,
3715 as WinModem hardware is often NOT recognized.  Search your Distro's package
3716 descriptions for "modem" to reveal the status of related resources.  Read
3717 the package description to determine whether pre-compiled modem drivers were provided.
3718 RESOURCES of a few types are needed to get on line. Do PREFERABLE use your System's
3719 package maintenance system for the installation. This should guarantee that
3720 any DEPENDENT packages will be called into the installation process. As a preliminary
3721 1) Install your distributions package providing the KPPP, WVDIAL and MINICOM dialer utilities.
3722 Dependencies within such packages will also drive the unpacking of ppp related modules
3723 from compressed to a functional form :
3724    module.o.gz --> modules.o
3725 or for 2.6.n kernels
3726    module.ko.gz --> module.ko
3727 In addition these dialers will later aid testing and configuration,
3728 which is to be performed only AFTER, the modem's drivers are installed.
3729
3730 2) Download if necessary and modem driver package specific to your modem hardware.
3731 3a) Install if necessary your distrbution's kernel-source package, necessary for preparing kernel-headers under 2.4.n kernels
3732 Or for Debian style distributions,
3733 3b) install the kernel-header-$SYS.deb package matching your kernel version $SYS.
3734
3735 A KERNEL-SOURCE package must be installed, if a full kernel-header set
3736 is not otherwise provided. Kernel-source packages are now some 30-40 MB now even in compressed form.
3737 The package provided by your Linux Distro SHOULD preferentially be used.
3738 It will usually have some differences from that initially released at http://www.kernel.org .
3739 Typically the installation process will set two symbolic links:
3740   /lib/modules/$SYS/build -->  PATH_to/kernel-source-version/
3741   /usr/src/linux --> PATH_to/kernel-source-version/
3742 These later enable access to the kernel-headers needed during the modem driver compiling. Check with:
3743   ls -l /lib/modules/$SYS/build
3744   ls -l /usr/src/linux
3745 The former link is more usefull for Systems with alternative boot kernels,
3746 and is mandatory for some modem compiler packages.
3747
3748 HIGHLY IMPORTANT: the kernel-source as installed in generally does NOT
3749 represent your current kernel version, EVEN if the kernel-version is the same.
3750 Only one of several possible kernels was installed on your System,
3751 and the unpacked kernel-source need NOT represent it exactly!!!
3752 For example, in the RedHat Distro there is a set of kernel-configuration files within
3753    /usr/src/linux/configs/
3754 Each is specialized for a different CPU (i586, i686, K6, etc),
3755 Yet each will be represented by the VERY SAME version name: "uname -r" .
3756 !!!! Thus a PROPER CONFIGURATION MUST BE DONE by You, before compiling drivers !!!!
3757
3758 Examples provided below are partially customized from your System settings.
3759 CONFIGURATION is started by moving into the kernel-source folder with one of:
3760   cd  /lib/modules/$SYS/build
3761   cd /usr/src/linux
3762 END
3763 if test -f /lib/modules/`uname -r`/build/Makefile ; then
3764   MKFL=/lib/modules/`uname -r`/build/Makefile
3765
3766 elif test -f /usr/src/linux/Makefile ; then
3767   MKFL=/usr/src/linux/Makefile
3768 else
3769  echo Makefile not found>/dev/null
3770 fi
3771 if test -n "$MKFL" ; then
3772   cat<<END>>Modem/DriverCompiling.txt
3773
3774  There is a Makefile on your System at:  $MKFL
3775  with first few lines:
3776
3777 END
3778   grep -A3 -m 2 VERSION $MKFL >>Modem/DriverCompiling.txt
3779   echo>>Modem/DriverCompiling.txt
3780 else
3781   echo " A kernel-source packages is not evident on your System">>Modem/DriverCompiling.txt
3782 fi
3783 cat<<END>>Modem/DriverCompiling.txt
3784 For your current kernel, the fourth line should be
3785    EXTRAVERSION = -$KEXT
3786 where -$KEXT has been read from your current kernel version: $SYS.
3787 But it this does not match what is Actually in the Makefile,
3788 then it represents a Different kernel-header set then that of your kernel!!!
3789
3790 For Mandrake Linux their will generally be an included "mdk", such as:
3791  EXTRAVERSION = -3.1mdk
3792 SuSE 9.0 had:
3793  EXTRAVERSION = -99-default
3794 The first four makefile lines specify that:
3795 a)  the compiled kernel modules/drivers will have encoded version labels such as:
3796    2.4.21-3.1mkd  OR   2.4.21-99-default
3797 b)  such modules including modem drivers are installed into sub-folders of
3798    /lib/modules/2.4.21-3.1mkd/
3799    /lib/modules/2.4.21-99-default/
3800 The major points are that compiled drivers must be both
3801 kernel-release (the 2.4.21) AND EXTRAVERSION matched with the installed kernel.
3802 Otherwise they may be installed uselessly and not be detected by the kernel
3803 OR there will be a failure upon attempted insertion, with message including:
3804   a list of "unresolved symbols ".
3805
3806 Kernel-headers may be resident from a prior usage of the kernel-source/.
3807 Check with:
3808   ls include/linux/
3809 which may display abundant FileNames.h
3810 The version of these headers will be in the UTS line displayed by
3811   cat include/linux/version.h
3812      #define UTS_RELEASE "2.4.21-3.1mdk" (as an example)
3813
3814 Next, list completely the contents of the kernel-source  with:
3815   ls -a
3816 Where the " -a " additionally reveals ".dot-prefixed-confguration-files" such as
3817     .config  .hdepend .depends
3818 which may be left over from the prior usage of the kernel-source. Below is an example:
3819  -------------------
3820     .config  .hdepend .depends
3821 COPYING        Makefile        Rules.make    init    mm
3822 CREDITS        README          arch        drivers  ipc     net
3823 Documentation    conf.vars   fs       kernel  scripts
3824 MAINTAINERS    REPORTING-BUGS  crypto      include  lib
3825
3826 Configuration of the kernel-source is where almost all the Mistakes occur!!!
3827 Here is a way to do it correctly (but read through EXCEPTIONAL CASES below).
3828 1)Within kernel-source/ folder, browse the README file for general guidance.
3829 It will relate that the command:
3830 #    make mrproper
3831 cleans up leftovers from any previous usage .dot-files and the include/linux/ folder.
3832 Additionally you may need to do an edit within Makefile, but ONLY that 4th line.
3833 2) If necessary to edit, FIRST make a backup:
3834   cp Makefile Makefile.backup
3835 then edit ONLY the 4th line of Makefile to match the EXTRAVERSION of $SYS
3836    EXTRAVERSION = -$EXT
3837 NEVER change anything else within the Makefile.
3838
3839 3) Set the dependencies of the current kernel.
3840 For SuSE 9.0 and later, there is a command which does the following steps
3841    #  make cloneconfig && make dep
3842    Also browse the excellent README.SuSE in the kernel-source/ folder
3843 For other Distros, the following steps are necessary, within the kernel-source/ folder
3844   copy the kernel-config file to  .config
3845           and DO SPECIFY that " . "
3846 But where is it? For many Distros, it will be the file like
3847    /boot/config-$SYS
3848 matching the output of:
3849   uname -r
3850 Or it may be the target of a symbolic link:  /boot/config -->
3851 So
3852   cp /boot/config-$SYS .config
3853 For SuSE 8.0 and earlier versions it is:
3854   cp /boot/vmlinuz.config  .config
3855 PLEASE do not omit that "." in  .config as it is crucially necessary.
3856 View .config with a text browser.
3857 It is simply a listing of the code components used in the kernel and its modules:
3858   #
3859   # Automatically generated make config: don't edit
3860   #
3861   CONFIG_X86=y
3862   # CONFIG_SBUS is not set
3863   CONFIG_UID16=y
3864 etc.
3865
3866 4) The  .config file will be read during
3867 #  make oldconfig
3868 which feeds its specifications through a process specifying
3869 the SAME inter-dependencies previously used in compiling your kernel,
3870 and may generate additional .dot-config files . They can be displayed with:
3871 #   ls -al
3872
3873 5) Though it may be redundant after "make mrproper", it will do no harm to:
3874    make clean
3875 5a) For the SuSe Linux versions 8.0 and previous , there will exist files:
3876   /boot/vmlinuz.autoconf.h
3877   /boot/vmlinuz.version.h
3878 They MUST be copied as:
3879   cp /boot/vmlinuz.autoconf.h  /usr/src/linux/include/linux/autoconf.h
3880   cp /boot/vmlinuz.version.h    /usr/src/linux/include/linux/version.h
3881
3882 6) Now build kernel-headers with:
3883         make dep
3884 for 2.4.n kernels or for 2.6.n kernels
3885         make bzImage 
3886 during which you can walk your dog, take a shower, have tea, etc.
3887 7) Check for resultant FileNames.h with:
3888         ls  include/linux/
3889 and
3890         cat include/linux/version.h
3891 to verify the version.
3892
3893 COMPILING the MODEM DRIVERS can now finally be done.
3894 Unpack the compiler kit for your modem drivers,
3895 cd into its folder, read any README or INSTALL files,
3896    make clean
3897 FINALLY, your modem drivers will compiled by a command like
3898    make OR  make ModuleName
3899 or perhaps
3900    make all
3901 During this process, some of the kernel-header code with be joined
3902 with the supplied modem specific code, and ModemDrivers.o will be produced.
3903 Follow and further instructions in the modem code resource
3904 to install the drivers, often with:
3905    make install
3906
3907                 THEORETICAL ISSUES      
3908
3909 WinModem driver packages commonly include:
3910 1) a readible Open Source component, which can be readily debugged by
3911 experts in code. This component provides "wrappers" to common
3912 kernel functions for an already complied, or BINARY format, component of the modem code.
3913
3914 2) A Closed Source component compiled into the binary form, in which
3915 proprietary information is encrypted. This will include the copyrighted Vn.nn compression algorithms.
3916 In 2004, pre-compiled modem drivers are beginning to be included
3917 for a few winmodems by some Linux distributions.
3918 But the binary format precludes incorporation of the modem drivers in some Linux distributions
3919 for legal reasons, practical reasons, and/or reasons of principle.
3920
3921 Since almost all the newer PCs are now equipped with WinModems,
3922 many users will have to compile their own linux modem drivers.
3923 Exceptions are the more expensive modems with Controller chipsets,
3924 characteristic of the earliest modems.
3925 They are supported by Open Source serial code included in Linux
3926 distributions (Distros hereafter).
3927
3928 Winmodems are less expensive because of greatly reduced hardware costs.
3929 They lack Controller chips of the earliest modems, and may additionally lack Digital Signal Processor (DSP) chips of second generation modems.
3930 Functions of Controller based chipsets are replaced by a combination of 
3931 software code and/or other System hardware.
3932
3933 Modems without a controller chip are referred to as "controllerless modems" and
3934 modems lacking both a DSP and controller chips are referred to as "soft modems".
3935 With faster central processor units (CPU), some processing tasks are performed
3936 by the CPU for the controllerless modems. The CPU does nearly all
3937 the signal processing for the "soft modems" lacking a DSP. 
3938
3939 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!! 
3940 and any modem controllers can host one of a variety of soft modem Subsystems.
3941 There are additionally soft PCI modems without such controllers, which still utilize
3942 the common ac97_modem.o driver. In general it will be YOUR task to identify
3943 the Subsystem codec and compile the needed driver.
3944    
3945 ## end Modem/DriverCompiling.txt
3946
3947 END
3948
3949   cat<<END> Modem/Slmodem-ALSA.txt
3950   
3951   The ALSA ( Advanced Linux Sound Architecture)  package includes some modem
3952    drivers which provide low level support  for a few soft modem controllers.
3953    Pulse dialing (ATDP) is Not supported with these ALSA modem drivers however.
3954    
3955     As of this update $UPATE there is support for the following soft modem controller types:
3956       PCI  ID                  controller name/source          low level Module
3957     =======        ===============    ===============
3958     8086:xxxx           several Intel ICH types         snd-intel8x0m
3959     10de:00d9          Nvidia Corp                                        "
3960     1002:434d          ATI                                           snd-atiixp-modem
3961     1106:3068          VIA                                           snd-via82xxx-modem
3962     10b9:5451          ALI 5451                                  snd-ali5451-modem.ko  (in progress)
3963     
3964   To use ALSA modem drivers,  the SmartLink slmodem package   must be compiled 
3965   with an ALSA support option.    The resultant slmodemd daemon provides for 
3966  creation of a port and /dev/pts/N  (N a number) and a symbolic link to it:
3967         /dev/ttySL0 --> /dev/pts/N
3968   The command seqeunce is:
3969                   modprobe Module
3970  with Module being one of the four above
3971                   /usr/bin/slmodem --country=YourCountry  --alsa  hw:1   &
3972   hw is short for hardware port.  hw:0 is typically reserved for the audio card.
3973   The & merely puts the daemon function in the backgound, so that the command prompt is recovered.
3974   The slmodemd shutdown can later be done by:
3975                   fg slmodem
3976                   Ctrl-C
3977  
3978  This service has the additional requirements:
3979  1) The subsystem must be one of those compatible with slmodemd.
3980  Excluded are Conexant Subsystems, which are alternatively supported by the  hsfmodem package from
3981        http://www.linuxant.com/drivers/
3982        
3983   For many other Subsystems, the instructions below on using SmartLink slmodem software 
3984   in ALSA mode is cogent.  Slmodem.txt and Testing.txt complement the information herein. 
3985   
3986 2) The modules must be compiled form  ALSA release of at least 1.0.6a or later version. 
3987 Check your System with
3988 # alsactl --version
3989      alsactl version 1.0.6
3990 on my Debian 2.6.10 System. So more current code would be necessary.  
3991 Should your System be less than 1.06a, follow the instructions here in.
3992 Should a message " error: mixer setup: Off-hook switch not found for card hw:1"
3993 be delivered while dialing, use at least version  1.0.9rc3 .
3994 If later, just skip to the next section.
3995 Download software from http://www.alsa-project.org, The release of May 2006 is 1.08. 
3996 Download both alsa-lib and alsa-driver packages. Make a folder:
3997          mkdir newALSA
3998 Unpack both packages in the newALSA/
3999  Follow the compilation and installation instructions therein, which will 
4000 install the ALSA modules and complementary software.
4001  
4002 3) Compilation of slmodemd with ALSA support requires prior installation of
4003 a package  libasound2-dev, which will be provided by your Linux distrbution.
4004 It has header files needed for the slmodemd compilation.  For for Mandrake/Mandriva,
4005  the package name is  libalsa2-devel .  Use the slmodem-2.9.9d-alsa.tar.gz package
4006  downloaded from  http://linmodems.technion.ac.il/packages/smartlink/
4007  Also download the ungrab-winmodem.tar.gz which will be necessary for some Systems,
4008  providing an upgrab-winmodem.ko modules.  See  http://linmodems.technion.ac.il/slmodem-serial.html
4009
4010 4) Login to a console as;
4011 # su - root
4012 Shift into the slmodem-2.9.9d-alsa folder. Look at contents:
4013 # ls 
4014          COPYING  Changes  Makefile  README  drivers  modem  patches  scripts
4015 Clean up any old remnants with:
4016 #  make clean
4017 The slmodemd will be compiled by make:
4018 # make
4019 and installed to   /usr/bin/slmodemd by:
4020 #  make install
4021  
4022 An initial check for functionality is:
4023          modprobe Module
4024 with Module being the appropriate ALSA modem driver.
4025 Should there be a failure, with message "grabbed by serial driver", First
4026         modprobe ungrab-winmodem
4027 before
4028         modprobe Module
4029         
4030 Start the daemon with one of:
4031          slmodem --country=YourCountry --alsa  hw:1   &
4032          slmodem --country=YourCountry --alsa  modem:0   &
4033          slmodem --country=YourCountry --alsa  modem:1   &
4034 When Module is  snd-atiixp-modem  , instead use
4035          slmodem --country=YourCountry --alsa  modem:0   &
4036          
4037  Subsequently follow the details in Slmodem.txt  and Testing.txt
4038  
4039 END
4040
4041 cat<<END>Modem/Testing.txt
4042                         MODEM TESTING
4043                          
4044 This text is complemented by the Post-Install at http://linmodems.technion.ac.il
4045 Please so consult it if the following does not suffice.
4046
4047 The wvdial package provides for an automated hardware+driver test.
4048 This utility searches through ports with syntax: /dev/ttyS*  (i.e. S0, S1, SL0 etc.)
4049 and also follows a symbolic link:
4050         /dev/modem --> /dev/ModemPort
4051 If your modem port name does not satisfy these requirements already,
4052 do a console login as:
4053         su - root
4054 Make the symbolic links as:     
4055         ln -sf /dev/ModemPort /dev/modem
4056         ln -sf /dev/ModemPort /dev/ttyS15
4057 wherein /dev/ttyS15 is reserved for experimental usage.
4058  Should there be problems with wvdial version 1.54.1-1 , drop back to 1.54.0-1 
4059
4060 For recent RedHat and Fedora releases, wvdialconf is used by the Internet Wizard.
4061 Within the pop-up menus find the Wizard. Its actions will write a configuration file:
4062         /etc/wvdial.conf
4063 For other Linux distros, open a console and login with
4064         su - root
4065 If necessary load the modem drivers:
4066         modprobe DriverNames
4067 Then run the test:
4068         wvdialconf /etc/wvdial.conf
4069 Checks /dev/modem and ports /dev/ttyS*, a success at port /dev/ttySLT0 would be:
4070   ttySLT0<*1>: ATQ0 V1 E1 -- OK
4071   ttySLT0<*1>: ATQ0 V1 E1 Z -- OK
4072   ttySLT0<*1>: ATQ0 V1 E1 S0=0 -- OK
4073   ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
4074   ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
4075   ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK 
4076     etc.
4077 The /etc/wvdial.conf written looks like:
4078  
4079  [Dialer Defaults]
4080 Modem = /dev/ttySLT0
4081 Baud = 115200
4082 Init1 = ATZ
4083 Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
4084 ISDN = 0
4085 Modem Type = Analog Modem
4086 ; Phone = <Target Phone Number>
4087 ; Username = <Your Login Name>
4088 ; Password = <Your Password>
4089
4090 For systems using the SmartLink slmodem drivers,
4091 the following line should be added to its /etc/wvdial.conf
4092   Carrier Check = no
4093 So after editing in your personal information a functional file is like:
4094  
4095  [Dialer Defaults]
4096 Modem = /dev/ttySLT0
4097 Baud = 115200
4098 Init1 = ATZ
4099 Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
4100 # if there is problem with dial tone acquisition, add into the above line:
4101 #    X3
4102 #        meaning "dial without waiting"
4103 ISDN = 0
4104 Modem Type = Analog Modem
4105 Phone = DialupPhoneNumber
4106 Username = Your_Login_Name
4107 # for MSN.net, use instead
4108 #  Username = MSN/Your_Login_Name   
4109 Password = Your_Password
4110 # if usging the SmartLink slmodem drivers, uncomment:
4111 #  Carrier Check = no
4112
4113 The lines above beginning with " # " are Comments not read as code.
4114 Remove the " # " to activate a line.  Then try getting on line with:
4115 # wvdial
4116  
4117 The /etc/wvdial.conf generated by the RedHat/Fedora Internet Wizard 
4118 has a different format, adapted to its own dialer.  This includes a line
4119         Stupid Mode = yes
4120 More informative dialup feedback May be obtained if it is commented out:
4121 #       Stupid Mode = yes 
4122
4123  A dialout with wvdial will then display like:
4124 # wvdial &
4125 --> WvDial: Internet dialer version 1.53
4126 --> Initializing modem.
4127 --> Sending: ATZ
4128 ATZ
4129 OK
4130 --> Sending: ATQ0 V1 E1 M1 S0=0 &C1 &D2 +FCLASS=0
4131 ATQ0 V1 E1 M1 S0=0 &C1 &D2 +FCLASS=0
4132 OK
4133 --> Modem initialized.
4134 --> Sending: ATDT3019178111
4135 --> Waiting for carrier.
4136 ATDT3019178111
4137 CONNECT 53333 V42bis
4138 --> Carrier detected.  Waiting for prompt.
4139 ** APX1.LNH.MD.RCN.NET Terminal Server **
4140 Login:
4141 --> Looks like a login prompt.
4142 --> Sending: LoginName
4143 LoginName
4144 Password:
4145 --> Looks like a password prompt.
4146 --> Sending: (password)
4147     Entering PPP Session.
4148     IP address is 66.44.1.6
4149     MTU is 1006.
4150 --> Looks like a welcome message.
4151 --> Starting pppd at Sat Jul 26 13:59:03 2003
4152 --> pid of pppd: 2404
4153 : pppd 2.4.1 started by root, uid 0
4154 : Using interface ppp0
4155 : Connect: ppp0 <--> /dev/tts/LT0
4156 Jul 26 13:59:08 stodolsklap kernel: PPP BSD Compression module registered
4157 Jul 26 13:59:08 stodolsklap kernel: PPP Deflate Compression module registered
4158 : local  IP address 66.44.1.6
4159 : remote IP address 208.59.89.132
4160 : primary   DNS address 207.172.3.8
4161
4162 The & in "wvdial &" puts the process into the background, 
4163 allowing further usage of the command prompt.  To stop a backgrounded process:
4164 # fg wvdial
4165 # Ctrl -C 
4166
4167 TROUBLE SHOOTING
4168
4169 Check for modem driver loading.
4170 Do FIRST read INSTRUCTIONS files provided with the modem driver resource.
4171 Some may have installed to /usr/share/doc/Modem_or_Driver_Name/
4172 For RPM using distros, documentation files will be listed through
4173    rpm -q -d packageName (less the version part, sometimes)
4174 and all directly installed files can be listed by
4175    rpm -q -l packageName
4176 Depending upon your installation, the modem drivers may/may_not be autoloaded.
4177 Login as Root in a console with:
4178 # su - root
4179 # lsmod
4180 If the modem drivers are not already loaded onto the kernel, insert them with command
4181 # modprobe ModuleDriver
4182 If there are multiple drivers such as the lt_modem.o and lt_serial.o pair,
4183 commanding the serial like driver:
4184 # modprobe lt_serial
4185 should autoload all modules it depends on.  Check with:
4186 # lsmod 
4187 This proceeds through a reading of dependency files
4188 written to /lib/modules/$SYS/ during boot up through the "depmod -a" command.
4189 In constrast
4190 # insmod lt_serial
4191 would only attempt loading of that single driver and will FAIL, if its dependency on
4192 lt_modem.o has been satisfied by prior lt_modem.o insertion.
4193  
4194  Do read "man wvdial" and /usr/share/doc/vwdial  documentation
4195 sometime browse the documentation that is written to /usr/share/doc/wvdial/
4196 Therein are instructions for setting up alternative dialouts.
4197
4198 %%% This wvdialconf action if successful generates the files:
4199  /etc/ppp/peers/wvdial
4200  /etc/ppp/peers/wvdial-pipe
4201 in addition to the /etc/wvdial.conf
4202
4203 Many Users prefer to use the dialout utility KPPP. This is fine.
4204 But each User MUST run the configuration process separately.
4205 In principle, different Users on the same Linux System could
4206 have different Internet providers and/or use different modems.
4207 The configuration process generates a file:  /home/UserFolder/.kde/share/config/kppprc
4208 Therein, non-standard modem port names can be entered, such as:
4209       [Modem]                 
4210       Device=/dev/ttySHSF0
4211  for the Conexant hsfmodem port.  
4212  
4213
4214 Preparation for  dialout if other COMM modes are active.
4215 ---------------------------------------------------------------------------
4216 Concurrent ethernet capability will compete for
4217 the Domain Name Service (DNS) needed for browser naviagation. So as root:
4218 # /sbin/ifconfig eth0 down
4219 before starting a dialout!
4220 With a Mandrake installation, it will be necessary to:
4221 # /etc/init.d/network stop
4222
4223 Internet clients such as Netscape, Mozilla, Explorer etc.
4224 should be CLOSED during your first dial out trials.
4225 Should a URL on the Internet be specifed as the default URL/connect,
4226 then the Client may compete with ppp for connectivity functions.
4227 After PPP functionality has been verified, the effects of opened
4228 or launched browsers can be checked
4229
4230 If you have installed the DIALD (dial on demand) package, stop it for initial tests:
4231 # /etc/init.d/diald stop
4232 Otherwise diald function will be initiated with modem usage,
4233 and could compilate issues. Test diald only after ppp by itself is fine.
4234
4235 If your internet provider assigns DNS dynamically then add to /etc/ppp/options:
4236  usepeerdns
4237
4238 To analyze a dialout attempt, it is useful to display kernel messages with:
4239 # tail -f /var/log/messages &
4240 The & puts the commanded process in the "background" allowing recovery of the command prompt.
4241
4242 Some dialer packages (kppp etc) may automate the above steps.
4243
4244
4245 Note that for some Linux distributions (Mandrake for one),
4246 maintain modules in compressed module.gz format, if modem service was not specified
4247 during the Linux installation. A subsequent installation of any dialer package:
4248   wvdial - PPP dialer with built-in intelligence.
4249   kppp - PPP dialer for KDE
4250   dtmfdial - A DTMF Tone Dialer
4251   gkdial - Gtk-based PPP dial-up configuration tool.
4252   gkdial-gnome - GNOME-based PPP dial-up configuration tool.
4253   masqdialer - daemon for remote control of masqueraded dialup links
4254   pppconfig - Debian configuration toolset with command: pppconf
4255 will stimulate unpacking of ppp related modules during bootup.
4256
4257 The cogent ppp related modules loaded during such a CONNECT are displayed within the output from:
4258 # lsmod
4259 ppp_deflate             3512   1  (autoclean)
4260 zlib_inflate           18980   0  (autoclean) [ppp_deflate]
4261 zlib_deflate           18648   0  (autoclean) [ppp_deflate]
4262 bsd_comp                4440   0  (autoclean)
4263 ppp_async               7744   1  (autoclean)
4264 ppp_generic            16380   3  (autoclean) [ppp_deflate bsd_comp ppp_async]
4265 slhc                    5264   1  (autoclean) [ppp_generic
4266
4267 For ealier 2.4.nn kernels, loading of these modules may require the following lines within
4268   /etc/module.conf :
4269 ### automate ppp modules loading ###
4270 alias /dev/ppp          ppp_generic
4271 alias char-major-108    ppp_generic
4272 alias tty-ldisc-3       ppp_async
4273 alias tty-ldisc-14      ppp_synctty
4274 alias ppp-compress-21   bsd_comp
4275 alias ppp-compress-24   ppp_deflate
4276 alias ppp-compress-26   ppp_deflate
4277 ### end ppp block ####
4278 For more recent kernels with their modutils,
4279 these lines are no longer needed.
4280
4281 For  potential causes of a NO DIALTONE failure, read the Post-install.html
4282 at  http://linmodems.technion.ac.il/  Not setting the Country Code may be
4283 and additional problem.
4284
4285  COUNTRY CODE Issues
4286  ====================
4287  The modem which you purchase locally or abroad may not be preset
4288  with the proper Country Code setting.  An incorrect setting can
4289  hinder acquisition of dial tone.
4290  Inclusion of an X3 (dial without wainting) in the modem Init string
4291  of under wvdial, including in /etc/wvdial.conf a line
4292    Stupid Mode = yes
4293
4294  Dialtone recognition depends on the setting of country
4295  and/or local phone line equipment.
4296
4297  To properly get dialtone for your country phone experiment use
4298  AT+GCI=xx  where xx is country code in hexidecimal format.
4299  Theoretically there could be 256 different countries but
4300  not all are valid. Tables in manuals are way off date,
4301  you have to write a small script to try all combinations
4302  for yourself if you can't guess by chance.
4303
4304  After country select you can check textual name of the country it represents.
4305  For example:
4306    at+gci=00
4307    OK
4308    ati9
4309    Japan
4310
4311  If you can't find exact country, choose the nearest one available.
4312  Nearby countries tend to have similar equipment and compatible dialtones.
4313
4314  These comments from:   Emard <emard@softhome.net>
4315  =================
4316
4317 8) After a successful CONNECT, the Domain Name Service (DNS) needed
4318  for Browser navigation can be checked with:
4319 # ping corel.com
4320 PING corel.com (206.47.20.85): 56 data bytes
4321 64 bytes from 206.47.20.85: icmp_seq=0 ttl=52 time=209.1 ms
4322 64 bytes from 206.47.20.85: icmp_seq=1 ttl=52 time=189.9 ms
4323 64 bytes from 206.47.20.85: icmp_seq=2 ttl=52 time=180.0 ms
4324 64 bytes from 206.47.20.85: icmp_seq=3 ttl=52 time=179.9 ms
4325 # Ctrl-C
4326      aborts ping
4327 --- corel.com ping statistics ---
4328 4 packets transmitted, 4 packets received, 0% packet loss
4329 round-trip min/avg/max = 179.9/189.7/209.1 ms
4330
4331 # ping 206.47.20.85
4332 PING 206.47.20.85 (206.47.20.85): 56 data bytes
4333 64 bytes from 206.47.20.85: icmp_seq=0 ttl=52 time=179.8 ms
4334 64 bytes from 206.47.20.85: icmp_seq=1 ttl=52 time=190.0 ms
4335 64 bytes from 206.47.20.85: icmp_seq=2 ttl=52 time=170.0 ms
4336 # Ctrl-C
4337      aborts ping
4338
4339 Should there be a success with:
4340 # ping 206.47.20.85
4341 BUT a failure with the named address:
4342 ping corel.com
4343 Then DNS has not been acquired.
4344 Note that failure to stop ethernet service
4345 # /sbin/ifconfig eth0 down
4346 before starting a dialout, will commonly block DNS under ppp.
4347
4348 To terminate the wvdial session, bring the action to the foreground (fg):
4349 # fg wvdial
4350   Ctrl-C    to terminate:
4351 wvdial
4352 Caught signal #2!  Attempting to exit gracefully...
4353 : secondary DNS address 207.172.3.9
4354 : Terminating on signal 15.
4355 : Connection terminated.
4356 : Connect time 7.8 minutes.
4357 --> Disconnecting at Sat Jul 26 14:06:53 2003
4358
4359 The Debian distribution provides a utility:
4360 # pppconfig
4361 for setting up a chatscript for ppp initiation.
4362 Most dialers do use chatscripts and will produce similar records.
4363 Below is the record of a dial out initiated by:
4364
4365 # pon
4366 : pppd 2.4.1 started by marv, uid 1000
4367 : abort on (BUSY)
4368 : abort on (NO CARRIER)
4369 : abort on (VOICE)
4370 : abort on (NO DIALTONE)
4371 : abort on (NO DIAL TONE)
4372 : abort on (NO ANSWER)
4373 : abort on (DELAYED)
4374 : send (ATZ^M)
4375 : expect (OK)
4376 : ATZ^M^M
4377 : OK
4378 :  -- got it
4379 : send (ATQ0V1E1M0S0=0W2&C1&D2+FCLASS=0^M)
4380 : expect (OK)
4381 : ^M
4382 : ATQ0V1E1M0S0=0W2&C1&D2+FCLASS=0^M^M
4383 : OK
4384 :  -- got it
4385 : send (ATDT3019178111^M)
4386 : expect (CONNECT)
4387 : ^M
4388 : ATDT3019178111^M^M
4389 : CONNECT
4390 :  -- got it
4391 : send (\d)
4392 : Serial connection established.
4393 : Using interface ppp0
4394 : Connect: ppp0 <--> /dev/modem
4395 : kernel does not support PPP filtering
4396 Jul 26 14:08:39 stodolsklap kernel: PPP BSD Compression module registered
4397 Jul 26 14:08:39 stodolsklap kernel: PPP Deflate Compression module registered
4398 : local  IP address 66.44.1.195
4399 : remote IP address 208.59.89.132
4400 : primary   DNS address 207.172.3.8
4401
4402 Once your first CONNECT has been established, than in the future if should suffice
4403 just to use your dialer of choice: wvdial , kppp  .gnomeppp or whatever.
4404
4405 Good surfing to you.
4406
4407 10) GENERAL ITEMS
4408
4409  If attemped insertion of a modem driver evokes a complaint like:
4410          unresolved symbol do_SAK_R9a0bcb74
4411  then the kernel-headers using in compiling the modem drivers
4412  do not match those of your current kernel whose KernelVersion is displayed by:
4413     uname -r
4414  and whose kernel config file is often located at /boot/config-KernelVersion
4415  The section above "COMPILING DRIVERS, for Newbies" relates how to make corrections.
4416
4417  There are definitely IPs whose login protocols are Linux hostile.
4418  If you cannot achieve a login, try another Internet Provider (IP).
4419  or ask for someone on discuss@linmodems.org to test your IP.
4420
4421  Many driver packages provide for loading modem drivers on bootup.
4422  Here is a description on how to set it up, if necessary:
4423    http://linmodems.technion.ac.il/archive-fourth/msg00451.html
4424
4425  PLEASE include the diagnostic output of the following Root command in any problem reports:
4426  # setserial -agv /dev/ttyS*
4427
4428  For instructions on having modem drivers loaded on bootup,
4429    particularly the SmartLink slmodem drivers see:
4430    http://linmodems.technion.ac.il/archive-fourth/msg00451.html
4431  For automated removel of drivers after a PPP session see:
4432    http://linmodems.technion.ac.il/archive-fourth/msg00145.html
4433
4434   For general upto date advice:
4435     http://linmodems.technion.ac.il/
4436     http://linmodems.technion.ac.il/resources.html
4437     available in Russian at  http://linmodems.nm.ru
4438  for a general PCI_ID database
4439     http://www.pcidatabase.com/
4440  the original Linux winmodems URL is:
4441     http://linmodems.org
4442  with a mailing list on Winmodems:
4443     discuss@linmodems.org
4444  whose archives can be searched at:
4445     http://linmodems.technion.ac.il/ (near bottom of the page)
4446  There is an extensive modem database at:
4447     http://start.at/modem/
4448  Locate your local Linux groups through:
4449     http://www.linux.org/groups/index.html
4450  USB modem information:  http://www.linux-usb.org/USB-guide/x332.html
4451  Laptop users should browse http://tuxmobil.org/modem_linux_add1.html
4452  For debugging ppp:
4453    http://www.cisco.com/warp/public/471/debug_ppp_negotiation.html
4454
4455 ---------- end FOLLOW UP STEPS ---------------
4456
4457 END
4458
4459         cat<<END>Modem/Slmodem.txt
4460                SLMODEM PACKAGE USAGES and TESTING
4461
4462 Summary
4463 -----------------              
4464 SmartLink (SML hereafter, http://www.smlink.com) produces chipsets for PCI card and USB modems
4465 which are incorporated into a variety of BrandName modems.  The complementary  slmodem software supports these modems, and Very Beneficially, a variety of soft modems with Subsystems 
4466 from other chipset manufacturers.  The installed software has components:
4467         /usr/bin/slmodemd  - a daemon that  provides most services, including dynamic port creation.
4468         /dev/slamrN  and /dev/slusbN  (N = 0,1,2 or 3) are proxy devices used by 
4469                 slmodemd in port creation  for PCI and USB modems respectively.  The true port is of type 
4470                 /dev/pts/N  , N a number,  with a symbolic link to it also created:
4471                       /dev/ttySL0 --> /dev/pts/N
4472         slusb.ko - driver for the USB modems
4473         slamr.ko -  a low level driver which accesses the port, 
4474                There are subsititutes for slamr.ko within the Open Source ALSA package
4475                (snd-intel8x0m.ko , snd-via82xx-modem.ko  or   snd-atiixp-modem.ko ) working with most
4476                modem hardware, and provided that slmodemd was compiled with ALSA (Advanced
4477                Linux Sound Architecture) support. (See the companion Slmodem-ALSA.txt)
4478         the code folder  slmodem-2.9.n/scripts/  contains scripts which can provide  bootup automation
4479 Details follow.
4480
4481   Slmodem support
4482    -------------------------------
4483  The software features support for :
4484       FAXing, though not the AT&F command; 
4485       SMP (Symmetric MultiProcessor) mother boards;
4486       64 bit AMD x86_64 processor mother boards, see
4487         http://linmodems.technion.ac.il/archive-fourth/msg02594.html;
4488       the SmartUSB56 (ST7554) chipset with vendor/product usb ids  0483:7554, 
4489           see report at  http://linmodems.technion.ac.il/archive-fourth/msg03609.htm
4490  A few modem hardware types are supported:
4491       the USB modems ;
4492       several BrandName modems, for which the primary PCI suffices for chipset identification; 
4493       many soft modems, for which a "mc97 codec" as well as PCI ID must be acquired, 
4494           as described in the companion SoftModem.txt and below.
4495 Software download sites are:
4496     SML -  http://www.smlink.com for slmodem-2.9.10.tar.gz, with license to support only SML 
4497         chipset modems.  The slmodem package maintainer is Sasha Khapyorsky.  His quick fixes are at:
4498    http://linmodems.technion.ac.il/packages/smartlink/   Currently cogent packages are:
4499            ungrab-winmodem.tar.gz  - necessary for some Systems which falsely presume that
4500                  the modem is a serial port modem type.  See  http://linmodems.technion.ac.il/slmodem-serial.html
4501            slmodem-2.9.9d.tar.gz - providing compiling resources for slmodemd, slamr.ko and slusb.ko
4502            slmodem-2.9.9d-alsa.tar.gz - providing for compilation of slmodemd  with ALSA support, 
4503                 so that the ALSA driver alternates described can be utilized.
4504            This  2.9.9x version software is licensed for use with any compatible softmodem.   
4505
4506 The slamr diagnostic
4507 -----------------------------
4508 If you have just downloaded the slamr.ko driver matching your kernel, 
4509 just move into the folder with slamr.ko  and
4510 # insmod  slamr.ko 
4511  will generate a warning about "Tainted kernel", and perhaps about non-SmartLink chips.
4512  So long as the driver loads, just ignore them. Read related kernel messages with
4513 # dmesg | grep slamr
4514 The output should include a line like:
4515       slamr: mc97 codec is CodecName
4516   wherein the CodecName is needed to choose the correct software
4517   
4518 Should the be an output like like:
4519 ---------------
4520 slamr: unsupported module, tainting kernel.
4521 slamr: module license 'Smart Link Ltd.' taints kernel.
4522 slamr: SmartLink AMRMO modem.
4523 slamr: device 10b9:5457 is grabbed by driver serial
4524 ------------
4525 The "grabbed by driver serial" indicates a compensating driver is needed.
4526 Use the ungrab-winmodem.tar.gz resource to compile the ungrab-winmodem.ko
4527 After installation, first do
4528 # modprobe ungrab-winmodem
4529 before
4530 # modprobe slamr
4531 # dmesg | grep slamr
4532
4533
4534  A slamr.ko driver may already be installed (SuSE/Novell Linux).  Please run the following test sequence:
4535  # su - root
4536  # modprobe -r slamr
4537  Ignore any warning message
4538  # modprobe slamr
4539 Then same as above. Get the CodecName and send the information to Discuss@linmodems.org
4540  Explanation and details follow  below.
4541
4542   Special cases:
4543   ---------------------------   
4544  For BCM64/Broadcom and ATI softmodem support, only the slmodem-2.9.9d-alsa.tar.gz can serve. 
4545  Within the Modem/ folder output by scanModem, browse Slmodem.txt, Slmodem-ALSA.txt and Testing.txt
4546  There have been a few reports of problems being solved by using Bootup options:
4547               noapci and/or apci=off
4548  thus dropping back to the APM power management mode.
4549  Solution of a CONNECT problem has been achieved by specifying a slower V32 modulation 
4550        see  http://linmodems.technion.ac.il/archive-fifth/msg00137.html
4551
4552   General installation:
4553   -----------------------------
4554   If your Linux distribution provides a slmodem package, the package manager will typically
4555   install it to  /usr/src/moduels/slmodem-2.9.N   .  But it downloaded as a slmodem-2.9.N.tar.gz,
4556   if could be unpacked in a folder of your choice.  The following directions assume installation to:
4557          /usr/src/moduels/slmodem-2.9.N
4558  Do  a Root login into a command console:
4559  #  su -  root
4560  # cd   /usr/src/moduels/slmodem-2.9.N
4561  Look at contents:
4562  # ls
4563    COPYING  Changes  Makefile  README  drivers  modem  patches  scripts
4564    
4565  For Debian related Distros there is an sl-modem-daemon.deb package providing
4566  slmodemd and initializaton scripts.  A separate  sl-modem-source.deb packages
4567  houses the slamr and slusb driver code.  It is installed as:
4568     /usr/src/sl-modem.tar.bz2
4569  Unpack by
4570   #  cd /usr/src/
4571   #  tar jxf sl-modem.tar.bz2
4572   which opens into:
4573     /usr/src/modules/sl-modem/
4574   Move in with:
4575   # cd /usr/src/modules/sl-modem/drivers
4576   for subsequent steps.
4577   
4578   The routine compiling steps are:
4579   # make clean
4580   # make
4581   # make install 
4582 A detaile example is  http://linmodems.technion.ac.il/archive-fourth/msg00176.html
4583           
4584   Also install the wvdial package if your Distro provides it.
4585   The wvdialconf provides a first simple test of Hardware + Software functionality.
4586   
4587  Afterward a test can be performed:
4588  # modprobe slamr
4589  See a resulting the kernel report with:
4590  # dmesg | grep slamr
4591  which may contain a line:
4592    slamr:  mc97 codec is CodecName
4593  with CodecName being a variable diagnostic output.
4594  There are 4 cases:
4595   a) codec is SILnm , with n,m numbers
4596     there are good prospects for the modem being supported by the slmodem resources.
4597   b) codec is INT65
4598    The Intel_secure-537AA-CurrentVersion should serve, 
4599    with slmodem support an alternative for compatible modem controllers.
4600   c) codec is CXTnm
4601     the softmodem is a Conexant type.  
4602     ONLY hsfmodem drivers from http://www.linuxant.com can be utilized.
4603     Do remove the slmodem installation first with:
4604       # make uninstall
4605     before proceeding further.
4606   d) codec is BCM64
4607     the soft modem has a Broadcom codec and the slmodem-2.9.9d-alsa MUST be used.
4608     See http://oboc.ucdavis.edu/Marik/inspiron/ 
4609     But readon first for general information
4610     
4611
4612 Testing
4613 -------------------------------------------         
4614 To being testing , Watch your kernel messages with:
4615 # tail -f /var/log/messages  &
4616 The "&" just  backgrounds the process, or else the command prompt is lost.
4617 The low level interface driver is loaded with:
4618 # modprobe  Module
4619 Then
4620 # slmodemd --help
4621 just to see what it provides.  
4622
4623 Check for support
4624  of your country with:
4625 # slmodemd --countrylist
4626 The default is USA.
4627 # slmodemd --countrylist &> CL.txt
4628 will write the list to CL.txt if desirable.
4629 Use your own COUNTRY from the second column for the port creations command:
4630
4631 Simple usage
4632 -------------------------
4633 It may be necessary to
4634 # modprobe upgrab-winmodem 
4635 before inserting the low level driver:
4636 # modprobe Module
4637 where Module is:
4638         slamr  for PCI card modems OR
4639         slusb  for a USB modem 
4640         one of the ALSA drivers mentioned above
4641 Start the deamon with corresponding:
4642 # slmodemd -a --c YourCountry  /dev/slamr0   &
4643 for the PCI card modems
4644 # slmodemd -a --c YourCountry  /dev/slusb0   &
4645 for the USB modes
4646 # slmodemd -a --c YourCountry  hw:1  &
4647 when using an ALSA driver, except for the ATI modems use:
4648 # slmodemd -c YourCountry modem:0   &
4649
4650 These commands will creat the real port  /dev/pts/N and a symbolic link
4651     /dev/ttySL0 -->  /dev/pts/N
4652 and provide higher level functions of the slmodem code
4653 The first functionality test is:
4654 # vwdialconf  wvdialtest.txt
4655 if the modem is thus found prospects are good for success.
4656
4657 1) For Redhat and Fedora, use the Internet Wizard within the popup menus to 
4658 configure a dialout,  A file /etc/wvdial.conf will be created. 
4659
4660 2) For other Linux distros do:
4661 # wvdialconf /etc/wvdial.conf
4662 Edit three lines of your personal information into /etc/wvdial.conf,
4663 replacing the  <text>,    including the < >
4664
4665 In both cases add to  /etc/wvdial.conf  a line needed by slmodemd
4666   Carrier Check = no
4667 Using other dialer utilties (such as KPPP) is OK, and they will not need the:
4668      Carrier Check = no
4669      
4670  However should a "No carrier" message be returned during a dialout attempt see:
4671      http://linmodems.technion.ac.il/archive-fifth/msg00552.html
4672
4673 Then try a dialout, with:
4674 # wvdial & 
4675
4676  The discretionary " & " just allows recovery of the command prompt.
4677  To stop a command thus started:
4678  # fg wvdial
4679  puts the process in the foreground, so it can be stopped with
4680  # Ctrl-C
4681  
4682  Preferably use wvdial for testing if your distribution provides it. Otherwise use Minicom.
4683  If there is a failure to acquire a dial tone, add an X3 in the /etc/wvdial.conf line like:
4684    Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
4685  to:
4686    Init2 = ATQ0 X3 V1 E1 S0=0 &C1 &D2 +FCLASS=0
4687  For dialers using a chatscript, the edit would be like:
4688    ATQ0X3V1E1S0=0&C1&D2+FCLASS=0
4689   
4690   Read Modem/Testing.txt for further testing guidance,
4691   and Modem/Slmodem-ALSA.txt  for details on ALSA mode.
4692  If success has been achieved using the slamr driver, after a while
4693  it is worth also testing the slmodem-2.9.9d-alsa or later  resource .
4694    but do fully UNINSTALL slmodem-2.9.n first!!!
4695  Only the slmodemd for creating ports is provided in ALSA mode
4696   The complementing Open Source ALSA
4697  drivers comes with kernel-image packages.
4698  
4699  For the slamr and usb drivers the proxy ports can be displayed with:
4700   # ls -l /dev/sl*
4701 crw-------  1 root root 212, 0 Apr 29  2004 /dev/slamr0
4702 crw-------  1 root root 212, 1 Apr 29  2004 /dev/slamr1
4703 crw-------  1 root root 212, 2 Apr 29  2004 /dev/slamr2
4704 crw-------  1 root root 212, 3 Apr 29  2004 /dev/slamr3
4705 crw-------  1 root root 213, 0 Apr 29  2004 /dev/slusb0
4706 crw-------  1 root root 213, 1 Apr 29  2004 /dev/slusb1
4707 crw-------  1 root root 213, 2 Apr 29  2004 /dev/slusb2
4708 crw-------  1 root root 213, 3 Apr 29  2004 /dev/slusb3
4709   If your System is using the udev file system for devices. A proxy report 
4710 will NOT be present until the driver is inserted:
4711 # modprobe slamr
4712 OR
4713 # modprobe slusb  
4714
4715  The slmodem packages way contain a scripts/ folder , with scripts for
4716  automating driver loading and port creation upon bootup. For some Systems, 
4717  it has proven beneficial to cause a pause after driver loading by inserts
4718         sleep 1 (or maybe 2 or 3 if necessary)
4719  before the line:
4720         echo -n "Starting SmartLink Modem driver for: $SLMODEMD_DEVICE"
4721  Without the pause, the driver diagnositics may not complete 
4722  before the following step is attempted, with a resultant failure.
4723  
4724  Call back support is implemented in slmodem-2.9.10 and slmodem-2.9.9b
4725 See  http://linmodems.technion.ac.il/archive-fifth/msg00219.html
4726    
4727 END 
4728 cat<<END>>$RECORD
4729
4730  The Modem/DriverCompiling.txt  is a MUST READ,
4731  if you are not experienced in configuring kernel-source/
4732  or get "unresolved symbols" upon driver insertion.
4733
4734   Most recent WinModem fixes are in:  http://linmodems.technion.ac.il/FAQ.html
4735   
4736 (4) For guidance on automation see  http://linmodems.technion.ac.il/archive-fourth/msg03734.html
4737 and the scripts in the slmodem-2.9.n/scripts folder/
4738
4739 END
4740
4741 if [ "$DISTR" = "debian" ] && ! [ "$BEST"  =  "" ] ; then
4742     echo " For Debian users, the kernel-headers-$SYS.deb can be used instead of kernel-source/" >> $RECORD
4743     echo >>  $RECORD
4744 fi
4745 if [ "$BN" = "scanModem" ] ; then
4746   if ! [ "`pwd`" = "/" ] ; then
4747     FILES=`ls Modem`
4748     cat<<END
4749     
4750    A subfolder Modem/  has been written,  containing these files with more detailed Information: 
4751  ------------------------------------------------------------------------------------------
4752  `echo $FILES`  
4753 -------------------------------------------------------------------------------------------
4754        Please read 1stRead.txt first for Guidance.  
4755 END
4756   fi
4757
4758   if test -z $FAST ; then
4759     rm $TMPM $TMPM.* &> /dev/null
4760   fi
4761 else
4762   echo  -------------- ending SCANMODEM section ---------------- >>$RECORD
4763 fi
4764 echo
4765
4766