initial checkin
authorMichael Prokop <mika@grml.org>
Fri, 27 Oct 2006 23:29:19 +0000 (23:29 +0000)
committerMichael Prokop <mika@grml.org>
Fri, 27 Oct 2006 23:29:19 +0000 (23:29 +0000)
26 files changed:
TODO [new file with mode: 0644]
build-stamp [new file with mode: 0644]
debian/README.Debian [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/rules [new file with mode: 0755]
man/grml-ap.8 [new file with mode: 0644]
man/grml-bridge.8 [new file with mode: 0644]
man/grml-router.8 [new file with mode: 0644]
man/manpage.1.ex [new file with mode: 0644]
net-functions [new file with mode: 0644]
routersetup [new file with mode: 0644]
sbin/grml-ap [new file with mode: 0755]
sbin/grml-bridge [new file with mode: 0755]
sbin/grml-network [new file with mode: 0755]
sbin/grml-pptp-inode [new file with mode: 0755]
sbin/grml-pptp-vcgraz [new file with mode: 0755]
sbin/grml-pptp-xdsl-students [new file with mode: 0755]
sbin/grml-router [new file with mode: 0755]
sbin/grml-vpnc-tugraz [new file with mode: 0755]
sbin/modemlink [new file with mode: 0755]
sbin/netcardconfig [new file with mode: 0755]
sbin/scanmodem [new file with mode: 0755]

diff --git a/TODO b/TODO
new file mode 100644 (file)
index 0000000..b197629
--- /dev/null
+++ b/TODO
@@ -0,0 +1,16 @@
+TODO for grml-network
+---------------------
+
+Write manpages for:
+
+* grml-network: main interface to configure network setup / cards.
+   Synopsis: 'grml-network'. Set environment variable NOCHECK
+   to skip network status check. Run 'grml-network check' to
+   execute network status check and exit immediately afterwards.
+* grml-pptp-inode:  connect via PPTP at ISP Inode.
+* grml-pptp-vcgraz: connect via PPTP in Virtual Campus Graz.
+* grml-pptp-xdsl-students: connect via PPTP at ISP Inode (XDSL@students)
+* grml-vpnc-tugraz: connect to TU Graz network via vpnc
+* modemlink: start device drivers and set /dev/modem link in GRML
+* netcardconfig: a very light-weight text-based network configuration tool
+* scanmodem: http://linmodems.technion.ac.il/packages/scanModem.gz
diff --git a/build-stamp b/build-stamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644 (file)
index 0000000..605e884
--- /dev/null
@@ -0,0 +1,9 @@
+grml-network for Debian
+-----------------------
+
+Please notice that the package does *not* depend from all the
+packages which are used in the scripts. Instead the field
+Suggests: contains the packages which might be interesting
+for the tasks of the scripts.
+
+ -- Michael Prokop <mika@grml.org>, Sat, 28 Oct 2006 00:36:01 +0200
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..4324fb4
--- /dev/null
@@ -0,0 +1,6 @@
+grml-network (0.1-1) unstable; urgency=low
+
+  * Initial release.
+
+ -- Michael Prokop <mika@grml.org>  Sat, 28 Oct 2006 00:36:01 +0200
+
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..b86f811
--- /dev/null
@@ -0,0 +1,14 @@
+Source: grml-network
+Section: grml
+Priority: optional
+Maintainer: Michael Prokop <mika@grml.org>
+Build-Depends: debhelper (>= 5)
+Standards-Version: 3.7.2
+
+Package: grml-network
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, zsh
+Suggests: wireless-tools, pptp-linux, wvdial, nmap, pppoeconf, isdnutils-base
+Description: network related helper scripts
+ This package provides scripts for network related
+ tasks which should make life easier.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..59e5aee
--- /dev/null
@@ -0,0 +1,19 @@
+This package was debianized by Michael Prokop <mika@grml.org> on
+Sat, 28 Oct 2006 00:36:01 +0200.
+
+It was downloaded from http://grml.org/repos/
+
+Upstream Author: Michael Prokop <mika@grml.org>
+
+Copyright: (c) 2003+ Michael Prokop <mika@grml.org>
+
+License:
+
+The scripts written by the grml-team are available under the
+conditions of the GPL.
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
+
+The Debian packaging is (C) 2006, Michael Prokop <mika@grml.org> and
+is licensed under the GPL, see above.
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..96d6e20
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+build: build-stamp
+
+build-stamp:
+       dh_testdir
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp
+
+       # Add here commands to clean up after the build process.
+       -$(MAKE) clean
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs usr/sbin etc/grml
+
+       install -m 755 sbin/*        debian/grml-network/usr/sbin/
+       install -m 644 net-functions debian/grml-network/etc/grml/
+       install -m 644 routersetup   debian/grml-network/etc/grml/
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs TODO
+       dh_installexamples
+       dh_installman man/grml-ap.8 man/grml-bridge.8 man/grml-router.8
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/man/grml-ap.8 b/man/grml-ap.8
new file mode 100644 (file)
index 0000000..2daf402
--- /dev/null
@@ -0,0 +1,57 @@
+.TH grml-ap 8
+.SH "NAME"
+grml-ap \- set up your box as access point
+.SH SYNOPSIS
+.B grml-ap
+.RI " start|stop|restart|info "
+.SH DESCRIPTION
+This manual page documents briefly the
+.B grml-ap
+command.
+.SH NOTES
+grml-ap uses the capabilities of your WLAN cards driver. Therefore
+you need a card including drivers providing access point features.
+atheros-based cards using the madwifi[-ng] drivers are known to work
+very well.
+.SH CONFIGURATION
+Configure setup via configuration file /etc/grml/routersetup.
+The variable AP_ESSID sets the essid of the accesspoint, if it is unset the essid grml-ap will be used by default.
+The variable AP_ENC toggles the use of encryption; set it off (that is the default) if you do not want to use encryption at all or if you want to enable encryption set the encryption key via the AP_ENC variable.
+
+.SH USAGE
+
+On the server side (where running grml-ap):
+
+  ,----
+  | # grml-ap start
+  | # cat /etc/network/interfaces
+  | iface ap inet static
+  |   address 192.168.10.1
+  |   netmask 255.255.255.0
+  |   network 192.168.10.0
+  |   broadcast 192.168.10.255
+  | # ifup ath0=ap
+  | # grml-router start
+  `----
+
+On the client side (assuming eth0 is your WLAN device):
+
+  ,----
+  | # cat /etc/network/interfaces
+  | iface ap inet static
+  |   address 192.168.10.2
+  |   netmask 255.255.255.0
+  |   network 192.168.10.0
+  |   broadcast 192.168.10.255
+  |   gateway 192.168.10.1
+  | # ifup eth0=ap
+  `----
+  
+.SH SEE ALSO
+.BR grml-bridge (8),
+.BR grml-router (8).
+.SH AUTHOR
+grml-ap was written by Ulrich Dangel <schula@grml.org> and Michael Prokop <mika@grml.org>.
+.PP
+This manual page was written by Michael Prokop
+<mika@grml.org> for the Debian project (but may be used by others).
diff --git a/man/grml-bridge.8 b/man/grml-bridge.8
new file mode 100644 (file)
index 0000000..f16abac
--- /dev/null
@@ -0,0 +1,85 @@
+.TH grml-bridge 8
+.SH "NAME"
+grml-bridge \- set up your box as bridge
+.SH SYNOPSIS
+.B grml-bridge
+.RI " start|stop|restart|info "
+.SH DESCRIPTION
+This manual page documents briefly the
+.B grml-bridge
+command.
+.SH USAGE
+Configure setup via configuration file /etc/grml/routersetup.
+To specify which DEVICES should be bridged, use BRIDGE_DEVICES, e.g.
+
+  BRIDGE_DEVICES="eth0 eth1"
+
+would bridge device eth0 and eth1. 
+Note: The auto interface name is not allowed here!
+
+To specify the name of the bridge, use BRIDGE_NAME, e.g.
+
+  BRIDGE_NAME="br0"
+
+Note: this entry is optional, per default the name br0 is choosen.
+
+If you want do disable Spanning Tree Protocol (STP) on your bridge, just set BRIDGE_STP to no, e.g.
+
+  BRIDGE_STP="no"
+
+Per default stp is on.
+
+Example Configuration file:
+
+  ,----[ /etc/grml/routersetup ]
+  | # Bridges eth0 and ath0 together
+  | BRIDGE_DEVICES="eth0 ath0"
+  |
+  | # Bridge name is grml-bridge
+  | BRIDGE_NAME="grml-bridge"
+  |
+  | # Disable stp
+  | BRIDGE_STP="no"
+  `----
+
+Start the bridge:
+
+  ,----
+  | # grml-bridge start
+  `----
+
+Now, your bridging device is up and running. Now you have to set the ip address of
+your bridged devices to 0.0.0.0. You can do this with following command:
+
+  ,----
+  | source /etc/grml/routersetup
+  | for i in $BRIDGED_DEVICES ; do ifconfig $i 0.0.0.0 ; done
+  `----
+
+Now your bridge is working. If you want that your bridge is reachable, please
+give your bridge an ip adress. You can do this for example with
+
+  ,----
+  | ifconfig grml-bridge 192.168.0.1
+  `----
+
+Stop the bridge:
+
+  ,----
+  | # grml-bridge stop
+  `----
+
+Note, your devices do not have an ip address, so you have to give them an ip address. You can do this with
+
+  ,----
+  | ifconfig eth1 $IP_ADDR
+  `----
+
+.SH SEE ALSO
+.BR grml-ap (8),
+.BR grml-router (8).
+.SH AUTHOR
+grml-bridge was written by Ulrich Dangel <schula@grml.org> and Michael Prokop <mika@grml.org>.
+.PP
+This manual page was written by Michael Prokop
+<mika@grml.org> for the Debian project (but may be used by others).
diff --git a/man/grml-router.8 b/man/grml-router.8
new file mode 100644 (file)
index 0000000..89f1467
--- /dev/null
@@ -0,0 +1,32 @@
+.TH grml-router 8
+.SH "NAME"
+grml-router \- set up your box as NAT-router
+.SH SYNOPSIS
+.B grml-router
+.RI " start|stop|restart|info "
+.SH DESCRIPTION
+This manual page documents briefly the
+.B grml-router
+command.
+.SH USAGE
+grml-router reads the configuration file /etc/grml/routerconfig and uses the
+variable OUTDEV for setting the WAN device. If OUTDEV is set to auto, the
+device with a default route entry is used.
+
+You have to set up a DNS-server server, or use the DNS-server provided by your
+provider.
+
+On the client(s) you have to specify the gateway manually, also specify a
+nameserver. You can run the following commands on the client:
+
+  route add default gw $IP_ADDRSS_OF_GW
+  echo "nameserver $IP_OF_NAMESERVER" >> /etc/resolv.conf
+
+.SH SEE ALSO
+.BR grml-ap (8),
+.BR grml-bridge (8).
+.SH AUTHOR
+grml-router was written by Ulrich Dangel <schula@grml.org> and Michael Prokop <mika@grml.org>.
+.PP
+This manual page was written by Michael Prokop
+<mika@grml.org> for the Debian project (but may be used by others).
diff --git a/man/manpage.1.ex b/man/manpage.1.ex
new file mode 100644 (file)
index 0000000..01690bf
--- /dev/null
@@ -0,0 +1,59 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH GRML-NETWORK SECTION "Oktober 28, 2006"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+grml-network \- program to do something
+.SH SYNOPSIS
+.B grml-network
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B grml-network
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBgrml-network\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+grml-network was written by <upstream author>.
+.PP
+This manual page was written by Michael Prokop <mika@grml.org>,
+for the Debian project (but may be used by others).
diff --git a/net-functions b/net-functions
new file mode 100644 (file)
index 0000000..a54676a
--- /dev/null
@@ -0,0 +1,30 @@
+# Filename:      net-functions
+# Purpose:       network related functions for use in shellscripts
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Don Okt 12 09:41:32 CEST 2006 [mika]
+################################################################################
+
+defaultGWDev() {
+  ip r s | awk '/^default/ {print $5}'
+}
+
+getLanDevices() {
+  ignore="vmnet lo sit $(brctl show | awk '{ if(NR >1 ) print  $1 }' | xargs)"
+  filter=$(for mask in $ignore; do echo -n '&& $1 !~ /^'$mask/; done)
+  awk 'FS=":" {gsub(" ", ""); if(NR>2 '"$filter"' )  print $1 | "sort" } ' /proc/net/dev
+}
+
+getWlanDevices() {
+  awk 'FS=":" {gsub(" ", ""); if(NR>2 ) print $1 | "sort" } ' /proc/net/wireless
+}
+
+# getLanDriver deviceName
+getLanDriver() {
+  DEVICE="$1"
+  echo $DEVICE | grep -q ath && DEVICE=$(echo $DEVICE | sed 's/ath/wifi/')
+  ethtool -i $DEVICE 2>/dev/null | awk '/^driver:/{print $2}'
+}
+
+## END OF FILE #################################################################
diff --git a/routersetup b/routersetup
new file mode 100644 (file)
index 0000000..3beee06
--- /dev/null
@@ -0,0 +1,28 @@
+# Filename:      /etc/grml/routersetup
+# Purpose:       configuration file for grml-router, grml-bridge and grml-ap
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Don Okt 12 10:50:51 CEST 2006 [mika]
+################################################################################
+
+# configuration for grml-router:
+# IPTABLES=/sbin/iptables       # the iptables binary
+OUTDEV='auto'                   # outgoing device [auto|default|eth0|...]
+
+# configuration for grml-bridge:
+# BRCTL=/usr/sbin/brctl         # the brctl binary
+BRIDGE_NAME='br0'               # name used for the bridge
+BRIDGE_DEVICES='eth0 eth1'      # the devices used for bilding the bridge
+STP='on'                        # enable STP (Spanning-Tree Protocol)? on|off
+BRIDGE_CONFIG='DHCP'            # Use DHCP, Fixed IP or Ipless? DHCP|FIXED|NONE
+BRIDGE_IP="192.168.1.1/24"      # ip address used for bridge
+
+# configuration for grml-ap:
+# AP_DEVICE='wlan0'             # device used as access point
+# AP_ESSID='grml-ap'            # set essid of accesspoint, by default (if unset) it's grml-ap
+# AP_ENC='secretkey'            # use encryption? 'off' deactivates encryption
+                                # (default), any other value is used as WEP encr. key
+# ATH_MODE=2                    # mode for ath device
+
+## END OF FILE #################################################################
diff --git a/sbin/grml-ap b/sbin/grml-ap
new file mode 100755 (executable)
index 0000000..4b1b51e
--- /dev/null
@@ -0,0 +1,215 @@
+#!/bin/sh
+# Filename:      grml-ap
+# Purpose:       set up access point on your box
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Mit Okt 11 23:00:43 CEST 2006 [moemoe]
+################################################################################
+
+# exit on any error
+set -e
+
+CONFIG_FILE=/etc/grml/routersetup
+. /etc/grml/lsb-functions
+. /etc/grml/net-functions
+. /etc/grml/script-functions
+
+check4root
+
+if ! [ -r "$CONFIG_FILE" ] ; then
+        eerror "$CONFIG_FILE could not be read."
+        exit 1
+fi
+
+. "$CONFIG_FILE"
+
+[ -n "$AP_ESSID" ] || AP_ESSID=grml-ap
+[ -n "$AP_ENC" ]   || AP_ENC=off
+
+info_message() {
+        DEV="$1"
+        echo $1 | grep -q wlan && DEV=$(echo $1 | sed 's/wlan/wifi/')
+        einfo "Finished setting up access point. Make sure your device $DEV is configured:"
+        einfo "For example put the following into /etc/network/interfaces and run \"ifup $DEV=ap\""
+        echo "
+iface ap inet static
+      address 192.168.10.1
+      netmask 255.255.255.0
+      network 192.168.10.0
+      broadcast 192.168.10.255
+"
+        einfo "On the client side put the following into /etc/network/interfaces and run \"ifup \$DEV=ap\""
+        echo "
+iface ap inet static
+      address 192.168.10.2
+      netmask 255.255.255.0
+      network 192.168.10.0
+      broadcast 192.168.10.255
+      gateway 192.168.10.1
+      wireless_essid $AP_ESSID
+"
+}
+
+set_ath_mode() {
+        eindent
+          einfo "Setting $1 to mode $2"
+          iwpriv $1 mode $2 ; eend $?
+        eoutdent
+}
+
+setupWifiDevice() {
+        DEV=$1
+        einfo "Setting wireless modes on $DEV"
+        
+          eindent
+          einfo "Setting sid to: $AP_ESSID"
+          iwconfig $DEV essid $AP_ESSID ; eend $?
+
+          [ "$AP_ENC" = off ] && ENC_INFO='off' || ENC_INFO='******'
+          einfo "Settinc encrypton to: $ENC_INFO "
+          iwconfig $DEV enc $AP_ENC ; eend $?
+
+          einfo "Setting device up"
+          ifconfig $DEV up ; eend $?
+
+        eoutdent
+}
+
+setup_atheros() {
+        einfo "Atheros setup: creating new WLAN AP device"
+
+        # ugly but don't know of another workaround
+        if iwconfig 2>/dev/null | grep -A1 ath0 | grep -q 'Access Point: Not-Associated' ; then
+          einfo "Destroying old ath device"
+          wlanconfig ath0 destroy ; eend $?
+        fi
+
+        device=$(wlanconfig ath create wlandev $1 wlanmode ap)
+        eend $?
+        
+        setupWifiDevice $device
+        [ -n "$ATH_MODE" ] && set_ath_mode "$device" "$ATH_MODE"
+
+        info_message $device
+        exit 0
+}
+
+setup_hostap() {
+        einfo "Hostap setup: creating new WLAN AP device"
+        eindent
+
+          # einfo "Changing mode of $1 to AP"
+          # ifconfig $1 down ; eend $?
+  
+          # dunno if the card is pci or pcmcia, just try to unload and
+          # load both versions,
+          [ -n $(lsmod | grep ^orinoco_pci) ] && HAPT="pci"
+          [ -n $(lsmod | grep ^orinoco_cs) ]  && HAPT="cs"
+          [ -n $(lsmod | grep ^orinoco_plx) ] && HAPT="plx"
+
+          einfo "Unloading old modules"
+          modprobe -r orinoco orinoco_$HAPT
+          eend $?
+
+          einfo "Loading new modules"
+          modprobe hostap_$HAPT
+          eend $? && setupWifiDevice $1
+
+        eoutdent
+
+        info_message $1
+        exit 0
+}
+
+setup_iwconfig() {
+        einfo "Trying to set $1 into mode master"
+        ifconfig $1 down
+        iwconfig $1 mode master
+        eend $? && setupWifiDevice $1
+        exit 0
+}
+
+setup_generic() {
+        einfo "Generic setup (no hostap / atheros capable device found): creating new WLAN AP device"
+        echo "TODO! iwconfig $1 mode Ad-Hoc"
+        exit 0
+}
+
+detect_wl_cards() {
+        # If you want to extend this with a specific funtion for a
+        # special driver, please have a look at /etc/grml/net-functions
+        for i in $AP_DEVICE $(getWlanDevices) ; do
+                DRIVER=$(getLanDriver $i)
+                case $DRIVER in
+                  ath_pci)
+                       echo $i | grep -q ath && i=$(echo $i | sed 's/ath/wifi/')
+                       setup_atheros $i
+                       ;;
+                  orinoco|hostap)
+                       setup_hostap $i
+                       ;;
+                  ipw2100|prism54)
+                       setup_iwconfig $i
+                       ;;
+                  *)
+                       setup_generic $i
+                       ;;
+                esac
+        done
+}
+
+stop_devices() {
+  einfo "Searching for WLAN device with ESSID $AP_ESSID"
+  DEVICE=$(iwconfig 2>/dev/null| grep "ESSID:\"$AP_ESSID\"" | awk '{print $1}')
+  eindent
+  if [ -n "$DEVICE" ] ; then
+     for i in $DEVICE ; do
+       einfo "Found device $i" ; eend 0
+     done
+  else
+     eerror "No device(s) with ESSID $AP_ESSID found"
+     exit 1
+  fi
+  case $DEVICE in
+      ath*)
+        einfo "Shutting down $DEVICE"
+        ifdown $DEVICE
+        wlanconfig $DEVICE destroy ; eend $?
+        exit 0
+        ;;
+      *)
+        for i in $DEVICE ; do
+          einfo "Shutting down $i"
+          ifdown $i ; eend $?
+        done
+        exit 0
+        ;;
+  esac
+  eoutdent
+}
+
+case "$1" in
+    start)
+       detect_wl_cards
+       ;;
+    stop)
+       einfo "Trying to stop all present grml-ap setups"
+       stop_devices
+       ;;
+    restart)
+       $0 stop
+       sleep 1:
+       $0 start
+       ;;
+    *)
+    echo "Usage: $0 {start|stop|restart}"
+    exit 1
+    ;;
+esac
+
+eerror "Your wlan card is not supported at the moment. Sorry" ; eend 1
+exit 1
+
+## END OF FILE #################################################################
+# vim: ft=sh expandtab ai
diff --git a/sbin/grml-bridge b/sbin/grml-bridge
new file mode 100755 (executable)
index 0000000..1a4b9c8
--- /dev/null
@@ -0,0 +1,146 @@
+#!/bin/sh
+# Filename:      grml-bridge
+# Purpose:       set up your box as bridge
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Mit Okt 11 23:02:51 CEST 2006 [moemoe]
+################################################################################
+
+# exit on any error
+set -e
+
+CONFIG_FILE=/etc/grml/routersetup
+. /etc/grml/lsb-functions
+. /etc/grml/script-functions
+
+check4root
+
+if ! [ -r "$CONFIG_FILE" ] ; then
+  eerror "$CONFIG_FILE could not be read."
+  exit 1
+fi
+
+. "$CONFIG_FILE"
+
+if [ -z "$BRIDGE_DEVICES" ] ; then
+   eerror "Bridge devices (\$BRIDGE_DEVICES) not set in $CONFIG_FILE"
+   exit 1
+fi
+
+[ -n "$BRCTL" ] || BRCTL=brctl
+[ -n "$STP"   ] || STP=on
+[ -n "$BRIDGE_NAME" ] || BRIDGE_NAME=br0
+
+check4progs $BRCTL || exit 1
+
+case "$1" in
+    start)
+        einfo "Starting bridge"
+        eindent
+            einfo "Creating bridge device"
+            brctl addbr "$BRIDGE_NAME"
+            eend $?
+            case "$BRIDGE_STP" in
+                no|false)
+                    ;;
+                *)
+                    einfo "Setting Spanning-Tree Protocol (STP) to status"
+                    brctl stp "$BRIDGE_NAME" $STP
+                    eend $?
+                    ;;
+            esac
+
+            einfo "Enabling promiscous mode on: "
+            eindent
+               for i in $BRIDGE_DEVICES ; do
+                   einfo "$i"
+                   ip link set "$i" promisc on ; eend $?
+               done
+            eoutdent
+
+            einfo "Adding network devices to $BRIDGE_NAME: "
+            eindent
+            for i in $BRIDGE_DEVICES ; do
+                einfo "$i"
+                brctl addif "$BRIDGE_NAME" $i  ; eend $?
+            done
+            eoutdent
+
+            einfo "Bringing bridge $BRIDGE_NAME up"
+            ip link set "$BRIDGE_NAME" up ; eend $?
+            eindent
+               case $BRIDGE_CONFIG in
+                       DHCP)
+                         einfo "starting dhclient for $BRIDGE_NAME"
+                         dhclient -e -pf /var/run/dhclient.$BRIDGE_NAME.pid -lf /var/run/dhclient.$BRIDGE_NAME.leases $BRIDGE_NAME
+                       ;;
+                       FIXED)
+                         einfo "Setting IP for $BRIDGE_NAME to $BRIDGE_IP"
+                         ip a a $BRIDGE_IP dev $BRIDGE_NAME
+                       ;;
+                       NONE)
+                         einfo "Leaving $BRIDGE_NAME uconfigured"
+                       ;;
+               esac
+            eoutdent
+        eoutdent
+   ;;
+
+   stop)
+        einfo "Stopping bridge"
+        eindent
+            if [ $BRIDGE_CONFIG = DHCP ]; then
+               einfo "Terminating dhclient for $BRIDGE_NAME"
+               kill $(cat /var/run/dhclient.$BRIDGE_NAME.pid);
+            fi
+            einfo "Removing network devices from $BRIDGE_NAME: "
+
+            eindent
+               for i in $BRIDGE_DEVICES ; do
+                   einfo "$i "
+                   brctl delif "$BRIDGE_NAME" $i  ; eend $?
+               done
+            eoutdent
+
+            einfo "Disabling promiscous mode on: "
+            eindent
+               for i in $BRIDGE_DEVICES ; do
+                   einfo "$i "
+                   ip link set "$i" promisc off ; eend $?
+               done
+            eoutdent
+
+            einfo "Bringing bridge: $BRIDGE_NAME down"
+            ip link set "$BRIDGE_NAME" down; eend $?
+
+            einfo "Removing bridge device"
+            brctl delbr "$BRIDGE_NAME"
+            eend $?
+        eoutdent
+   ;;
+
+   restart)
+        $0 stop
+        sleep 1
+        $0 start
+   ;;
+
+   info)
+        einfo "$0 - script which turns on basic bridging capabilities"
+        einfo "Configure via $CONFIG_FILE" ; eend 0
+   ;;
+
+   status)
+        einfo "$0 - status:"
+        $BRCTL show ; eend $?
+   ;;
+
+   *)
+        echo "Usage: $0 {start|stop|restart|status|info}"
+        exit 1
+   ;;
+esac
+
+## END OF FILE #################################################################
+# vim: ft=sh expandtab ai
diff --git a/sbin/grml-network b/sbin/grml-network
new file mode 100755 (executable)
index 0000000..4ba90d9
--- /dev/null
@@ -0,0 +1,181 @@
+#!/bin/bash
+# Filename:      grml-network
+# Purpose:       simple frontend to varous connection tools
+# Authors:       (c) Klaus Knopper Mar 2004, (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Mit Okt 04 11:52:41 CEST 2006 [mika]
+################################################################################
+
+PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin"
+export PATH
+
+if [ $UID != 0 ] ; then
+   echo Error: become root before starting $0 >& 2
+   exit 100
+fi
+
+# XDIALOG_HIGH_DIALOG_COMPAT=1
+# export XDIALOG_HIGH_DIALOG_COMPAT
+
+CHECK=""
+[ "$1" = "check" ] && CHECK="yes"
+
+TMP=$(mktemp)
+
+bailout(){
+  rm -f "$TMP"
+  exit $1
+}
+
+DIALOG="dialog"
+# [ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"
+
+trap bailout 1 2 3 15
+
+# LANGUAGE etc.
+[ -r /etc/default/locale ] && . /etc/default/locale
+
+gauge(){
+  rm -f "$TMP.done"
+  status=0
+  while [ ! -e "$TMP.done" ]; do
+    echo "$status"
+    status="`expr \( 100 - $status \) / 4 + $status`"
+    sleep 1
+  done | $DIALOG --title "$0" --gauge "$1" 8 75 0
+}
+
+# Stop status bar
+killgauge(){
+  touch "$TMP.done" ; wait ; rm -f "$TMP.done"
+}
+
+# Provider specific setup - menu
+provider () {
+  MENUINTERNET=$($DIALOG --stdout --clear --title "$PN" --menu \
+  "This script is a submenu of grml-network to set up an internet connection" 14 65 7 \
+  "TUG"      "Connect via vpnc to TU Graz" \
+  "VCGraz"   "Connect via pptp to VC-Graz" \
+  "Inode"    "Connect via pptp to Inode" \
+  "Students" "Connect via pptp to Inode-Students" \
+  "Exit" "Exit this program")
+
+  retval=$?
+  case $retval in
+      (0)
+        if [ $MENUINTERNET == TUG ] ; then
+                exec grml-vpnc-tugraz
+        fi
+        if [ $MENUINTERNET == VCGraz ] ; then
+                exec grml-pptp-vcgraz
+        fi
+        if [ $MENUINTERNET == Inode ] ; then
+                exec grml-pptp-inode
+        fi
+        if [ $MENUINTERNET == Students ] ; then
+                exec grml-pptp-xdsl-students
+        fi ;;
+      (1)   echo "Cancel pressed." ;;
+      (255) echo "ESC pressed."    ;;
+  esac
+}
+
+main(){
+  if [ -z "$NOCHECK" -a -x /usr/bin/nmap ] ; then
+  gauge "Checking network status..." &
+    STATUS=""
+    GW="`echo $(route -n | awk '/^0\.0\.0\.0/{print $2}')`"
+    GWDEV="`echo $(route -n | awk '/^0\.0\.0\.0/{print $NF}')`"
+    NMAP="$(nmap -sP --host_timeout 4000 --max_rtt_timeout 4000 $GW 2>/dev/null)"
+
+    if [ "$?" = 0 ]; then
+      echo "$NMAP" | grep -q "down" >/dev/null 2>&1 || STATUS="online"
+    fi
+
+    killgauge
+
+    if [ -n "$STATUS" ]; then
+       [ -n "$CHECK" ] && exit 0 # exit if we are already connected
+       STATUS="Online ($GWDEV)"
+    else
+       STATUS="Offline"
+    fi
+  else
+    STATUS="Unknown"
+  fi
+
+# Language-dependent Messages
+case "$LANGUAGE" in
+  de*|at*|ch*)
+    TITLE1="Netzwerk-Setup"
+    STATUS="Status: $STATUS"
+    MESSAGE1="Bitte auswählen:"
+    MODEMSETUP="/dev/modem-Schnittstelle (neu) konfigurieren"
+    NETCARD="Netzwerkkarten (LAN/WLAN) Konfiguration"
+    WIRELESS="Wireless Zugang"
+    GPRS="Einwahl per Handy/GPRS"
+    DSL="Einwahl per DSL-Modem"
+    ISDN="Einwahl per ISDN"
+    MODEM="Einwahl per Analogmodem"
+    PROVIDER="Provider spezifische Einstellungen"
+    EXIT="Beenden"
+    ;;
+  *)
+    TITLE1="Network Setup"
+    STATUS="Current state: $STATUS"
+    MESSAGE1="Please select:"
+    MODEMSETUP="(re)configure /dev/modem device"
+    NETCARD="Configure network card (LAN/WLAN)"
+    WIRELESS="Wireless access"
+    GPRS="Dial via cellphone/GPRS"
+    DSL="Dial via DSL-adapter"
+    ISDN="Dial via ISDN"
+    MODEM="Dial via analog modem"
+    PROVIDER="Provider specific setup"
+    EXIT="Quit"
+   ;;
+esac
+
+# Shortcut description selected
+TYPES=(netcardconfig "$NETCARD" \
+provider "$PROVIDER" \
+modemlink "$MODEMSETUP" \
+gprsconnect "$GPRS" \
+pppoeconf "$DSL" \
+isdnconfig "$ISDN" \
+wvdial "$MODEM")
+
+type wvdial      >/dev/null 2>&1 || { unset TYPES[13]; unset TYPES[12]; }
+type isdnconfig  >/dev/null 2>&1 || { unset TYPES[11]; unset TYPES[10];  }
+type pppoeconf   >/dev/null 2>&1 || { unset TYPES[9];  unset TYPES[8];  }
+type gprsconnect >/dev/null 2>&1 || { unset TYPES[7];  unset TYPES[6];  }
+type modemlink   >/dev/null 2>&1 || { unset TYPES[5];  unset TYPES[4];  }
+
+rm -f "$TMP"
+
+$DIALOG --clear --cancel-label "$EXIT" --title "$TITLE1" --menu "$STATUS
+
+$MESSAGE1" 18 75 10 "${TYPES[@]}" 2>"$TMP" || bailout 1
+
+read TYPE <"$TMP"
+TYPE="${TYPE#\"}"; TYPE="${TYPE%\"}"
+rm -f "$TMP"
+
+case "$TYPE" in
+  wvdial) [ -e /etc/wvdial.conf ] || wvdialconf /etc/wvdial.conf ;;
+esac
+
+eval $TYPE
+return "$?"
+}
+
+if [ -z "$NOCHECK" ] ; then
+  while true; do
+    main
+  done
+else
+  main
+fi
+
+## END OF FILE #################################################################
diff --git a/sbin/grml-pptp-inode b/sbin/grml-pptp-inode
new file mode 100755 (executable)
index 0000000..91c3dcb
--- /dev/null
@@ -0,0 +1,117 @@
+#!/bin/sh
+# Filename:      grml-pptp-inode
+# Purpose:       connect via pptp to inode (www.inode.at)
+# Authors:       grml-team (grml.org), (c) Andreas Gredler <jimmy@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Fre Aug 11 11:41:22 CEST 2006 [mika]
+################################################################################
+
+################################################################################
+# Notes:
+# This script is based on 'knoppix-pptp' (version 0.3.1)
+# by Wolfgang Scheicher.
+################################################################################
+
+LANG=C
+
+if [ "$UID" != 0 ]; then
+#  sudo $0
+#  exit
+echo foo
+fi
+
+if [ -z "$FORCE_OLD" ] ; then
+  dialog --title "Inode XDSL Graz" --msgbox "Please notice that grml-pptp-inode is considered as deprecated. We recommend to use PPPOE for Inode XDSL.
+
+So please configure your system running pppoeconf
+
+If you really want to use the old grml-pptp-inode script execute
+
+  FORCE_OLD=1 grml-pptp-inode
+" 0 0
+else
+
+runit(){
+echo "name ${VPNUSERNAME}" > /etc/ppp/peers/inode
+cat >> /etc/ppp/peers/inode << "EOF"
+remotename XDSL
+defaultroute
+noipdefault
+noauth
+noproxyarp
+persist
+logfile /var/log/pptp.log
+
+EOF
+
+echo "${VPNUSERNAME} XDSL ${VPNPASSWORD} *" >> /etc/ppp/pap-secrets
+chmod 0600 /etc/ppp/pap-secrets
+
+echo -e "#!/bin/sh\nLANG=C\nVPNSERVER=\"${VPNSERVER}\"\n" > /etc/init.d/pptp
+
+cat >> /etc/init.d/pptp << "EOF"
+
+GATEWAY=`ifconfig | awk -v RS="" '/addr:172./{print substr($7,6,11)1}'`
+PPTP="/usr/sbin/pptp $VPNSERVER call inode"
+
+case "$1" in
+  start)
+      echo "Starting up XDSL: pptp"
+      /sbin/route del default &>/dev/null
+      /sbin/route add -host $VPNSERVER gw $GATEWAY &>/dev/null
+      start-stop-daemon --start --exec $PPTP
+    ;;
+  stop)
+      echo "Shutting down XDSL: pptp"
+      killall pppd &>/dev/null
+      if [ $? == 0 ]; then
+        /sbin/route del -host $VPNSERVER gw $GATEWAY &>/dev/null
+        /sbin/route add default gw $GATEWAY &>/dev/null
+        echo "."
+      fi
+    ;;
+  reconnect)
+    echo -n "Reconnecting XDSL: pptd"
+    start-stop-daemon --start --exec $PPTP
+    echo "."
+    ;;
+  *)
+      echo "Usage: /etc/init.d/pptp {start|stop|reconnect}"
+      exit 1
+    ;;
+esac
+
+exit 0
+EOF
+
+chmod +x /etc/init.d/pptp
+touch /var/log/pptp.log
+/etc/init.d/pptp start
+dialog --title "PPTP Log" --no-cancel --tailbox /var/log/pptp.log 0 0
+}
+
+[ -n "${VPNSERVER}"   ] || VPNSERVER="10.0.0.138"
+[ -n "${VPNUSERNAME}" ] || VPNUSERNAME=$(cat /etc/ppp/pap-secrets | grep XDSL | cut -d " " -f1)
+[ -n "${VPNPASSWORD}" ] || VPNPASSWORD=$(cat /etc/ppp/pap-secrets | grep XDSL | cut -d " " -f3)
+
+if [ -z "$VPNUSERNAME" ] || [ -z "$VPNPASSWORD" ] ; then
+  COMMAND1=$(dialog --stdout --title "Inode XDSL Graz" --inputbox \
+  "Account name(e.g. xdsl.<id>@home):" 0 0) || exit 0
+  COMMAND2=$(dialog --stdout --title "Inode XDSL Graz" --passwordbox "Account password (hidden typing)" 0 40) || exit 0
+
+  VPNUSERNAME=${COMMAND1%/*}
+  VPNPASSWORD=${COMMAND2#*/}
+  [ ! -z "$VPNUSERNAME" ] || exit 1
+  [ ! -z "$VPNPASSWORD" ] || exit 1
+  runit
+else
+  dialog --title "Inode XDSL Graz" --msgbox "Found already configured
+  account.\nIf the settings are wrong, delete the entries in
+  /etc/ppp/pap-secrets" 10 45
+  runit
+fi
+
+fi # $FORCE_OLD
+
+## END OF FILE #################################################################
diff --git a/sbin/grml-pptp-vcgraz b/sbin/grml-pptp-vcgraz
new file mode 100755 (executable)
index 0000000..902a2ab
--- /dev/null
@@ -0,0 +1,150 @@
+#!/bin/zsh
+# Filename:      grml-pptp-vcgraz
+# Purpose:       connect via pptp in vc-graz (www.vc-graz.ac.at)
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Sam Mai 27 15:12:52 CEST 2006 [mika]
+################################################################################
+
+################################################################################
+# Notes:
+# This script is based on 'knoppix-pptp' (versions 0.3.1 and 0.4.0-test2)
+# by Wolfgang Scheicher.
+################################################################################
+
+LANG=C
+LC_ALL=C
+
+if [ "$UID" != 0 ];  then
+  sudo $0
+  exit
+fi
+
+runit(){
+echo "name ${VPNUSERNAME}" > /etc/ppp/peers/vc-graz
+cat >> /etc/ppp/peers/vc-graz << "EOF"
+
+remotename PPTP
+ipparam tunl
+lock
+noauth
+nobsdcomp
+nodeflate
+refuse-pap
+refuse-eap
+noccp
+mtu 1460
+mru 1500
+lcp-echo-failure 10
+lcp-echo-interval 10
+logfile /var/log/pptp.log
+persist
+maxfail 3
+holdoff 15
+noipdefault
+defaultroute
+EOF
+
+# make sure it is not readable by any non-root users:
+touch     /etc/ppp/chap-secrets
+chmod 600 /etc/ppp/chap-secrets
+# don't overwrite existing files - so just append:
+echo "${VPNUSERNAME} PPTP ${VPNPASSWORD} *" >> /etc/ppp/chap-secrets
+
+echo -e "#!/bin/sh\nLANG=C\nVPNSERVER=\"${VPNSERVER}\"\nDORMITORY=\"${DORMITORY}\"" > /etc/init.d/pptp-vcgraz
+cat >> /etc/init.d/pptp-vcgraz << "EOF"
+# connect to vc-graz via pptp
+case "$1" in
+  start)
+    ifconfig | grep $VPNSERVER > /dev/null && echo "PPTP already started"
+    ifconfig | grep $VPNSERVER > /dev/null && exit 0
+    echo "Starting PPTP Tunnel"
+    route del default
+    route add -host $VPNSERVER gw 10.${DORMITORY}.0.1
+    route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.${DORMITORY}.0.1
+    pppd pty "pptp $VPNSERVER --nolaunchpppd" call vc-graz updetach || exit 1
+    ;;
+
+  stop)
+    ifconfig | grep $VPNSERVER > /dev/null || echo "PPTP already stopped"
+    ifconfig | grep $VPNSERVER > /dev/null || exit 0
+    echo  "Stopping PPTP Tunnel"
+    killall -HUP pppd
+    killall -HUP pptp
+    sleep 1
+    killall pppd
+    killall pptp
+    route del -host $VPNSERVER gw 10.${DORMITORY}.0.1
+    route del -net 10.0.0.0 netmask 255.0.0.0 gw 10.${DORMITORY}.0.1
+    route add default gateway 10.${DORMITORY}.0.1
+    ;;
+
+  restart)
+    /etc/init.d/pptp-vcgraz stop
+    sleep 1
+    /etc/init.d/pptp-vcgraz start
+    ;;
+
+  status)
+    dialog --title "Status of /etc/init.d/pptp-vcgraz - PPTP Log" --no-cancel --tailbox /var/log/pptp.log 0 0
+    ;;
+
+  *)
+    echo 'Usage: /etc/init.d/pptp-vcgraz {start|stop|restart}' >&2
+    exit 1
+    ;;
+esac
+
+exit 0
+EOF
+
+chmod +x /etc/init.d/pptp-vcgraz
+touch /var/log/pptp.log
+/etc/init.d/pptp-vcgraz start
+dialog --title "PPTP Log" --no-cancel --tailbox /var/log/pptp.log 0 0
+}
+
+[ -n "$VPNSERVER" ] || VPNSERVER="10.0.0.3"
+[ -n "$DORMITORY" ] || DORMITORY="$(ifconfig | grep "addr:10" | cut -d. -f2)"
+
+if [ -z "$DORMITORY" ]; then
+  dialog --stdout --title "VC-Graz"  --msgbox "No 10.x.x.x ip address found, sorry. grml-pptp-vcgraz does work only for VC-Graz in 10.x.x.x network. Make sure you requested an ip address via DHCP. Try running pump/dhclient otherwise." 0 0 || \
+  echo "No 10.x.x.x ip address found, sorry. grml-pptp-vcgraz does work only for VC-Graz in 10.x.x.x network. Make sure you requested an ip address via DHCP. Try running pump/dhclient otherwise."
+  exit 1
+fi
+
+if [ ! -x /usr/sbin/pppd ]; then
+  dialog --stdout --title "VC-Graz"  --msgbox "/usr/sbin/pppd not found. Huh?!" 0 0 ||
+  echo "Error: /usr/sbin/pppd not found. Huh?!"
+  exit 1
+fi
+
+if [ ! -x /usr/sbin/pptp ]; then
+  dialog --stdout --title "VC-Graz"  --msgbox "/usr/sbin/pptp not found. Huh?!" 0 0 ||
+  echo "Error: /usr/sbin/pptp not found. Huh?!"
+  exit 1
+fi
+
+#[ -n "$VPNUSERNAME" ] || VPNUSERNAME=$(cat /etc/ppp/chap-secrets | grep PPTP | head -1 | cut -d " " -f1)
+#[ -n "$VPNPASSWORD" ] || VPNPASSWORD=$(cat /etc/ppp/chap-secrets | grep PPTP | head -1 | cut -d " " -f3)
+
+if [ -z "$VPNUSERNAME" ] || [ -z "$VPNPASSWORD" ] ; then
+  COMMAND1=$(dialog --stdout --title "Virtual Campus Graz" --inputbox    "Account number:" 0 0) || exit 0
+  VPNUSERNAME=${COMMAND1%/*}
+  if [ -z "$VPNUSERNAME" ] ; then
+     dialog --stdout --title "Virtual Campus Graz" --msgbox "Sorry, please provide a valid username. Exiting." 0 0
+     exit 1
+  fi
+  COMMAND2=$(dialog --stdout --title "Virtual Campus Graz" --passwordbox "Account password (hidden typing)" 0 40) || exit 0
+  VPNPASSWORD=${COMMAND2#*/}
+  if [ -z "$VPNPASSWORD" ] ; then
+     dialog --stdout --title "Virtual Campus Graz" --msgbox "Sorry, please provide a valid password. Exiting." 0 0
+     exit 1
+  fi
+  runit
+else
+  runit
+fi
+
+## END OF FILE #################################################################
diff --git a/sbin/grml-pptp-xdsl-students b/sbin/grml-pptp-xdsl-students
new file mode 100755 (executable)
index 0000000..5b84bec
--- /dev/null
@@ -0,0 +1,172 @@
+#!/bin/sh
+# Filename:      grml-pptp-xdsl-students
+# Purpose:       connect via pptp to inode ["students-setup"] (www.inode.at)
+# Authors:       grml-team (grml.org), (c) Martin Hecher <hecka@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Sun Jan 15 16:19:24 CET 2006 [mika]
+################################################################################
+
+################################################################################
+# Notes:
+# This script is based on 'knoppix-pptp' (version 0.3.1)
+# by Wolfgang Scheicher
+# and based on grml-pptp-inode
+# by Andreas 'Jimmy' Gredler
+################################################################################
+
+LANG=C
+DIALOG="dialog"
+
+if [ "$UID" != 0 ];  then
+  sudo $0
+  exit
+fi
+
+setroute()
+{
+set $(grep "option routers" /var/lib/dhcp3/dhclient.leases | tail -1 | cut -f5 -d' ' | tr -d ";")
+
+ROUTER="$1"
+ANT="10.0.0.138"
+
+if route -n | grep $ANT >>/dev/null
+  then
+    /sbin/route del $ANT
+  fi
+
+/sbin/route add $ANT gw $ROUTER
+
+if ifconfig | grep ppp0 >>/dev/null
+   then
+      set $(ifconfig ppp0 | grep P-t-P | tr -s [:blank:] | cut -f4 -d' ' | cut -b7-)
+      GATEWAY="$1"
+      /sbin/route del default
+      /sbin/route add default gw $GATEWAY
+      exit 0
+   fi
+}
+
+runit(){
+
+/sbin/dhclient ${NET_DEVICE}
+
+echo "name ${VPNUSERNAME}" > /etc/ppp/peers/inode
+cat >> /etc/ppp/peers/inode << "EOF"
+remotename XDSL
+defaultroute
+noipdefault
+noauth
+persist
+logfile /var/log/pptp.log
+
+EOF
+
+echo "${VPNUSERNAME} XDSL ${VPNPASSWORD} *" >> /etc/ppp/pap-secrets
+chmod 0600 /etc/ppp/pap-secrets
+
+echo -e "#!/bin/sh\nLANG=C\nVPNSERVER=\"${VPNSERVER}\"\n" > /etc/init.d/pptp
+
+cat >> /etc/init.d/pptp << "EOF"
+
+PPTP="/usr/sbin/pptp $VPNSERVER call inode"
+
+case "$1" in
+  start)
+      echo "Starting up XDSL: pptp"
+      start-stop-daemon --start --exec $PPTP
+      if [ $? == 0 ]; then
+       echo "."
+      fi
+    ;;
+  stop)
+      echo "Shutting down XDSL: pptp"
+      start-stop-daemon --stop --exec $PPTP
+      if [ $? == 0 ]; then
+        /sbin/route del -host $VPNSERVER
+        /sbin/route add default gw $GATEWAY
+        echo "."
+      fi
+    ;;
+  reconnect)
+    echo -n "Reconnecting XDSL: pptd"
+    start-stop-daemon --start --exec $PPTP
+    echo "."
+    ;;
+  *)
+      echo "Usage: /etc/init.d/pptp {start|stop|reconnect}"
+      exit 1
+    ;;
+esac
+
+exit 0
+EOF
+
+chmod +x /etc/init.d/pptp
+touch /var/log/pptp.log
+/etc/init.d/pptp start
+$DIALOG --title "Information" --no-cancel --msgbox "Please click OK and wait until remote IP is assigned." 0 0
+$DIALOG --title "PPTP Log" --no-cancel --tailbox /var/log/pptp.log 0 0
+}
+
+[ -n "$VPNSERVER"   ] || VPNSERVER="10.0.0.138"
+[ -n "$VPNUSERNAME" ] || VPNUSERNAME="$(cat /etc/ppp/pap-secrets | grep XDSL | cut -d " " -f1)"
+[ -n "$VPNPASSWORD" ] || VPNPASSWORD="$(cat /etc/ppp/pap-secrets | grep XDSL | cut -d " " -f3)"
+
+if [ -z "$VPNUSERNAME" ] || [ -z "$VPNPASSWORD" ] ; then
+
+  COMMAND1=$($DIALOG --stdout --title "Inode XDSL Graz" --inputbox \
+  "Account name (e.g. grml@tug):" 0 35) || exit 0
+  COMMAND2=$($DIALOG --stdout --title "Inode XDSL Graz" --passwordbox "Account password (hidden typing):" 0 40) || exit 0
+
+  TMP=$(mktemp)
+
+  bailout(){
+  rm -f "$TMP"
+  exit $1
+  }
+
+  NETDEVICES="$(cat /proc/net/dev | awk -F: '/[0-9]:/{print $1}')"
+
+  wireless(){
+   case "$(cat /proc/net/wireless 2>/dev/null)" in *$1*) return 0;; esac
+   # Card exists but is not configured yet
+   [ -n "$(iwconfig $1 2>/dev/null | head -1)" ] && return 0
+   return 1
+  }
+
+  if [ -z "$NETDEVICES" ]; then
+    $DIALOG --msgbox "No network devices found." 15 45
+    bailout
+  fi
+
+  count="$(echo "$NETDEVICES" | wc -w)"
+
+  if [ "$count" -gt 1 ]; then
+    DEVICELIST=""
+    for DEVICE in $NETDEVICES; do
+      wireless "$DEVICE" && DEVICELIST="$DEVICELIST ${DEVICE} Wireless" || DEVICELIST="$DEVICELIST ${DEVICE} LAN"
+    done
+    rm -f "$TMP"
+    $DIALOG --menu "Network device to connect from:" 18 45 12 $DEVICELIST 2>"$TMP" || bailout
+    read NET_DEVICE <"$TMP" ; rm -f "$TMP"
+    else
+    # Remove additional spaces
+    NET_DEVICE="$(echo $NETDEVICES)"
+  fi
+
+  VPNUSERNAME=${COMMAND1%/*}
+  VPNPASSWORD=${COMMAND2#*/}
+  [ ! -z "$VPNUSERNAME" ] || exit 1
+  [ ! -z "$VPNPASSWORD" ] || exit 1
+  [ ! -z "$NET_DEVICE" ] || exit 1
+  runit
+  setroute
+else
+  $DIALOG --title "Inode XDSL Graz" --msgbox "Found already configured
+  account.\nIf the settings are wrong, delete the entries in
+  /etc/ppp/pap-secrets" 10 45
+  runit
+fi
+
+## END OF FILE #################################################################
diff --git a/sbin/grml-router b/sbin/grml-router
new file mode 100755 (executable)
index 0000000..c7c0e16
--- /dev/null
@@ -0,0 +1,90 @@
+#!/bin/sh
+# Filename:      grml-router
+# Purpose:       set up your box as NAT-router
+# Authors:       grml-team (grml.org), Ulrich Dangel <schula@grml.org>, Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Sam Okt 07 23:18:38 CEST 2006 [mika]
+################################################################################
+
+# exit on any error
+set -e
+
+CONFIG_FILE=/etc/grml/routersetup
+. /etc/grml/lsb-functions
+. /etc/grml/net-functions
+. /etc/grml/script-functions
+
+if [ $UID != 0 ]; then
+   eerror "Error: become root before starting $0"
+   exit 100
+fi
+
+if ! [ -r $CONFIG_FILE ] ; then
+  eerror "$CONFIG_FILE could not be read."
+  exit 1
+fi
+
+. $CONFIG_FILE
+
+if [ -z "$OUTDEV" ] ; then
+    eerror "Outgouing device is not set in $CONFIG_FILE"
+    exit 1
+fi
+
+case "$OUTDEV" in
+    auto|default)
+    OUTDEV=$(defaultGWDev)
+    ;;
+esac
+
+[ -n "$IPTABLES" ] || IPTABLES=/sbin/iptables
+
+check4progs $IPTABLES || exit 1
+
+case "$1" in
+    start)
+        einfo "Adjusting kernel variables (net.ipv4.*)"
+          sysctl -w net.ipv4.conf.all.rp_filter=1    1>/dev/null && \
+          sysctl -w net.ipv4.conf.all.log_martians=1 1>/dev/null && \
+          sysctl -w net.ipv4.ip_forward=1            1>/dev/null
+        eend $?
+        einfo "Setting up iptables rule"
+          eindent
+
+            einfo "Adding masquarade rule"
+            $IPTABLES -t nat -A POSTROUTING -o $OUTDEV -j MASQUERADE
+            eend $?
+          eoutdent
+   ;;
+
+   stop)
+       einfo "Resetting kernel variables"
+         sysctl -w net.ipv4.ip_forward=0            1>/dev/null && \
+         sysctl -w net.ipv4.conf.all.log_martians=0 1>/dev/null
+       eend $?
+
+       einfo "Removing iptables rule"
+         $IPTABLES -t nat -D POSTROUTING -o $OUTDEV -j MASQUERADE
+       eend $?
+   ;;
+
+   restart)
+        $0 stop
+        sleep 1
+        $0 start
+   ;;
+
+   info)
+    einfo "$0 - script which turns on router capabilities (NAT)"
+    einfo "Configure it via $CONFIG_FILE" ; eend 0
+   ;;
+
+   *)
+    echo "Usage: $0 {start|stop|restart|info}"
+    exit 1
+   ;;
+esac
+
+## END OF FILE #################################################################
+# vim: ft=sh expandtab ai
diff --git a/sbin/grml-vpnc-tugraz b/sbin/grml-vpnc-tugraz
new file mode 100755 (executable)
index 0000000..3e15901
--- /dev/null
@@ -0,0 +1,118 @@
+#!/bin/sh
+# Filename:      grml-vpnc-tugraz
+# Purpose:       connect via vpnc in VC-Graz/TU Graz (www.vc-graz.ac.at / www.tugraz.at)
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Tue Mar 28 10:02:46 CEST 2006 [mika]
+################################################################################
+
+# Documentation:
+# http://www.zid.tugraz.at/ki/netz/extern/vpn/
+
+LANG=C
+LC_ALL=C
+
+if [ "$UID" != 0 ];  then
+  sudo $0
+  exit
+fi
+
+function typeofservice() {
+NETWORK=$(dialog --stdout --clear --title "foobar" --menu \
+"This script is a submenu of grml-network to set up an internet connection
+
+Notice if you want to connect to WLAN at TU Graz:
+Make sure you have a connection to the access point and an ip-address.
+Run 'iwconfig \$DEVICE essid tug ; dhclient \$DEVICE'." 0 0 0 \
+"WLAN"   "Connect via WLAN to TU Graz network" \
+"VCGraz" "Connect to VC-Graz (not yet tested - use grml-pptp-vcgraz!)" \
+"External" "External connection (not yet tested!)" \
+"Exit"   "Exit this program")
+
+retval=$?
+
+case $retval in
+  0)
+        if [ $NETWORK == WLAN ]; then
+         GATEWAY=129.27.200.1
+         # GATEWAY=172.27.12.2
+         ACCOUNT='Account information - your TUGOnline username'
+        fi
+
+        if [ $NETWORK == VCGraz ]; then
+         GATEWAY=10.0.0.1
+         ACCOUNT='Account information - your account number'
+        fi
+
+        if [ $NETWORK == External ]; then
+         GATEWAY=129.27.200.1
+         ACCOUNT='Account information - account number'
+        fi
+        ;;
+  1)
+        echo "Cancel pressed." ; exit
+        ;;
+  255)
+        echo "ESC pressed." ; exit
+        ;;
+esac
+}
+
+runit(){
+echo "# vpnc at $NETWORK" > /etc/vpnc/vpnctugraz.conf
+echo "
+Debug 0
+IKE DH Group dh2
+Perfect Forward Secrecy dh2
+IPSec gateway $GATEWAY
+IPSec ID default
+IPSec secret default
+Xauth username $ACCOUNTNAME
+Xauth password $PASSWORD
+
+" >> /etc/vpnc/vpnctugraz.conf
+
+echo -e "#!/bin/sh\nLANG=C\n" > /etc/init.d/vpnctug
+cat >> /etc/init.d/vpnctug << "EOF"
+case "$1" in
+  start)
+    echo "Starting vpnc"
+#    route del default
+#    vpnc /etc/vpnc/vpnctugraz.conf
+    vpnc-connect /etc/vpnc/vpnctugraz.conf
+#    route add default dev tun0
+    ;;
+
+  stop)
+    echo "Stopping vpnc"
+    /usr/sbin/vpnc-disconnect
+    killall -HUP vpnc
+    ;;
+
+  *)
+    echo "Usage: /etc/init.d/vpnctug {start|stop}" >&2
+    ;;
+
+esac
+
+exit 0
+EOF
+
+chmod 600 /etc/vpnc/vpnctugraz.conf
+chmod +x /etc/init.d/vpnctug
+/etc/init.d/vpnctug start
+}
+
+typeofservice
+if [ -z "$ACCOUNTNAME" ] || [ -z "$PASSWORD" ] ; then
+  ACCOUNTNAME=$(dialog --stdout --title "vpnc in $NETWORK" --inputbox "${ACCOUNT}:" 0 0) || exit 0
+  PASSWORD=$(dialog --stdout --title "vpnc in $NETWORK" --passwordbox "Account password (hidden typing)" 0 40) || exit 0
+  [ -z "$ACCOUNTNAME" ] && exit 1
+  [ -z "$PASSWORD" ] && exit 1
+  runit
+else
+  runit
+fi
+
+## END OF FILE #################################################################
diff --git a/sbin/modemlink b/sbin/modemlink
new file mode 100755 (executable)
index 0000000..1362bad
--- /dev/null
@@ -0,0 +1,330 @@
+#!/bin/bash +x
+# Filename:      modemlink
+# Purpose:       start device drivers and set /dev/modem link in GRML
+# Authors:       (c) Klaus Knopper Mar 2004, (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Mit Okt 04 11:51:09 CEST 2006 [mika]
+################################################################################
+
+PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin"
+export PATH
+
+# XDIALOG_HIGH_DIALOG_COMPAT=1
+# export XDIALOG_HIGH_DIALOG_COMPAT
+
+if [ $UID != 0 ] ; then
+   echo Error: become root before starting $0 >& 2
+   exit 100
+fi
+
+TMP=$(mktemp)
+
+bailout(){
+  rm -f "$TMP"
+  exit $1
+}
+
+DIALOG="dialog"
+# [ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"
+
+trap bailout 1 2 3 15
+
+# LANGUAGE
+[ -r /etc/default/locale ] && . /etc/default/locale
+
+# Language-dependent Messages
+case "$LANGUAGE" in
+de*|at*|ch*)
+TITLE1="Art der Verbindung"
+MESSAGE1="Bitte die gewünschten Verbindungsart auswählen:"
+SERIAL="Serielle Schnittstelle (z.B. Modem)"
+WINMODEM="Nach nicht-unterstützten \"WinModems\" suchen"
+SIR="Standard SIR (oder USB)"
+USB="USB Schnittstelle (z.B. Modem)"
+IRDA="Infrarot Schnittstelle (z.B. für Handy/PDA)"
+BLUETOOTH="Bluetooth Funkadapter (z.B. für Handy/PDA)"
+TITLE_DONGLES="IRDA Adapter-Typ"
+MESSAGE_DONGLES="Bitte den verwendeten IRDA-Adaptertyp auswählen:"
+TITLE_TEST="Adaptertest - Strg-C zum Beenden des Tests"
+TITLE_SRVFAIL="FEHLER"
+MESSAGE_SRVFAIL="Konnte Daemon für Gerät nicht starten. Wahrscheinlich wurde die falsche Schnittstelle ausgewählt." 
+AUTOSEARCH="ALLE Schnittstellen scannen"
+TITLE_BLUES="Bluetooth-Geräte"
+MESSAGE_BLUES="Folgende Bluetooth-Geräte befinden sich in der Umgebung. Bitte eins auswählen:"
+TITLE_PIN="PIN"
+MESSAGE_PIN="Bitte geben Sie eine 4-stellige PIN zur Authentfizierung der Bluetooth-Geräte ein:"
+TITLE_GAUGE="Device-Scan..."
+TITLE_LINK="/dev/modem Link erzeugen..."
+MESSAGE_LINK="Möchten Sie den Symlink /dev/modem auf das neu konfigurierte Gerät setzen? Dies ist notwendig, wenn Sie das Gerät z.B. als Modem für kppp oder GPRS benutzen möchten).
+
+Verlinken von /dev/modem -> "
+TITLE_RETRY="FEHLER"
+MESSAGE_RETRY="Das scheint nicht geklappt zu haben. Noch einmal versuchen?"
+TITLE_BTID="Keine Bluetooth Geräte in Reichweite"
+MESSAGE_BTID="Auf die Sendeanfrage hat kein Bluetooth-Gerät geantwortet. Bitte geben Sie die Adresse eines entfernten Bluetooth-Gerätes ein."
+;;
+*)
+TITLE1="Connection Type"
+MESSAGE1="Please select type of connection:"
+WINMODEM="Scan for unsupported \"WinModems\""
+SERIAL="Serial connector (i.e. Modem)"
+SIR="Standard SIR (or USB)"
+USB="USB connector (i.e. Modem)"
+IRDA="Infrared wireless device (i.e. cellphone/PDA)"
+BLUETOOTH="Bluetooth wireless device (i.e. cellphone/PDA)"
+TITLE_DONGLES="IRDA Adapter type"
+MESSAGE_DONGLES="Please select type of IRDA adapter:"
+TITLE_TEST="Testing adapter - Hit Ctrl-C to end test."
+TITLE_SRVFAIL="ERROR"
+MESSAGE_SRVFAIL="Failed to start device daemon. Probably the selected port is wrong."
+AUTOSEARCH="scan ALL devices"
+TITLE_BLUES="Bluetooth Devices"
+MESSAGE_BLUES="These bluetooth devices exist nearby. Please select:"
+TITLE_PIN="PIN"
+MESSAGE_PIN="Please chose a 4-digit PIN number for authention of bluetooth devices:"
+TITLE_GAUGE="Scanning devices..."
+TITLE_LINK="Create /dev/modem link..."
+MESSAGE_LINK="Do you want to set the symlink /dev/modem to point to the newly configured device? This is necessary if you want o use the device as modem for kppp, as an example, or for using GPRS).
+
+Create link /dev/modem -> "
+TITLE_RETRY="ERROR"
+MESSAGE_RETRY="This seems to have failed. Do you want to try again?"
+TITLE_BTID="No bluetooth devices in range"
+MESSAGE_BTID="No bluetooth devices responded to our scan. Please enter the address of a remote bluetooth device."
+;;
+esac
+
+# Shortcut description selected
+TYPES=(serial "$SERIAL" on \
+usb "$USB" off \
+irda "$IRDA" off \
+bluetooth "$BLUETOOTH" off \
+winmodem "$WINMODEM" off)
+
+type scanmodem >/dev/null 2>&1 || { unset TYPES[14]; unset TYPES[13]; unset TYPES[12]; }
+type rfcomm >/dev/null 2>&1 || { unset TYPES[11]; unset TYPES[10]; unset TYPES[9]; }
+type irdadump >/dev/null 2>&1 || { unset TYPES[8]; unset TYPES[7]; unset TYPES[6]; }
+
+# man irattach
+DONGLES=(auto "$SIR" on \
+act200l "ACTiSYS Ir-200L dongles" off \
+actisys "ACTiSYS IR-220L dongle" off \
+actisys+ "ACTiSYS IR-220L+ dongle" off \
+airport "Airport dongle" off \
+ep7211 "IR port driver for the Cirrus Logic EP7211 processor (ARM based)" off \
+esi "Extended Systems JetEye PC ESI-9680" off \
+girbil "Greenwich GIrBIL dongle" off \
+litelink "Parallax LiteLink dongle & Extended Systems JetEye PC ESI-9680B" off \
+old_belkin "Belkin (old) SmartBeam dongle or any dongle only capable of 9600 bauds" off \
+ma600 "Mobile Action ma600 dongles" off \
+mcp2120 "Dongles based on the MCP2120 (Microchip)" off \
+tekram "Tekram IrMate IR-210B dongle" off)
+
+AUTODEVICE=(auto "$AUTOSEARCH" off)
+
+SERIALDEVICES=(ttyS0 "(COM1:)" off \
+ttyS1 "(COM2:)" off \
+ttyS2 "(COM3:)" off \
+ttyS3 "(COM4:)" off \
+ttyS4 "(COM5:)" off \
+ttyS5 "(COM6:)" off \
+ttyS6 "(COM7:)" off \
+ttyS7 "(COM8:)" off \
+ttyS8 "(COM9:)" off \
+ttyS9 "(COM10:)" off \
+ttyS10 "(COM11:)" off \
+ttyS11 "(COM12:)" off \
+ttyS12 "(COM13:)" off \
+ttyS13 "(COM14:)" off \
+ttyS14 "(COM15:)" off \
+ttyS15 "(COM16:)" off)
+
+USBDEVICES=(ttyACM0 "USB Modem 1" off \
+ttyACM1 "USB Modem 2" off \
+ttyACM2 "USB Modem 3" off \
+ttyACM3 "USB Modem 4" off \
+ttyUSB0 "USB Serial 0" off \
+ttyUSB1 "USB Serial 1" off \
+ttyUSB2 "USB Serial 2" off \
+ttyUSB3 "USB Serial 3" off)
+
+num=${#COMMANDS[@]}
+
+#for ((i=0; i<$num; i++)); do
+## Remove non-existing desktops/descriptions from list
+#d0="$(($i * 3))"
+#d1="$(($i * 3 + 1))"
+#d2="$(($i * 3 + 2))"
+#if type "${COMMANDS[$i]}" >/dev/null 2>&1; then
+#[ "$DESKTOP" = "${DESKTOPS[$(($i * 3))]}" ] && DESKTOPS[$(($i * 3 + 2))]="on" || DESKTOPS[$(($i * 3 + 2))]="off"
+#else
+#unset DESKTOPS[$d0]
+#unset DESKTOPS[$d1]
+#unset DESKTOPS[$d2]
+#unset COMMANDS[$i]
+#fi
+#done
+
+gauge(){
+rm -f "$TMP.done"
+status=0
+while [ ! -e "$TMP.done" ]; do echo "$status" ; status="`expr \( 100 - $status \) / 4 + $status`"; sleep 2; done | $DIALOG --title "$TITLE_GAUGE" --gauge "$1" 8 75 0
+}
+
+# Stop status bar
+killgauge(){
+touch "$TMP.done" ; wait ; rm -f "$TMP.done"
+}
+
+conntype(){
+rm -f "$TMP"
+$DIALOG --clear --title "$TITLE1" --radiolist "$MESSAGE1" 18 75 9 "${TYPES[@]}" 2>"$TMP" || bailout 1
+read TYPE <"$TMP"
+TYPE="${TYPE#\"}"; TYPE="${TYPE%\"}"
+rm -f "$TMP"
+return 0
+}
+
+startservice(){
+case "$TYPE" in
+serial)
+rm -f "$TMP"
+$DIALOG --clear --title "$TITLE_RAWDEVICE" --radiolist "$MESSAGE_RAWDEVICE" 18 75 9 "${SERIALDEVICES[@]}" 2>"$TMP" || bailout 1
+read DEVICE <"$TMP"
+DEVICE="${DEVICE#\"}"; DEVICE="${DEVICE%\"}"
+rm -f "$TMP"
+;;
+winmodem)
+[ -n "$DISPLAY" ] && xterm -e bash -c "scanmodem; read -p 'Enter to quit.'" || { scanmodem; read -p 'Enter to quit.'; }
+return 1
+;;
+usb)
+rm -f "$TMP"
+$DIALOG --clear --title "$TITLE_RAWDEVICE" --radiolist "$MESSAGE_RAWDEVICE" 18 75 9 "${USBDEVICES[@]}" 2>"$TMP" || bailout 1
+read DEVICE <"$TMP"
+DEVICE="${DEVICE#\"}"; DEVICE="${DEVICE%\"}"
+rm -f "$TMP"
+;;
+irda)
+killall irattach 2>/dev/null
+modprobe irda 2>/dev/null
+modprobe ircomm-tty 2>/dev/null
+rm -f "$TMP"
+$DIALOG --clear --title "$TITLE_RAWDEVICE" --radiolist "$MESSAGE_RAWDEVICE" 18 75 9 "${AUTODEVICE[@]}" "${SERIALDEVICES[@]}" "${USBDEVICES[@]}" 2>"$TMP" || bailout 1
+read RAWDEVICE <"$TMP"
+RAWDEVICE="${RAWDEVICE#\"}"; RAWDEVICE="${RAWDEVICE%\"}"
+rm -f "$TMP"
+$DIALOG --clear --title "$TITLE_DONGLES" --radiolist "$MESSAGE_DONGLES" 18 75 9 "${DONGLES[@]}" 2>"$TMP" || bailout 1
+read DONGLE <"$TMP"
+DONGLE="${DONGLE#\"}"; DONGLE="${DONGLE%\"}"
+rm -f "$TMP"
+case "$DONGLE" in auto) DONGLE="" ;; *) DONGLE="-d $DONGLE" ;; esac
+if [ "$RAWDEVICE" = "auto" ]; then
+gauge "Device-Scan..." &
+for i in /dev/ttyUSB* /dev/ttyS*; do
+RAWDEVICE="${i##/dev/}"
+irattach "/dev/$RAWDEVICE" $DONGLE -s
+usleep 125000
+done
+killgauge
+sleep 2
+RAWDEVICE="$(ps auxw | awk '/irattach/{print $12}' | head -1)"
+RAWDEVICE="${RAWDEVICE##/dev/}"
+else
+irattach "/dev/$RAWDEVICE" $DONGLE -s
+sleep 2
+fi
+if ifconfig irda0 >/dev/null 2>&1; then
+true
+else
+$DIALOG --clear --title "$TITLE_SRVFAIL" --msgbox "$MESSAGE_SRVFAIL" 18 75
+DEVICE=""
+return 1
+fi
+DEVICE="ircomm0"
+rm -f /etc/irda.conf
+echo "#irda.conf Version: 1.0
+IRDADEV=/dev/$RAWDEVICE" >/etc/irda.conf
+[ -n "$DONGLE" ] && echo "DONGLE=\"${DONGLE##-d }\"" >>/etc/irda.conf
+echo "DISCOVERY=-s
+ENABLE=yes" >>/etc/irda.conf
+[ -x /etc/init.d/irda ] && for i in 2 3 5; do ln -sf /etc/init.d/irda /etc/rc$i.d/S99irda; done
+;;
+bluetooth)
+killall hcid 2>/dev/null
+killall rfcomm 2>/dev/null
+hcid || return 1
+count=0
+gauge "Device-Scan..." &
+while read HW NAME; do
+d0="$(($count * 3))"
+d1="$(($count * 3 + 1))"
+d2="$(($count * 3 + 2))"
+BLUES[$d0]="$HW"; BLUES[$d1]="$NAME"; BLUES[$d2]="off"
+count=$(($count + 1))
+done <<EOT
+$(hcitool scan 2>/dev/null | awk '/[0-9]:[0-9]/{print $0}')
+EOT
+killgauge
+if [ -n "${BLUES[0]}" ]; then
+$DIALOG --clear --title "$TITLE_BLUES" --radiolist "$MESSAGE_BLUES" 18 75 9 "${BLUES[@]}" 2>"$TMP" || bailout 1
+else
+$DIALOG --title "$TITLE_BTID" --inputbox "$MESSAGE_BTID" 15 60 "00:00:00:00:00:00" 2>"$TMP" || bailout 1
+fi
+read RAWDEVICE <"$TMP"
+RAWDEVICE="${RAWDEVICE#\"}"; RAWDEVICE="${RAWDEVICE%\"}"
+rm -f "$TMP"
+read PIN < /etc/bluetooth/pin  2>/dev/null
+rm -f "$TMP"
+if [ -n "$DISPLAY" ]; then
+$DIALOG --title "$TITLE_PIN" --inputbox "$MESSAGE_PIN" 8 65 "$PIN" 2>"$TMP" || bailout 1
+fi
+read PIN <"$TMP" 2>/dev/null
+rm -f "$TMP"
+rm -f /etc/bluetooth/pin
+echo "$PIN" >/etc/bluetooth/pin
+rm -f /etc/bluetooth/rfcomm.conf
+cat >/etc/bluetooth/rfcomm.conf <<EOT
+#
+# RFCOMM configuration file.
+#
+# Created by modemlink-grml on $(date)
+#
+
+rfcomm0 {
+ bind yes;
+# Bluetooth address of the device
+ device $RAWDEVICE;
+# RFCOMM channel for the connection
+#      channel 1;
+# Description of the connection
+ comment "Selected Bluetooth device";
+}
+EOT
+rfcomm bind all
+[ -x /etc/init.d/bluez-utils ] && for i in 2 3 5; do ln -sf /etc/init.d/bluez-utils /etc/rc$i.d/S99bluez-utils; done
+DEVICE=rfcomm0
+;;
+esac
+return 0
+}
+
+# MAIN
+
+while true; do
+conntype
+startservice
+if [ "$?" = "0" -a -n "$DEVICE" ]; then
+$DIALOG --title "$TITLE_LINK" --yesno "$MESSAGE_LINK $DEVICE ?" 15 65 || bailout 1
+rm -f /dev/modem
+ln -sf /dev/"$DEVICE" /dev/modem
+break
+else
+$DIALOG --clear --title "$TITLE_RETRY" --yesno "$MESSAGE_RETRY" 18 75 || bailout 1
+fi
+done
+
+bailout 0
+
+## END OF FILE #################################################################
diff --git a/sbin/netcardconfig b/sbin/netcardconfig
new file mode 100755 (executable)
index 0000000..23f7242
--- /dev/null
@@ -0,0 +1,754 @@
+#!/bin/bash
+# Filename:      grml-network
+# Purpose:       configuration script for network
+# Authors:       Klaus Knopper 2002, Niall Walsh + Stefan Lippers-Hollmann 2005, Michael Prokop <mika@grml.org>, Marcel Wichern <marcel@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Mit Okt 04 11:52:26 CEST 2006 [mika]
+################################################################################
+# Changes have been merged from Kanotix's netcardconfig taken from
+# http://kanotix.com/files/debian/pool/main/n/netcardconfig-kanotix/
+################################################################################
+
+PATH="/bin:/sbin:/usr/bin:/usr/sbin"
+export PATH
+
+# get root
+if [ $UID != 0 ]; then
+ echo Error: become root before starting $0 >&2
+ exit 100
+fi
+
+TMP=$(mktemp)
+WPATMP=$(mktemp)
+
+bailout() {
+  rm -f "$TMP"
+  rm -f "$WPATMP"
+  exit $1
+}
+
+# This function produces the IWOURLINE for interfaces
+writeiwline() {
+  IWOURLINE=""
+  if [ -n "$NWID" ]; then
+    IWOURLINE="$IWOURLINE wireless-nwid $NWID\n"
+  fi
+
+  if [ -n "$MODE" ]; then
+    IWOURLINE="$IWOURLINE wireless-mode $MODE\n"
+  fi
+
+  if [ -n "$CHANNEL" ]; then
+    IWOURLINE="$IWOURLINE wireless-channel $CHANNEL\n"
+  fi
+
+  if [ -n "$FREQ" ]; then
+    IWOURLINE="$IWOURLINE wireless-freq $FREQ\n"
+  fi
+
+  if [ -n "$KEY" ]; then
+    if [ "$PUBKEY" -eq 1 ]; then
+      # Store the key in interfaces in wireless-key
+      IWOURLINE="$IWOURLINE wireless-key $KEY\n"
+    else
+      # Store the key in /etc/network/wep.$DV which is root readable only
+      # Use pre-up in interfaces to read and set it
+      echo "$KEY" > /etc/network/wep.$DV && chmod 600 /etc/network/wep.$DV && IWOURLINE="$IWOURLINE pre-up KEY=\$(cat /etc/network/wep.$DV) && iwconfig $DV key \$KEY\n"
+    fi
+  fi
+
+  [ -d /sys/module/rt2??0/ ] && IWPREUPLINE="$IWPREUPLINE pre-up /sbin/ifconfig $DV up\n"
+
+  if [ -n "$IWCONFIG" ]; then
+    IWPREUPLINE="$IWPREUPLINE iwconfig $IWCONFIG\n"
+  fi
+
+  if [ -n "$IWSPY" ]; then
+    IWPREUPLINE="$IWPREUPLINE iwspy $IWSPY\n"
+  fi
+
+  if [ -n "$IWPRIV" ]; then
+    IWPREUPLINE="$IWPREUPLINE iwpriv $IWPRIV\n"
+  fi
+
+  # execute ESSID last, but make sure that it is written as first option
+  if [ -n "$ESSID" ]; then
+    IWOURLINE="$IWOURLINE wireless-essid $ESSID\n"
+  fi
+
+  if [ $WPAON -gt 0 ]; then
+    # Using wpa requires a wpa_supplicant entry
+    IWPREUPLINE="${IWPREUPLINE}pre-up wpa_supplicant -D$WPA_DEV -i$WLDEVICE -c/etc/wpa_supplicant.conf -B\n"
+    touch /etc/wpa_supplicant.conf
+    awk '/^network={/{if(found){found=0}else{found=1;hold=$0}}/ssid={/{if(/ssid='"$ESSID"'/){found=1}else{found=0;print hold}}{if(!found){print}}' /etc/wpa_supplicant.conf >> "$TMP"
+    wpa_passphrase "$ESSID" "$WPASECRET" 2>/dev/null >> "$TMP"
+    mv -f /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.$(date +%Y%m%d_%H%M)
+    if ! grep -q "For more information take a look at" /etc/wpa_supplicant.conf ; then
+      cat >$WPATMP <<EOF
+# /etc/wpa_supplicant.conf
+# For more information take a look at /usr/share/doc/wpasupplicant/
+#
+# Other WPA options:
+#  scan_ssid [0]|1
+#  bssid 00:11:22:33:44:55
+#  priority [0]|Integer
+#  proto [WPA RSN] WPA|RSN
+#  key_mgmt [WPA-PSK WPA-EAP]|NONE|WPA-PSK|WPA-EAP|IEEE8021X
+#  pairwise [CCMP TKIP]|CCMP|TKIP|NONE
+#  group [CCMP TKIP WEP105 WEP40]|CCMP|TKIP|WEP105|WEP40
+#  eapol_flags [3]|1|2
+
+EOF
+    fi
+    [ -n "$APSCAN" ] && echo "$APSCAN" >> "$WPATMP"
+    cat "$WPATMP" "$TMP" > /etc/wpa_supplicant.conf
+    rm -f $WPATMP 2>/dev/null
+    IWDOWNLINE="${IWDOWNLINE}down killall wpa_supplicant\n"
+  fi
+
+  IWOURLINE="$IWOURLINE $IWPREUPLINE $IWDOWNLINE"
+  #echo "DEBUG: for interfaces $IWOURLINE"
+}
+
+device2props() {
+  PARTCOUNT=0
+  isauto=0
+  isfirewire=0
+  iswireless=0
+  driver=""
+  mac=""
+  for PART in $DEVICE; do
+    if [ $PARTCOUNT -eq 0 ]; then
+      DEVICENAME=$PART
+    else
+      echo $PART | grep -q A::1 && isauto=1
+      echo $PART | grep -q F::1 && isfirewire=1
+      echo $PART | grep -q W::1 && iswireless=1
+      [ -z "$driver" ] && driver=$(echo $PART|awk 'BEGIN {FS="::"} /^D:/{print $2}')
+      [ -z "$mac" ] && mac=$(echo $PART|awk 'BEGIN {FS="::"} /^M:/{print $2}')
+    fi
+    ((PARTCOUNT++))
+  done
+}
+
+props2string() {
+  MY_DEVICE_NAME=""
+  [ $isfirewire -gt 0 ] && MY_DEVICE_NAME="$NET_DEVICE_NAME_FW"
+  [ -z "$MY_DEVICE_NAME" -a $iswireless -gt 0 ] && MY_DEVICE_NAME="$NET_DEVICE_NAME_W"
+  [ -z "$MY_DEVICE_NAME" ] && MY_DEVICE_NAME="$NET_DEVICE_NAME"
+  MY_DEVICE_NAME="$DEVICENAME $MY_DEVICE_NAME $mac $driver"
+  [ $isauto -gt 0 ] && MY_DEVICE_NAME="$MY_DEVICE_NAME $NET_DEVICE_NAME_AUTO"
+  MY_DEVICE_NAME=$(echo $MY_DEVICE_NAME | sed 's/\ /__/g')
+}
+
+addauto() {
+  if ! egrep -e "^auto[  ]+.*$DV" /etc/network/interfaces >/dev/null; then
+    awk '{if(/^auto/){if(done==0){print $0 " '"$DV"'";done=1}else{print}}else{print}}END{if(done==0){print "auto '$DV'"}}' "/etc/network/interfaces" > "$TMP"
+    cat "$TMP" > /etc/network/interfaces
+  fi
+}
+
+remauto(){
+  if egrep -e "^auto[  ]+.*$DV" /etc/network/interfaces >/dev/null; then
+    perl -pi -e 's/^(auto.*)'$DV'(.*)$/$1$2/;' /etc/network/interfaces
+  fi
+}
+
+configiface() {
+  [ ! -r /etc/network/interfaces ] && touch /etc/network/interfaces
+  DEVICE=${NETDEVICES[$DV]}
+  device2props
+  DV=$DEVICENAME
+  # wireless config
+  WLDEVICE="$(LANG=C LC_MESSAGEWS=C iwconfig $DV 2>/dev/null | awk '/802\.11|READY|ESSID/{print $1}')"
+  WLDEVICECOUNT="$(LANG=C LC_MESSAGEWS=C iwconfig $DV 2>/dev/null | wc -l)"
+  if [ $iswireless -gt 0 ] && $DIALOG --yesno "$MESSAGE13" 8 45; then
+    ESSID=""
+    NWID=""
+    MODE=""
+    CHANNEL=""
+    FREQ=""
+    SENS=""
+    RATE=""
+    KEY=""
+    RTS=""
+    FRAG=""
+    IWCONFIG=""
+    IWSPY=""
+    IWPRIV=""
+
+    if [ -f /etc/network/interfaces ]; then
+      awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}}
+        /essid/{if(found){for(i=NF;i>=2;i--)essid=$i "~" essid}}
+        /nwid/{if(found){nwid=$NF}}
+        /mode/{if(found){mode=$NF}}
+        /channel/{if(found){channel=$NF}}
+        /freq/{if(found){freq=$NF}}
+        /sens/{if(found){sens=$NF}}
+        /rate/{if(found){rate=$NF}}
+        /rts/{if(found){rts=$NF}}
+        /frag/{if(found){frag=$NF}}
+        /iwconfig/{if(!/KEY/){if(found){iwconfig=$NF}}}
+        /iwspy/{if(found){iwspy=$NF}}
+        /iwpriv/{if(found){iwpriv=$NF}}
+        /wireless[-_]key/{if(found){gsub(/^\W*wireless[-_]key\W*/,"");key=$0}}
+        END{
+          if (!(length(essid))){essid="~~~"}
+          if (!(length(nwid))){nwid="~~~"}
+          if (!(length(mode))){mode="~~~"}
+          if (!(length(channel))){channel="~~~"}
+          if (!(length(freq))){freq="~~~"}
+          if (!(length(sens))){sens="~~~"}
+          if (!(length(rate))){rate="~~~"}
+          if (!(length(rts))){rts="~~~"}
+          if (!(length(frag))){frag="~~~"}
+          if (!(length(iwconfig))){iwconfig="~~~"}
+          if (!(length(iwspy))){iwspy="~~~"}
+          if (!(length(iwpriv))){iwpriv="~~~"}
+          if (!(length(key))){key="~~~"}
+          print essid" "nwid" "mode" "channel" "freq" "sens" "rate" "rts" "frag" "iwconfig" "iwspy" "iwpriv" "key
+        }' /etc/network/interfaces >"$TMP"
+
+      read ESSID NWID MODE CHANNEL FREQ SENS RATE RTS FRAG IWCONFIG IWSPY IWPRIV KEY<"$TMP"
+
+      if [ "$ESSID" = "~~~" ]; then  ESSID=""; fi
+      if [ "$NWID" = "~~~" ]; then  NWID=""; fi
+      if [ "$MODE" = "~~~" ]; then  MODE=""; fi
+      if [ "$CHANNEL" = "~~~" ]; then  CHANNEL=""; fi
+      if [ "$FREQ" = "~~~" ]; then  FREQ=""; fi
+      if [ "$SENS" = "~~~" ]; then  SENS=""; fi
+      if [ "$RATE" = "~~~" ]; then  RATE=""; fi
+      if [ "$RTS" = "~~~" ]; then  RTS=""; fi
+      if [ "$FRAG" = "~~~" ]; then  FRAG=""; fi
+      if [ "$IWCONFIG" = "~~~" ]; then IWCONFIG=""; fi
+      if [ "$IWSPY" = "~~~" ]; then  IWSPY=""; fi
+      if [ "$IWPRIV" = "~~~" ]; then  IWPRIV=""; fi
+      if [ "$KEY" = "~~~" ]; then  KEY=""; fi
+
+      ESSID=$(echo $ESSID | tr "~" " " | sed 's/ *$//')
+
+      if [ -z "$KEY" ]; then
+        KEY=$(cat /etc/network/wep.$DV 2>/dev/null)
+
+        if [ -z "$KEY" ]; then
+          PUBKEY=0
+        else
+          PUBKEY=-1
+        fi
+      else
+        PUBKEY=1
+      fi
+
+      #echo "DEBUG:E:$ESSID N:$NWID M:$MODE C:$CHANNEL F:$FREQ S:$SENS R:$RATE K:$KEY R:$RTS F:$FRAG I:$IWCONFIG I:$IWSPY I:$IWPRIV"
+      rm -f "$TMP"
+    fi
+
+    $DIALOG --inputbox "$MESSAGEW4 $DEVICENAME $MESSAGEW5" 15 50 "$ESSID" 2>"$TMP" || bailout 1
+    read ESSID <"$TMP" ; rm -f "$TMP"
+    [ -z "$ESSID" ] && ESSID="any"
+
+    $DIALOG --inputbox "$MESSAGEW6 $DEVICENAME $MESSAGEW7" 15 50 "$NWID" 2>"$TMP" || bailout 1
+    read NWID <"$TMP" ; rm -f "$TMP"
+
+    $DIALOG --inputbox "$MESSAGEW8 $DEVICENAME $MESSAGEW9" 15 50 "$MODE" 2>"$TMP" || bailout 1
+    read MODE <"$TMP" ; rm -f "$TMP"
+    [ -z "$MODE" ] && MODE="Managed"
+
+    $DIALOG --inputbox "$MESSAGEW10 $DEVICENAME $MESSAGEW11" 15 50 "$CHANNEL" 2>"$TMP" || bailout 1
+    read CHANNEL <"$TMP" ; rm -f "$TMP"
+
+    if [ -z "$CHANNEL" ]; then
+      $DIALOG --inputbox "$MESSAGEW12 $DEVICENAME $MESSAGEW13" 15 50 "$FREQ" 2>"$TMP" || bailout 1
+      read FREQ <"$TMP" ; rm -f "$TMP"
+    fi
+
+    WPAON=0
+    IWDRIVER=$driver
+
+    case $IWDRIVER in
+      ath_pci)
+        WPA_DEV="madwifi"
+        ;;
+      ipw2200|ipw2100)
+        WPA_DEV="wext"
+        ;;
+      hostap)
+        WPA_DEV="hostap"
+        ;;
+    esac
+
+    if [ -z "$WPA_DEV" ]; then
+      if [ -d /proc/net/ndiswrapper/$DV ]; then
+        WPA_DEV=ndiswrapper
+      elif [ -d /proc/net/hostap/$DV ]; then
+        WPA_DEV=hostap
+      elif [ $WLDEVICECOUNT -eq 1 ]; then
+        if [ -e /proc/driver/atmel ]; then
+          WPA_DEV=atmel
+        fi
+      fi
+    fi
+
+    WPAON=-1
+
+    if [ -n "$WPA_DEV" ]; then
+      if $DIALOG --yesno "$MESSAGEW22" 15 50; then
+        # Other wpa options
+        # scan_ssid [0]|1
+        # bssid 00:11:22:33:44:55
+        # priority [0]|Integer
+        # proto [WPA RSN] WPA|RSN
+        # key_mgmt [WPA-PSK WPA-EAP]|NONE|WPA-PSK|WPA-EAP|IEEE8021X
+        # pairwise [CCMP TKIP]|CCMP|TKIP|NONE
+        # group [CCMP TKIP WEP105 WEP40]|CCMP|TKIP|WEP105|WEP40
+        # eapol_flags [3]|1|2
+
+      if ! $DIALOG --yesno "Is SSID broadcast enabled?" 15 50; then
+        APSCAN="ap_scan=2"
+      fi
+        WPAON=1
+        KEY=""
+        WPASECRET=$(awk        '/network/{if(found){found=0}else{found=1}}/ssid/{if(/ssid="'"$ESSID"'"/){found=1}else{found=0}}/#scan_ssid=1/#psk=/{if(found){gsub(/^\W*#psk="/,"");gsub(/"\W*$/,"");print}}' /etc/wpa_supplicant.conf)
+
+        $DIALOG --inputbox "$MESSAGEW23 $ESSID" 15 50 "$WPASECRET" 2>"$TMP" || bailout 1
+        WPASECRET=$(sed -e 's/\\/\\/g' "$TMP") && rm -r "$TMP"
+
+        case $WPA_DEV in
+          hostap)
+            MODE="Managed"
+            ;;
+        esac
+      else
+        WPASECRET=""
+      fi
+    else
+      WPASECRET=""
+    fi
+
+    # No need for a wep key if we are using wpa
+    if [ ! $WPAON -eq 1 ]; then
+      $DIALOG --inputbox "$MESSAGEW14 $DEVICENAME $MESSAGEW15" 15 50 "$KEY" 2>"$TMP" || bailout 1
+      read KEY <"$TMP" ; rm -f "$TMP"
+
+      if [ -n "$KEY" -a "$PUBKEY" -eq 0 ]; then
+        if ! $DIALOG --yesno "$MESSAGEW25 $DEVICENAME $MESSAGEW26" 15 50; then
+          PUBKEY=1
+        fi
+      fi
+    fi
+
+    $DIALOG --inputbox "$MESSAGEW16 $DEVICENAME $MESSAGEW17" 15 50 "$IWCONFIG" 2>"$TMP" || bailout 1
+    read IWCONFIG <"$TMP" ; rm -f "$TMP"
+
+    $DIALOG --inputbox "$MESSAGEW18 $DEVICENAME $MESSAGEW19" 15 50 "$IWSPY" 2>"$TMP" || bailout 1
+    read IWSPY <"$TMP" ; rm -f "$TMP"
+
+    $DIALOG --inputbox "$MESSAGEW20 $DEVICENAME $MESSAGEW21" 15 50 "$IWPRIV" 2>"$TMP" || bailout 1
+    read IWPRIV <"$TMP" ; rm -f "$TMP"
+
+    writeiwline
+  fi
+
+  if $DIALOG --yesno "$MESSAGE2" 8 45; then
+    if [ -w /etc/network/interfaces ]; then
+      rm -f "$TMP"
+      awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}}
+        /^\W$/{if(blank==0){lastblank=1}else{lastblank=0}{blank=1}}
+        /\w/{blank=0;lastblank=0}
+        {if(!(found+lastblank)){print}}
+        END{print "iface '"$DV"' inet dhcp"}' \
+        /etc/network/interfaces >"$TMP"
+      echo -e "$IWOURLINE" >> $TMP
+      #echo -e "\n\n" >> $TMP
+      cat "$TMP" >/etc/network/interfaces
+      rm -f "$TMP"
+      # Add an "auto" entry
+      #addauto
+    fi
+  else
+    if [ -f /etc/network/interfaces ]; then
+      awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}}
+        /address/{if(found){address=$NF}}
+        /netmask/{if(found){netmask=$NF}}
+        /broadcast/{if(found){broadcast=$NF}}
+        /gateway/{if(found){gateway=$NF}}
+        END{print address" "netmask" "broadcast" "gateway}' /etc/network/interfaces >"$TMP"
+      read IP NM BC DG <"$TMP"
+      rm -f "$TMP"
+    fi
+
+    $DIALOG --inputbox "$MESSAGE6 $DV" 10 45 "${IP:-192.168.0.1}" 2>"$TMP" || bailout 1
+    read IP <"$TMP" ; rm -f "$TMP"
+
+    $DIALOG --inputbox "$MESSAGE7 $DV" 10 45 "${NM:-255.255.255.0}" 2>"$TMP" || bailout 1
+    read NM <"$TMP" ; rm -f "$TMP"
+
+    $DIALOG --inputbox "$MESSAGE8 $DV" 10 45 "${BC:-${IP%.*}.255}" 2>"$TMP" || bailout 1
+    read BC <"$TMP" ; rm -f "$TMP"
+
+    $DIALOG --inputbox "$MESSAGE9" 10 45 "${DG:-${IP%.*}.254}" 2>"$TMP"
+    read DG <"$TMP" ; rm -f "$TMP"
+
+    if [ -f "/etc/resolv.conf" ]; then
+      NS="$(awk '/^nameserver/{printf "%s ",$2}' /etc/resolv.conf)"
+    fi
+
+    $DIALOG --inputbox "$MESSAGE10" 10 45 "${NS:-${IP%.*}.254}" 2>"$TMP"
+    read NS <"$TMP" ; rm -f "$TMP"
+
+    if [ -w /etc/network/interfaces ]; then
+      awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}}
+        {if(!found){print}}
+        END{print "\niface '"$DV"' inet static\n\taddress '"$IP"'\n\tnetmask '"$NM"'\n\tnetwork '"${IP%.*}.0"'";if("'"$BC"'"!=""){print "\tbroadcast '"$BC"'"};if("'"$DG"'"!=""){print "\tgateway '"$DG"'"};if("'"$IWOURLINE"'"!=""){print "'"$IWOURLINE"'"};print "\n"}' \
+        /etc/network/interfaces >"$TMP"
+
+      cat "$TMP" >/etc/network/interfaces
+      rm -f "$TMP"
+
+      # Add an "auto" entry
+      #addauto
+    fi
+
+    if [ -n "$NS" ]; then
+      more=""
+
+      for i in $NS; do
+        if [ -z "$more" ]; then
+          more=yes
+          echo "$MESSAGE11 $i"
+          echo "nameserver $i" >/etc/resolv.conf
+        else
+          echo "$MESSAGE12 $i"
+          echo "nameserver $i" >>/etc/resolv.conf
+        fi
+      done
+    fi
+  fi
+  echo "Done."
+}
+
+DIALOG="dialog"
+# export XDIALOG_HIGH_DIALOG_COMPAT=1
+# [ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"
+
+# LANGUAGE etc.
+[ -r /etc/default/locale ] && . /etc/default/locale
+
+# Default all strings to English
+NET_DEVICE_NAME="Network_device"
+NET_DEVICE_NAME_W="Wireless_device"
+NET_DEVICE_NAME_FW="Firewire_device"
+NET_DEVICE_NAME_AUTO="Auto"
+MESSAGE0="No supported network cards found."
+MESSAGE1="Please select network device"
+MESSAGE2="Use DHCP broadcast?"
+MESSAGE3="Sending DHCP broadcast from device"
+MESSAGE4="Failed."
+MESSAGE5="Hit return to exit."
+MESSAGE6="Please enter IP Address for "
+MESSAGE7="Please enter Network Mask for "
+MESSAGE8="Please enter Broadcast Address for "
+MESSAGE9="Please enter Default Gateway"
+MESSAGE10="Please enter Nameserver(s)"
+MESSAGE11="Setting Nameserver in /etc/resolv.conf to"
+MESSAGE12="Adding Nameserver to /etc/resolv.conf:"
+MESSAGE13="Setup wireless options?"
+MESSAGE14="Failed to bring up the interface, would you like to reconfigure it?"
+MESSAGE15="Interface enabled, do you want it auto enabled at boot?"
+MESSAGEW0="No wireless network card found."
+MESSAGEW1="Configuration of wireless parameters for"
+MESSAGEW3="Please configure IP parameters of the interface first"
+MESSAGEW4="Enter the ESSID for"
+MESSAGEW5="\n\n\n(empty for 'any', not recommended !)\n"
+MESSAGEW6="Enter the NWID (cell identifier)\nfor"
+MESSAGEW7=", if needed\n\n\n"
+MESSAGEW8="Enter the mode for"
+MESSAGEW9="\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
+MESSAGEW10="Enter channel number for"
+MESSAGEW11="\n\n(0 bis 16, empty for auto or if you want to\n enter the frequency next)\n"
+MESSAGEW12="Enter the frequency for"
+MESSAGEW13="\n\n(e.g 2.412G, empty for auto)"
+MESSAGEW14="Enter the encryption key\nfor"
+MESSAGEW15="\n\n(empty for cleartext, not recommended !!)"
+MESSAGEW16="Enter additional parameters for\n'iwconfig"
+MESSAGEW17="' if needed, e.g.\n\n\nsens -80  rts 512  frag 512  rate 5.5M"
+MESSAGEW18="Enter additional parameters for\n'iwspy"
+MESSAGEW19="' if needed\n\n\n"
+MESSAGEW20="Enter additional parameters for\n'iwpriv"
+MESSAGEW21="' if needed\n\n\n"
+MESSAGEW22="Enable WPA support?"
+MESSAGEW23="Enter the WPA passphrase (passphrase must be 8..63 characters) for"
+MESSAGEW25="Would you like to store your wep key in it's own private file ("
+MESSAGEW26=")?   If you say no, your wep key will be stored in /etc/network/interfaces and will be readable by any account on your system.  You may want to 'chmod 600 /etc/network/interfaces' if you answer no to this question"
+MESSAGEW27="Is SSID broadcast enabled?"
+
+case "$LANGUAGE" in
+  de|at|ch)
+    NET_DEVICE_NAME="Netzwerkkarte"
+    MESSAGE0="Keine unterstützten Netzwerkkarte(n) gefunden."
+    MESSAGE1="Bitte Netzwerkkarte auswählen"
+    MESSAGE2="DHCP Broadcast zur Konfiguration benutzen? (Nein=manuell)"
+    MESSAGE3="Sende DHCP Broadcast von Netzwerkkarte"
+    MESSAGE4="Fehlgeschlagen."
+    MESSAGE5="Eingabetaste zum Beenden."
+    MESSAGE6="Bitte geben Sie die IP-Adresse ein für "
+    MESSAGE7="Bitte geben Sie die Netzwerk-Maske ein für "
+    MESSAGE8="Bitte geben Sie die Broadcast-Adresse ein für "
+    MESSAGE9="Bitte geben Sie das Default-Gateway ein"
+    MESSAGE10="Bitte geben Sie den/die Nameserver ein"
+    MESSAGE11="Setze Nameserver in /etc/resolv.conf auf "
+    MESSAGE12="Füge Nameserver in /etc/resolv.conf hinzu:"
+    MESSAGE13="WLAN-Einstellungen konfigurieren?"
+    MESSAGE14="Fehler beim Aktivieren des Interface, wollen Sie es neu konfigurieren?"
+    MESSAGE15="Interface aktiviert, beim Systemstart automatisch aktivieren?"
+    MESSAGEW0="Keine Wireless-Netzwerkkarte gefunden."
+    MESSAGEW1="Konfiguration der Wireless-Parameter von"
+    MESSAGEW2="Bitte Wireless-Netzwerkkarte auswählen"
+    MESSAGEW3="Bitte konfigurieren Sie vorher die IP-Parameter der Karte !"
+    MESSAGEW4="Geben Sie die ESSID für"
+    MESSAGEW5="ein\n\n\n(leer für 'any', nicht zu empfehlen !!)\n"
+    MESSAGEW6="Geben Sie ggf. die NWID (Cell Identifier)\nfür"
+    MESSAGEW7="ein, falls es eine gibt\n\n\n"
+    MESSAGEW8="Geben Sie den Modus für"
+    MESSAGEW9="ein\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
+    MESSAGEW10="Geben Sie den Kanal für"
+    MESSAGEW11="ein\n\n(0 bis 16, leer für auto oder Frequenz-\neingabe im nächsten Fenster)\n"
+    MESSAGEW12="Geben Sie die Frequenz für"
+    MESSAGEW13="ein\n\n(z.B. 2.412G, leer für auto)"
+    MESSAGEW14="Geben Sie den Verschlüsselungs-Key\nfür"
+    MESSAGEW15="ein\n\n(leer für Klartext, nicht zu empfehlen !!)"
+    MESSAGEW16="Geben Sie ggf. zusätzliche Parameter für\n'iwconfig"
+    MESSAGEW17="' ein, z.B.\n\n\nsens -80  rts 512  frag 512  rate 5.5M"
+    MESSAGEW18="Geben Sie ggf. zusätzliche Parameter für\n'iwspy"
+    MESSAGEW19="' ein\n\n\n"
+    MESSAGEW20="Geben Sie ggf. zusätzliche Parameter für\n'iwpriv"
+    MESSAGEW21="' ein\n\n\n"
+    MESSAGEW22="WPA-Unterstützung aktivieren?"
+    MESSAGEW23="WPA-Passwort eingeben für"
+    MESSAGEW25="WEP-Schlüssel in privater Datei abspeichern ("
+    MESSAGEW26="? Wenn Sie hier Nein sagen, wird der WEP-Schlüssel in /etc/network/interfaces abgespeichert und kann von allen Accounts auf dem System gelesen werden. Wenn Sie mit Nein antworten, sollten Sie vielleicht 'chmod 600 /etc/network/interfaces' ausführen."
+    MESSAGEW27="Ist SSID Broadcast aktiviert?"
+    ;;
+  es)
+    NET_DEVICE_NAME="Dispositivo_de_la_red"
+    MESSAGE0="Se han encontrado tarjetas de red no soportadas."
+    MESSAGE1="Por favor, seleccione el dispositivo fisico  de red"
+    MESSAGE2="¿Utilizar broadcast DHCP?"
+    MESSAGE3="Enviando broadcast DHCP desde el dispositivo"
+    MESSAGE4="Fallado."
+    MESSAGE5="Pulse enter para salir."
+    MESSAGE6="Por favor, inserte la dirección IP para "
+    MESSAGE7="Por favor, inserte la máscara de red para "
+    MESSAGE8="Por favor, inserte la dirección de Broadcast para "
+    MESSAGE9="Por favor, inserte la puerta de enlace por defecto"
+    MESSAGE10="Por favor, inserte los servidores DNS"
+    MESSAGE11="Poniendo los servidores de nombres de /etc/resolv.conf a "
+    MESSAGE12="Adicionando servidor DNS a /etc/resolv.conf:"
+    MESSAGEW0="No se ha encontrado una tarjeta inalámbrica."
+    MESSAGEW1="Configuración de los parámetros inalámbricos para"
+    MESSAGEW2="Por favor, seleccione un dispositivo de red inalámbrico"
+    MESSAGEW3="Por favor, configure primero los parámetros de la IP para la interfaz"
+    MESSAGEW4="Teclee el ESSID para"
+    MESSAGEW5="\n\n\n(vacío para 'cualquiera', Â¡no recomendado!)\n"
+    MESSAGEW6="Teclee el NWID (identificador de celda)\npara"
+    MESSAGEW7=", si es necesario\n\n\n"
+    MESSAGEW8="Teclee el modo para"
+    MESSAGEW9="\n\n(Managed(=por_defecto), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
+    MESSAGEW10="Teclee el número del canal para"
+    MESSAGEW11="\n\n(0 bis 16, vacío para auto o si lo prefiere\n teclee la frecuencia seguidamente)\n"
+    MESSAGEW12="Teclee la frecuencia para"
+    MESSAGEW13="\n\n(ej. 2.412G, vacío para auto)"
+    MESSAGEW14="Teclee la clave de encriptación\npara"
+    MESSAGEW15="\n\n(vacío para texto plano, Â¡Â¡no recomendado!!)"
+    MESSAGEW16="Teclee los parámetros adicionales para\n'iwconfig"
+    MESSAGEW17="' Si es necesario, ej.\n\n\nsens -80  rts 512  frag 512  rate 5.5M"
+    MESSAGEW18="Teclee los parámetros adicionales para\n'iwspy"
+    MESSAGEW19="' si es necesario\n\n\n"
+    MESSAGEW20="Teclee los parámetros adicionales para\n'iwpriv"
+    MESSAGEW21="' si es necesario\n\n\n"
+    ;;
+  it)
+    NET_DEVICE_NAME="Periferica_di_rete"
+    NET_DEVICE_NAME_W="Periferica_Wireless"
+    NET_DEVICE_NAME_FW="Periferica_Firewire"
+    NET_DEVICE_NAME_AUTO="Automatico"
+    MESSAGE0="Non ho trovato schede di rete supportate."
+    MESSAGE1="Per favore seleziona la periferica di rete"
+    MESSAGE2="Devo utilizzare il broadcast DHCP?"
+    MESSAGE3="Sto inviando il broadcast DHCP dalla periferica"
+    MESSAGE4="Fallito."
+    MESSAGE5="Premi invio per uscire."
+    MESSAGE6="Inserisci l'indirizzo IP per "
+    MESSAGE7="Inserisci la maschera di rete per "
+    MESSAGE8="Inserisci l'indirizzo di broadcast per "
+    MESSAGE9="Inserisci il Gateway di default"
+    MESSAGE10="Inserisci i Nameserver"
+    MESSAGE11="Sto settando i Nameserver in /etc/resolv.conf a"
+    MESSAGE12="Aggiungo i Nameserver in /etc/resolv.conf:"
+    MESSAGE13="Configuro le opzioni del wireless?"
+    MESSAGE14="Non riesco ad attivare l'interfaccia, vuoi riconfigurarla?"
+    MESSAGE15="Interfaccia attiva, vuoi abilitarla automaticamente all'avvio?"
+    MESSAGEW0="Nessuna scheda di rete wireless trovata."
+    MESSAGEW1="Configurazione dei parametri wireless per"
+    MESSAGEW3="Configura i parametri IP dell'interfaccia per prima cosa!"
+    MESSAGEW4="Inserisci l'ESSID per"
+    MESSAGEW5="\n\n\n(vuoto per 'tutti', non raccomandato!)\n"
+    MESSAGEW6="Inserisci il NWID (cell identifier)\nper"
+    MESSAGEW7=", se necessario\n\n\n"
+    MESSAGEW8="Inserisci la modalità per"
+    MESSAGEW9="\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
+    MESSAGEW10="Inserisci il numero di canale per"
+    MESSAGEW11="\n\n(da 0 a 16, vuoto per automatico o se vuoi\n inserire la frequnza dopo)\n"
+    MESSAGEW12="Inserisci la frequenza per"
+    MESSAGEW13="\n\n(es. 2.412G, vuoto per automatico)"
+    MESSAGEW14="Inserisci la chiave crittografica\nper"
+    MESSAGEW15="\n\n(vuoto per trasmissione in chiaro, non raccomandato!)"
+    MESSAGEW16="Inserisci i parametri aggiuntivi per\n'iwconfig"
+    MESSAGEW17="' se necessario, es.\n\n\nsens -80  rts 512  frag 512  rate 5.5M"
+    MESSAGEW18="Inserisci parametri aggiuntivi per\n'iwspy"
+    MESSAGEW19="' se necessario\n\n\n"
+    MESSAGEW20="Inserisci parametri aggiuntivi per\n'iwpriv"
+    MESSAGEW21="' se necessario\n\n\n"
+    MESSAGEW22="Abilito il supporto WPA?"
+    MESSAGEW23="Inserisci la Passphrase di WPA\nper"
+    MESSAGEW25="Vuoi memorizzare la tua chiave WEP nel suo file riservato ("
+    MESSAGEW26=")?   Se dici no, la tua chiave WEP sarà memorizzata nel file /etc/network/interfaces e sarà leggibile da tutti gli account del tuo sistema. Dovresti fare 'chmod 600 /etc/network/interfaces' se rispondi no a questa domanda"
+    MESSAGEW27="Is SSID broadcast enabled?"
+    ;;
+fr)
+    NET_DEVICE_NAME="Carte_réseau"
+    MESSAGE0="Aucune carte réseau supportée trouvée."
+    MESSAGE1="Sélectionnez la carte réseau, svp"
+    MESSAGE2="Voulez-vous utiliser DHCP?"
+    MESSAGE3="Envoi de broadcast DHCP par la carte"
+    MESSAGE4="Echec."
+    MESSAGE5="Appuyez sur Entrée pour quitter."
+    MESSAGE6="Entrez une adresse IP pour "
+    MESSAGE7="Entrez le Masque de Sous-réseau pour "
+    MESSAGE8="Entrez l'adresse Broadcast pour "
+    MESSAGE9="Entrez l'IP de la Passerelle par Défaut"
+    MESSAGE10="Entrez Les DNS de votre FAI"
+    MESSAGE11="Réglage des DNS dans /etc/resolv.conf"
+    MESSAGE12="Ajoût des DNS dans /etc/resolv.conf:"
+    MESSAGEW0="Aucune carte Wifi trouvée."
+    MESSAGEW1="Configuration des paramètres de réseau sans fil pour "
+    MESSAGEW3="SVP, Commencez par configurer les paramètres d'IP de l'interface!"
+    MESSAGEW4="Entrez l'ESSID pour"
+    MESSAGEW5="\n\n\n(ne rien mettre pour 'peu importe' n'est pas recommandé !)\n"
+    MESSAGEW6="Entrez le NWID (cell identifier)\npour"
+    MESSAGEW7=", si nécessaire\n\n\n"
+    MESSAGEW8="Entrez le mode pour "
+    MESSAGEW9="\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n"
+    MESSAGEW10="Entrez numéro de canal pour"
+    MESSAGEW11="\n\n(0 Ã  16, vide pour auto ou si vous voulez\n entrer la fréquence ensuite)\n"
+    MESSAGEW12="Entrez la fréquence pour"
+    MESSAGEW13="\n\n(ex: 2.412G, vide pour auto)"
+    MESSAGEW14="Entrez la clé de cryptage\npour"
+    MESSAGEW15="\n\n(vide pour texte en clair, non recommandé !!)"
+    MESSAGEW16="Entrez des paramètres additionnels pour\n'iwconfig"
+    MESSAGEW17="' si nécessaire, comme \n\n\nsens -80  rts 512  frag 512  rate 5.5M"
+    MESSAGEW18="Entrer des paramètres additionnels pour\n'iwspy"
+    MESSAGEW19="' si nécessaire\n\n\n"
+    MESSAGEW20="Entrer des paramètres additionnels pour\n'iwpriv"
+    MESSAGEW21="' si nécessaire\n\n\n"
+    MESSAGEW22="Activer la protection WPA?"
+    MESSAGEW23="Entrez le mot-de-passe WPA pour"
+    MESSAGEW25="Clé WEP sauvée dans un fichier privé ("
+    MESSAGEW26="? Si vous répondez non ici, la clé WEP sera stockée dans /etc/network/interfaces et pourra Ãªtre accessible Ã  tous les utilisateurs de la machine. Peut-être serait-il alors judicieux de fixer ainsi les droits de 'interfaces': 'chmod 600 /etc/network/interfaces'"
+    MESSAGEW27="Is SSID broadcast enabled?"
+    ;;
+esac
+
+NETDEVICESCOUNT=0
+LAN=$(tail -n +3 /proc/net/dev|awk -F: '{print $1}'|sed "s/\s*//"|grep -v -e ^lo -e ^vmnet|sort)
+[ -n "$WLAN" ] || WLAN=$(tail -n +3 /proc/net/wireless 2>/dev/null|awk -F: '{print $1}'|sort)
+unset LAN_DEVICES WLAN_DEVICES FIREWIRE_DEVICES NETDEVICES
+while read dev mac; do
+#echo "Making NETDEVICES $NETDEVICESCOUNT $dev"
+  iswlan=$(echo $dev $WLAN|tr ' ' '\n'|sort|uniq -d)
+  isauto="0"
+  grep auto /etc/network/interfaces | grep -q $dev && isauto="1"
+  driver=$(ethtool -i $dev 2>/dev/null|awk '/^driver:/{print $2}')
+  if [ "$driver" ]; then
+    if [ "$iswlan" ]; then
+      NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac D::$driver W::1 F::0"
+    else
+      NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac D::$driver W::0 F::0"
+    fi
+  else
+    if [ "$iswlan" ]; then
+      NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac W::1 F::0"
+    else
+      NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac W::0 F::0"
+    fi
+  fi
+#echo "Made to ${NETDEVICES[$NETDEVICESCOUNT]}"
+  ((NETDEVICESCOUNT++))
+done < <(ifconfig -a|grep Ethernet|grep -v ^vmnet|awk '! /^\s/{print $1" "$5}')
+for dev in $LAN; do
+  if [ "$(ethtool -i $dev 2>/dev/null|awk '/^bus-info:/{print $2}')" == "ieee1394" ]; then
+    isauto="0"
+    grep auto /etc/network/interfaces | grep -q $dev && isauto="1"
+    NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto D::$(ethtool -i $dev 2>/dev/null|awk '/^driver:/{print $2}') W::0 F::1"
+    ((NETDEVICESCOUNT++))
+  fi
+done
+
+#NETDEVICES="$(cat /proc/net/dev | awk -F: '/eth.:|lan.:|tr.:|wlan.:|ath.:|ra.:/{print $1}')"
+
+if [ -z "$NETDEVICES" ]; then
+  $DIALOG --msgbox "$MESSAGE0" 15 45
+  bailout
+fi
+
+count="$NETDEVICESCOUNT"
+
+if [ "$count" -gt 1 ]; then
+  DEVICELIST=""
+  mycount=0
+  while [ $mycount -lt $count ]; do
+    DEVICE=${NETDEVICES[$mycount]}
+#echo "$mycount is $DEVICE"
+    device2props
+#echo "name: $DEVICENAME auto: $isauto fw: $isfirewire mac: $mac driver: $driver"
+    props2string
+    DEVICELIST="$DEVICELIST $mycount $MY_DEVICE_NAME"
+    ((mycount++))
+  done
+fi
+
+# To translate
+EXITKEY="E"
+EXITMENU="$EXITKEY Exit"
+
+# main program loop until they bailout
+while (true); do
+  # first get the device
+  if [ "$count" -gt 1 ]; then
+    rm -f "$TMP"
+    $DIALOG --menu "$MESSAGE1" 18 60 12 $DEVICELIST $EXITMENU 2>"$TMP" || bailout
+    read DV <"$TMP" ; rm -f "$TMP"
+    [ "$DV" = "$EXITKEY" ] && bailout
+  else
+    # Only one device
+    DV=0
+    # they have asked to stop configuring the interface so exit
+    [ -z "$IFACEDONE" ] || bailout
+  fi
+  # device config loop
+  IFACEDONE=""
+  while [ -n "$DV" -a -z "$IFACEDONE" ]; do
+    configiface
+    ifdown $DV
+    sleep 3
+    if ! ifup $DV; then
+      $DIALOG --yesno "$MESSAGE14" 15 50 || IFACEDONE="DONE"
+    else
+      $DIALOG --yesno "$MESSAGE15" 15 50 && addauto || remauto
+      IFACEDONE="DONE"
+    fi
+  done
+done
+
+## END OF FILE #################################################################
diff --git a/sbin/scanmodem b/sbin/scanmodem
new file mode 100755 (executable)
index 0000000..8ca1128
--- /dev/null
@@ -0,0 +1,4766 @@
+#!/bin/bash
+echo
+NOTE="  ONLY use scanModem downloaded as: http://linmodems.technion.ac.il/packages/scanModem.gz"
+UPDATE="2005_June_02"
+cat<<END>/dev/null
+
+ Browse http://linmodems.technion.ac.il   and 
+ download scanModem.gz . Within a Linux partition only:
+    gunzip scanModem.gz
+ To make it executable:
+    chmod +x scanModem
+ Run diagnositics with:
+    ./scanModem
+
+This following is admittedly a hodge podge of historically entered code bits and diverse contributions.
+The maintainers weekly updates are based on User's problems and Other's expert advice. 
+These are in the  Archives at http://www.linmodems.org with 
+a searchable copy at http://linmodems.technion.ac.il/
+Maintainer Marvin Stodolsk y  (MarvS) does occassionally simplify this informal code heap.
+
+Outputs are written to a newly created folder Modem/  
+The ModemData.txt therein has the major diagnostic output.  
+It is overly VERBOSE by design, so that all information Potentially Usefull is presented.  
+This enables more experienced discuss@linmodems.org Volunteers
+to pick out the bits cogent to a Novices query, without having to search elsewhere.
+Thus help queries from Novices can be quickly returned with minimal effort. 
+
+scanPCI written by Chris Hebeisen is the predecessor of scanModem.  It was written to serve
+within the ltmodem software support packages at http://ltmodem.heby.de .  The role is now
+fullfilled  by this this script, but called by name "scanmodem", to limit non-relevant output in 
+the ltmodem package environment.
+
+END
+
+echo UPDATE=$UPDATE
+# BaseName can be inherited from the ltmodem script ./build_module or Installers or checkout
+if test -z "$BN" ; then  BN=`basename $0` ; fi
+if [ "$BN" = "scanModem" ] ; then  echo $NOTE ; fi
+
+# for script testing, with $2 and $3 format  VendorID:DeviceID
+if [ "$1" = "test" ] ; then
+  TST=1
+  PCIDEV="$2"
+  SUBSYS="$3"
+  DISTR="$4"
+  SYS="$5"
+  GCCmajor="$6"
+  CPU="$7"
+fi
+
+# Short term files have names 0tmpfile.1 2 3 etc.
+if test -z "$TMPM" ; then
+  if test -d /dev/shm ; then
+    # use /dev/shm RAM space if possible for transient writes
+    SHM=`ls -dl /dev/shm | cut -d' ' -f1`
+    if [ "$SHM" = "drwxrwxrwt" ] ; then 
+      TMPM=/dev/shm/0tmpfile
+    else
+      TMPM=0tmpfile
+    fi  
+  fi
+else
+  TMPM=0tmpfile
+fi
+echo > $TMPM
+echo 
+# conditional when scanmodem is used in ltmodem.deb or .rpm installation
+#  with stops disabled
+mkdir -p Modem
+if ! [ "$BN" = "scanModem" ] ; then
+  FAST=yes
+  RECORD2=/dev/null
+else
+  RECORD2=Modem/YourModem.txt
+  echo  $0 should ONLY be run within a Linux/UNIX partition.
+  echo  If within a MicroSoft/DOS partition, abort with Ctrl-C now !!!
+  echo  Copy scanModem.gz to your Linux partition and restart.
+  echo
+fi
+if [ "`pwd`" = "/" ] && ! [ "$ENVIR" = "rpm" ] ; then
+  cat<<END
+
+ $0 should NOT be run in the / directory!!
+ Copy scanModem to /root/ or /tmp/ of some /home/User/ folder.
+ Exiting now
+
+END
+  exit
+fi
+
+if test -z "$RECORD" ; then
+  mkdir -p Modem
+  RECORD=Modem/ModemData.txt
+  echo > $RECORD
+else
+  echo ------------ beginning SCANMODEM section ------ >>$RECORD
+fi
+echo > $RECORD2
+
+# Defining other needed variables, there may be testing inputs
+if test -z "$SYS" ; then
+  SYS=`uname -r`
+fi
+FILTER="$SYS"_
+# FILTER needed for Debian style distros
+
+# SYS=2.6.8.1-3-686
+MAJOR=`echo $SYS | cut -d. -f1-2`
+Ktest1=`echo $SYS | cut -d- -f1`
+Ktest2=`echo $Ktest1 | cut -d. -f4`
+KERNEL_RELEASE=`echo $SYS | cut -d. -f3-`
+KERNEL_RELEASE_NUM=`echo $KERNEL_RELEASE | sed 's/^\([0-9][0-9]*\).*/\1/'`
+if test -n "$Ktest2" ; then
+  KVER=`echo $SYS | cut -d. -f1-3`
+  KEXT=.$Ktest2
+  BASE=`echo $SYS | cut -d- -f1`
+  LOCAL=`echo $SYS | cut -d- -f2-`
+  PVER="$BASE"_"$LOCAL"
+else
+  KVER=`echo  $SYS | cut -d- -f1`
+  KEXT=`echo  $SYS | cut -d- -f2-`
+  PVER="$KVER"_"$KEXT"
+fi
+# PVER needed for rpm underscore syntax
+
+if test -z "$CPU" ; then
+  CPU=`uname -m`
+fi
+# CPU=i686
+# Define version, currently 8.26a9, within ltmodem CVS maintained by Mark Spieth
+LT_VERSION=8.31a10
+
+if test -z "$DISTR" ; then
+  STEM=`cat /etc/issue | cut -c 2- | cut -d' ' -f1`
+  distro=`ls /etc/* | grep $STEM | grep version | cut -d_ -f1 | cut -d- -f1 | cut -d/ -f3`
+ # Acquire distribution data
+  DISTRO_FILES="redhat-release SuSE-release mandrake-release conectiva-release  \
+   bluepoint-release  slackware-version  gentoo-release debian_version knoppix-version \
+   fedora-release xandros-desktop-version "
+   # redhat MUST proceed mandrake in this listing as Mandrake has an /etc/redhat-release
+ for i in $DISTRO_FILES
+ do
+  if [ -a /etc/$i ] ; then
+    DISTRO=$i
+    # generating short name
+    if [ -n "$DISTRO" ] && [ "$DISTRO" = "fedora-release" ] ; then
+      FEDORA=1
+    else
+      DISTR=`ls /etc/$i | cut -d/ -f3 | cut -d"-" -f1`
+    fi
+    if [ "$DISTR" = "debian_version" ] ; then
+       DISTR=debian
+    fi
+    DVERSION=`cat /etc/$i`
+  fi
+  done
+fi
+
+if [ -z "$DISTRO" ] && [ -z "$DISTR" ]  ; then
+  DISTR="Not_identified"
+fi # DISTR
+if [ -f /etc/issue ] ; then 
+  ISSUE=`cat /etc/issue | cut -d' ' -f1-2`
+fi
+if [ "$BN" = "scanModem" ] ; then
+  cat<<END>Modem/UNSUBSCRIBE.txt
+   For instructions to UNSUBSCRIBE from discuss@linmodems.org,
+   send an email to:   discuss-help@linmodems.org
+END
+  cat<<END>>$RECORD
+
+ DO use the following line as the email Subject Line, to alert cogent experts:
+      $BN, $ISSUE kernel $SYS
+ Occassionally reponses are blocked by an Internet Providers mail filters.
+ So do in a day also check the Archived responses at DISCUSS@linmodems.org
+Code updated on:  $UPDATE
+------------ --------------  System information ------------------------
+`cat /etc/issue | cut -d'\' -f1`
+ distro=$distro
+ on System with processor: $CPU
+ currently under kernel:   $SYS
+END
+fi
+if [ "$DISTR" = "slackware" ] ; then
+    echo "  m.mohr@laposte.net will help with Slackware problems" >>$RECORD
+fi 
+if [ "$CPU" = "x86_64" ] || [ "$CPU" = "x86_64-smp" ] ; then
+  cat<<END>>$RECORD
+  
+ See success reports on a softmodem installation on AMD Athlon 64 system
+ http://linmodems.technion.ac.il/archive-fourth/msg02592.html -  slmodem compatible
+ http://linmodems.technion.ac.il/archive-fourth/msg03581.html -   Conexant hsfmodem
+
+END
+fi
+if [ "$MAJOR" == "2.6" -a $KERNEL_RELEASE_NUM -ge 10 ]; then
+  cat<<END>>$RECORD
+
+There are emerging complications under 2.6.10 and later kernels.  Concerning code for:
+Smartlink slmodem :
+   slmodem-2.9.9d.tar.gz at http://linmodems.technion.ac.il/packages/smartlink/
+      has the current fixes.  Related messages are:
+   http://www.datiku.com/documents/2610_migration.php
+   http://www.ussg.iu.edu/hypermail/linux/kernel/0409.3/0345.html 
+   http://linmodems.technion.ac.il/archive-fourth/msg03736.html .
+   http://linmodems.technion.ac.il/packages/smartlink/  has an upgrab-winmodem.tar.gz,
+       providing a driver to alleviate inappropriate capture of a winmodem by a serial port driver. 
+Lucent/Agere DSP/ltmodem:
+  http://linmodems.technion.ac.il/archive-fourth/msg03733.html 
+Concerning Intel-536ep and 537
+   http://www.ubuntulinux.org/wiki/IntelFiveThreeSixEPModemHowto/ 
+   http://linmodems.technion.ac.il/archive-fifth/msg00280.html
+   http://linmodems.technion.ac.il/archive-fifth/msg00881.html
+   
+END
+fi
+
+ls /boot/config* &> $TMPM
+if grep config $TMPM >/dev/null ; then
+  if grep "CONFIG_REGPARM=y" /boot/config*>/dev/null ; then
+    cat<<END>>$RECORD
+
+ The kernel-$SYS was compiled with CONFIG_REGPARM, providing more compact and faster code.
+
+END
+  fi
+fi
+if [ "$SYS" = "2.4.25-1-multimedia-686" ] ; then
+   cat<<END>>$RECORD
+   
+ For the Debian derived DeMudi multimedia distribution, the kernel-headers do Not faithfully
+ represent the installation kernel  version 2.4.25-1-multimedia-686.  This may block compilation
+ of certain drivers.  To compile auxiliary drivers,
+ update to a more recent Debian kernel and matching kernel-headers. Subsequently compile
+ modem drivers under the new kernel.  For the Lucent/AgereSystems DSP modem, a driver pair
+ and instructions are included in  ltmodem-2.4.25-1-multimedia-686.tar.gz
+ at http://linmodems.technion.ac.il/packages/ltmodem/Demudi/
+END
+fi
+
+GCC_INPUT=`cat /proc/version |  sed -e 's/)/ /g' | sed -e 's/(/ /g'`
+# sed to remove (  and  )
+GCC_PC=`for i in $GCC_INPUT ; do echo $i ; done | grep -A2 gcc | grep -A1 ersion | grep -v  ersion` 
+# Picks our version following gcc
+echo " The kernel was assembled with compiler:  $GCC_PC">> $RECORD
+GCC_TEST=`echo $GCC_PC | cut -d. -f1`
+echo $GCC_TEST > $TMPM
+if grep "-" $TMPM >/dev/null ; then
+  GCCmajor=`echo $GCC_TEST | cut -d- -f2`
+else
+  GCCmajor=$GCC_TEST
+fi
+
+if test -z "$GCC" ; then
+  # could be test input
+  GCC=`gcc -dumpversion`
+  GCCs=`echo $GCC | cut -d. -f 1-2`
+fi
+if test -z "$GCC" ; then
+  echo " a $GCCmajor package must be installed to support driver compiling">>$RECORD
+  GCC=none
+else
+  echo " with current System compiler GCC=$GCC">>$RECORD
+  GCCsys=`echo $GCC  | cut -d. -f1-`
+  if [ -L /usr/bin/gcc ] ; then
+    echo "    /`ls -l /usr/bin/gcc | cut -d/ -f2-`" >>$RECORD
+  fi
+fi
+echo >>$RECORD
+echo "Checking for kernel-headers needed for compiling.">>$RECORD
+SRCS=`ls -d /usr/src/lin* /usr/src/ker*  /lib/modules/$SYS/build  2>/dev/null`
+if test -n "$SRCS" ; then
+  for d in $SRCS
+  do
+    if test -f $d/include/linux/version.h ; then
+      if grep $SYS $d/include/linux/version.h >/dev/null ; then
+        echo " kernel-headers have base folder $d">>$RECORD
+      fi
+    fi
+  done
+else
+  cat<<END>>$RECORD
+Kernel-header resources are not evident.
+Within your Linux distributions' installation CD or online resource (and mirrows), search for :
+  Distribution  PackageName                    OnLine
+  ----------------------------------------------------------------------
+ Debian                kernel-headers-$SYS     http://www.debian.org/distrib/packages or install CD
+ Ubuntu                linux-headers-$SYS              http://http://packages.ubuntu.com/ or install CD
+    Debian & Ubuntu will also require installation of kernel-kbuild package 
+ Mandrake      kernel-source-$SYS         If not present on install CDs search
+       http://mirror.switch.ch/ftp/mirror/mandrake/official/10.0/i586/Mandrake/RPMS/ 
+       http://rpms.mandrakeclub.com/rpms/mandrake/official/LByName.html, or other mirrors.
+  SuSE         kernel-source-$SYS               , kernels are named k_deflt
+One of which must be installed if compiling drivers to match kernel $SYS proves necessary.
+Within the output Modem/ folder, read CompilingDrivers.txt for details.
+  
+END
+fi
+echo >>$RECORD
+
+# Check for /dev/modem link
+if [ -L /dev/modem ] ; then
+  echo " Modem symbolic link is:  /`ls -l /dev/modem | cut -d/ -f2-`" >>$RECORD
+else
+  echo " A /dev/modem symbolic link is not set.">>$RECORD
+fi
+
+if test -d /dev/tts ; then
+   echo " Checking for /dev/tts/  devices" >> $RECORD
+   ls -l /dev/tts/ >> $RECORD
+   echo >> $RECORD
+fi
+if test -f  /proc/bus/usb/devices ; then
+   if grep odem /proc/bus/usb/devices>/dev/null ; then
+       grep odem /proc/bus/usb/devices  >> $RECORD
+       # S:  Product=U.S. Robotics 56K Faxmodem USB
+       if grep "USB  HSF Modem" /proc/bus/usb/devices>/dev/null ; then
+          echo "  Download the hsfmodem package from http://www.linuxant.com/drivers">> $RECORD 
+       fi
+   else
+      echo " USB modem not detected.">> $RECORD 
+   fi
+else
+   echo "   /proc/bus/usb/devices file not present, barring USB modem query.  ">> $RECORD 
+fi
+echo >> $RECORD
+
+PNP=`dmesg | grep "IRQ XX" `
+if test -n "$PNP"  ;  then
+  cat<<END>> $RECORD
+
+  If after boot up
+# dmesg  | grep "IRQ XX" 
+displays:
+    IRQ XX nobody cared
+ a change in the bootup BIOS may be necessary to a non-PNP choice is likely necessary.
+END
+fi
+
+if [ "$DISTR" = "mandrake"  ] ; then
+   cat<<END |  tee -a $RECORD
+   
+   For Mandrake 9.1 later, installation of the pciutils.rpm  package providing  lspci is necessary.
+   The installed utility   lspcidrake  is NOT an adequate alternate for scanModem support.
+
+END
+fi
+
+LSPCI_PATH="/bin /usr/bin /sbin"
+for i in $LSPCI_PATH
+do
+  if test -x $i/lspci
+  then
+    LSPCI=$i/lspci
+  fi
+done
+if test -z $LSPCI
+then
+  echo "+----------------------------------------------+"
+  echo "|    WARNING: lspci not found  - exiting       |"
+  echo "|    Please install the package:  pciutils     |"
+  echo "+----------------------------------------------+"
+  echo
+  exit 1
+  echo
+else
+  if ! $LSPCI &>/dev/null
+  then
+    echo "WARNING: $LSPCI returned error - not checking for modem"
+    echo
+    echo Exiting
+    echo
+    exit 1
+  fi
+fi
+# ending lspci test section
+
+# Acquire PCI bus slots.
+echo Modem > $TMPM
+echo modem >> $TMPM
+echo "erial controller" >> $TMPM
+# filering for modem
+PCIBUS=`$LSPCI 2>/dev/null  | grep -f $TMPM | cut -d' ' -f1`
+BUS2=`$LSPCI -n 2>/dev/null | grep " 07..: " | cut -d' ' -f1`
+# add CLass 07 devices if not already recognized
+echo "$PCIBUS" > $TMPM.1
+if ! [ "$BUS2" = "" ]  ; then
+  for i in $BUS2
+  do
+  if ! $LSPCI 2>/dev/null  | grep $i | grep "FIR Port" >/dev/null ; then
+    # exclude Infrared controllers
+    if ! grep $i $TMPM.1 >/dev/null ; then
+      # exclude already captured PCIBUS
+      PCIBUS="$PCIBUS $i"
+    fi
+  fi
+  done
+fi
+if test -n "$TST" ; then
+  PCIBUS=`echo $PCIBUS | cut -d' ' -f1`
+fi
+
+if test -z "$PCIBUS" && [ -z "$PCIDEV" ] ; then
+  # Display all PCI devices only if no candidates.
+  echo --------- lspci scan ---------------- >>$RECORD
+  echo " PCI_bus">>$RECORD
+  $LSPCI 2>/dev/null >>$RECORD
+  echo ------------------------------------- >>$RECORD
+
+# if no modem candidates AND not PCIDEV input test
+  if  $LSPCI 2>/dev/null  | grep "udio controller" | grep M5451 >/dev/null ; then
+    AUDIO=`$LSPCI 2>/dev/null  | grep "udio controller" | cut -d' ' -f2-`
+    cat<<END>>$RECORD
+
+ Though not displayed, an embedded soft modem may reside in this Audio card:
+    $AUDIO
+ which sadly is not yet supported under Linux.  However a low level driver may 
+ in the future become available, which provide access to the higher level COMM
+ functions already avialable in the SmartLink slmodemd. 
+ Browse the Modem/Slmodem.txt for some details. 
+
+END
+  fi
+  
+  cat<<END>>$RECORD
+
+ A modem was not detected among the above PCI devices.
+ This indicates that the modem, if present has a non-standard or ISA bridge.
+ Please follow the directions in Modem/SoftModem.txt  for identifying the modem properties
+ when booting under Microsoft Windows. Also access any documentation sources
+ on yourchipset.  Guidance can only be provided AFTER
+ the chipset and/or its drivers have been identified.
+ The IBM mwave modem does have a driver within 2.6.n kernel+module releases.  If is at:
+        /lib/modules/$AYA/kernel/drivers/char/mwave/mwave.ko
+and can be loaded only if Mwave hardware is present  Test with:        
+ #  su - root
+ followed by
+ # modprobe wmave
+ If successful see: 
+       http://tedfelix.com/Mwave/
+       http://www.linuxdocs.org/HOWTOs/mini/ACP-Modem/   , section 2.4 and later.
+       http://www.freenetpages.co.uk/hp/mjbou/dwtpul.html
+       http://tedfelix.com/Mwave/
+       
+ A failure response has output like:
+       FATAL: Error inserting mwave (/lib/modules/2.6.10-1-686/kernel/drivers/char/mwave/mwave.ko): Input/output error
+indicating absence of an Mwave modem
+
+END
+else
+
+$LSPCI | grep audio >>$RECORD
+echo >>$RECORD
+# The 2nd Table in Modem/SoftModem.txt is parsed if a soft modem controller is resident
+cat<<END>Modem/SoftModem.txt
+    
+                  Soft Modem Information
+
+The earlier generations of modems had chips with digital signal processing (DSP) capability in which
+most of the total modem effort proceeded.  The "soft modem" is a generic name for modems 
+which lack DSP.  Rather, the CPU does almost all the signal processing as directed by software code. 
+There are a few soft modems which are fully identified by the primary PCI ID of the modem card, 
+such as the Agere Systems 11c1:048(a,b,c,d) series.
+
+The larger family is more troublesome, for identification of supporting software. 
+They are comprised of a primary modem controller which can host a variety of Subsystems. 
+Both the primary PCI ID and "mc97 codec"  written in a Subsystem firmware chip are required,
+for assessing support under Linux.  Only subsequently is the Subsystem PCI ID useful, for record keeping.  
+
+The scanModem script contains five routines for acquiring  the critical mc97 codec identification:
+1) a modem driver independent test, only usefull for some of the earliest soft modems,
+   described at the end of this file;
+2) a test using modem drivers already on your System,  as part of  the ALSA (Advanced Linux Sound
+ Architecture) software package ; See Slmodem-ALSA.txt for details.
+3) a test requiring the SmartLink slamr.ko driver:  see Slmodem.txt ;
+4) comparison with PCI IDs with codecs historically gathered and stored within scanModem;
+5) In case 1-4 are not adequate, there are the following instructions for running ATI queries under Microsoft windows.
+Chipset information may be obtained under Microsoft Windows through:
+ 1) Start > Settings > Control Panel > Classical View (for WinXP) > Modem  , or alternatively,
+   Start > Settings > Control Panel > Classical View (for WinXP) > System > Devices > Modem
+   Do the modem diagnostics test, if available, looking for manufacturer chipset,
+   It is within information output in lines:  ATI - specifications
+      Try to identify the modem setup file, with name perhaps MODEM.INF
+ 2) Open a COMM console, and send ATI commands to the modem (ATI, ATI1, ATI2, etc)
+   which may elicit chipset and driver information. Here is an example
+       ATI3 - Agere SoftModem Version 2.1.22
+       ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27
+   successfully identifying an Agere SoftModem chipset, both by name and through
+   the:softmodem SIL ID:              AC97 ID:SIL REV:0x27
+ The IBM mwave modem cannot be detected by scanModem.  
+ But the mwave driver is included in 2.6.n kernel releases.  So try
+ # modprobe mwave
+ Either the module will load, or the absence of the modem will be indicated by:
+FATAL: Error inserting mwave (/lib/modules/2.6.10-1-686/kernel/drivers/char/mwave/mwave.ko): Input/output error
+See http://www.linuxdocs.org/HOWTOs/mini/ACP-Modem/  for details on this modem.
+
+Subsystems for softmodems are primarily made by Silicon Labs (SIL), 
+under contract to companies like Intel, Agere Systems, Motorola  etc.
+In the Table below,
+The ChipMadeBy does NOT imply software support directly from that manufacturer.
+
+The chart of information below is largely harvested from messages to discuss@linmodems.org.
+ A codec_indent  like REV:0x27 is reported by diagnostics under Microsoft, as illustrated above. 
+The matching designation like SIL27 are translations under Linux, 
+    output by a diagnostic of the slamr.ko driver, from the SmartLink slmodem software. 
+The SIL is an abbreviation for  Silicon Laboratorys Inc., which provides Subsystems for many total modem assemblies. 
+SML is used below as abbreviation for SmartLink Inc.,  with official driver resources at
+       http://www.smlink.com/main/index1.php?ln=en&main_id=40  and recent patches provided at:
+       http://linmodems.technion.ac.il/packages/smartlink/ 
+
+   codec_ident    ID translation     driver sources 
+---------------------  ------------------      -------------------------       
+ 0x21      SIL21   PCTel     for 2.4.n kernels, pctel-2.7.9 at http://linmodems.technion.ac.il/pctel-linux,
+                                             and SML for  2.4.n or 2.6.n kernels
+ 0x23      SIL23   PCtel      same as SIL21               
+ 0x22      SIL22   SML              
+ 0x24      SIL24   Broadcom, use   SML drivers
+ ????      BCM64  Broadcom, use   SML in ALSA mode,  but only under the Intel ICH modem controllers.
+0x25      SIL25   Intel 537AA          "  or SML
+????        INT65   Intel 537EA        http://linmodems.technion.ac.il/packages/Intel/537/ or SML
+0x26      SIL26    Silicon Integrated Systems (SiS), use SML drivers
+0x27      SIL27   AgereSystems(AS), use  SML  needed under 2.6.n kernels,
+                             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  
+ ????       CXT(21,22,23,29,41  and others)   Conexant -       http://www.linuxant.com/drivers, the hsfmodem package      
+ -------------------------------------------------------------------------------- 
+  If a novel identifier is displayed during diagnostics, please report to discuss@linmodems.org
+A rough/practical guide is first given, with some qualifications and exceptions to follow:
+     SILnm  (n,m digits) are SML supportable;
+     CXTnm are ONLY supported by the  http://www.linuxant.com/drivers, the hsfmodem package ;
+     INTnm  are supported by Intel drivers and perhaps slmodemd with ALSA support;
+     BCMnm, INT65  (and similar name styles) have had successes with SmartLink slmodem in ALSA mode.
+     See the companion Slmodem-ALSA.txt for details.
+Qualifications  to the Table below relate to Linux software support for soft modem controllers.
+In particular,  no software package provides support for all soft modem controllers.
+            
+Primary              
+PCI_IDs           Name                    Possible support by:
+---------------  -----------------------------  -------------------------
+8086:1080 ac97 controller                              i . 
+8086:2416 82801AA ICHAA >              + A a  p c .
+8086:2426 82801AB ICHAB >              + A a .
+8086:7186 >                                                            c .
+8086:7196 82440 Banister  >            + A a      c .
+8086:2446 82801BA ICH2  >              + A a p c .
+8086:2486 82801CA/CAM ICH3 >   + A a p c i .
+8086:24c6 82801DB ICH4 >               + A a   c i b .
+8086:24d6 82801EB ICH5 >               + A     c i .
+8086:266d 82801EB ICH6>                +       c .
+8086:xxxx types above are from Intel   
+
+1039:7013  SIS 630 >                           + a p c i .
+1039:7018  SIS 960 >                           +       i .
+10de:01c1  Nvidia Corp >                       +       i .
+10de:00d9  Nvidia Corp >                           A      c   .
+1106:3068  VIA >                       + a p c i .
+1022:7446  AMD AC_LINK >               + .
+10b9:5450  ALI 5450 >                     
+10b9:5451  ALI 5451 >                     
+10b9:5453  ALI 5453 AC-Link  >         p c .
+1025:5453  ALI 5453 AC-Link  >                     c .
+10b9:5457  ALI 5457 AC-Link >  +    p   c i .
+1025:5457  ALI 5457 AC-Link  >              c .                   .
+e159:0001  TigerJet >                                          i .
+1002:434d  ATI >                                         T  a    c i .
+1543:3052  SI3052 >                                            i .
+10ec:8197  RealTek >                            + .
+  --------------------------------------------------------
+The following letters indicate compatibility for the modem controller,
+BUT do NOT gaurantee support by the software. 
+Support MUST be ascertained by identifing the soft modem codec.
+
+  +   SmartLink (SML) - http://www.smlink.com,  the slmodem-2.9.9 series
+  A   SML slmodem-2.9.9d-alsa software supporting the ALSA intel8x0m-modem driver
+      Soft modems with the Broadcom codec BCM64 should thus be served. 
+  T   SML slmodem-2.9.9d-alsa software supporting the ALSA snd-atiixp-modem driver
+With the above SML software, port creation is controlled by a daemon, slmodemd,
+rather than being a static feature of the /dev/ files.
+  a   AgereSystems only under 2.4.n
+  p   PCtel support at http://pctelcompdb.sourceforge.net/
+  c   Conexant/Rockwell - http://www.linuxant.com
+  i   Intel - http://www.intel.com
+  b   Broadcom, under 2.4.n kernels, with ALSA code under 2.6.n
+  for details on A and T slmodem implementations, see Modem/ALSA.txt
+ ===========================================================
+
+To achieve codec readouts for SmartLink (SML) compatible modem controllers listed above,
+follow the directions in Slmodem.txt.
+
+The 1) driver independent test, some details
+During bootup, kernel diagnostics on the System are stored for later display by:
+       dmesg
+This information may include a SIL_id of modems under AC97/MC97 Controllers,
+depending upon the type of bridging of the modem card to the motherboard.
+The scanModem script processes dmesg output to capture AC97 modem information,
+parses it into a SIL_id if possible, and then displays of modem chipset information.
+Guidance to sources of modem supporting software may thus be obtained.
+
+The transfer of the AC97 information to the dmesg buffer requires that modules supporting
+both the digital audio card and the ac97_codec be loaded during bootup:
+   modprobe ac97_codec
+   modprobe audio_drivers  (such as i810_audio)
+This can be checked after bootup with:
+   lsmod
+
+This script can also be used by entering a test block with nomenclature:
+        $0 SILtest
+with SILtest a text file in This Folder
+containing a section of a dmesg output or /var/log/messages like:
+
+  i810: Intel ICH 82801AA found at IO 0xdc00 and 0xd800, IRQ 11
+  i810_audio: Audio Controller supports 2 channels.
+  ac97_codec: AC97 Audio codec, id: 0x4144:0x5340 (Analog Devices AD1881)
+  i810_audio: AC97 codec 0 Unable to map surround DAC's (or DAC's not present), total channels = 2
+  ac97_codec: AC97 Modem codec, id: 0x5349:0x4c22 (Silicon Laboratory Si3036)
+
+which does include a line beginning with:   ac97_codec: AC97 Modem codec, id:
+END
+  # detected modem devices
+
+   echo "Modem candidates are at PCI_buses:  $PCIBUS">>$RECORD
+   echo PCIBUS=$PCIBUS
+fi 
+#  Start modem displays
+for i in $PCIBUS
+do
+  if $LSPCI -n 2>/dev/null  | grep $i | grep Class >/dev/null ; then
+    CLASS0=`$LSPCI -n 2>/dev/null  | grep $i | cut -d' ' -f3-4`
+  else
+    CLASS0=`$LSPCI -n 2>/dev/null  | grep $i | cut -d' ' -f2-3`
+  fi 
+  # $LSPCI -n 2>/dev/null  | grep $i | cut -d' ' -f2-4 > $TMPM
+  # echo "0000:00:02.6 0703: 1039:7013 (rev a0)" > $TMPM
+  CLASS="Class $CLASS0"
+  NAME=`$LSPCI -v 2>/dev/null | grep $i | cut -d' ' -f2-`
+  if test -n "$TST" ; then
+    echo Using the test inputs.
+    cat<<END | tee -a $RECORD
+
+    Substituted test inputs:
+ PCIDEV=$PCIDEV
+ SUBSYS=$SUBSYS
+
+END
+  else     
+    PCIDEV=`echo $CLASS | cut -d' ' -f3`
+    cat<<END | tee -a $RECORD 
+    
+Providing detail for device at  $i
+  with vendor-ID:device-ID
+           ----:----
+$CLASS   $NAME
+END
+  fi
+  Vendor=`echo $PCIDEV | cut -d: -f1`
+  Device=`echo $PCIDEV | cut -d: -f2`
+  # Now Subsystem info
+  # It would be more elegant in the above queries to select  -s PCI_bus.
+  # But for older lspci versions, there is failure of    lspci -s PCI_bus
+  # when the PCIBUS has an "f" as on some Acer motherboards with a PCI slot   00:1f.6
+  SUBNAME=`$LSPCI -v 2>/dev/null  | grep -A1 $i | grep Subsystem | cut -d: -f2-`
+  if test -n "$TST" ; then
+    echo "Using test  $SUBSYS   Subsystem"
+    # skip if test SUBSYS was input
+  else
+    SUBSYS=`$LSPCI -nv  2>/dev/null  | grep -A1 $i | grep Subsystem: | cut -d' ' -f2`
+    echo "  SubSystem $SUBSYS  $SUBNAME" | tee -a $RECORD
+    $LSPCI -nv 2>/dev/null | grep -A2 $i | grep -v Class | grep -v Subsystem: | tee -a $RECORD
+    IRQ0=`$LSPCI -v 2>/dev/null  | grep -A2 $i | grep IRQ | grep "IRQ 0"`
+    if test -n "$IRQ0" ; then
+      cat<<END>>$RECORD
+
+ The modem will NOT function because of interrupt assignment: IRQ 0
+ Possible corrections are:
+   1) to access the  the boot up BIOS change to a non-PNP mode.
+   Instructions for accessing BIOS are at:
+      http://linmodems.technion.ac.il/resources.html within:  Additional Resourcces.
+   2) Within some BIOS setups, IRQ assignments can be changed.
+   3) On non-laptop systems moving the modem card to another slot has helped.
+   4) Sometimes upgrading the kernel changes IRQ assignment.
+
+END
+    fi
+  fi
+  if test -n "$SUBSYS" ; then
+    SUBven=`echo $SUBSYS | cut -d: -f1`
+    SUBdev=`echo $SUBSYS | cut -d: -f2`
+  fi
+  cat<<END | tee -a $RECORD
+  
+                  -----PCI_IDs-------                    --CompilerVer- 
+    Feature List:  Primary  Subsystem Distr  KernelVer   kernel default  CPU
+ ./scanModem test $PCIDEV $SUBSYS $DISTR $SYS  $GCC_PC $GCC    $CPU
+
+END
+    ## Checking for major chipset types
+  if grep  $PCIDEV Modem/SoftModem.txt >/dev/null ; then
+    # Check for support under the Controller of the unknown Subsystem chip
+    CNTRL=`grep $PCIDEV Modem/SoftModem.txt | cut -d">" -f1`
+    cat<<END | tee -a $RECORD
+       
+ The soft modem Subsystem operates under a controller
+   $CNTRL
+ capable of supporting under Linux AT LEAST modem Subsystem chips from manufacturers:
+END
+echo >>$RECORD
+    if grep $PCIDEV Modem/SoftModem.txt | grep "p " >/dev/null ; then
+       echo "  Pctel"  | tee -a $RECORD
+       SOFT=PCTEL
+    fi
+    if grep $PCIDEV Modem/SoftModem.txt | grep "b " >/dev/null ; then
+       echo "  Broadcom"  | tee -a $RECORD
+       SOFT=$SOFT" BRD"
+    fi
+    if grep $PCIDEV Modem/SoftModem.txt | grep "a " >/dev/null ; then
+       echo "  AgereSystems"  | tee -a $RECORD
+       SOFT=$SOFT" AGR"
+       AGR=1
+    fi
+    if grep $PCIDEV Modem/SoftModem.txt | grep "c " >/dev/null ; then
+       echo "  Conexant" | tee -a $RECORD
+       SOFT=$SOFT" CNX"
+       CNX=1
+    fi 
+    if grep $PCIDEV Modem/SoftModem.txt | grep "i " >/dev/null ; then
+       echo "  Intel"  | tee -a $RECORD
+       SOFT=$SOFT" INTEL537"
+       AAEA=1
+       INTEL537=1
+    fi
+    echo $SOFT>$TMPM.soft
+    if grep $PCIDEV Modem/SoftModem.txt | grep "+ " >/dev/null ; then
+       echo "  Smartlink"  | tee -a $RECORD
+        SMLok=" Driver slamr from the SmartLink slmodem package can identify the soft modem codec."
+    smart=may
+    fi
+    if grep $PCIDEV Modem/SoftModem.txt | grep "A " >/dev/null ; then
+       echo >> $RECORD
+       echo "  Smartlink software in ALSA mode may support this modem "  >> $RECORD
+       Smart=ALSA
+    fi
+     # finished softmodem chip candidates  
+    if grep $PCIDEV Modem/SoftModem.txt>/dev/null ; then
+       SOFT=1
+    fi    
+    # Decisive Subsystem IDENTS
+    echo >$TMPM.3 
+    if [ "$SUBven" = "134d" ]  ||  [ "$SUBven" = "14e4" ] ; then
+       echo Use the SmartLink slmodem software for support. |  tee -a $RECORD
+       IDENT=PCTEL
+       if [ "$SUBven" = "14e4" ] ; then
+          IDENT=BCM64
+         echo For this Broadcom subsystem modem,  the slmodemd daemon must be used in ALSA mode |  tee -a $RECORD 
+         echo  "       slmodemd --alsa --country=YOURS modem:1"  |  tee -a $RECORD
+       fi      
+    elif [ "$SUBven" = "14f1" ] ; then
+       # Conexant HSF
+        echo ONLY the hsfmodem software from http://www.linuxant.com/drivers  can support this Conexant subsystem soft modem |  tee -a $RECORD
+        IDENT=CXT
+     else
+        echo " The Subsystem PCI id does not itself identify the modem Codec.">>$RECORD
+     fi
+     
+     # Choose driver for codec test
+     if [ "$PCIDEV"  = "1002:434d" ]  ; then
+        MODULE=snd-atiixp-modem 
+       MCONFIG=ATIIXP_MODEM
+     elif [ "$PCIDEV"  = "1106:3068" ]  ; then
+        MODULE=snd-via82xx-modem 
+       MCONFIG=VIA82XX_MODEM
+     else
+        MODULE=snd-intel8x0m 
+       MCONFIG=INTEL8X0M
+     fi 
+     MOD_=`echo $MODULE | sed -e 's/-/_/g'`
+     MPLACE=`find /lib/modules/$SYS/ -name $MODULE.ko`
+     #  Rhywek <rhywek@o2.pl>
+     
+#     case $PCIDEV in
+#      "1002:434d") MODULE=snd-atiixp-modem ;;
+#      "1106:3068") MODULE=snd-via82xx-modem ;;
+#      *) MODULE=snd-intel8x0m ;;
+#    esac
+
+    # Check for driver in kernel or modules    
+    echo  >>$RECORD
+    if grep $MCONFIG /boot/config-$SYS | grep "=y" > /dev/null ; then
+       echo  "  Driver $MODULE is included in the kernel. "  >>$RECORD
+       ASOUND=1
+    elif   test -n "$MPLACE" ; then
+       echo  "  Driver $MODULE  may enable codec acquisition "  >>$RECORD
+       if grep $MOD_  /proc/modules >/dev/null ; then
+         ASOUND=1  
+      elif [ "$UID" = "0" ]  ;  then
+        /sbin/modprobe $MODULE
+        ASOUND=1
+      else   
+         echo This line is strangely necessary >/dev/null 
+          cat<<END
+           
+ To enable capture of codec information, please briefly login as Root:
+        su - root
+  Load $MODULE with:
+        modprobe $MODULE
+  Exit Root status
+        exit
+  and rerun
+       ./scanModem
+       
+END
+         exit
+      fi
+    else
+       echo  "  $MODULE  support not included in $SYS  kernel+modules " >>$RECORD
+    fi
+   
+# I guess you mean '/proc/asound/cardN/codec97#0/mc97*'.
+# If it does not exist after intel8x0m loading this may indicate that device
+# was not initialized, for instance because it is in use by other driver,
+# like hsf*, slamr or even serial - device has 0703 pci class - COMMUNICATION_MODEM.
+    if test -n "$ASOUND" ; then 
+       MC97=`find /proc/asound -name "mc97*" | grep -v regs`
+       #  MC97=`find /proc/asound -name 'mc97#[0-3]-[0-3]'`    # Sasha's alternate
+       if !  test -n "$MC97" ; then
+          echo "  /proc/asound lacks an mc97 codec file.">>$RECORD       
+       else      
+          echo "  === Begin mc97 codec query  ===">>$RECORD
+       for codec in $MC97     
+#Also note there are new modems in the wild equipped by SiLabs 3054/5 codec,
+#it works with ALSA drivers, but many of such codecs encode codec vendorid1,
+# vendorid2 registers not with "traditional" "SILXX", but with other values
+#(few "AGRXX" was reported already, and "BCM64" is from this group too)     
+       do
+       if grep  0x42434d64  $codec >/dev/null ; then
+         echo  " $SUBSYS has a Broadcom BCM64 codec" >>$RECORD
+        IDENT1=BCM64
+        elif  grep   Conexant  $codec >/dev/null ; then
+        NM=`grep Conexant  $codec | cut -d' ' -f2-`  
+        grep  Si3036 $codec >>$RECORD
+        echo  " $SUBSYS has a $NM" >>$RECORD     
+        IDENT1=CXT
+        elif  grep   "Si3036/8 rev "  $codec >/dev/null ; then
+          grep  Si3036 $codec >>$RECORD
+          revision=`for i in $INPUT ; do echo $i ; done | grep  -A1 rev`
+          REV=`echo $revision | cut -d" " -f2`
+          echo  " Subsystem $SUBSYS has a SIL2$REV codec"  >>$RECORD   
+          IDENT1=SIL2$REV
+          elif  grep   "Motorola (rev 4 IIRC)"  $codec >/dev/null ; then  
+          echo  " $SUBSYS has a Motorola codec " >>$RECORD     
+          IDENT1=ALSA       
+          cat<<END>/dev/null
+
+> RE:new modems in the wild equipped by SiLabs 3054/5
+> Should slmodem in ALSA mode should be recommended for these cases uniformly?
+
+Yes, but note that vendor's drivers (if exist) may work too, at least I think
+that Agere driver supports 'AGRxx' codecs.  
+END
+       else
+         echo File $codec >>$RECORD
+         echo " --------" >>$RECORD
+         cat $codec >>$RECORD
+         echo " --------" >>$RECORD    
+         if grep 3054/5 $codec >/dev/null && grep snd_intel8x0m >/dev/null ; then
+           # for non SILnm codecs such as AGRnm and INT65
+           echo " Try using slmodemd in ALSA mode with driver snd-intel8x0m"  >>$RECORD
+         fi
+       fi
+       codec=
+      done
+      echo "  === End mc97 codec query  ===">>$RECORD
+      fi  # codec aquisition 
+    fi  # module loaded
+   
+echo >$TMPM
+echo >$TMPM.1
+echo >> $RECORD
+echo " Beginning check for older ac97_codec modems." >> $RECORD
+echo audio > $TMPM
+echo ac97 >> $TMPM
+# for grep filter
+dmesg | grep -f $TMPM > $TMPM.3
+# first check for audio_codec, needed later
+if grep "AC97 Modem codec" $TMPM.3 > /dev/null ; then
+    ac97_codec=1
+    echo " ----- Raw output ------" >> $RECORD 
+    # unusual case:   ac97_codec: AC97 Modem codec, id: CXT41 (Unknown)
+    grep "AC97 Modem codec" $TMPM.3  | tee -a  $RECORD
+fi
+# manual test
+if [ "$1" = "SILtest" ] ; then
+  cp SILtest  $TMPM.3
+fi
+codec_id=`cat $TMPM.3 | sed -n -e '/^ac97_codec: AC97 Modem codec, id: /s/^ac97_codec: AC97 Modem codec, id: \(.*\)(.*)$/\1/p'`
+# codec_id=0x5349:0x4c22  # for testing
+if test -n "$codec_id" ; then
+for codec_id in $codec_id ; do
+  echo $codec_id | grep -e '^SIL[0-9].*$' > /dev/null
+  if [ $? -ne 0 ] ; then
+    # < linux-2.4.20
+    codec_cid=`echo $codec_id | sed -n -e '/0x5349:0x4c/s/^0x5349:0x4c\(2[1-7]\)$/\1/p'`
+    # echo codec_cid=$codec_cid
+    if [ -n "$codec_cid" ] ; then
+      codec_id=`printf "SIL%d" 0x$codec_cid`
+      CODEC=$codec_id
+    else
+      SIL_id=$codec_id not processed
+    fi
+  else
+    SIL_id=$codec_id
+  fi
+  if test -f $TMPM.3 ; then
+    cat<<END  >>$RECORD
+
+--- processed from dmesg -----
+`cat  $TMPM.3`
+------------------------------
+ SIL_id=$SIL_id
+
+END
+  fi # TMPM.3
+done  # end of for
+fi # codec_id
+if test -z "$SIL_id" ; then
+  echo " An older ac97_modem codec was not detected.">>$RECORD
+  echo >>$RECORD
+else
+  echo " An ac97_modem codec was detected.">>$RECORD
+fi # SIL_id
+
+# slamr.ko test
+if [ -x /bin/dmesg ] ; then
+  DMESG=/bin/dmesg
+  SLAMR=`find /lib/modules/ -name slamr.* -mindepth 3 -maxdepth 5 | grep $SYS` 
+fi
+
+if test -n "$DMESG" -a -n "$SLAMR" -a -n "$smart" ; then
+   echo > $TMPM
+  $DMESG | grep -v "SmartLink AMRMO modem" | grep slamr > $TMPM
+  ###  typical output
+# slamr: SmartLink AMRMO modem.
+# slamr: probe 8086:24c6 ICH4 card...
+# slamr: mc97 codec is SIL27
+# slamr: slamr0 is ICH4 card.
+  if grep slamr $TMPM >/dev/null ; then
+     SLAMRout=1
+  elif [ "$UID"  = "0" ] ; then
+     /sbin/modprobe -r slamr
+     /sbin/modprobe slamr
+     $DMESG | grep -v "SmartLink AMRMO modem" | grep slamr > $TMPM   
+     if grep slamr $TMPM >/dev/null ; then
+        SLAMRout=1
+     fi 
+  else
+     cat<<END  | tee -a $RECORD
+     
+ Please rerun scanModem after login as 
+ #  su - root
+ WithIn Modem/Slmodem.txt, see the slamr test for an explanation.
+END
+  sleep 3
+  fi   
+  if test -n "$SLAMRout" ; then  
+    echo " ------ dmesg slamr filtered -------">>$RECORD
+    cat $TMPM >>$RECORD     
+    CODEC=`$DMESG | grep slamr | grep codec | cut -d' ' -f5`
+    if test -n "$CODEC" ; then
+    COD=`echo $CODEC | cut -b-3`
+    echo " The softmodem Codec is:  $CODEC">>$RECORD
+    fi
+  fi  
+  $DMESG | grep HSF: > $TMPM
+  if grep HSF: $TMPM>/dev/null ; then
+    $DMESG | grep HSF: >>$RECORD
+  fi
+fi 
+    ##ARCHIVEbegin
+    # Used as backup to a CODEC acquisition
+    rm $TMPM.2 &>/dev/null
+    echo " Checking through information gathered from LinModem ARCHIVES">>$RECORD
+    if  [ "$PCIDEV"  =  "8086:1080" ] ; then
+        cat<<EOF>$TMPM.2
+INTEL537EP 8086:1000 8086:1007 8086:1008 8086:100A 1028:1000
+EOF
+    elif [ "$PCIDEV" = "8086:2416" ] ; then
+    # 8086:2416 82801AA ICHAA 
+      cat<<EOF>$TMPM.2
+CXT 107b:0012
+SIL22 14c0:0012 COMPAL Electronics Inc Smartlink
+EOF
+# cat $TMPM.2
+    elif [ "$PCIDEV" = "8086:2426" ] ; then
+    # 8086:2426 82801AB ICHAB
+      cat<<END>TMPM.2
+SIL21 134d:4c21
+Unknown 107b:9019 Gateway
+END
+    elif [ "$PCIDEV" = "8086:7196" ] ; then
+    # 8086:7196 82440 Banister ICH1
+      cat<<EOF>$TMPM.2
+Unknown 10cf:10d2 Fujitsu Limited
+EOF
+    elif [ "$PCIDEV" = "8086:2446" ] ; then
+    # 8086:2446 82801BA ICH2
+      cat<<EOF>$TMPM.2
+CXT 104d:80df 
+SIL21 10cf:10d2 CitiCorp
+Unknown 1025:1027 Acer 
+EOF
+    elif [ "$PCIDEV" = "8086:2486" ] ; then
+    # 8086:2486 82801CA/CAM AC97 CAM AC'97 ICH3
+      cat<<END>$TMPM.2
+CXT   1668:5421 CXT21, 14f1:5421 MD56ORD V.92 MDC Modem
+SIL27 103b:0757 Tatung Co , 1014:0223 IBM , 1179:0001 , 144d:2115   Samsung, 1014:0227 
+BCM64 14e4:4d64 
+SIL22 14c0:0012 COMPAL Electronics Inc
+Unknown 1558:1800 CLEVO/KAPOK Computer , 104d:813c Sony, CMedia CXT?, 1014:0503
+END
+    elif [ "$PCIDEV" = "8086:24c6" ] ; then
+    # 8086:24c6 82801DB ICH4 AC'97 Modem Controller
+    cat<<END>$TMPM.2
+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
+SIL21 1071:8050  134d:4c21 4c21:5349 1071:8160  1734:1055  
+SIL22 1734:102a  
+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
+BCM64 14e4:4d64  
+SIL24 144f:1050 Askey Comp. with BroadCom, 
+Unknown 104d:816a 1509:2970 
+END
+    elif [ "$PCIDEV" = "8086:24d6" ] ; then
+    # 8086:24d6 82801EB ICH5
+      cat<<END>$TMPM.2
+SIL27 1179:0001  104d:8128
+BCM64 14e4:4d64 
+CXT   103c:006a
+END
+    elif [ "$PCIDEV" = "8086:266d" ] ; then
+      echo " The 8086:266d modems may be supported by hsfmodem OR slmodem-2.9.9c ,but not both" >>$RECORD
+      cat<<END>$TMPM.2
+SIL27 1509:3670
+CXT 14f1:5423 CXT23 no /proc/asound/mc97* ,
+END
+    elif [ "$PCIDEV" = "1039:7013" ] ; then
+    # 1039:7013  SIS 630 
+      cat<<EOF>$TMPM.2  
+SIL27 1043:1736 , 104d:8129 17c0:1059 , 1033:8216 1028:0195
+SIL23 1039:7013
+CXT 104d:814e Sony CXT23, 1043:1816 CXT22
+SIL22 1631:3003  NorthBridge , 1584:4003 ,  1734:105f ,1558:2202 CLEVO/KAPOK Computer: HAMR,http://linmodems.technion.ac.il/archive-fourth/msg01957.html
+SIL21 Pctel 1039:7013 1849:9739  13bd:102f
+Unknown 1019:0a01  1558:4201 , 1509:2470 First Int. Comp. ,  1734:105f with AMD64 processor, 1509:2470 , 1043:1456  Asustek
+EOF
+    elif [ "$PCIDEV" = "1039:7018" ] ; then  
+    # 1039:7018  SIS 960
+      cat<<EOF>$TMPM.2
+none
+EOF
+    elif [ "$PCIDEV" = "10de:01c1" ] ; then
+    # 10de:01c1  Nvidia Corp 
+      cat<<EOF>$TMPM.2
+none
+EOF
+    elif [ "$PCIDEV" = "10de:00d9" ] ; then
+    # 10de:01d9  Nvidia Corp
+     Smart=ALSA
+      cat<<EOF>$TMPM.2
+CXT 1043:1856 Asustek
+SIL27 103c:006d HP ,  
+EOF
+    elif [ "$PCIDEV" = "1106:3068" ] ; then 
+    # 1106:3068  VIA
+      cat<<EOF>$TMPM.2
+SIL27 1102:0033 CreativeLabs , 1025:0046 Acer , 1025:0033 , 1734:1078 
+SIL22 1743:1032 , 10cf:118e , 1734:1054 , 1462:309e , 1631:e004 , 1543:4c22 , 161f:2032 1584:4005 
+SIL21 10cf:118e , 13bd:1022 , 1543:4c21 1071:8375
+CXT 104d:8143 104d:80f6 , 1025:0030 CXT41 ,
+Unknown 1584:4005 Uniwell, 1025:0030 Acer 104d:80f6CXT?
+EOF
+    elif [ "$PCIDEV" = "1022:7446" ] ; then
+    # 1022:7446  AMD AC_LINK
+      cat<<EOF>$TMPM.2
+none
+EOF
+    elif [ "$PCIDEV" = "10b9:5453" ] ; then
+    # 10b9:5453  ALI 5453
+      cat<<EOF>$TMPM.2
+none
+EOF
+    elif [ "$PCIDEV" = "1543:3053" ] ; then
+    # Silicon Inst
+      cat<<EOF>$TMPM.2
+Unknown 1543:3052
+EOF
+    elif [ "$PCIDEV" = "e159:0001" ] ; then
+    # Tiger Jet
+      cat<<EOF>$TMPM.2
+INTEL537 8086:0003
+EOF
+    elif [ "$PCIDEV" = "1543:3052" ] ; then
+    # SILabs  SI3052 
+      cat<<END>$TMPM.2
+none
+END
+    elif [ "$PCIDEV" = "10b9:5457" ] ; then 
+    # 10b9:5457  ALI 5457
+      cat<<EOF>$TMPM.2
+SIL27 1179:0001 , 1033:81f3
+CXT 103c:002a CXT21, 103c:0024 CXT41 ,  103c:0029
+Unknown 0e11:005a 5457 Compaq
+EOF
+    elif [ "$PCIDEV" = "10b9:5459" ] ; then 
+    # 10b9:5457  ALI 5457
+      cat<<EOF>$TMPM.2
+SIL26 10a5:5459   Smart Link Ltd.
+EOF
+    elif [ "$PCIDEV" = "1002:434d" ] ; then
+      # 1002:434d  ATI Technologies Inc:
+      IDENT=ATI
+      Smart=ALSA 
+      ALSA=1002:434d
+      cat<<EOF>$TMPM.2 
+SIL27 103c:006b HP, 1179:0001 Toshiba ,  1025:0052 Acer
+EOF
+    ##ARCHIVEend
+    else
+      cat<<EOF | tee -a $RECORD
+ This combination of softmodem controller and Subsystem:
+       Primary   $PCIDEV
+       SubSystem $SUBSYS
+ has not been previously reported.
+
+EOF
+    fi
+    # Analysis of Archival info 
+    if test -f $TMPM.2 ; then
+      CODECp=`grep $SUBSYS $TMPM.2 | cut -d' ' -f1`
+      if test -z "$CODECp" ; then
+        echo " Modem codec information on Subsystem $SUBSYS is not in the records.">>$RECORD      
+      elif [ "$CODECp" = "Unknown" ] ; then
+          echo " A codec for this Subsystem record under controller $PCIDEV was not been reported".>>$RECORD        
+        if [ -n "$CODEC" ] ; then 
+         echo " Please report this New assignment to Discuss@linmodems.org : $PCIDEV $SUBSYS  $CODEC" | tee -a $RECORD
+        fi
+      else
+        echo " From prior reports, the modem codec type of the Subsystem is: $CODECp">>$RECORD
+      fi
+    fi 
+
+    # This section compares diagnostis from slamr test and Archival records:
+    if [ -z "$CODEC" ] ; then
+        # echo " Using archived information for soft modem codecs.">>$RECORD   
+        CODEC=$CODECp
+        CODECnone=1
+         COD=`echo $CODEC | cut -b-3`
+    elif [ "$CODEC" = "$ ALG10" ] ; then
+        echo " ALG10 is an audio codec, the modem hardware has not been properly accessed.">>$RECORD
+    elif [ "$COD" = "CXT" ] && [ "$CODECp" = "CXT" ] ; then
+        CODEC=$COD
+        echo " Agreement between slamr diagostic and Archive.">>$RECORD
+    elif [ "$CODECp" = "$CODEC" ] ; then
+        echo " Agreement between slamr diagostic and Archive.">>$RECORD
+    elif ! [ "$CODECp" = "$CODEC" ] ; then 
+         echo " DisAgreement between slamr diagostic and Archive.  Using slamr diagnostic: CODEC=$CODEC">>$RECORD  
+        CODECp=$CODEC
+    else
+        echo "All cases should be covered">/dev/null
+    fi
+
+    # Case by case of CODEC
+    if test -n "$CODEC" && ! [ "$CODEC" = "Unknown" ] ; then 
+      if   [ "$CODECp" = "INTEL537" ] ; then
+         echo   " The modem has an Intel 537 chipset"  | tee -a $RECORD
+        echo  "  Use driver resource Intel-537-MostRecentVersion.tgz" >>$RECORD
+        IDENT=INTEL537
+      elif   [ "$CODECp" = "INTEL537EP" ] ; then
+         echo   " The modem has an Intel 537EP chipset"  | tee -a $RECORD
+        echo  "  Use driver resource Intel-537EP-MostRecentVersion.tgz" >>$RECORD
+        IDENT=INTEL537EP
+      elif [ "$COD" = "CXT" ] ; then
+        CXT=yes
+        Smart=
+       smart=
+       echo " The modem has a Conexant codec: $CODEC" | tee -a $RECORD
+       if test -z "$CNX" ; then
+          echo "   BUT $CNTRL is not yet supported by Linuxant code." | tee -a $RECORD
+       else
+         IDENT=CXT
+          cat<<END | tee -a $RECORD
+ and there is support for the modem controller: $CNTRL
+ Some Linux Distributions include the hsfmodem driver.
+ Search your packages information for "hsfmodem" and "Conexant".
+ If not found there, download a hsfmodem package from http://www.linuxant.com .
+ For 2.4.n kernels, If there is not an exact match your kernel version: `uname -r`
+ then kernel-sources must be prepared as described in Modem/DriverCompiling.txt
+ before the hsfmodem driver compiling can be successfull. 
+ For recent  kernel-source-2.4.6 ,configuration steps are not necessary.
+END
+         fi
+      elif [ "$CODEC" = "SIL22" ] ; then
+        echo " The Subsystem has the a SmartLink codec" | tee -a $RECORD
+        if [ "$smart" = "may" ] ; then
+          echo " with a supported $PCIDEV modem controller" | tee -a $RECORD
+         IDENT=SMART
+        else
+           echo " but sadly, support is lacking for the $PCIDEV modem controller." | tee -a $RECORD
+        fi
+      elif [ "$CODEC" = "BCM64" ] || [ "$CODEC" = "SIL24" ] ; then
+        IDENT=$CODEC
+        echo " The Subsystem has a Broadcom codec $CODEC" | tee -a $RECORD
+      elif [ "$CODEC" = "INT65" ] || [ "$CODECp" = "SIL25" ] ; then
+        IDENT=$CODEC
+        Smart=yes
+              cat<<END>>$RECORD
+              
+ The Subsystem has the INTEL codec $CODEC             
+ The Intel_secure-537AA driver and possibly the SmartLink driver support the modem.
+ Details below and read Modem/Slmodem.txt
+END
+      elif [ "$CODEC" = "SIL24" ] || [ "$CODEC" = "SIL26" ] ; then
+        echo " The Subsystem has a Broadcom codec $CODEC" | tee -a $RECORD
+       IDENT=SMART
+      elif [ "$CODEC" = "SIL21" ] ; then
+        IDENT=Smart
+        echo " The Subsystem has a PCTel codec $CODEC" | tee -a $RECORD        
+       if [ "$MAJOR" = "2.4" ] ; then
+         IDENT=PCTEL
+         echo "The pctel-0.97 drivers may support this modem.">>$RECORD
+       fi
+      elif [ "$CODEC" = "SIL23" ] ; then
+         IDENT=Smart
+         echo " The Subsystem has Silicon Integrated Systems (SiS) codec $CODEC" | tee -a $RECORD      
+      elif  [ "$CODEC" = "SIL27" ] ; then
+        echo " The Subsystem has an Agere Systems codec $CODEC" | tee -a $RECORD
+       if [ "$MAJOR" = "2.4" ]  && [ -n "$AGR" ] ; then
+         IDENT=AGR
+         echo " Under 2.4.n kernels, there are AgereSoftModem drivers">>$RECORD        
+       else
+         IDENT=Smart
+       fi
+      else
+         echo " Please report this new SIL type to Discuss@linmodems.org "
+      fi 
+      if [ "$smart" = "may" ] && ! [ "$COD" = "CXT" ] && ! [ "$IDENT" = "ATI" ] ; then
+        Smart=may
+        echo " SmartLink software should support this modem">>$RECORD
+       if [ "$CODEC" = "BCM64" ] ; then
+         Smart=ALSA
+         echo " Only the SmartLink slmodem-2.9.9d-alsa software supports this modem">>$RECORD
+       fi
+      fi      
+    else
+      echo " There are the following routes toward support:">>$RECORD
+      echo "   Follow instructions in Modem/SoftModem.txt for identifying the modem under a Microsoft boot.">>$RECORD
+      if [ "$smart" = "may" ] ; then
+       if [ "$DISTR" = "SuSE" ] && [ "$MAJOR" = "2.6" ] ; then
+         cat<<END | tee -a $RECORD
+         
+ SuSE has a slamr driver.  Please run the diagnostic:
+ # su - root
+ # modprobe slamr
+ # dmseg | grep slamr
+ and report the results to discuss@linmodems.org.  
+ Read Modem/Slmodem.txt for details.
+END
+        else
+          echo "       Read Modem/Slmodem.txt instruction for doing the slamr diagnostic.">>$RECORD
+       fi
+      fi
+      if test -n "$CNX" ; then
+         echo "  Test the effectiveness of the hsfmodem package from http://www.linuxant.com/drivers/hsf/index.php.">>$RECORD
+      fi
+    # Distro specific issues
+      if [ "$DISTR" = "debian" ]  ||   [ "$DISTR" = "Ubuntu" ]   ||  [ "$DISTR" = "knoppix" ] && ! [ "$IDENT" = "ATI" ] ; then
+       cat<<END>>$RECORD
+
+ The $DISTR Linux includes sl-modem packages with Smartlink drivers
+   Install the kernel-headers-$SYS.deb
+   If necessary, set a symbolic link needed for slmodem compiling:
+     # ln -s /usr/src/kernel-headers-$SYS /lib/modules/$SYS/build
+     as described in Modem/DriverCompiling.txt
+   Then install the two sl-modem/slmodem packages and follow their directions.
+   Thereafter the above slamr diagnositic can be run.
+
+END
+      elif [ "$DISTR" = "SuSE" ] && ! [ "$PCIDEV" = "1002:434d" ] && ! [ "$CODECp" = "CXT" ] && !  [ "$CODECp" = "BCM64" ] ; then
+           cat<<END>>$RECORD
+           
+ Install kernel-source package, the slmodem and km_slmodem packages.
+ If necessary, set a symbolic link needed for slmodem compiling:
+ # ln -s /usr/src/linux-$SYS /lib/modules/$SYS/build
+ Then install the packages and compile the drivers.
+ The compiling process is described in:
+   http://linmodems.technion.ac.il/archive-fourth/msg00176.html
+
+END
+      elif [ "$DISTR" = "Mandrake" ] && [ "$MAJOR" = "2.6" ] ; then
+       cat<<END>>$RECORD
+ Current Mandrake installations have slmodem packages.    
+ http://linmodems.technion.ac.il/packages/smartlink/
+
+END
+      else
+        echo  Leaving space for expansion >/dev/null
+      fi # Distros specific
+    fi # CODECnot 
+  fi # soft
+  echo >$TMPM.2
+  if test -z "$IDENT" ; then
+    cat<<END>$TMPM.2
+ 4005:0308  Avance ALS-300plus sound+softmodem combo PCI card (obsolete).
+ 1055:9178  STANDARD_MICROSYSTEM
+ 10b9:545a  ALI545A SL1801
+ 10b9:5459  ALI 5459 SmartPCI561
+ 10b9:5459  Subsystem: 10a5:5459  ALi Corporation SmartLink SmartPCI561 56K Modem (NetoDragon)
+ 10ec:8197  PCI SmartLAN56 (RealTek ether/modem combo)
+ 1131:3400  SmartPCI56 (Philips UCB1500)
+ 10a5:3052  Racal Interlan SL1900
+ 10a5:5459  Racal Interlan SmartPCI561 SL1900
+ 163c:5459  SmartLink SmartPCI561 SL1900
+ 2000:2800  Gateway SL2800
+ 2003:8800  SmartLink  SL2800
+END
+  fi
+  # marv
+  if grep $PCIDEV $TMPM.2>/dev/null  ; then
+    IDENT=SMART
+    SMT=`grep $PCIDEV $TMPM.2`
+    cat<<END | tee -a $RECORD
+
+ SmartLink drivers support this modem:
+   $SMT
+END
+    if [ "$PCIDEV" = "2003:8800" ] ; then
+      echo " But version slmodem-2.9.10 or later is necessary." | tee -a $RECORD
+    fi
+  elif [ "$Vendor"  = "11c1" ] ; then
+    IDENT=AGERE
+  elif [ "$Vendor" = "115d" ] ; then
+    IDENT=XIRCOM
+  elif [ "$v" = "127a" ] ||  [ "$v" = "14f1" ] ||  [ "$v" = "148d" ] || [ "$PCIDEV" = "158b:0001" ] || [ "$PCIDEV" = "158b:0005" ] || [ "$PCIDEV" = "158b:0015" ]  ; then 
+    IDENT=CXT
+    # Intel 536EP & 537 secton
+  elif [ "$PCIDEV" = "e159:0001" ] && [ "$SUBSYS" = "8086:0003" ] ; then
+    echo "     Use driver resource Intel-537-MostRecentVersion.tgz">>$RECORD
+    IDENT=INTEL537
+  elif [ "$PCIDEV" = "8086:1040" ] ; then
+    if [ "$SUBSYS" = "8086:1005" ] ; then
+      echo SUBSYS=$SUBSYS
+      echo "   Use driver resource Intel-537SP-MostRecentVersion.tgz">> $RECORD
+      IDENT=INTEL537SP
+    fi
+    if [ "$SUBSYS" = "8086:1000" ] ; then
+      IDENT=INTEL536ep
+      echo " Use driver resource Intel-536ep-MostRecentVersion.tgz ">>$RECORD
+      # no SMP      http://linmodems.technion.ac.il/archive-third/msg00855.html
+    fi
+  elif grep $PCIDEV Modem/SoftModem.txt >/dev/null && $LSPCI -v 2>/dev/null | grep "Intel 537" >/dev/null ; then
+   # 1st line, because of mistakes in the PCI id databset
+    echo "     Due to a PCI ID database error, the Intel 537 designation is commonly incorrect." | tee -a $RECORD
+    AMBIG=537
+  else
+    echo No definitive Intel 537 soft modem>/dev/null
+  fi
+  echo $IDENT >$TMPM
+
+  echo > $TMPM.soft
+  if test -z "$IDENT" ; then
+  # Special cases
+   if $LSPCI -v 2>/dev/null | grep CM8738 >/dev/null ; then
+     IDENT=CM8738
+   elif $LSPCI -v 2>/dev/null | grep "Intel 536"  >/dev/null ; then
+   # because Intel 536 may have PCI_IDs assigned by modem assemblers, not Intel
+     IDENT=INTEL536ep
+   elif $LSPCI -v 2>/dev/null | grep "Subsystem: Conexant" >/dev/null ; then
+   # because the PCI_IDs may be assigned by modem assemblers, not Conexant
+     IDENT=CXT
+   else
+     echo "probably not a Conexant modem" >/dev/null
+   fi
+   
+      if $LSPCI -v 2>/dev/null | grep "Smart Link HAMR5600"  >/dev/null ; then
+       # because the PCI_IDs may be assigned by modem assemblers, not SmartLink
+       #  and mistakes in the PCI ID database
+       AMBIG=$AMBIG" HAMR5600"
+       #XX some misidentified softmodem
+      fi
+    fi 
+  
+    if test -z "$IDENT" ; then
+      AMBIG=
+      cat<<END>>$RECORD
+      
+ Information on several modem chipset providers is provided below,
+ because ambiguities remain on the correct choice of supporting software.
+            
+END
+    fi
+    PRIMARY=
+    if test -n "$SOFT" ; then
+      VEND="$SUBven $Vendor"
+      if [ "$Vendor" = "$SUBven" ] ; then
+        VEND=$Vendor
+      fi
+    else
+      VEND="$Vendor"
+      # SUBven not important if not softmodem
+    fi
+    for v in $VEND
+    do
+      echo " == Checking PCI IDs through modem chip suppliers ==">>$RECORD 
+
+    if [ "$Vendor" = "1002" ] && ! [ "$ATI" = "done" ] ; then
+        ATI=done
+       smart=1
+      cat<<END>>$RECORD
+
+ Vendor 1002 is ATI Technolgies, http://www.ati.com, producing video cards, motherboard and
+ a 1002:434d  ATI soft modem controller with a variety of Subsystems.
+  There is a modem driver, snd-atiixp_modem.ko , becoming available through http://www.alsa-project.org ,
+ with complementary port creation through the SmartLink slmodem-2.9.9d-alsa
+ For history see:  http://website.lineone.net/~bryanrpoole/atiixp-modem.htm
+ For details on setup and testing, see Modem/ATI.txt
+END
+    fi
+    if [ "$Vendor"  = "151f" ] ; then
+      IDENT=Topic
+      cat<<END>>$RECORD
+      
+ Vendors $v is TOPIC SEMICONDUCTOR Corp.
+ Class 0780 151f:0000 is a controller chipset modem using the standard drivers.
+ See http://www.math.sunysb.edu/~comech/tools/PCImodems.html
+
+END
+    fi
+    if [ "$v" = "10de" ] ; then
+      cat<<EOF>>$RECORD
+      
+ Vendor 10de is Nvidia, producing the video cards and 
+ two softmodem controllers: 10de:01c1 and 10de:00d9
+ For subsystems with SILnm codecs,
+     slmodem-2.9.n software in ALSA mode provides support.
+      
+EOF
+    fi 
+    if [ "$PCIDEV" = "10de:00d9" ] ; then 
+       cat<<EOF>>$RECORD
+       
+ 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.   
+ After installation of the software, an edit may be necessary in the file:
+   /usr/lib/hsfmodem/mod_mc97ich.c
+ Search for "0x01C1" , which will reveal a line beginning:
+    { 0x10DE, 0x01C1, PCI_ANY_ID,  PCI_ANY_ID,   
+ and change to: 
+    { 0x10DE, 0x00D9, PCI_ANY_ID,  PCI_ANY_ID,    
+    
+EOF
+    fi    
+    if [ "$v" = "e159" ] ; then
+      cat<<END>>$RECORD
+
+ Vendor $v is Tiger Jet (TJ).
+  $v:0001  translates PCI commands to the serial link used by
+     the silabs DAA from the si3034, si3044 and si3056 family.
+  $v:0001  8086:0003  TJ320 v2.0 , with subsystem 8086:0003 is an Intel-537 soft modem
+     supported by:  Intel-537-MostRecentVersion.tgz
+  $v:0001  0359:0003  TJ320 v3.1
+
+END
+    fi
+    if [ "$v" = "1106" ]  ; then
+      VIA=1
+      cat<<END>>$RECORD
+
+ Vendor $v is VIA  Technologies Inc.,producing diverse bridges including devices:
+    1106:3068    VT82C686/686A/686B AC97 Modem Codec
+ Under the later, the  10cf:118e  the "Intel 537" is partially supported
+   by the SmartLink slmodem-2.7.10 software
+    Subsystem 1102:0033 has an AgereSystems soft modem chip
+
+END
+    fi
+    if [ "$v" = "13f6" ] ; then
+      PCTEL=13f6
+      cat<<END>>$RECORD
+
+ Vendor $v is C-Media Electronics, which produced modem:
+     13f6:0211  C-Media Electronics Inc CM8738,
+     13f6:0211  subsystem HSP56 Audiomodem Riser
+ supported under 2.4.n kernels by PCTEL software.
+ BUT there is no support under 2.6.n kernels.
+
+END
+    fi
+    if [ "$v" = "14e4" ] || [ -n "$BRD" ] ; then
+      cat<<END>>$RECORD
+
+ Vendor 14e4 is BroadCom 
+   14e4:4212   is a  BCM V.90 56k modem
+ There is a driver for 2.2.n kernels called  BCOM_WAN_V20.
+    Search for it at http://www.dell.com 
+ However the code has not been updated for some time.
+ For  2.4 kernels, fix by Giacomo Comes must be used. See :
+   http://linmodems.technion.ac.il/archive-third/msg01652.html
+ When serving under softmodem controllers like the Intel ICH series,
+ the Broadcom Subsystem 14e4:4d64 has mc97 codec BCM64.
+ For 2.6.n kernels, see success reports:
+   http://linmodems.technion.ac.il/archive-fourth/msg03690.html
+   http://oboc.ucdavis.edu/Marik/inspiron/ 
+   The support is achieved through a combination of:
+   1) the snd-intel8x0m.ko of 2.6.n kernel releases, which provides a low level interface with the modem;
+   2) an slmodemd daemon which creates ports and provides higher level functions.
+   Get the slmodem-2.9.9d-alsa.tar.gz from  http://linmodems.technion.ac.il/packages/smartlink/
+   To compile the slmodemd, it is first Necessary to install a libasound2-dev package, providing alsa headers.
+   3) After compilation and installation of slmodemd, initiate service with:
+   # modprobe  snd-intel8x0m
+   # slmodemd --alsa --country=YOURCOUNTRY hw:1
+   Read the slmodem documentation for details and Modem/Slmodem.txt
+
+END
+    fi
+    if [ "$v" = "104d" ]; then
+      cat<<END>>$RECORD
+
+ Vendor 104d is Sony. Subsystem 104d:8129 under a 8086:2486 Intel modem controller
+ has a Conexant chip in a Sony Vaio grx560 laptop. 
+ A bootup "acpi=on" was required for IRQ acquisition.
+END
+    fi
+    if [ "$v" = "1039" ] ; then
+      echo " Vendor $v is SiS, Silicon Integrated System, producing  soft modem controllers and subsystems.">>$RECORD
+    fi
+    if [ "$v" = "1014" ] ; then
+      echo Vendor=1014 is IBM.>>$RECORD
+      if test -n "$SOFT" ; then
+        cat<<END>>$RECORD
+
+ Some thinkPad laptops have soft modem Subsystems with AgereSystems codec: 1014:0227 and 1014:0524. 
+ Software access is through IBM:
+       http://www-3.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52698
+END
+      fi
+    fi #beginESS
+    if [ "$v" = "125d" ] ; then
+      IDENT=ESS
+      cat<<END>>$RECORD
+
+ Vendor=$v is ESS Technologies, making devices:
+ There has been no formal support for Linux since kernels 2.2.2
+ Some kludges are of fading utility as the 2.4.n Linux kernels and hardware evolves:
+   http://linmodems.technion.ac.il/archive-fourth/msg00317.html   (2004Feb08)
+   http://andrew.cait.org/ess/
+   http://sidlo.penguin.cz/ES2838/index_en.html
+   http://tx.technion.ac.il/~raindel/
+   http://phep2.technion.ac.il/linmodems/archive/msg04424.html
+      
+ There is no hope for support under 2.6.n kernels.
+
+END
+    fi
+    if [ "$v" = "1025" ] ; then
+      cat<<END>>$RECORD
+
+ Vendor=$v is Acer, http://global.acer.com/ PC and latop manufacturer with devices including:
+  1025:5453   M5453 AC-Link Controller Modem Device
+  1025:0038   an AC97 link modem.
+
+END
+    fi
+    # beginMotorola
+    if [ "$v" = "1057" ] || [ "$v" = "11d4" ] ; then
+      IDENT=Motorola
+      cat<<END>>$RECORD
+
+ -----------------------------
+ Vendor=1057 is Motorola with service provided through vendor=11d4 Analog Devices Inc.
+ Installers are available at: http://www.motorola.com/softmodem/sm56_download.htm
+as RPM packages containing binary images of drivers 
+applicable for installation on the following systems:
+* RedHat 7.3 (kernel version 2.4.18-3, sm56-06.05.00-1.rh7.i386.rpm)
+* RedHat 8.0 (kernel version 2.4.18-14, sm56-06.05.00-1.rh8.i386.rpm)
+* RedHat 9.0 (kernel version 2.4.20-8, sm56-06.05.00-1.rh9.i386.rpm)
+* Mandrake Linux 9.2 (kernel version 2.4.22-10mdk, sm56-06.05.02-1.mdk.i586.rpm)
+* Mandrake Linux 10.0 (kernel version 2.6.3-7mdk, sm56-06.05.02-2.mdk10_263-7.i586.rpm)
+* Suse Linux 9.0 (kernel version 2.4.21, sm56-06.05.02-1.suse90-020421-99.athlon.rpm)
+* Suse Linux 9.0 (kernel version 2.4.21, sm56-06.05.02-1.suse90-020421-99.i586.rpm)
+ There is also available a Legacy driver - SM56_5.1_I386.rpm for 2.4.n kernels ONLY
+ for which the advice at http://www.sm56.tk/ may be effective.
+ Jan Ibanez  <jmibanez@gmail.com> is our expert on Motorola problems
+ Achieving function with these drivers is often difficult.
+ If you computer alternatively boots Linux and Microsoft OS,
+ do a complete PowerOff before starting Linux. 
+ Otherwise there may be an error during following Motorola usage:
+     SM_DisplayFatalError
+
+ Some guidance for particular cases is:
+   http://linmodems.technion.ac.il/archive-fourth/msg01751.html
+   http://linmodems.technion.ac.il/archive-fourth/msg01749.html
+   http://linmodems.technion.ac.il/archive-fourth/msg01750.html
+   http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:13952:200405:enbjmmngagmdejkemacc
+   http://users.volja.net/kutulu/sm56.tar.gz
+ There is a volunteer Motorola site: http://www.sm56.tk/
+ The installation creates a driver sm56.o , the character devices
+      /dev/motomem
+      /dev/sm56
+         with symbolic link  /dev/modem --> /dev/sm56
+  the /etc/modules.conf lines:
+      alias char-major-24 sm56
+      options sm56 country=1
+  and documentation in  usr/share/doc/HTML/en/sm56/  and "man sm56"
+  An additional line in /etc/modules.conf
+      alias /dev/modem /dev/sm56
+  would beneficially aid driver autoloading, without which there may be a failure of the wvdial functionality test:
+  # /etc/wvdialconf /etc/wvdial.conf
+ --------------------------------- End Motorola ------------------
+
+END
+    fi # begin3com
+    if [ "$v" = "10b7" ] || [ "$v" = "12b9" ] ; then
+      smart=
+      IDENT=3COM
+      cat<<END>>$RECORD
+
+ 10b7 is 3COM
+       :1006    0038TA <- AC101 - TF Mini-PCI 56K V.90 WinModem  no Linux support
+       :1007    3C556 V.90 Mini-PCI    WinModem  no Linux support
+ 12b9 is US Robotics. acquired by 3COM
+       :0062    erk41926a-0.6 usr 56k internal modem
+       ;1006    3cp803598  Voice          WinModem  no Linux support
+       :1007    ERL3263A-0 DF GWPCI PC99  WinModem  no Linux support
+       :1008    3cp803598  is Supported by the standard:  serial.o
+ The following may be supported  by Conexant drivers at   http://www.linuxant.com
+   14f1:2f12 (3COM/USR model 3094-3095)
+   14f1:2f13 (USR OEM)
+   14f1:2f14 3COM/USR
+ though they carry USR labels.
+
+END
+    fi
+    if [ "$v" = "1543" ] ; then
+echo >>$RECORD
+echo  "Vendor 1543 is Silicon Laboratories (SIL).  SIL produces "blanks" for soft modem Subsystems"  >>$RECORD
+echo  which subsequent acquire the Subsystem PCI ID from the final Subsystem assembler. >>$RECORD
+echo  Subsystems for soft modems are also produced. >>$RECORD
+echo >>$RECORD
+    fi    
+    if [ "$v" = "10b9" ] ; then
+          cat<<END>>$RECORD
+
+ Vendor 10b9 is Acer Labs, producing highly integrated motherboards and Ali components.
+ The tight integration unfortunately ofter blocks identification of the modem chipset.
+ Desired information may be gained by using a COMM console under MS Windows,
+   and using ATI commands to elicit chipset and driver information.
+ 10b9:5450  ALI 5450 and  10b9:5451  ALI 5451 are controllers for unsupported "sound  modems"
+END
+      if [ "$Device" = "545a" ] || [ "$Device" = "5459" ] ; then
+        cat<<END>>$RECORD
+ $PCIDEV ALI545A SL1801 and $PCIDEV  ALI 5459 SmartPCI561 have SmartLink chipsets.
+
+END
+      fi
+
+      if [ "$Device" = "5457" ] || [ "$Device" = "5459" ] ; then
+       cat<<END>>$RECORD
+
+ These messages may aid setup of soft modems under $v:M5457 controllers:
+   http://linmodems.technion.ac.il/archive-third/msg02518.html
+   http://linmodems.technion.ac.il/archive-third/msg02100.html
+ The slmodem-2.9.9 support was developed for $v:5459,
+   but there a range of reports the related $v:5457 modemd controllers:
+     fully functional;
+     functional only after a power on reboot from Microsoft windows;
+     hang/crash upon initiation of modem usage.
+ 10b9:5457   Modem: ALi Corporation [M5457 AC-Link Modem] 
+ SubSystem 1179:0001   Toshiba America Info Systems: Unknown device 0001
+ has an AgereSoftModem chip which may be supported by the Smartlink slmodem-2.9.9 driver 
+     
+END
+      fi
+    fi # beginPctel
+
+    if ! [ "$PCTEL" = "DONE" ] ; then
+      if [ -z "$IDENT" ] || [ "$IDENT" = "PCTEL" ] || [ "$IDENT" = "CM8738" ] ; then
+        if [ "$v" = "134d" ] || [ "$v" = "134c" ] || [ -n "$CM8738" ] || [ "$PCTEL" = "13f6" ] || [ "$CODECp" = "SIL21" ] ; then
+         if [ "$CODECp" = "SIL21" ] ; then
+            cat<<END>>$RECORD
+
+ For Pctel AMR under $CNTRL,
+ the SmartLink slmodem-2.9.n  software can serve.
+ The advantage is current updates, extending into the 2.6.n kernels.
+
+END
+              smart=1
+          fi
+         echo " Read ModemData.txt  and Pctel.txt in the new sub-folder Modem/" | tee -a $RECORD
+         if [ "$PCIDEV" = "134d:2189" ] ; then   
+            echo " The 134d:2189 is a PCTel 688T modem which is currently NOT supported see:" >>$RECORD
+            echo "     http://linmodems.technion.ac.il/archive-fifth/msg00057.html" >>$RECORD      
+         fi
+                  cat<<END> Modem/Pctel.txt
+
+ Vendor=134d is PCTel and Vendor=134c is Chori Joho System Co. Ltd, 
+ producing idenitcal devices including deviceIDs. For supported PCtel modems
+  The PCTel Inc., modem sector has been sold to Conexant. 
+  Thus official updates for Linux support are unlikely!!
+  
+  Through volunteer efforts, there are  code releases are at 
+      http://linmodems.technion.ac.il/pctel-linux .
+  Download the pctel-0.9.7-9.tar.gz
+  Do the following preliminary steps:
+         Unpack with command :       tar zxvf pctel-0.9.7-9.tar.gz
+       Change directory:                 cd pctel-0.9.7-9
+       Read README file                   less README   (space bar goes to next page)
+       Is a compiler installed?  Test with:           gcc 
+       If not found, install it from your Linux distribution.
+       Become root:               su  root
+       Seeing lspci?                    lspci    
+         If not, install the package   pciutils .
+       Now you can follow instructions in README
+      
+  For guidance on compiling and installing the pctel drivers, read the  PCTel minHOWTO: 
+      http://www.peacefulaction.org/sayamindu/docs.php
+  and the remainder of this file
+
+ The ISA card pct388p modem is not supported by the current driver series see:
+       http://linmodems.technion.ac.il/archive-fifth/msg00166.html
+ The PCI ID 134d:2189 modem is a PCTel 688T modem which is currently NOT supported see:
+     http://linmodems.technion.ac.il/archive-fifth/msg00057.html 
+ There are No success reports under current 2.6.nn kernels using PCTel code,
+   though volunteer efforts are in progress to achieve support under 2.6.n kernels.
+ The slmodem Smartlink code can however support the AMR PCtel modems under 2.4.n and 2.6.n kernels.
+ During PCtel code installations, the node made is character device /dev/ttyS15  c 62 69
+ Check with:
+     ls -l dev/ttyS15
+     
+ There is a pre-compiled binary component in the Pctel code which was assembled with a gcc 2.95 compiler
+ A consequence is the loading fails under kernels compiled with gcc 3.n , unless forcing (-f) is used:
+       # insmod -f pctel
+        # insmod ptserial
+This can be automated by adding the following lines to /etc/modules.conf
+####### for pctel modem ######
+alias char-major-62 pctel
+alias /dev/modem ptserial
+install pctel /sbin/insmod "-f" "pctel"
+post-install pctel /sbin/insmod ptserial
+
+# country code for pctel modem, for USA
+options ptserial country_code=1
+######## pctel end ####
+
+then run:
+# depmod -a
+to inform the System and thereafter
+# modprobe ptserial
+will load both drivers,
+
+ For some Systems, PCTel function requires disablement of apmd power monitoring function.
+
+ System problems of various severity have been reported after modem usage.
+ These may be alleviated by the following steps after a modem usage session.
+ Log into a console as:
+ # su - root
+ # lsmod 
+ to display loaded modules.
+ # modprobe -r ptserial
+ # lsmod
+
+ For a case of a 134d:7897 modem on a VIA686 motherboard PCTEL drivers compiled with
+     hal=via686
+  did NOT provide effective drivers while the drivers were effective when compiled with
+     hal=pct789 
+     
+ For pctel-0.9.7-9 with variant hal=via686a, a fix is needed:
+   # cd src
+   # make clean
+   # ./configure -auto
+Search the Makefile for a line containing DAUDIO.  Edit that line into:
+   AUDIOROUTING=-DVIA
+Then:  
+   # make
+   # make install
+    
+END
+        fi
+      PCTEL=DONE
+     fi
+    fi # IDENT
+    
+    if [ "$v" = "158b" ] ; then
+      cat<<END>>$RECORD
+
+ echo Vendor 158b is Allied Data Technologies, http://
+ 158b:0001 and 158b:0005 have Conexant HSF chipsets.
+ 158b:0015 has a Conexant HCF chipset.
+ There are 158b:xxxx modems with the Intel 536ep chipset.
+
+END
+    INTEL536ep=1
+    fi
+    if  [ "$v" = "1013" ] ; then
+      cat<<END>>$RECORD
+
+ There is no CURRENT SUPPORT for the Vendor=1013 chipsets of CML, Cirrus Logic Modems,
+  with modem business acquired by Intel, Inc.
+ See message: http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:9448:200210:fbhcoigfcimgkjdedjad
+
+END
+    fi
+    if [ "$v" = "1813" ] ; then
+      cat<<END>>$RECORD
+
+ Vendor=1813 Ambient Tech was acquired by Intel with its HaM (Host assisted Modem) chipsets.
+ Intel-v92ham-453.tgz ifor 2.4.n kernels is FINAL update for HaM modems, available at:
+    http://linmodems.technion.ac.il/packages/Intel/ham/ 
+    http://developer.intel.com/design/modems/support/drivers.htm
+    It is NOT functional when compiled under 2.6.n kernels and will NOT be updated to support
+    the 2.6.n kernels, Intel maintainer Dorian Araneda has reported.
+ But under the 2.4.nn kernels, all HaM chipsets are supported,
+     with a single EXCEPTION: the odd PCI_ID 1813:4100 modems.  For the explanation, see message:
+     http://linmodems.org/cgi-bin/ezmlm-cgi?1:mss:9448:200210:fbhcoigfcimgkjdedjad
+
+END
+    fi 
+    # beginCXT
+    if test -z "$Dcnx" ; then 
+      Dcnx=done
+      echo "148d 158b 141a 127a 14f1 1024" > $TMPM
+      # hcfpciconfig
+      if [ "$IDENT" = "CXT" ] || grep $v  $TMPM >/dev/null  ;  then
+         # Conexant HSF, adapted from www.linuxant.com   HSF page
+cat<<END>$TMPM
+
+   HSFi tyes
+ -----------
+ 14f1:2f00, Subsystem ID 2002:14f1
+ 14f1:2f00, Subsystem ID 2003:14f1
+ 14f1:2f00, Subsystem ID 2004:14f1
+ 14f1:2f01
+ 14f1:2f02
+ 14f1:2f03
+ 14f1:2f04
+  
+   HSF types
+ ----------
+ 14f1:2013
+ 14f1:2014
+ 14f1:2015
+ 14f1:2016
+ 14f1:2f10
+ 14f1:2f11
+ 14f1:2f12
+ 14f1:2f13
+ 14f1:2f14
+ 14f1:4311 (RIPTIDE - sound not supported)
+ 127a:2013
+ 127a:2014
+ 127a:2015
+ 127a:2016
+ 127a:4311 (RIPTIDE - sound not supported)
+ 127a:2114
+
+ Basic2 / SmartDAA types
+ --------------------------
+ 14f1:2043
+ 14f1:2044
+ 14f1:2045
+ 14f1:2046
+ 14f1:2443
+
+  Athens (Yukon)
+ -----------------
+ 14f1:1631
+ 14f1:1636
+ 14f1:1637
+
+ 8086:2486 104d:8129 SoftK56 CModem in a Sony Vaio grx560 laptop required a bootup "acpi=on" for IRQ acquisition.
+END
+
+if [ "$PCIDEV" = "14f1:2f00" ] ; then
+  echo $Vendor:2002 > $TMPM.0
+  echo $Vendor:2003 >> $TMPM.0
+  echo $Vendor:2004 >> $TMPM.0
+#  cat $TMPM.0
+  if grep 14f1:2f00 $TMPM | cut -dD -f2- | grep -f $TMPM.0 >/dev/null ; then
+    HSF=1
+  fi
+fi
+if grep $Vendor $TMPM >/dev/null ; then
+  grep $Vendor $TMPM > $TMPM.1
+  if grep $Vendor:$Device $TMPM.1 >/dev/null ; then
+    HSF=1
+  fi
+fi
+if test -n "$HSF" ; then
+   echo "  $PCIDEV is a Conexant HSF modem." | tee -a $RECORD
+fi
+# END Conexant HSF
+# the four set  127a,14f1:1025,2005 can be HCF and HSF and are included in the following HCF section
+
+# www.linuzant.com HCF page adaptation
+cat<<END>$TMPM
+# Vendor:-------devices-----  of HCF List
+ 127a:1002:1003:1004:1005:1006 (71DP v90)
+ 14f1:1002:1003:1004:1005:1006 (71DP v90)
+ 127a:1022:1023:1024:1026
+ 14f1:1022:1023:1024:1026
+ 127a:1025:1085:2005 (if it doesn't work: try HSF driver)
+ 14f1:1025:1085:2005 (if it doesn't work: try HSF driver)
+ 127a:2004:2006
+ 14f1:2004:2006
+ 127a:1032:1033:1034:1035:1036
+ 14f1:1032:1033:1034:1035:1036
+ 127a:14f1:4321 (RIPTIDE)
+ 14f1:10b3:10b4:10b5:10b6
+ 127a:1802:1804:1805 (LAN/Modem combo)
+ 14f1:1813:1815 (LAN/Modem combo)
+ 14f1:1f10:1f11:1f14:1f15
+ 14f1:1053:1054:1055:1056 (Smart HCF board rev 3)
+ 14f1:1052:1057:1059 (Smart HCF board rev 4)
+ 14f1:1063:1064:1065:1066 (Smart HCF US-only: Dell)
+ 14f1:1453:1454:1455:1456 (Smart HCF mini-PcI board rev 3)
+ 14f1:1452:1457:1459 (Smart HCF mini-PcI board rev 4)
+ 1024:1024 (Zenith Data Systems)
+ 148d:1003 (DIGICOM Systems)
+ 158b:0015 (Allied Data Technologies Tornado VfM56x-PRc)
+ 141a:1035 (Apache Micro)
+
+END
+if grep " $Vendor:" $TMPM >/dev/null ; then
+  grep " $Vendor:" $TMPM > $TMPM.1
+  if grep :$Device $TMPM.1>/dev/null ; then
+  #for the four set  127a,14f1:1025,2005
+    if grep $Vendor:1025:1085:2005 $TMPM.1 >/dev/null ; then
+       echo " $PCIDEV could be either an HSF or an HCF Conexant modem" | tee -a $RECORD
+    else
+       echo "  $PCIDEV is a Conexant HCF modem." | tee -a $RECORD 
+    fi 
+  fi 
+fi
+          cat<<END>>$RECORD
+
+ Vendors 127a and 14f1 are Conexant, inheritor of  Rockwell modem  technology. There are also Conexant chipsets
+ in some modems from vendors 158b - Allied Data Tech., 1024 - Zenith ,141a - Apache Micro and 148d Digicom Systems.
+ With respect to software support there are two main types, hcfpcimodem* and hsfmodem* .
+ Download drivers from http://www.Linuxant.com/drivers/
+ At   http://linmodems.technion.ac.il/resources.html#conexant  , there are scripts aiding installation:
+      For HSF modems.
+      For HCF modems.
+ There is additional Conexant information written to Modem/Conexant.txt 
+END
+   cat<<END> Modem/Conexant.txt 
+   
+  Linuxant Inc.  provides Linux drivers for Conexant chipset modems
+  Go to http://www.linuxant.com/drivers
+-Find the HCF or HSF menu in the left part of the screen.
+-Read README.
+-Read INSTALLATION.
+-Click DOWNLOAD.
+-Accept conditions.
+-Find text: "You can download HCF (or HSF) modem packages from the driver
+            download page." and click there.
+-Look for your distribution, your processor, and your kernel.
+-Download the matching file.
+-Read again and, if you do this under Windows, print the installation
+ instructions matching the kind of driver file which you downloaded.
+-Now just follow these instructions.
+
+http://www.linuxant.com/drivers/hsf/downloads-patches.php has patches
+    that may be necessary for recent kernels. 
+
+ A detailed software installation example is provided at:
+   http://linmodems.technion.ac.il/archive-fourth/msg00350.html
+   
+ The HCF (Host Controller Free) modems which have a digital signal processsing (DSP) chipset,
+ while the HSF in the soft modem family without a DSP.
+ HSF support is included with SuSE 9.0 and later releases
+ Modems with the following PCI_IDs also have Conexant HCF (Controller free) chipsets.
+  1024:1024 (Zenith Data Systems)
+  148D:1003 (DIGICOM Systems)
+  158B:0015 (Allied Data Technologies Tornado  VFM56x-PRC)
+  141A:1035 (Apache Micro)
+ The following six may be either HCF of HSF modems. Test the HSF package first
+  (127a,14f1):(1025,1085, 2005)
+  Should a HCF driver installation fail to serve among there,
+  then uninstall and instead try the HSF driver resource.
+ Subsystem HSF Conexant soft modems serve under AC97 or MC97 controllers. These include:
+  14f1:(5422 2002) , plus many others with vendors assigned PCI IDs.
+ After loading of HSF drivers, there will be displayed by command: /sbin/lsmod
+Module                  Size  Used by    Tainted: P
+hsfich                119116   0  (autoclean)
+hsfserial              26388   0  (autoclean)
+hsfengine            1126348   0  (autoclean) [hsfserial]
+hsfosspec              35328   0  (autoclean) [hsfich hsfserial hsfengine]
+     plus many others not modem related.
+ While drivers are pre-compiled for some Linux distributions,
+   the installation of the HCF/HSF packages DOES in general require kernel-source/ preparation,
+   as described in Modem/DriverCompiling.txt.
+   
+ There is a conflict between modules snd-intel8x0m and  hsfmc97ich.
+ The snd-intel8x0m Must be loaded first or the system may hang upon hsfmc97ich insertion.
+      http://linmodems.technion.ac.il/archive-fourth/msg03027.html
+      
+ A post install suggestion for adjusting PCI latency is:
+         http://phep2.technion.ac.il/linmodems/archive/msg05210.html
+
+END
+      fi 
+    fi # cnxt # beginIntel
+
+    echo $IDENT>$TMPM
+    if [ -z "$Dintel" ] ; then
+      if grep INTEL $TMPM >/dev/null || [ "$v" = "8086" ]  || [ "$v" = "1813" ] || [ "$AMBIG" = "INTEL537" ] || [ "$CODECp" = "INT" ]; then
+        Dintel=done
+        cat<<END>>$RECORD
+
+ Vendor=8086 is Intel, Inc. producing HaM and 536ep host controller free (HCF) modems, 537 soft modem
+ and AC97 and MC97 controllers managing a varierty of non-Intel soft modem Subsystems.
+ These subSystems often have PCI_IDs assigned by the modem assembler, rather than the chip provider.
+ Download available drivers through:  http://developer.intel.com/design/modems/support/drivers.htm  with Intel-537 types at:
+ http://downloadfinder.intel.com/scripts-df/Filter_Results.asp?selCat=all&strOSs=39&ProductID=1230&page_nbr=2
+ Also check at: http://linmodems.technion.ac.il/packages/Intel/537/  
+ for beta releases and perhaps Already compiled drivers for some Linux distributions
+ A very detailed installation report cogent to 537 type modems is at:
+                  http://linmodems.technion.ac.il/archive-fifth/msg00541.html
+ Setup call id with:
+       Type 1 : When the phone line is not in use                    at+vcid=1
+       Type 2 : When the phone line is already in use on a call      at+pcw=0
+ ---------------------
+END
+        if [ "$IDENT" = "INTEL536ep" ] ; then
+           cat<<END>>$RECORD
+:
+ The older 2.4.n driver pair have a dependency on one other.
+ with result that these messages may be seen upon driver loading:
+        depmod****Unable to resolve symbol in 536ep.o
+        depmod****Unable to resolve symbol in 536epcore.o
+ but function is NOT affected.
+ Bur when the message is any longer, the drivers probably have not been properly compiled.
+   In which case carefully read Modem/DriverCompiling.txt
+
+ A problem maintaining CONNECT under the version 4.62 drivers was resolved
+ by dropping back to the 4.60 version. See:
+    http://linmodems.technion.ac.il/archive-third/msg02127.html
+
+  The Intel-537SP-MostRecentVersion.tgz driver package may alternatively provide support.
+  
+  For Debian like distros, a modified install script is:  
+http://members.lycos.co.uk/persianlinux/downloads/intel536ep/Intel536_inst_debian
+
+END
+       fi # 536ep
+       if [ "$AMBIG" = "INTEL537" ] || [ "$CODECp" = "INT" ] ; then
+          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
+         if [ "$DISTR" = "SuSE" ] ; then
+            cat<<END>>$RECORD
+
+  Within http://linmodems.technion.ac.il/packages/Intel
+  there are packages with compiled Intel 537 drivers for 2.4.nn kernels with name formats like:
+          intel-537EP_SuSE-9.0_2.4.21-99-default_ONLY.tgz
+
+END
+          fi
+         if [ "$AMBIG" = "INTEL537" ] ; then
+             cat<<END>>$RECORD
+ The installer code candidate is:
+       Intel_secure-537AA-MostRecentVersion.tgz 
+ But the Intel 537 readout needs confirmation !!
+ Sadly there are a few mis-designations in the pciids dataset, which $0 relies on
+ Too many modems are being labeled Intel537 types.
+   http://linmodems.technion.ac.il/archive-third/msg02463.html
+   http://linmodems.technion.ac.il/archive-third/msg02476.html
+ This includes the distinct Agere, Conexant and SmartLink chipsets types. Conseqeuntly
+ YOU must manually obtain further information under Microsoft Windows through modem ATI tests/queries
+ as instructed in $RECORD2  Please include this information in any report to discuss@linmodems.org
+
+END
+          fi
+        cat<<END>>/dev/null
+
+ There are Five types of Intel 537 chipsets sold to a variety of modem assemblers,
+    though they may are all called out as Intel 537  by the LSPCI tool used in $0.
+    Intel 537, a 8086:0003 subsystem PCI card  modem with TigerJet PCI Controller - e159:0001
+       The installer is:  Intel-537-MostRecentVersion.tgz 
+    Intel 537EP, an Intel PCI modem  si3052 chip(Intel 537EP(G)), si=Silicon Instruments
+       8086:1080 Intel AC97 controller with modem  subSystem 8086:100[7,8,A,0] with
+       with installer is intel-537EP_MostRecentVersion.tgz
+         at http://downloadfinder.intel.com/scripts-df/Product_Search.asp?Prod_nm=537ep
+    Intel 537SP (was known as MD5690) a PCI modem with dsp on board but disabled.
+       8086:1040 Intel AC97 controller, with modem subsyst 8086:1005
+       with installer intel-537SP-MostRecentVersion.tgz
+    There are ambiguities in identification of modems with two Intel537 AA and EA chipset types
+       http://linmodems.technion.ac.il/archive-third/msg02463.html
+       http://linmodems.technion.ac.il/archive-third/msg02476.html
+     Intel 537AA/EA, MDC/AC97 controller  with si3054 modem chip
+       currently supported AC97 controllers - Intel (ICH3,4,5), VIA, NVIDIA, SIS, Realtek, ALI, ATI
+       with installer  intel-537AA_secure-MostRecentVersion.tgz
+    serving also Intel 537EA, CNR controller with  si3038 modem chip
+
+END
+       fi # IDENT
+      fi # End Intel section
+    fi # DONE
+# EOF    
+    # Lucent or Xircom DSP
+    if [ "$IDENT" = "AGERE" ] || [ "$IDENT" = "XIRCOM" ] ; then
+     DEVICES="0x11c1:0x0440-0x045c"
+     DEVICES=$DEVICES" 0x115d:0x0000-0x000f"
+     DEVICES=$DEVICES" 0x115d:0x0440-0x045c"
+     DEVICES=$DEVICES" 0x115d:0x0010-0x03ff"
+     DEVVEN=$(( 0x`echo $PCIDEV | cut -d':' -f1` + 0 ))
+     DEVNUM=$(( 0x`echo $PCIDEV | cut -d':' -f2` + 0 ))
+     for DEV in $DEVICES
+     do
+      VENDOR=$(( `echo $DEV | cut -d':' -f1` + 0 ))
+      DEVMIN=$(( `echo $DEV | cut -d':' -f2 | cut -d'-' -f1` + 0 ))
+      DEVMAX=$(( `echo $DEV | cut -d':' -f2 | cut -d'-' -f2` + 0 ))
+      FOUND=
+      if test $DEVVEN -eq $VENDOR && test $DEVNUM -ge $DEVMIN && test $DEVNUM -le $DEVMAX
+      then
+        FOUND="yes"
+        PCI_ID="$PCIDEV"
+        MODEM_VENDOR=0x`echo $PCIDEV | cut -d':' -f1`
+        MODEM_DEVICE=0x`echo $PCIDEV | cut -d':' -f2`
+        if [ "$MODEM_VENDOR" = "0x11c1" ] ; then
+          VENDED=LUCENT
+        else
+          VENDED=XIRCOM
+        fi
+        if test -n "$PCI_ID" ; then
+          DSP=1
+          cat<<END  |  tee -a $RECORD
+
+ The modem has a supported Lucent/Agere DSP (digital signal processing) chipset
+  with primary PCI_ID:  $PCI_ID
+ DSP=1
+        
+ Agere Systems, Inc provides periodic software releases for there DSP modems,
+ which are made more Newbie friendly by volunteers.  There are some installer packages
+ and also resources for compiling drivers:
+ http://ltmodem.heby.de  is a repository for installers for later 2.4.2n and early 2.6.n  kernels.
+      Packages below are for compiling drivers:
+            ResourceName                Use for kernel ranges
+        --------------------------------------------------------------------------------------------------         
+        ltmodem-8.26a.tar.gz         kernels 2.4.21 and earlier
+        ltmodem-8.30a3.tar.gz       kernels 2.4.21 and subsequent 2.4.2n kernels
+        ltmodem-8.31a10.tar.gz     beginnig with 2.4.21 through and into 2.6.n  kernels 
+ http://linmodems.technion.ac.il/packages/ltmodem/
+        has installers for older 2.4.n kernels moved from http://ltmodem.heby.de 
+        and subfolder kernel-2.6/  for 2.6.n  kernel support.  The latest resouce is:
+       ltmodem-2.6-7-alk-7.tar.bz2  from Alex Kondratenko
+       ltmodem-2.6-7alk.src.rpm is a repackaging for by Stephan Puck.  After installation
+           of a kernel-source package (not necessary for fedora releases) use by:
+           rpmbuild --rebuild ltmodem-2.6-7alk.src.rpm  , which will deposit an installer at:
+               /usr/src/rpm/RPMS/i586/ltmodem-kv_YourVersion.rpm          Check with  
+            # ls -l   /usr/src/rpm/RPMS/i586/ltmodem*
+           Then install with:
+           # rpm -i /usr/src/rpm/RPMS/i586/ltmodem-kv_YourVersion.rpm
+
+Support is effective at least into  2.6.11-1.14_FC3.       
+PCMCIA ltmodem support is still being  ported from 2.4.n to 2.6.n, as of May 2005
+        
+ http://dag.wieers.com/packages/kernel-module-ltmodem/ for some 2.4.n installers     
+ SuSE/Novell has some ltmodem installers at their repositories and newer install CDs.
+ More related output is below.
+END
+
+          cat<<EOF>>$RECORD2
+
+    VENDOR $MODEM_VENDOR         DEVICE $MODEM_DEVICE
+   ------------------------------------------
+    LUCENT 0x11c1          0x0440-0x045c
+    XIRCOM 0x115d          0x0000-0x000F
+    XIRCOM 0x115d          0x0440-0x045c
+    XIRCOM 0x115d          0x0010-0x03ff
+  -------------------------------------------
+ Driver installer and and their predecessor driver compiler kits are available through:
+       http://ltmodem.heby.de/  and  http://linmodems.technion.ac.il/packages/ltmodem/
+
+EOF
+        else
+          cat<<END > $TMPM
+
+ While ISA and PCMCIA card modems would not be detected,
+ if the modem is a PCI type it will not be served by these
+ drivers for Lucent/Agere digital signal processor modems.
+
+END
+          PCI_ID=
+        cat $TMPM
+        cat $TMPM >>$RECORD
+        fi
+      fi
+     done
+    fi # end Lucent DSP section
+    ## begin LUCENT
+    if [ -z "$IDENT" ] || [ "$IDENT" = "AGR" ] || [ "$IDENT" = "AGERE" ] || [ -n "$DSP" ] && ! [ "$ALSA" = "snd-atiixp-modem" ] && [ -z "$ADONE" ] ; then
+      ADONE=1
+      if [ "$v" = "11c1" ] || [ "$CODEC" = "SIL27" ] || [ -n "$AGR" ] && ! [ "$SMART" = "only" ]  ; then
+         cat<<END>>$RECORD
+
+ Vendor 11c1 corresponds to Lucent Technologies or subsidiary Agere Systems, Inc.
+ Information is at:  http://www.agere.com/client/modem_dsp.html. Produced are both:
+   1) modems identifiable from their primary PCI IDs and 
+   2) soft modem Subystem chips requiring identification through codec readouts.
+END
+        fi
+       if  [ "$CODECp" = "SIL27" ] || [ -n "$AGR" ] ; then
+         Smart=AGR
+          cat<<END>>$RECORD
+ AgereSoftModem drivers only support AC97 or MC97 modem controllers with codecs charcterized by one of:
+   SIL_id = 39 
+   mc97 codec is SIL27 
+   0x27 , as output by modem diagnostics under Microsoft Windows
+ If uncertain, identity the softmodem codec through tests described in Modem/SoftModem.txt
+ Support is currently ONLY for 2.4.n kernels and the following modem controllers:
+   8086:(2416 2426 2446 7196 2486 24C6)  , with 8086 == Intel
+   1039:7013  SIS
+   1106:3068  VIA
+ Access the soft modem software through code sponsor IBM at:
+   http://www-3.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52698
+ The SmartLink slmodem-2.9.9 may serve for modems not served by this AgereSystems software.
+ If may be necessary to add -DMODVERSIONS to the compile flags, 
+ depending on whether your kernel was thus compiled. See
+ http://linmodems.technion.ac.il/archive-fourth/msg01408.html
+
+END
+        elif [ "$Device" = "0462" ] ; then
+          cat<<END>>$RECORD
+
+ 56K.V90/ADSL Wildfire Modem with PCI_ID 11c1:0462
+   http://www.lucent.com/press/0598/980505.mea.html
+ currently lacks support under Linux.
+
+END
+        elif [ "$Device" = "048c" ] || [ "$Device" = "048e" ] || \
+        [ "$Device" = "048f" ] ||  [ "$Device" = "0600" ] ; then
+         smart=
+        SMART=
+         cat<<END>>$RECORD
+
+  Class 0703:  $v:$Device is still NOT supported under Linux, as of $UPDATE
+  It is a "software" modem without a digital signal processing (DSP) chipset.
+  The ltmodem drivers from http://ltmodem.heby.de resources for DSP modems do NOT provide support,
+    A dialout terminates with "No Carrier" or a Hang if usage of the ltmodem drivers is attempted.
+
+END
+        elif  [ "$Device" = "0480" ] ; then
+          echo " The Venus controller chipset 1673JV7 modems use the serial.o driver." >>$RECORD
+        elif test -n "$DSP" ; then
+          echo " Call waiting specified by, +pcw=1, is not implmented in the ltmodem drivers." >>$RECORD
+         echo  Configuration with forcing is described in:   http://linmodems.technion.ac.il/archive-fifth/msg00055.html >> $RECORD
+# Setting up board.info for grepping MODEL_DATA
+          cat<<END > $TMPM.2
+ 0x0440 -- Mars 2 - data/fax/voice
+ 0x0441 -- Mars 2 - data/fax only
+ 0x0442 -- Mars 2 - data/fax/tam only
+ 0x0448 -- Mars 2 Global Board - data/fax/voice
+ 0x0449 -- Mars 2 Global Board - data/fax only
+ 0x044a -- Mars 2 Global Board - data/fax/tam only
+ 0x0444 -- Apollo 2 data/fax only : Modem/LAN combo board Apollo behind an Intel 82559
+ 0x0445 -- Apollo 2 Global Board data/fax only : Modem/LAN combo board Apollo behind an Intel 82559
+ 0x0446 -- Apollo 2 data/fax/voice : Modem/LAN combo board Apollo behind an Intel 82559
+ 0x0447 -- Apollo 2 Global Board data/fax/voice : Modem/LAN combo board Apollo behind an Intel 82559
+ 0x044c -- Mars 3 Perseus data/fax only:North America and Global board
+ 0x044e -- Mars 3 Mercury data fax only
+ 0x0450 -- Mars 3 Mercury data fax Global board
+ 0x0451 -- Mars 3 Mercury data/fax/voice
+ 0x0452 -- Mars 3 Mercury data/fax/voice Global board
+ 0x0455 -- Mars 3 Perseus data/fax/voice: North America and Global board
+ 0x0458 -- Mars 3 Mercury data/fax/tam only.
+ 0x0459 -- Mars 3 Mercury data/fax/tam only. Global board.
+ 0x045a -- Mars 3 Perseus data/fax/tam only.: North America and Global board
+ 0x045b -- Apollo 3 Perseus data/fax only : Modem/LAN combo board Apollo behind an Intel 82559
+ 0x045c -- Apollo 3 Mercury data/fax only : Modem/LAN combo board Apollo behind an Intel 82559
+ 0x045d -- Mars 3 Mercury data/fax/tam only. Global board for Cardbus modem product.
+ 0x044c -- Mars 3.2 Mercury data fax only when no eeprom is present, North America DAA
+##############
+END
+          if grep $MODEM_DEVICE $TMPM.2 > /dev/null ; then
+            grep $MODEM_DEVICE $TMPM.2   >>$RECORD
+          fi
+         if [ "$MAJOR" = "2.6"  ] ; then
+            if [ "$SYS" = "2.6.3-4mdk" ] ; then
+              cat<<END>>$RECORD
+
+ There are ltmodem packages in Mandrake. Search for ltmodem in the package lists
+ and check for installation already with:
+       rpm -qa ltmodem
+ There is also a ltmodem-2.6.3-4mdk.tgz at
+    at http://linmodems.technion.ac.il/packages/ltmodem/kernel-2.6  
+
+END
+            fi
+           if [ "$KVER" = "2.6.8.1" ] ; then
+             cat<<END>>$RECORD
+
+ Drivers compiled with ltmodem-2.6-alk-6.tar.bz2 have been effective with Mandrake 10
+ kernel versions $KVER-* . See within http://linmodems.technion.ac.il/packages/ltmodem/
+ ltmodem-2.6.8.1-10mdk.tar.gz  
+  
+END
+           fi
+          fi
+          if [ "$DISTR" = "SuSE" ] ; then
+            cat<<END>>$RECORD
+
+  SuSE has a ltmodem packages for with pre-compiled drivers, beginning with the 8 releases 
+  For the SuSE 9.1 release, there is an update improving bootup automation. 
+  A failure had been reported for the 9.3 release ltmodem package, 
+  but the ltmodem-2.6-7-alk-7.tar.bz2  resource gave effective drivers.
+
+END
+          fi
+          if [ "$Device" = "0442" ] ; then
+    echo "The device=$Device  modems have an electro-optical coupling" >>$RECORD
+    echo "which in some hardware is Not adequately supported by these drivers." >>$RECORD
+    echo >>$RECORD
+          fi
+       fi #DSP  
+    fi # IDENT2
+      
+    if [ "$v" = "115d" ]  || [ "$PCIDEV" = "11c1:0420" ] ; then
+      cat<<END>>$RECORD
+
+ Vendor=115d corresponds to Xircom, now an Intel subsidiary.
+   http://www.intel.com/support/peripherals/xc/modems/index.htm
+   http://appsr.intel.com/scripts-df/support_intel2.asp
+   http://support.intel.com/
+                          Device ID Range
+                            -------------
+    XIRCOM 0x115d          0x0000-0x000F
+    XIRCOM 0x115d          0x0440-0x045c
+    XIRCOM 0x115d          0x0010-0x03ff
+   --------------------------------------
+ are supported by the resources at http://ltmodem.heby.de/
+
+ Some other Xircom modems and Lucent 11c1:0420 modems
+    MAY BE accessed by Insertion Options
+ Download from http://ltmodem.heby.de/  the:   ltmodem-$LT_VERSION.tar.gz
+ Open with:    tar zxvf  ltmodem-$LT_VERSION.tar.gz
+ Within the ltmodem/DOCs/  folder read the Insertion-param files
+ and for fun, the history:   andreas.txt
+
+ To get a recommendation for an Installer kit, run
+    $0  kit
+
+END
+      if test -z "$DSP" ; then
+        echo " The ltmodem drivers do NOT support this modem.">>$RECORD
+      fi
+    fi # Xircom
+
+    if [ -z "$ALT" ] ; then
+    # SmartLink section
+      ALT=1
+      
+       if [ "$Smart" = "ALSA" ] ; then
+                cat<<END>>$RECORD
+
+ Under the controller $CNTRL,
+ with modem subSystem $SUBSYS 
+ Only ALSA mode usage of slmodem-2.9.n  code may provide support.
+END
+       fi
+
+       if  [ -n "$Smart" ] && ! [ "$Vendor" = "163c" ] && [ -n "$CNTRL" ] && ! [ "$IDENT" = "ATI" ] && ! [ "$Smart" = "ALSA" ] ; then
+
+          cat<<END>>$RECORD
+
+ Under the controller $CNTRL,
+ with modem subSystem $SUBSYS     
+ Alternative supporting packages are the SmartLink slmodem-2.9.n using its proprietary slamr driver, 
+ or dependent on  $CNTRL, an  Open Source driver from the  ALSA package.
+ See Modem/Slmodem-ALSA.txt for details.
+  
+ For SuSE 9.2 users, there is an update  for driver slamr.ko loading during bootup. 
+ To find it easily, search for "slamr" within  http://www.novell.com/linux/download/updates/92_i386.html
+     
+END
+       fi
+    fi #ALT
+
+    if [ -z "$SMDONE"  ] && [ -z "$DSP" ] && ! [ "$PCIDEV" = "8086:1040" ] ; then
+      echo "163c 2000 2003 2004" > $TMPM
+      # make all KERNEL_VER=2.6.0-test7  , due to lack of  kernel-headers
+      if grep $v $TMPM>/dev/null || [ -n "$smart" ] || [ -n "$SMART" ] || [ "$IDENT" = "SMART" ] && [ -z "$CXT" ] && ! [ "$IDENT" = "ATI" ] ; then
+        cat<<END>>$RECORD
+
+ SmartLink at http://www.smlink.com/ owns vendor IDs 163c, 2000, 2003, and 2004
+ The official download site is:  http://www.smlink.com/main/index1.php?ln=en&main_id=40 ,
+  but http://linmodems.technion.ac.il/packages/smartlink/ has older packages and new fixes.
+      For the emerging 2.6.10 kernels, use the slmodem-2.9.9d.tar.gz  therefrom.
+      Also DO download the ungrab-winmodem.tar.gz
+ For details read Slmodem.txt,  Slmodem-ALSA.txt  and 
+    http://linmodems.technion.ac.il/slmodem-serial.html
+   
+END
+      # a HowTo http://www.raspberry.co.za/michael/slmodem.html
+        SMART=
+        smart=
+      fi
+      SMDONE=1
+    fi
+    done
+    # with Vendor and SUBven
+    echo  >>$RECORD  
+
+if [ -n "$DSP" ] ; then
+  # || [ "$1" = "kit" ] ||
+  if ! [ "$DISTR" = "Not_identified" ] ; then
+    # No use if the distribution is not known
+    if [ "$DISTR" = "slackware" ] ; then
+      echo Installers are not available for Slackware Linux  >>$RECORD
+    fi
+    if [ "$DISTR" = "gentoo" ] ; then
+      cat<<END>>$RECORD
+
+ LTmodem packages are within the Gentoo package system, so you can just run "emerge ltmodem".
+  This will download the source, configure, compile, and install the driver modules.
+
+END
+    fi
+    # DISTR=mandrake
+    # echo DISTR=$DISTR
+    # pick out the Distro section
+    echo >  $TMPM
+    if [ "$DISTR" = "conectiva" ] ; then
+      if ! [ "$GCCmajor" = "3" ] ; then
+        cat<<EOF>$TMPM
+
+ltmodem-kv_2.4.18_586-6.28a8-1.i386.rpm
+ltmodem-kv_2.4.19_1U80_13cl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.19_1U80_2cl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.19_1U80_5cl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.19_1U80_8cl-8.26a9-1.i386.rpm
+
+EOF
+
+      else
+        cat<<EOF>$TMPM
+
+ltmodem-kv_2.4.21_28872cl-8.26a9-1.i386.rpm
+
+EOF
+      fi
+    fi
+    if [ "$DISTR" = "debian" ] ; then
+      cat<<END>>$RECORD
+
+ Add either of the following lines to the Debian  /etc/apt/sources.list
+ to enable automatic updates on installer availability:
+   deb http://www.physcip.uni-stuttgart.de/heby/ltmodem/dists/debian/ ./
+   deb http://www.sfu.ca/~cth/ltmodem/dists/debian/ ./
+
+END
+      if ! [ "$GCCmajor" = "3" ] ; then
+        cat<<EOF > $TMPM
+ltmodem-2.2.20-compact_6.00c2_i386.deb
+ltmodem-2.2.20-idepci_6.00c2_i386.deb
+ltmodem-2.2.20-reiserfs_6.00c_i386.deb
+ltmodem-2.2.20_6.00c2_i386.deb
+ltmodem-2.2.21-compact_6.00c2_i386.deb
+ltmodem-2.2.21-idepci_6.00c2_i386.deb
+ltmodem-2.2.22_6.00c_i386.deb
+ltmodem-2.2.22-compact_6.00c_i386.deb
+ltmodem-2.2.22-idepci_6.00c_i386.deb
+ltmodem-2.2.25_6.00c_i386.deb
+ltmodem-2.2.25-compact_6.00c_i386.deb
+ltmodem-2.2.25-idepci_6.00c_i386.deb
+
+ltmodem-2.4.17-386_8.00a3_i386.deb
+ltmodem-2.4.17-586tsc_8.00a3_i386.deb
+ltmodem-2.4.17-686-smp_8.00a3_i386.deb
+ltmodem-2.4.17-686_8.00a3_i386.deb
+ltmodem-2.4.17-bf2.4_8.00a3_i386.deb
+ltmodem-2.4.17-k6_8.00a3_i386.deb
+ltmodem-2.4.17-k7_8.00a3_i386.deb
+ltmodem-2.4.17_8.00a3_i386.deb
+ltmodem-2.4.18-386_8.00a3_i386.deb
+ltmodem-2.4.18-586tsc_8.00a3_i386.deb
+ltmodem-2.4.18-686-smp_8.00a3_i386.deb
+ltmodem-2.4.18-686_8.00a3_i386.deb
+ltmodem-2.4.18-bf2.4_8.00a3_i386.deb
+ltmodem-2.4.18-k6_8.00a3_i386.deb
+ltmodem-2.4.18-k7_8.00a3_i386.deb
+ltmodem-2.4.18_8.00a3_i386.deb
+
+ltmodem-2.4.19-386_8.26a9_i386.deb
+ltmodem-2.4.19-586tsc_8.26a9_i386.deb
+ltmodem-2.4.19-686-smp_8.26a9_i386.deb
+ltmodem-2.4.19-686_8.26a9_i386.deb
+ltmodem-2.4.19-k6_8.26a9_i386.deb
+ltmodem-2.4.19-k7_8.26a9_i386.deb
+ltmodem-2.4.19-k7-smp_8.26a9_i386.deb
+ltmodem-2.4.19_8.26a9_i386.deb
+
+ltmodem-2.4.20_8.26a9_i386.deb
+ltmodem-2.4.20-speakup_8.26a9_i386.deb
+ltmodem-2.4.20-1-386_8.26a9_i386.deb 
+ltmodem-2.4.20-1-586tsc_8.26a9_i386.deb
+ltmodem-2.4.20-1-686_8.26a9_i386.deb  
+ltmodem-2.4.20-1-k6_8.26a9_i386.deb
+ltmodem-2.4.20-1-k7_8.26a9_i386.deb 
+ltmodem-2.4.20-1-k7-smp_8.26a9_i386.deb
+
+ltmodem-2.4.18-k7_8.26a9_i386.deb
+
+EOF
+      else
+      cat<<EOF>$TMPM
+
+ltmodem-2.4.21-5-386_8.26a9_i386.deb
+ltmodem-2.4.21-5-586tsc_8.26a9_i386.deb
+ltmodem-2.4.21-5-686_8.26a9_i386.deb
+ltmodem-2.4.21-5-686-smp_8.26a9_i386.deb
+ltmodem-2.4.21-5-k6_8.26a9_i386.deb
+ltmodem-2.4.21-5-k7-smp_8.26a9_i386.deb
+ltmodem-2.4.21-5-k7_8.26a9_i386.deb
+ltmodem-2.4.21-5_8.26a9_i386.deb
+
+ltmodem-2.4.22-1-386_8.26a9_i386.deb
+ltmodem-2.4.22-1-586tsc_8.26a9_i386.deb
+ltmodem-2.4.22-1-686_8.26a9_i386.deb
+ltmodem-2.4.22-1-686-smp_8.26a9_i386.deb
+ltmodem-2.4.22-1-k6_8.26a9_i386.deb
+ltmodem-2.4.22-1-k7-smp_8.26a9_i386.deb
+ltmodem-2.4.22-1-k7_8.26a9_i386.deb
+ltmodem-2.4.22-speakup_8.26a9_i386.deb
+ltmodem-2.4.22-1-386_8.31a3_i386.deb
+ltmodem-2.4.22-1-586tsc_8.31a3_i386.deb
+ltmodem-2.4.22-1-686_8.31a3_i386.deb
+ltmodem-2.4.22-1-686-smp_8.31a3_i386.deb
+ltmodem-2.4.22-1-k6_8.31a3_i386.deb
+ltmodem-2.4.22-1-k7-smp_8.31a3_i386.deb
+ltmodem-2.4.22-1-k7_8.31a3_i386.deb
+ltmodem-2.4.22-speakup_8.31a3_i386.deb
+
+ltmodem-2.4.25-1-686_8.30a3_i386.deb
+ltmodem-2.4.25-586tsc_8.30a3_i386.deb
+ltmodem-2.4.25-686-smp_8.30a3_i386.deb
+ltmodem-2.4.25-k6_8.30a3_i386.deb
+ltmodem-2.4.25-k7-smp_8.30a3_i386.deb
+ltmodem-2.4.25-k7_8.30a3_i386.deb
+
+ltmodem-2.4.26-1_8.31a3_i386.deb
+ltmodem-2.4.26-1-386_8.31a3_i386.deb
+ltmodem-2.4.26-1-586tsc_8.31a3_i386.deb
+ltmodem-2.4.26-1-686-smp_8.31a3_i386.deb
+ltmodem-2.4.26-1-686_8.31a3_i386.deb
+ltmodem-2.4.26-1-k6_8.31a3_i386.deb
+ltmodem-2.4.26-1-k7-smp_8.31a3_i386.deb
+ltmodem-2.4.26-1-k7_8.31a3_i386.deb
+ltmodem-2.4.26-speakup_8.31a3_i386.deb
+
+ltmodem-2.6.8-1-686_8.31a8_1.i686.deb
+EOF
+      fi
+    fi
+    if [ "$DISTR" = "mandrake" ] ; then
+      if ! [ "$GCCmajor" = "3" ] ; then
+        cat<<EOF > $TMPM
+
+ Only installers compiled with gcc = 3.n are stored at http://ltmodem.heby.de
+ Older packages are at  http://linmodems.technion.ac.il/
+
+EOF
+      else
+        cat<<EOF> $TMPM
+
+ltmodem-kv_2.4.21_0.11mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.21_0.13mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.21_0.13mdk-8.30a3-1.i586.rpm
+ltmodem-kv_2.4.21_0.18mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.21_0.25mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.21_0.25mdk-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.21_0.26mdk-8.26a9-1.i586.rpm
+
+ltmodem-kv_2.4.22_10mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.22_21mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.22_26mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.22_28mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.22_29mdk-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.22_30mdk-8.26a9-1.i586.rpm
+
+ltmodem-kv_2.4.22_32mdk-8.30a3-1.i686.rpm
+ltmodem-kv_2.4.22_36mdk-8.30a3-1.i686.rpm
+ltmodem-kv_2.4.25_6mdk-8.30a3-1.i686.rpm
+ltmodem-kv_2.4.25_7mdk-8.30a3-1.i686.rpm
+
+EOF
+      fi
+    fi
+
+    if [ "$DISTR" = "redhat" ] ; then
+            echo " Many installers for RedHat are available at  http://dag.wieers.com/packages/kernel-module-ltmodem ">>$RECORD
+      if [ -n "$FEDORA" ] ; then
+        cat<<EOF>$TMPM
+
+ltmodem-kv_2.4.22_1.2115.nptl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.22_1.2115.nptl-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.22_1.2129.nptl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.22_1.2129.nptl-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.22_1.2135.nptl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.22_1.2138.nptl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.22_1.2138.nptl-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.22_1.2140.nptl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.22_1.2140.nptl-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.22_1.2166.nptl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.22_1.2174.nptl-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.22_1.2174.nptl-8.30a1-1.i686.rpm
+ltmodem-kv_2.4.22_1.2174.nptl-8.30a1-1.i686.rpm
+ltmodem-kv_2.4.22_1.2197.nptl-8.31a5-1.i686.rpm
+ltmodem-kv_2.6.6_1.427-8.31a7-1.i686.rpm
+ltmodem-kv_2.6.6_1.435-8.31a7-1.i686.rpm
+ltmodem-kv_2.6.7_1.494.2.2-8.31a8-1.i686.rpm
+ltmodem-kv_2.6.8_1.521-8.31a8-1.i686.rpm
+
+EOF
+      else
+        cat<<EOF>$TMPM
+
+ltmodem-kv_2.4.20_2.2-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_2.2-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_2.2-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_2.2-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_6-8.26a9-1.athlon.rpm
+ltmodem-kv_2.4.20_8-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_8-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_8-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_8-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_9-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_9-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_9-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_9-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_13.8-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_13.9-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_13.9-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_13.9-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_13.9-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_18.9-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_18.9-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_18.9-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_18.9-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_19.9-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_19.9-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_19.9-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_19.9-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_20.7-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_20.8-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_20.8-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_20.9-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_20.9-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_20.9-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_20.9-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_24.7-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_24.8-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_24.9-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_24.9-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_24.9-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_24.9-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_27.9-8.26a9-1.athlon.rpm
+ltmodem-kv_2.4.20_27.9-8.26a9-1.i386.rpm
+ltmodem-kv_2.4.20_27.9-8.26a9-1.i486.rpm
+ltmodem-kv_2.4.20_27.9-8.26a9-1.i586.rpm
+ltmodem-kv_2.4.20_27.9-8.26a9-1.i686.rpm
+ltmodem-kv_2.4.20_30.9-8.26a9-1.i686.rpm
+
+ltmodem-kv_2.4.21_4.EL-8.30a1-1.athlon.rpm
+ltmodem-kv_2.4.21_4.EL-8.30a1-1.i686.rpm
+
+EOF
+      fi
+    fi
+
+    if [ "$DISTR" = "SuSE" ] ; then
+      cat<<END>$TMPM
+ltmodem-kv_2.4.20_4GB-8.26a9-1.i386.rpm,  SuSE 8.2
+
+END
+
+    fi
+
+################### Listing from http://ltmodem.heby.de/ ends
+
+    fi #  Done choosing DISTR block
+    echo >>$RECORD
+    echo "  The desired installer name is like:" >>$RECORD
+    echo "========================================"  >>$RECORD
+    # echo Checking for suitable ltmodem Installers
+    if [ "$DISTR" = "debian" ] ; then
+      echo ltmodem-"$FILTER""8.nn"_i386.deb >>$RECORD
+      # FILTER=2.4.18-6_
+      if grep $FILTER $TMPM > /dev/null ; then
+        grep $FILTER $TMPM > $TMPM.1
+        BEST=$TMPM.1
+      fi
+    else
+      # conectiva mandrake redhat SuSE, fedora  all .rpm
+      if [ "$DISTR" = "mandrake" ] || [ "$DISTR" = "redhat" ] ; then
+        echo ltmodem-kv-$PVER-$LT_VERSION-1.$CPU.rpm >>$RECORD
+       # http://linmodems.technion.ac.il/archive-fourth/msg03230.html Marv
+      fi
+      if [ "$DISTR" = "conectiva" ] || [ "$DISTR" = "SuSE" ] ; then
+        echo "ltmodem-kv-$PVER-$LT_VERSION-i386.rpm" >>$RECORD
+      fi
+      grep $PVER $TMPM  > $TMPM.2
+      grep $CPU $TMPM.2 >  $TMPM.1
+      if grep "ltmodem-" $TMPM.1 >/dev/null ; then
+        BEST=$TMPM.1
+      elif grep "ltmodem-" $TMPM.2 >/dev/null ; then
+        BEST=$TMPM.2
+      else
+        BEST=
+      fi
+    fi
+    # AGERES=`echo $LT_VERSION | cut -da -f1`
+    AGERES=8.nn
+    cat<<END>>$RECORD
+----------------------------------------
+ ltmodem-kv-Kernel_FL-LTver--.CPU.rpm   explains the versioning.
+ For your System
+            `echo Kernel_FL is  $SYS , the full kernel version displayed by:  uname -r`
+                      `echo LTver is $LT_VERSION, the release of the compiler kit`
+                               `echo $AGERES is the Agere core code designation.`
+       The proccesor type or CPU is:  $CPU      dispayed by:  uname -m
+ used in compiling and assembling driver packages.
+
+END
+
+    # Results
+    if [ "$DISTR" = "redhat" ] && [ -n "$FEDORA" ] ; then
+      DISTR=fedora
+      echo " For usage with the udev file system of fedora core 3, see  http://linmodems.technion.ac.il/archive-fifth/msg01177.html">>$RECORD
+      # changed back to redhat after this message section
+    fi
+    if [ "$SYS" = "2.6.8.1-12mdk" ]  ||  [ "$SYS" = "2.6.8.1-10mdk" ]  &&  [ "$DISTR" = "mandrake" ]  ; then
+     cat<END >> $RECORD
+     
+ At  http://linmodems.technion.ac.li/packages/ltmodem/kernel-2.6/
+ there is an installer  ltmodem-"$SYS".tar.gz
+ Unpack under Linux with: 
+     tar zxvf ltmodem-2.6.8.1-12mdk.tar.gz
+
+END
+    elif [ "$BEST" = "$TMPM.1" ] ; then
+        cat<<END > $TMPM.3
+  A suitable Installer is at    http://ltmodem.heby.de/
+    in the section:    $DISTR
+       `cat $BEST`
+
+END
+    cat $TMPM.3 >>$RECORD
+    cat $TMPM.3
+    elif [ "$BEST" = "$TMPM.2" ] ; then
+        cat<<END > $TMPM.3
+ Installers that may suffice are at http://ltmodem.heby.de/
+ in the section:       $DISTR
+------------------------------------------------------
+ `cat $BEST`
+------------------------------------------------------
+ The closest match to your   $CPU=CPU   is recommended.
+ For example replacements in order of preference for an
+    i686 would be i586, i486 and i386
+ The Kernel_FLavor section MUST match.
+ If not the ltmodem-$LT_VERSION.tar.gz compiler MUST BE USED.
+
+END
+    cat $TMPM.3 >>$RECORD
+    cat $TMPM.3
+    else
+     echo >/dev/null
+      cat<<END>>$RECORD
+      
+ A suitable installer is not available as of this $UPDATE update.
+ Check in the section $DISTR at  http://ltmodem.heby.de/
+   for a subsequent Installer submission.
+ Older releases have been archived at:
+   http://linmodems.technion.ac.il/packages/ltmodem/archive/
+ Also there is a RPM search engine at:   http://rpm.pbone.net
+ The closest match to your   $CPU=CPU   is recommended.
+   The closest match to your   $CPU=CPU   is recommended.
+   For example replacements in order of preference for an
+     i686 would be i586, i486 and i386
+ If not present use the  ltmodem-$LT_VERSION.tar.gz compiler kit.
+
+ The list of available Installers for $DISTR as of this $UPDATE
+ is inserted into to $RECORD2
+END
+# RC2
+      cat<<END>>$RECORD2
+
+GCCmajor=$GCCmajor
+-----------Installer list for $DISTR --------
+`cat $TMPM`
+------- end Installer List ------------------
+END
+    fi
+  fi # DISTR not recognized
+  if [ "$DISTR" = "fedora" ] ; then
+    DISTR=redhat
+  # changed back to redhat after above message section
+  fi
+  if grep smp $TMPM >/dev/null ; then
+########### RC2
+cat<<END>/dev/null
+
+   Symmetric Multi Processors (SMP) issues
+----------------------------------------------------------------------------------
+  Beginning with the Agere version 8.00 core code, the ltmodem drivers are
+  functional on Systems with SMP kernels such as your kernel-$SYS ,
+  so far as supporting dialout and initiation of ppp.
+  However these dialout sessions  inevitable stall,
+  evidently because of inadequate interrupt handling by the core ltmodem code.
+  This problem can be bypassed with some loss of performance by
+  using the bootup option: noacpi
+
+  The November 2004  AgereSystems 8.30 release is SMP proficient.
+
+END
+############
+
+fi # DSP
+  done
+ #  TESTS
+echo "  ======= PCI_ID checking completed ====== ">>$RECORD
+## RC2
+cat<<END>>$RECORD2
+
+ If the Primary and Subsystem Vendor information was not adeqaute,
+ it may be useful to search at  http://www.pcidatabase.com/
+
+END
+
+# Just to be sure the Update is reported:
+echo " Update=$UPDATE">>$RECORD
+
+# echo Scanning for a PCI bridge to a CardBus with:  "$LSPCI 2>/dev/null  | grep CardBus"
+echo ---------------------------------------- > $TMPM
+$LSPCI 2>/dev/null  | grep -E CardBus | cut -d' ' -f1 >$TMPM.1
+if grep 0000: $TMPM.1 >/dev/null; then
+  CARDBUS=`cat $TMPM.1 | cut -d: -f2-`
+else
+  CARDBUS=`cat $TMPM.1`
+fi
+
+if test -z "$CARDBUS" ; then
+   echo A PCMCIA CardBus is not detected on this System. >> $RECORD
+else
+    port=0
+    for i in $CARDBUS ; do
+       echo  >> $RECORD
+        echo Analyzing information for PCMCIA device at PCI Bus $i >> $RECORD
+        $LSPCI -s $i -v 2>/dev/null >> $TMPM
+        echo "GREPping for an inserted PCMCIA modem with filter:        ommunication"  >> $RECORD
+        MODEM=`$LSPCI -v 2>/dev/null | grep ommunication`
+        if test -n "$MODEM" ; then
+            port=1
+        fi
+    done
+    if test $port -gt 0 ; then
+      echo " A PCMCIA modem is detected." | tee -a $RECORD
+      cat<<END>>$RECORD
+      
+ The stardard ltmodem resources should suffice for modem support:
+     http://ltmodem.heby.de/
+ if the modem has a Lucent/Agere digital processing chipset.
+END
+    else
+       cat<<END>>$RECORD
+ If a PCMCIA modem is currently inserted and the sockets activated by
+    /etc/init.d/pcmcia start
+ then the PCMCIA bridge is NOT transparent.
+
+ If the modem is known to have a Lucent digital signal processing chipset,
+ then PCMCIA.tar.gz variant assembled by Joern Wustenfeld is necessary,
+ rather than the standard ltmodem-$LT_VERSION.tar.gz at  http://ltmodem.heby.de/
+END
+     fi
+     echo
+fi
+
+# gcc problem
+if [ "$GCCmajor" = "3" ] ; then
+  echo GCCversion=$GCC >>$RECORD
+#########
+  cat<<END>>$RECORD2
+
+ ---------------------------------------------------------------------------------------------
+ The proprietary Binary component of the some current winmodem drivers were compiled with
+ version 2.9n gcc compiler.  Red Hat 8.0 and Mandrake 9.0 releases utilize
+ version 3.nn gcc compilers.  This currently is causing difficulties either
+ in compiling and/or insertion of updated winmodem drivers.
+
+ The gcc compiler version of this System is:   $GCC
+ It will likely be necessary to force (-f) insertion of winmodem drivers, with credit to
+ Jos Vos: http://phep2.technion.ac.il/linmodems/archive/msg04510.html
+
+ For the ltmodem drivers with proprietary binary provided by Agere Systems,
+ compiling with versions gcc=3.nn is successful.
+ A minor edit required to compile PCTEL drivers has also been reported:
+     http://phep2.technion.ac.il/linmodems/archive/msg04684.html
+
+  Simple driver insertion fails in these cases with a message like:
+----begin error----
+% insmod lt_modem
+Using /lib/modules/2.4.18-14/ltmodem/lt_modem.o
+/lib/modules/2.4.18-14/ltmodem/lt_modem.o: The module you are trying to
+load (/lib/modules/2.4.18-14/ltmodem/lt_modem.o) is compiled with a gcc
+version 2 compiler, while the kernel you are running is compiled with
+a gcc version 3 compiler. This is known to not work.
+-----end error-----
+
+ It is necessary as Root to force (-f) loading with commands like:
+     insmod -f pctel
+
+ respecting the dependency ordering of the drivers.
+ Then check for insertion with:
+    lsmod
+
+ If driver insertion is successful, the forcing can be automated
+ by putting the lines (credit to Bhaskaran Raman)  like the following,
+    install pctel  /sbin/insmod --force pctel
+
+ In order of preference depending on your particular Linux installation.
+ Put these lines into ONLY ONE of the following files,
+ within any modem loading subsection if present:
+    /etc/modutils/ltmodem
+    /etc/modutils/aliases
+    /etc/modules.conf
+
+ Then inform your System of the edit for Debian like Systems with
+    update-modules
+ which rewrites and reads /etc/modules.conf . For other System types
+    depmod -a
+ re-reads the edited      /etc/modules.conf .
+
+ Thereafter module loading should behave as previously.
+ For the ltmodem drivers loading,
+ it should suffice to either start a ppp session or
+    modprobe ptserial
+
+END
+###############
+fi
+
+if test -d /etc/udev ; then
+   cat<<END>>$RECORD
+   
+For information on modem port creation under the UDEV device file system see:
+   http://linmodems.technion.ac.il/archive-fourth/msg03299.html  for Conexnant modems
+   http://linmodems.technion.ac.il/archive-fifth/msg01177.html  for Lucent/Agere DSP modems
+   
+END
+
+fi
+
+# A general Advisory
+ETHER=`$LSPCI 2>/dev/null  | grep Ether | cut -d' ' -f1`
+if test -n "$ETHER" ; then
+  #RC2
+  cat<<END>>$RECORD2
+
+  -----------------------------------------------------
+  The System has Ethernet capability. If not expert, 
+  shut down ethernet before initiated modem usage with:
+  # ifconfig eth0 down
+
+END
+  #RC2
+  $LSPCI -s $ETHER -v 2>/dev/null >>$RECORD2
+  echo >>$RECORD2
+fi
+if [ "$MAJOR" = "2.6" ] ; then
+  MODCONF=/etc/modprobe.*
+else
+  MODCONF=/etc/modules.conf
+fi
+############
+
+  cat<<END >>$RECORD
+The following information blocks just query some ppp support items.
+
+====================================================
+   grep -rs ppp $MODCONF
+-------------------------------------
+`grep -rs ppp $MODCONF`
+-------------------------------------
+END
+# Check for unziped drivers
+if [ "$MAJOR" = "2.4" ] || [ "$MAJOR" = "2.2" ] ; then
+  SUF=o
+else
+  SUF=ko
+fi 
+Modules="bsd_comp. ppp_async. ppp_generic. slhc ppp_deflate. zlib_deflate."
+for i in $Modules
+do
+  find /lib/modules/ -name $i* 2>/dev/null  >> $TMPM
+  if ! grep $i $TMPM>/dev/null ; then
+    echo " PPP support module  $i$SUF  not found!">>$RECORD
+  fi
+done
+if grep "o.gz" $TMPM > /dev/null ; then
+  cat<<END>>$RECORD
+
+  The following ppp related modules should be unpacked by root with:
+# gunzip PathTo/ModuleName.$SUF.gz
+`cat $TMPM`
+
+ On most Systems, this will driven by installing the wvdial.rpm
+ and the package providing the KPPP graphical dialing interface.
+
+END
+else
+  echo " Resident PPP support modules are properly uncompressed .">>$RECORD
+fi
+if test -x /sbin/ifconfig ; then
+  if /sbin/ifconfig | grep Link | grep -v Loopback >/dev/null ; then
+    echo "----active COMM services are ------------">>$RECORD
+    /sbin/ifconfig | grep Link | grep -v Loopback >>$RECORD
+    echo "This COMM mode should be closed before using the modem, or DNS services may fail.">>$RECORD
+  else
+    echo " COMM services are not active">>$RECORD
+  fi
+fi
+
+if ! grep ppp $MODCONF >/dev/null ; then
+  echo
+  echo Be sure to read the section about ppp related modules and aliases in $RECORD2 >>$RECORD
+
+  cat<<END>>$RECORD2
+
+ Within /lib/modules/You_Kernel_Version/kernel/drivers/net/
+ at least the following modules needed for communication should be found
+   ppp_deflate.o
+   zlib_inflate.o 
+   zlib_deflate.o 
+   bsd_comp.o
+   ppp_async.o
+   ppp_generic.o
+   slhc.o
+ BUT they may be present instead as ModuleName.o.gz
+ If so unpack them with a commands like:
+   # gzip /lib/modules/You_Kernel_Version/kernel/drivers/net/ModuleName.o.gz
+ Alternatively, installing the dialer package KPPP may force their unpacking.
+ Following a dialout attempt, display loaded modules with:
+# /sbin/lsmod
+ If there are not displayed lines like:
+
+ppp_deflate             3512   1  (autoclean)
+zlib_inflate           18980   0  (autoclean) [ppp_deflate]
+zlib_deflate           18648   0  (autoclean) [ppp_deflate]
+bsd_comp                4440   0  (autoclean)
+ppp_async               7744   1  (autoclean)
+ppp_generic            16380   3  (autoclean) [ppp_deflate bsd_comp ppp_async]
+slhc                    5264   1  (autoclean) [ppp_generic
+
+addition of the following lines to $MODCONF or $MODCONF.d/ folders may be needed:
+
+### automate ppp modules loading ###
+alias /dev/ppp          ppp_generic
+alias char-major-108    ppp_generic
+alias tty-ldisc-3       ppp_async
+alias tty-ldisc-14      ppp_synctty
+alias ppp-compress-21   bsd_comp
+alias ppp-compress-24   ppp_deflate
+alias ppp-compress-26   ppp_deflate
+### end ppp block ####
+
+ After any edit of $MODCONF or $MODCONF.d/ folders ,
+ inform the System by logging into a console with
+ # su - root
+ and running the update command:
+ #  depmod -a
+ which re-reads /etc/modules.conf and parses all the modules dependencies.
+ Debian like Distros should instead use:
+   update-modules
+
+END
+fi
+# ethernet and isdn can hinder DNS acquisition
+if test -x /sbin/ifconfig ; then
+  /sbin/ifconfig | grep Link> $TMPM
+  #RC2
+    cat<<END>> $RECORD2
+
+  Attempted or effective networking links are displayed by command:
+  #  /sbin/ifconfig
+  A block with "lo" is an internal loopback test and harmless.
+  However, ethernet "eth0" can be problematic for PPP connections,
+  because of competition for DNS (domain name service).
+  The default is to use the DNS specified for etherenet and
+  without expert configuration, this will block browser naviagation through PPP.
+  ========== ifconfig test =============
+  `cat $TMPM`
+
+  If is wisest to disable bootup establishment of ethernet in your Control Center.
+  Depending on your Linux distribution,
+      one of the following Root commands way alternatively be effective:
+  # ifdown eth0
+  # ifconfig eth0 down
+  # /etc/init.d/network stop
+  # /etc/init.d/networking stop
+
+END
+  if  grep eth $TMPM>/dev/null ; then
+    echo " Be sure to read the Ethernet section of $RECORD2 " >>$RECORD
+  fi
+  if grep tap $TMPM>/dev/null ; then
+    echo ISDN function should be stopped before initiating modem usage>>$RECORD
+    echo >>$RECORD
+  fi   
+fi
+
+if test -e /dev/ppp ; then
+  DEVPPP=`ls -l /dev/ppp`
+  echo DEVPPP=$DEVPPP  >>$RECORD
+else
+  cat<<END>>$RECORD
+
+  A port needed for the PPP protocol is absent!!!
+  echo "  crw-------    1 root     root     108,   0 Dec 31  1969 /dev/ppp"
+
+END
+fi
+
+if test -e /dev/.devfsd ; then
+  DEVFS=active
+  echo DEVFS=$DEVFS >>$RECORD
+# Check for /dev/modem link
+elif [ -L /dev/modem ] ; then
+  MODEM=`ls -l /dev/modem | cut -d'>' -f2- | cut -d" " -f2-`
+  cat<<END>> $RECORD
+
+  The current modem symbolic link is: /dev/modem -> $MODEM
+  The ports /dev/ttyS0 or 1,2,3 are for standard Controller chip modems
+
+END
+else
+  echo A /dev/modem symbolic link is not present >>$RECORD
+fi
+
+if test -f /etc/devfsd.conf ; then
+  DEVFSD=/etc/devfsd.conf
+elif test -f /etc/devfs/devfsd.conf ; then
+  DEVFSD=/etc/devfs/devfsd.conf
+else
+  cat<<END>>$RECORD
+
+ No devfsd.conf file found, indicated absense of the devfsd daemon package
+ for device file system (devfs) symbolic link support.
+
+END
+fi
+echo DEVFSD=$DEVFSD>>$RECORD
+
+if ! [ "$DEVFSD" = "" ] ; then
+  DEVFSD_PPP=`grep PPP $DEVFSD` >>$RECORD
+  echo tts/0 > $TMPM
+  echo tts/1 >> $TMPM
+  echo tts/2 >> $TMPM
+  echo tts/3 >> $TMPM
+  echo
+  MODEM=`grep -f $TMPM $DEVFSD`
+  if test -z "$MODEM" ; then
+    if test -d /etc/devfs ; then
+      MODEM=`grep -rs modem /etc/devfs/ | grep -f $TMPM | grep :REGISTER`
+    fi
+  fi
+  if test -n "$MODEM" ; then
+    FILE=`grep -rs modem /etc/devfs/ | grep -f $TMPM | grep :REGISTER | cut -d: -f1`
+#    echo $FILE
+    cat<<EOF>>$RECORD
+
+ Supporting /dev/modem symbolic link:
+ $FILE
+------------------------------
+`cat $FILE`
+------------------------------
+
+EOF
+    cat<<END>>$RECORD2
+
+ Supporting /dev/modem symbolic link:
+ $FILE
+------------------------------
+`cat $FILE`
+------------------------------
+ is for device file system support of Controller chip modems
+ and will conflict with usages of any other modem requiring a
+ symbolic link:  /dev/modem --> /dev/SomeNode
+
+ It will for example conflict with support for the Lucent chip modems
+ with support file /etc/devfs/conf.d/ltmodem.conf
+---------------------------------
+### /dev/modem symbolic link to /dev/tts/LT0
+REGISTER        ^tts/LT0$       CFUNCTION GLOBAL symlink $devname modem
+UNREGISTER      ^tts/LT0$       CFUNCTION GLOBAL unlink modem
+---------------------------------
+ Thus unless use of a Controller chip modem is anticipated,
+ either comment out those lines with a leading #
+ or move $FILE somewhere else, say /root/
+ to avoid conflict with other modems!!
+
+ Inform the devfsd (device file system) daemon of the edit with
+ # killall -HUP devfsd
+ See http://linmodems.technion.ac.il/archive-third/msg00869.html
+
+END
+  fi
+fi
+echo acpi>$TMPM
+echo disabled>>$TMPM
+echo APM>>$TMPM
+echo apm>>$TMPM
+echo " ---- dmesg queries -------" >> $RECORD
+dmesg | grep -f $TMPM  >> $RECORD
+
+
+#   cat /etc/Redhat   displays:  Fedora Core release 1 (Yarrow)
+if  grep Fedora $RECORD >/dev/null || [ -n "$FEDORA" ] ; then
+  if [ "$MAJOR" = "2.4" ] ; then
+    cat<<END>>$RECORD
+
+ For usage of winmodems with the kernel-2.4.nn Fedora releases   a change in the serial-like driver code of WinModems  is necessary.
+ See for guidance:  http://hepunx.rl.ac.uk/~wmurray/pctel/pctel.html
+ Basically , the line:
+     if ((tty->count == 1) && (state->count != 1)) {
+  should be changed into:
+     if (atomic_read(&tty->count) == 1 && state->count != 1) {
+  This works in the ltmodem code too. See
+     http://linmodems.technion.ac.il/archive-third/msg02360.html
+  An error about "rs_close" during compiling is a signature that the fedora fix is needed
+
+END
+  fi
+  if [ "$MAJOR" = "2.6" ] ; then
+    cat<<END>>$RECORD
+
+  Beginning with Fedora 2  kernel-2.6.6-1.427, kernel-headers needed 
+  for compiling drivers are provide at: /lib/modules/kernel-version/build/
+  Thus upgrading above kernel 2.6.5-1.358 to 2.6.6-* is Stongly Recommended
+  
+  pppd version 2.4.2 may not be fully compatible with 2.6.8 kernel releases.
+  If an initial CONNECT is achieved without PPP being subsequently established,
+  drop back to a 2.4.1 version.  This has worked for PCTEL AMR modem users,
+  supported by the http://www.smlink.com  slmodem software.
+  Check pppd version with:
+    pppd --version
+  See  http://linmodems.technion.ac.il/archive-fourth/msg03167.html
+    
+END
+  fi
+fi
+### DISTR specific information.
+if [ "$DISTR" = "redhat" ] ; then
+  cat<<END>>$RECORD
+  
+ For kernel-version 2.4.20-8 , a failure in utomatic loading of PPP related modules 
+ has been reported. It was necessary to manually load with:
+  /sbin/modprobe /lib/modules/2.4.20-8/kernel/drivers/net ppp_generic 
+  /sbin/modprobe /lib/modules/2.4.20-8/kernel/drivers/net ppp_deflate 
+  /sbin/modprobe /lib/modules/2.4.20-8/kernel/drivers/net ppp_synctty 
+  /sbin/modprobe /lib/modules/2.4.20-8/kernel/drivers/net ppp_async 
+ or dialout efforts failed.
+  
+  The Internet Configuration Wizard writes a configuration file:
+    /etc/wvdial.conf
+  containing a line default line
+    Stupid Mode = yes
+  Better dialup performance may be achieved by commenting out this line as:
+    # Stupid Mode = yes
+  Also non-USA Users may need to add to the [Modem0] block:
+    Init2 = AT+GCI=hexadecimal_country_code
+  but test without it first.
+
+END
+fi
+if [ "$DISTR" = "SuSE" ] ; then
+  cat<<END>>$RECORD
+
+  SuSE 9.0 has pre-compiled drivers supporting the following modem chipsets:
+     Intel HaM and 536ep
+     Conexant HSF (but not the HCF)
+     Lucent/AgereSystems ltmodem (Digital Siggnal Processing type)
+     IBM wmave
+     Smart Link soft modems
+  Unfortunately only the  Intel HaM and 536ep are on the  3 CD Personal set, pending an update.
+  Locations on the 6 CD Professional set are:
+     CD4/suse/i586/smartlink-softmodem-2.7.9-89.i586.rpm  - the slmodemd daemon
+     CD3/suse/i586/km_smartlink-softmodem-2.7.9-89.i586.rpm - slmodem driver compiling
+     CD4/suse/i586/hsfmodem-5.03.27mbsibeta02122600-92.i586.rpm - softmodem configuration
+     CD4/suse/i586/km_hsfmodem-5.03.27mbsibeta02122600-92.i586.rpm -softmodem driver code
+        installation report -  http://linmodems.technion.ac.il/archive-fourth/msg00350.html
+     CD4/suse/i586/ltmodem-8.26a-54.i586.rpm - a patch from SuSE may be needed for function
+        installation report - http://linmodems.technion.ac.il/archive-fourth/msg00458.html
+     CD4/suse/i586/Intel-536ep-4.51-200.i586.rpm
+     CD4/suse/i586/Intel-v92ham-4.51-244.i586.rpm
+     CD4/suse/i586/mwavem-1.0.4-110.i586.rpm
+Some pre-compiled SuSE 9.0 packages for the 2.4.21-99-default kernel are available at:
+      http://linmodems.technion.ac.il/packages/SuSE-9.0/
+  including AgereSoftModem and the Intel537 modems
+
+  IMPORTANT - The kernel-source-144/README.SuSE informs that the pre-assembled kernel-headers installed
+  from the 9.0 kernel-source-99 have some flaws.  Upgrading to a later kernel, such as 2.4.21-144 with matching kernel-source is the simplest may of avoiding problems.
+  
+  SuSE 9.1 comes with a SmartLink slamr.ko driver installed,
+  aiding identification of softmodem codecs by:
+    dmesg | grep slamr
+  For the 9.1 Personal (single CD installation) winmodem packages
+  have be downloaded from the SuSE 9.1 repository
+  Should compiling drivers may be necessary,  the following additional packages
+  will have to be downloaded and installed:
+       make, glibc-devel, gcc-3.3.3 and kernel-source.
+  The kernel-headers are co-installed with the kernel-source.
+  Thus subsequent driver compiling does Not require additional preparations.
+    
+END
+  
+elif [ "$DISTR" = "debian" ] && [ "$Smart" = "may" ] ; then
+  cat<<END>>$RECORD
+
+  There are Debian packages with modem drivers from SmartLink:
+      sl-modem-daemon - SmartLink software modem daemon
+      sl-modem-source - SmartLink software modem driver - module building source
+  MANY modem subSystems serving under AC97/MC97 Controllers are also supported.
+
+END
+elif [ "$DISTR" = "knoppix" ] ; then
+  if [ -n "$DSP" ] || [ -n "$Smart" ] || [ -n "$SMART" ] ; then
+    cat<<END>>$RECORD
+  
+ Packages with precompiled drivers for Lucent/Agere DSP modems
+ and SmartLink supported soft modes are available in
+ http://linmodems.technion.ac.il/packages/Knoppix/
+
+END
+  fi
+  cat<<END>> $RECORD
+
+ The bootable CDs of Knoppix releases 3.4 and 3.6 have boot kernels 2.4.26 and 2.4.27
+ These CDs are currently Hostile to winmodem installations for at least 3 reasons.
+ 1) The kernels were compiled with gcc-2.95.  While there is provided a /usr/bin/gcc-2.95  
+ the default ggc found by compilers is set as:      
+    /usr/bin/gcc --> /usr/bin/gcc-3.3
+ Thus with casual usage of many winmodem driver packages,
+ the drivers will be compiled with gcc-3.3 . Such mismatches between
+ a kernel and driver can cause a system CRASH. 
+ Thus special effort is required to insure that driver compiles utilize the gcc-2.95
+ 2) Winmodem packages typically try to write drivers to /usr/lib/ 
+ and installation files to /usr/sbin/ folders.
+ But these folders are positioned on the ReadOnly CD, and the writes will fail;
+ 3) Since compiled drivers cannot be placed in /lib/modules/, 
+ they are not perceived by a dependencies reading:
+    depmod -a
+ which would enable simple driver loading on demand or with a single:
+    modprobe Last_Modem_Driver
+ A Bug Report/offer to help Knoppix with these problems has been filed.
+ For Knoppix 3.8.1 the kernel-headers for kernel-version 2.6.11 are defective.
+ A corrected package is available at
+     http://www.linuxant.com/driverloader/wlan/full/archive/scripts-knoppix-3.8.1.tar.gz
+  
+END
+elif [ "$DISTR" = "mandrake" ] ; then
+  cat<<END>>$RECORD
+
+In the Mandrake installation disks do not include the dialer utility wvdial.rpm,
+then get instructions from http://linmodems.technion.ac.il/archive-fifth/msg01480.html
+END
+else
+  echo "  $DISTR is not yet providing pre-compiled drivers for WinModems">>$RECORD
+  echo >>$RECORD
+fi
+
+if ! [ "$BN" = "scanModem" ] ; then
+  /bin/rm -r ./Modem
+  exit 0
+fi
+
+# Output text files
+  cat<<END>Modem/1stRead.txt
+   
+                The files in this Modem/ folder have the following roles:
+
+ModemData.txt - Diagnostics and accumulated information cogent to your modem.
+     If further help is needed, send a description of your problem to:
+           discuss@linmodems.org 
+    with ModemData.txt attached as a PLAIN TEXT file.  Do NOT send other files in this folder Modem/
+    Always send the ENTIRE ModemData.txt,  as It includes subtle diagnostic ouputs needed 
+    to best guide you. If your PC is a laptop, please provide Make and Model information.
+    
+    ModemData.txt with companion files on specific modems/situations may suffice to solve your problems.
+    It recommends sites for needed software, or additional tests You must perform.
+    Always use the most recent update of scanModem accessed ONLY at
+       http://linmodems.technion.ac.il/packages/scanModem.gz 
+    to produce ModemData.txt
+    URLs to cogent advice are regularly updated, so your problem may be solved therein.
+
+YourModem.txt has guidance about operating your particular System.
+It should NOT be sent to Discuss@linmodems.org
+
+Rational.txt - Motivations of this scanModem package.  
+
+DriverCompiling.txt -  Explains the roles of additional files which may have to be installed
+   to support compiling of modem drivers, and the steps to take.   
+             
+SoftModem.txt - Information and instructions about "soft modems".
+     For these modems, additional steps may be necessary for choice of supporting software.
+     The primary PCI ID is that of the "modem controller", which can support diverse Subsystems.
+     It is the "modem codec" of the Subsystem which determines the software needed.
+
+Slmodem.txt - The slmodem software from SmartLink supports a variety of soft modems.
+     However new Users need to be aware of its special port setup features.
+  
+Slmodem-ALSA.txt   About ALSA mode usage for slmodem.
+.
+ModemTesting.txt SHOULD be read, but  after drivers have been installed.
+
+InfoGeneral.txt has general information about the status of winmodem support under Linux,
+    Do read it if ModemData.txt  reports that your current modem is not supported under Linux. 
+  
+ If you are Linux newcomer, please do locate your local Linux group through:
+    http://www.linux.org/groups/index.html  .  If you are not comfortable with English,
+    a local Linux user can often be of substantial assistance in getting you on to the Internet.
+END
+
+  cat<<END>>Modem/Rational.txt
+
+ This script primarily utilizes the "lspci" utility from the package PCIUTILS.
+ Various component scriptlets interpret the information captured by lspci.
+ For many modems, directions to supporting software and/or more detailed information is enabled.
+ ISA bus modems, 16 bit PCMCIA card modems and USB modems will not be recognized.
+ See the output files for guidance on these cases.
+
+ The script originated as scanPCI written by Chris Hebeisen,
+ to recognize modems with DSP (digital signal processing) chipsets made by Lucent/AgereSystems.
+ It now aspires to provide useful information on other modems as well.
+ For the  Lucent/Agere DSP chip modems, System information is used to recommend Installers,
+ from the Installer list output from the repository:   http://ltmodem.heby.de/
+ For other modem chipsets fully identified, URLs to support sites are given.
+
+ Three types of information are acquired from your System:
+ 1) General system information necessary for your guidance;
+ 2) The PCI_ID of the modem card, or for the increasingly prevalent "soft modems",
+  the PCI_IDs of  its AC97/MC97 controller and its modem subsystem.
+ 3) For soft modems, a SIL_ID of the subsystem is either acquired
+ OR instructions provided for manual agetting it.
+
+ The remainder of $0 is a repository of "modem gossip" or URLs thereto.
+ Only information blocks most relevant to your System will be output into
+ files written to the Modem/ folder
+ Should you need assistance after FIRST following all the advice and/or URLs,
+ 1) Browse the general information at:  http://linmodems.technion.ac.il/ 
+ 2) ONLY thereafter send ModemData.txt to:   discuss@linmodems.org
+ Modem/General.txt  has common information the List need not be bothered with.
+ 3) Also the archive SEARCH ENGINE at  http://linmodems.technion.ac.il/
+ may be useful once PCI or SIL IDs are acquired.
+
+ The scanModem script can be read and word searched with a text browser.
+ Blocks of Information with little code begin and end with #####.
+
+ In case of a failure concerning "lspci", rerun $0 after login to a console with
+ # su - root
+ as Root permission may be necessary for access to lspci.
+
+ Updated on $UPDATE by  Marv Stodolsk for access through:
+     http://linmodems.technion.ac.il/packages/scanModem.gz
+ Please do NOT use a scanModem.gz from any other site!!
+
+END
+  cat<<END > Modem/InfoGeneral.txt
+
+ Do NOT send this  text  with common information to discuss@linmodems.org
+ There are instructions to UNSUBSCRIBE from discuss@linmodems.org at http://www.linmodems.org
+ ==============
+ RATIONAL
+ This $0 service is sadly  necessary because of the pre-compiled format
+ (binary, Closed Source)  of some modem supporting code. Intellectual property
+ is protected within the binary component.  But this prevents compatibility
+ assessments/debugging against Linux Open Source code. Skipping many details,
+ the consequence is that some Linux distributions do not deliver Closed Source code,
+ or tools adequate to fully identify the modem chipset.
+ This script tries to close  this information gap.
+
+  Several sections are included in this file:
+   The Summary of modem Support under Linux
+   description of the soft modem identity tests: SIL ids
+   some output from scanModem specific to your System
+   an explanation of the GCC 2.95 compiler warning
+   ethernet Interference with DNS (domain name service)
+   Please Linux Newbies read carefully, the companion
+   Modem/DriverCompiling.txt and its
+     Followup Modem/DriverTesting.txt section  with dialout examples.
+
+ USB modems will not be detected through the acm.o driver with port /dev/ttyACM0
+   UNTIL proper USB support is installed.
+   See http://www.linux-usb.org/USB-guide/x332.html,
+   Linux_kernel_source/Documentation/usb/acm.txt, and
+   http://www.usb.org/developers/devclass_docs/usbcdc11.pdf (page 15)
+ Among the USB modems with proprietary interfaces, there is support for
+    Conexant HSF modems are supported by the hsfmodem package at http://www.linuxant.com/drivers
+         HSF USB with Vendor:Product IDs -  0572:1300  0572:1301  0572:1302  0572:1303  08E3:0111
+           with updates at         http://www.linuxant.com/drivers/hsf/index.php
+         HCF Vendor ID: 0572 Product ID: 1290 (Cadmus2 HCF, Conexant) is supported,    
+             but NOT the Cadmus I types:  http://www.linuxant.com/drivers/hcf/faq.php#25
+         HCF USB Vendor ID: 05AC Product ID: 8202 (Cadmus2 HCF, for Apple/Mac and not PCs)
+  SmartUSB56 (ST7554) based modems with ID: 0483:7554  
+    The SWEEX USB modem has the ST7554 chipset
+    Drivers are at http://www.smlink.com/main/index1.php?ln=en&main_id=40
+    http://linmodems.technion.ac.il/archive-fourth/msg00176.html is an installation report.
+    To write out Smartlink information, use the proxy entry
+      ./scanModem test 1131:3400
+
+ PCMCIA card modems can serve if your laptops modem is not supported under Linux.
+   http://freewebhosting.hostdepartment.com/g/gromitkc/pcmcia_list.html
+ The 3COM,Inc 3CXM556 and AgereSystems FM560LK chip modems use the Open Source serial-cs.o driver.
+
+It is the CHIPSET, and Not the modem BrandName which is informative for Linux support.
+ For modems not recognized by $0, chipset information may be obtained under Microsoft Windows through:
+ 1) Start > Settings > Control Panel > Classical View (for WinXP) > Modem  
+ or alternatively under Linux
+# cat  /proc/asound/mc97*
+      Try to identify the modem setup file, with name perhaps MODEM.INF
+ 2) Open a COMM console, and send ATI commands to the modem (ATI, ATI1, ATI2, etc)
+   which may elicit chipset and driver information. Here is an example
+       ATI3 - Agere SoftModem Version 2.1.22
+       ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27
+   successfully identifying an Agere SoftModem chipset, both by name and through
+   the:softmodem SIL ID:              AC97 ID:SIL REV:0x27
+
+ SUPPORT SUMMARY - as of $UPDATE
+ -------------------------------------
+ Controller chipsets are used in the most expensive modems and are supported.
+  They utilize the same driver, serial.o , and most commonly the ports /dev/ttyS0 thru 3.
+  Such chipsets are produced by 3Com, AgereSystems (the Venus chipset),
+  Topic Semiconductor Corp., and others. But the same companies may
+  produce unsupported WinModems. Do not depend on the Brand Name.
+  Look for an explicit statement of Linux support
+
+ AVOID the following modem chipsets:
+   ESS -       no formal support since 2.2.2 kernels, though there are kluges:
+      http://andywettstein.home.comcast.net/ess/
+      http://tx.technion.ac.il/~raindel/
+   3Com/US Robotics winmodems - never supported under Linux
+
+ SmartLink - newer chipsets are supported:   http://www.smlink.com
+   ftp://ftp.smlink.com/linux/unsupported/
+   Moreover, the slmodem-2.9.10  drivers will support Many but not all modem Ssubsystems
+   that serve under AC97/MC97 controllers.
+
+ Conexant -  all modems supported with drivers at:  http://www.linuxant.com
+   Testcode for slow 14,400 mH support is free, BUT
+   there is a one time charge for the full speed support.
+
+ Intel Inc. -  http://developer.intel.com/design/modems/support/drivers.htm
+   For early releases check at: http://linmodems.technion.ac.il/resources.html
+    The HaM modem is supported, but code is no longer being updated;
+      there will likely be failures under emerging 2.6 kernels.
+    The 536ep and five Intel537 modem chipset variants are actively supported.
+
+ Lucent /AgereSystems
+   The Venus chipset modem uses the serial.o driver and is thus supported.
+   Modems with digital signal processing (DSP) chipsets are supported:  http:/ltmodem.heby.de
+   For AC97/MC97 soft modems. Initiate software access through code sponsor IBM:
+       http://www-3.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-52698
+   Coding of support for has Not yet begun PCI soft modems with PCI_IDs 11c1:048?
+    and probably will first be available within 2004.
+
+ Motorola support is at: http://www.motorola.com/softmodem/sm56_download.htm
+   through 2.4.22 kernels.
+
+ PCTel modem business has been sold to Conexant
+   Driver compiler resources are at: http://pctelcompdb.sourceforge.net/
+  However, the pre-compiled binary component is yet to be assembled
+   with the gcc 3.nn used in newer Linux releases,
+   so forced (-f) insertions may be necessary:
+     insmod -f pctel
+   Some of the HSP soft modems are supported by the SmartLink slmodem-2.9.10 drivers.
+
+ Broadcom modems in Dell laptops and PCs - can be made to function under 2.4 kernels, but code has not been updated recently.
+
+ --------- end chipset section ----------------------
+
+  SUPPORT under the current 2.6.nn kernels.
+
+ The more expensive Controller chipset modems are functioning.
+ SmartLink slmodem-2.9.9 drivers are functioning.
+ Conexant has 2.6.n support
+ The Lucent/Agere digital signal processing (DSP) chipsets do have
+   informal service into 2.6.n kernels and an AgereSystems release is soon expected.
+ Intel, Agere Systems and Linuxant are firmly expected to continue support into 2.6.nn,
+   though the Intel HaM software will not be updated to 2.6.n service
+
+ ------------------------------------
+  Preparing winmodem drivers will generally require compiling.
+  If you are not familar with this process DEFINITELY read carefully
+  the Modem/DriverCompiling.txt
+  
+END
+
+cat<<END>Modem/DriverCompiling.txt
+
+ =======================================================
+          COMPILING DRIVERS, for Linux Newbies
+         
+Within the workshop there is an instruction set, the Makefile, and a few tools.   You command:
+       make clean
+An elf named "make" comes in, reads Makefile and then cleans up any debris of previous efforts.  
+Do ALWAYS command "make clean" as a first step before new driver compilations.
+The major work of compiling drivers and any associated tools is commanded with:
+       make  
+or perhaps  
+       make DriverName
+There only remains to command installation of the modem driver(s) and tools with:
+       make install
+Configuration of a dialout utility is done elsewhere, and you can access the Internet.
+
+It is really that simple, once the workshop with tools has been prepared.
+But new drivers have to be compiled with every operaing system update.
+The remainder of this text is thus aids you in the preparations, dealing with a variety of special cases.
+Most  points are covered in much more detail in the Linux Kernel-HOWTO, likely included among the
+HOWTO documentation set installed within /usr/share/doc/ folders.
+
+The core operating system of a PC is comprised of a motherboard, the software kernel, 
+and its auxilliary code modules.  The kernel is the file  /boot/vmlinuz-$SYS. 
+Modules located in subfolders of /lib/modules/$SYS/  .  They can be inserted into or removed 
+from the acting kernel upon demand. This provides adaptablity to the diverse 
+hardware components of PCs and changing requirments. 
+
+Modem drivers are one type of module.  As contrasted to most Linux software, modem driver codes have
+some non-public code components. That is the drivers are not fully Open Source, to protect 
+Intellectual Property of the providing companies.   This has a consequence that many Linux distributions
+will not or cannot legally  supply proprietary  modem drivers.  Rather the Users must get the 
+modem code package and direct  compiling of the code and driver installation.
+
+A complementary resource for compiling is a family of FileNames.h, collectively called kernel-headers.
+They are both code bits themselves and also call for other code bits their functioning depends on.
+Depending on the Linux distribution, kernel-headers may not be automatically installed.
+If not they will always be made available on installation media or some Linux repository.
+They can be searched for by package names including:  kernel-source, linux-source, kernel-headers and linux-headers
+There are always some kernel-headers in afolder /usr/include/.   But these are an INCOMPLETE, too small collection 
+and DO NOT suffice for compiling processes.
+
+In addition some software utilities may have to be installed.  The instructions for compiling are read by make.
+A set of compiler tools are installed as a  gcc-SomeVersion package.  After compiling, the various pieces 
+and linked dynamically together with "ld". Together wiith some simpler software tools, the ld will 
+already be installed on Linux systems.  Systems using the Debian style maintanence system
+additionally require a package "kernel-kbuild-3.n" to properly utilize kernel-headers or 2.6.n kernels.
+
+The  "kernel-headers" are matched with an installed kernel, or must be generated from a kernel-source package. 
+These are provided in different ways by the various Linux distributions, under 2.6.n kernels:
+     Redhat and Fedora - installation is coincident with kernel installation, 
+         with placement of the kernel-header base folder in /lib/modules/$SYS/build/
+    Mandrake and SuSE/Novell - installation as part of a kernel-source or linux-source  packages,
+         with location at /usr/src/kernel-headers-$SYS  or /usr/src/linux-$SYS 
+    Debian and distros using its Package.deb format have names:
+          kernel-headers-$SYS
+         linux-headers-$SYS  for Ubuntu
+         and installation is into  /usr/src/
+    Others - ???
+
+For  the prior generation of 2.4.n kernels, there are special cases.  Skip this if your kernel is a 2.6.n or a Debian type.
+For RPM using distros, the kernel-source-$SYS or linux-source-$SYS packages must be installed and configured as described below:
+ 1) SuSE with KernelVersion 2.4.21-144-* or later - install the matching kernel-source package, which does also contain the kernel-headers;
+2) for Fedora II or later, kernel-headers are/were coinstalled with the kernel package;
+3) for all other cases of 2.4.n kernels, the kernel-headers must be prepared from kernel-source.      
+  The preparation can be summarised in a few steps/actions:
+  Install a kernel-source package representing your kernel.
+  Change directory (cd) into its base folder. The kernel-source in general
+  will match only one of several kernels that could have been installed
+  and NOT necessarily yours. Thus clean out any remnants of earlier usages with:
+       make mrproper
+  Copy in your kernel configuration file and have it read with:
+       make oldconfig
+  If necessary edit ONLY the fourth line of the Makefile, which completes
+  the specification of where drivers will be installed to (details below).
+  The kernel-headers are then assembelled by either: 
+  a) for 2.4.nn kernels by
+       make dep
+  b) for 2.6.n kernels,
+        make bzImage
+which includes an integral "make dep" step. 
+
+Modem related resources may or may not have been installed during the primary Linux installation,
+as WinModem hardware is often NOT recognized.  Search your Distro's package
+descriptions for "modem" to reveal the status of related resources.  Read
+the package description to determine whether pre-compiled modem drivers were provided.
+RESOURCES of a few types are needed to get on line. Do PREFERABLE use your System's
+package maintenance system for the installation. This should guarantee that
+any DEPENDENT packages will be called into the installation process. As a preliminary
+1) Install your distributions package providing the KPPP, WVDIAL and MINICOM dialer utilities.
+Dependencies within such packages will also drive the unpacking of ppp related modules
+from compressed to a functional form :
+   module.o.gz --> modules.o
+or for 2.6.n kernels
+   module.ko.gz --> module.ko
+In addition these dialers will later aid testing and configuration,
+which is to be performed only AFTER, the modem's drivers are installed.
+
+2) Download if necessary and modem driver package specific to your modem hardware.
+3a) Install if necessary your distrbution's kernel-source package, necessary for preparing kernel-headers under 2.4.n kernels
+Or for Debian style distributions,
+3b) install the kernel-header-$SYS.deb package matching your kernel version $SYS.
+
+A KERNEL-SOURCE package must be installed, if a full kernel-header set
+is not otherwise provided. Kernel-source packages are now some 30-40 MB now even in compressed form.
+The package provided by your Linux Distro SHOULD preferentially be used.
+It will usually have some differences from that initially released at http://www.kernel.org .
+Typically the installation process will set two symbolic links:
+  /lib/modules/$SYS/build -->  PATH_to/kernel-source-version/
+  /usr/src/linux --> PATH_to/kernel-source-version/
+These later enable access to the kernel-headers needed during the modem driver compiling. Check with:
+  ls -l /lib/modules/$SYS/build
+  ls -l /usr/src/linux
+The former link is more usefull for Systems with alternative boot kernels,
+and is mandatory for some modem compiler packages.
+
+HIGHLY IMPORTANT: the kernel-source as installed in generally does NOT
+represent your current kernel version, EVEN if the kernel-version is the same.
+Only one of several possible kernels was installed on your System,
+and the unpacked kernel-source need NOT represent it exactly!!!
+For example, in the RedHat Distro there is a set of kernel-configuration files within
+   /usr/src/linux/configs/
+Each is specialized for a different CPU (i586, i686, K6, etc),
+Yet each will be represented by the VERY SAME version name: "uname -r" .
+!!!! Thus a PROPER CONFIGURATION MUST BE DONE by You, before compiling drivers !!!!
+
+Examples provided below are partially customized from your System settings.
+CONFIGURATION is started by moving into the kernel-source folder with one of:
+  cd  /lib/modules/$SYS/build
+  cd /usr/src/linux
+END
+if test -f /lib/modules/`uname -r`/build/Makefile ; then
+  MKFL=/lib/modules/`uname -r`/build/Makefile
+
+elif test -f /usr/src/linux/Makefile ; then
+  MKFL=/usr/src/linux/Makefile
+else
+ echo Makefile not found>/dev/null
+fi
+if test -n "$MKFL" ; then
+  cat<<END>>Modem/DriverCompiling.txt
+
+ There is a Makefile on your System at:  $MKFL
+ with first few lines:
+
+END
+  grep -A3 -m 2 VERSION $MKFL >>Modem/DriverCompiling.txt
+  echo>>Modem/DriverCompiling.txt
+else
+  echo " A kernel-source packages is not evident on your System">>Modem/DriverCompiling.txt
+fi
+cat<<END>>Modem/DriverCompiling.txt
+For your current kernel, the fourth line should be
+   EXTRAVERSION = -$KEXT
+where -$KEXT has been read from your current kernel version: $SYS.
+But it this does not match what is Actually in the Makefile,
+then it represents a Different kernel-header set then that of your kernel!!!
+
+For Mandrake Linux their will generally be an included "mdk", such as:
+ EXTRAVERSION = -3.1mdk
+SuSE 9.0 had:
+ EXTRAVERSION = -99-default
+The first four makefile lines specify that:
+a)  the compiled kernel modules/drivers will have encoded version labels such as:
+   2.4.21-3.1mkd  OR   2.4.21-99-default
+b)  such modules including modem drivers are installed into sub-folders of
+   /lib/modules/2.4.21-3.1mkd/
+   /lib/modules/2.4.21-99-default/
+The major points are that compiled drivers must be both
+kernel-release (the 2.4.21) AND EXTRAVERSION matched with the installed kernel.
+Otherwise they may be installed uselessly and not be detected by the kernel
+OR there will be a failure upon attempted insertion, with message including:
+  a list of "unresolved symbols ".
+
+Kernel-headers may be resident from a prior usage of the kernel-source/.
+Check with:
+  ls include/linux/
+which may display abundant FileNames.h
+The version of these headers will be in the UTS line displayed by
+  cat include/linux/version.h
+     #define UTS_RELEASE "2.4.21-3.1mdk" (as an example)
+
+Next, list completely the contents of the kernel-source  with:
+  ls -a
+Where the " -a " additionally reveals ".dot-prefixed-confguration-files" such as
+    .config  .hdepend .depends
+which may be left over from the prior usage of the kernel-source. Below is an example:
+ -------------------
+    .config  .hdepend .depends
+COPYING        Makefile        Rules.make    init    mm
+CREDITS        README          arch        drivers  ipc     net
+Documentation    conf.vars   fs       kernel  scripts
+MAINTAINERS    REPORTING-BUGS  crypto      include  lib
+
+Configuration of the kernel-source is where almost all the Mistakes occur!!!
+Here is a way to do it correctly (but read through EXCEPTIONAL CASES below).
+1)Within kernel-source/ folder, browse the README file for general guidance.
+It will relate that the command:
+#    make mrproper
+cleans up leftovers from any previous usage .dot-files and the include/linux/ folder.
+Additionally you may need to do an edit within Makefile, but ONLY that 4th line.
+2) If necessary to edit, FIRST make a backup:
+  cp Makefile Makefile.backup
+then edit ONLY the 4th line of Makefile to match the EXTRAVERSION of $SYS
+   EXTRAVERSION = -$EXT
+NEVER change anything else within the Makefile.
+
+3) Set the dependencies of the current kernel.
+For SuSE 9.0 and later, there is a command which does the following steps
+   #  make cloneconfig && make dep
+   Also browse the excellent README.SuSE in the kernel-source/ folder
+For other Distros, the following steps are necessary, within the kernel-source/ folder
+  copy the kernel-config file to  .config
+          and DO SPECIFY that " . "
+But where is it? For many Distros, it will be the file like
+   /boot/config-$SYS
+matching the output of:
+  uname -r
+Or it may be the target of a symbolic link:  /boot/config -->
+So
+  cp /boot/config-$SYS .config
+For SuSE 8.0 and earlier versions it is:
+  cp /boot/vmlinuz.config  .config
+PLEASE do not omit that "." in  .config as it is crucially necessary.
+View .config with a text browser.
+It is simply a listing of the code components used in the kernel and its modules:
+  #
+  # Automatically generated make config: don't edit
+  #
+  CONFIG_X86=y
+  # CONFIG_SBUS is not set
+  CONFIG_UID16=y
+etc.
+
+4) The  .config file will be read during
+#  make oldconfig
+which feeds its specifications through a process specifying
+the SAME inter-dependencies previously used in compiling your kernel,
+and may generate additional .dot-config files . They can be displayed with:
+#   ls -al
+
+5) Though it may be redundant after "make mrproper", it will do no harm to:
+   make clean
+5a) For the SuSe Linux versions 8.0 and previous , there will exist files:
+  /boot/vmlinuz.autoconf.h
+  /boot/vmlinuz.version.h
+They MUST be copied as:
+  cp /boot/vmlinuz.autoconf.h  /usr/src/linux/include/linux/autoconf.h
+  cp /boot/vmlinuz.version.h    /usr/src/linux/include/linux/version.h
+
+6) Now build kernel-headers with:
+       make dep
+for 2.4.n kernels or for 2.6.n kernels
+       make bzImage 
+during which you can walk your dog, take a shower, have tea, etc.
+7) Check for resultant FileNames.h with:
+       ls  include/linux/
+and
+       cat include/linux/version.h
+to verify the version.
+
+COMPILING the MODEM DRIVERS can now finally be done.
+Unpack the compiler kit for your modem drivers,
+cd into its folder, read any README or INSTALL files,
+   make clean
+FINALLY, your modem drivers will compiled by a command like
+   make OR  make ModuleName
+or perhaps
+   make all
+During this process, some of the kernel-header code with be joined
+with the supplied modem specific code, and ModemDrivers.o will be produced.
+Follow and further instructions in the modem code resource
+to install the drivers, often with:
+   make install
+
+               THEORETICAL ISSUES      
+
+WinModem driver packages commonly include:
+1) a readible Open Source component, which can be readily debugged by
+experts in code. This component provides "wrappers" to common
+kernel functions for an already complied, or BINARY format, component of the modem code.
+
+2) A Closed Source component compiled into the binary form, in which
+proprietary information is encrypted. This will include the copyrighted Vn.nn compression algorithms.
+In 2004, pre-compiled modem drivers are beginning to be included
+for a few winmodems by some Linux distributions.
+But the binary format precludes incorporation of the modem drivers in some Linux distributions
+for legal reasons, practical reasons, and/or reasons of principle.
+
+Since almost all the newer PCs are now equipped with WinModems,
+many users will have to compile their own linux modem drivers.
+Exceptions are the more expensive modems with Controller chipsets,
+characteristic of the earliest modems.
+They are supported by Open Source serial code included in Linux
+distributions (Distros hereafter).
+
+Winmodems are less expensive because of greatly reduced hardware costs.
+They lack Controller chips of the earliest modems, and may additionally lack Digital Signal Processor (DSP) chips of second generation modems.
+Functions of Controller based chipsets are replaced by a combination of 
+software code and/or other System hardware.
+
+Modems without a controller chip are referred to as "controllerless modems" and
+modems lacking both a DSP and controller chips are referred to as "soft modems".
+With faster central processor units (CPU), some processing tasks are performed
+by the CPU for the controllerless modems. The CPU does nearly all
+the signal processing for the "soft modems" lacking a DSP. 
+
+AC97 or MC97 soft modems conform to an ac97_codec, and can host a variety of Subsystems It is the CODEC of the Subsystem which determines which software should be utilized!! 
+and any modem controllers can host one of a variety of soft modem Subsystems.
+There are additionally soft PCI modems without such controllers, which still utilize
+the common ac97_modem.o driver. In general it will be YOUR task to identify
+the Subsystem codec and compile the needed driver.
+   
+## end Modem/DriverCompiling.txt
+
+END
+
+  cat<<END> Modem/Slmodem-ALSA.txt
+  
+  The ALSA ( Advanced Linux Sound Architecture)  package includes some modem
+   drivers which provide low level support  for a few soft modem controllers.
+   Pulse dialing (ATDP) is Not supported with these ALSA modem drivers however.
+   
+    As of this update $UPATE there is support for the following soft modem controller types:
+      PCI  ID                  controller name/source          low level Module
+    =======        ===============    ===============
+    8086:xxxx           several Intel ICH types         snd-intel8x0m
+    10de:00d9          Nvidia Corp                                        "
+    1002:434d          ATI                                           snd-atiixp-modem
+    1106:3068          VIA                                           snd-via82xxx-modem
+    10b9:5451          ALI 5451                                  snd-ali5451-modem.ko  (in progress)
+    
+  To use ALSA modem drivers,  the SmartLink slmodem package   must be compiled 
+  with an ALSA support option.    The resultant slmodemd daemon provides for 
+ creation of a port and /dev/pts/N  (N a number) and a symbolic link to it:
+        /dev/ttySL0 --> /dev/pts/N
+  The command seqeunce is:
+                  modprobe Module
+ with Module being one of the four above
+                  /usr/bin/slmodem --country=YourCountry  --alsa  hw:1   &
+  hw is short for hardware port.  hw:0 is typically reserved for the audio card.
+  The & merely puts the daemon function in the backgound, so that the command prompt is recovered.
+  The slmodemd shutdown can later be done by:
+                  fg slmodem
+                 Ctrl-C
+ This service has the additional requirements:
+ 1) The subsystem must be one of those compatible with slmodemd.
+ Excluded are Conexant Subsystems, which are alternatively supported by the  hsfmodem package from
+       http://www.linuxant.com/drivers/
+       
+  For many other Subsystems, the instructions below on using SmartLink slmodem software 
+  in ALSA mode is cogent.  Slmodem.txt and Testing.txt complement the information herein. 
+  
+2) The modules must be compiled form  ALSA release of at least 1.0.6a or later version. 
+Check your System with
+# alsactl --version
+     alsactl version 1.0.6
+on my Debian 2.6.10 System. So more current code would be necessary.  
+Should your System be less than 1.06a, follow the instructions here in.
+Should a message " error: mixer setup: Off-hook switch not found for card hw:1"
+be delivered while dialing, use at least version  1.0.9rc3 .
+If later, just skip to the next section.
+Download software from http://www.alsa-project.org, The release of May 2006 is 1.08. 
+Download both alsa-lib and alsa-driver packages. Make a folder:
+        mkdir newALSA
+Unpack both packages in the newALSA/
+ Follow the compilation and installation instructions therein, which will 
+install the ALSA modules and complementary software.
+3) Compilation of slmodemd with ALSA support requires prior installation of
+a package  libasound2-dev, which will be provided by your Linux distrbution.
+It has header files needed for the slmodemd compilation.  For for Mandrake/Mandriva,
+ the package name is  libalsa2-devel .  Use the slmodem-2.9.9d-alsa.tar.gz package
+ downloaded from  http://linmodems.technion.ac.il/packages/smartlink/
+ Also download the ungrab-winmodem.tar.gz which will be necessary for some Systems,
+ providing an upgrab-winmodem.ko modules.  See  http://linmodems.technion.ac.il/slmodem-serial.html
+
+4) Login to a console as;
+# su - root
+Shift into the slmodem-2.9.9d-alsa folder. Look at contents:
+# ls 
+         COPYING  Changes  Makefile  README  drivers  modem  patches  scripts
+Clean up any old remnants with:
+#  make clean
+The slmodemd will be compiled by make:
+# make
+and installed to   /usr/bin/slmodemd by:
+#  make install
+An initial check for functionality is:
+        modprobe Module
+with Module being the appropriate ALSA modem driver.
+Should there be a failure, with message "grabbed by serial driver", First
+       modprobe ungrab-winmodem
+before
+       modprobe Module
+       
+Start the daemon with one of:
+        slmodem --country=YourCountry --alsa  hw:1   &
+        slmodem --country=YourCountry --alsa  modem:0   &
+        slmodem --country=YourCountry --alsa  modem:1   &
+When Module is  snd-atiixp-modem  , instead use
+        slmodem --country=YourCountry --alsa  modem:0   &
+        
+ Subsequently follow the details in Slmodem.txt  and Testing.txt
+END
+
+cat<<END>Modem/Testing.txt
+                       MODEM TESTING
+                        
+This text is complemented by the Post-Install at http://linmodems.technion.ac.il
+Please so consult it if the following does not suffice.
+
+The wvdial package provides for an automated hardware+driver test.
+This utility searches through ports with syntax: /dev/ttyS*  (i.e. S0, S1, SL0 etc.)
+and also follows a symbolic link:
+       /dev/modem --> /dev/ModemPort
+If your modem port name does not satisfy these requirements already,
+do a console login as:
+       su - root
+Make the symbolic links as:    
+       ln -sf /dev/ModemPort /dev/modem
+       ln -sf /dev/ModemPort /dev/ttyS15
+wherein /dev/ttyS15 is reserved for experimental usage.
+ Should there be problems with wvdial version 1.54.1-1 , drop back to 1.54.0-1 
+
+For recent RedHat and Fedora releases, wvdialconf is used by the Internet Wizard.
+Within the pop-up menus find the Wizard. Its actions will write a configuration file:
+       /etc/wvdial.conf
+For other Linux distros, open a console and login with
+       su - root
+If necessary load the modem drivers:
+       modprobe DriverNames
+Then run the test:
+       wvdialconf /etc/wvdial.conf
+Checks /dev/modem and ports /dev/ttyS*, a success at port /dev/ttySLT0 would be:
+  ttySLT0<*1>: ATQ0 V1 E1 -- OK
+  ttySLT0<*1>: ATQ0 V1 E1 Z -- OK
+  ttySLT0<*1>: ATQ0 V1 E1 S0=0 -- OK
+  ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
+  ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
+  ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK 
+    etc.
+The /etc/wvdial.conf written looks like:
+ [Dialer Defaults]
+Modem = /dev/ttySLT0
+Baud = 115200
+Init1 = ATZ
+Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
+ISDN = 0
+Modem Type = Analog Modem
+; Phone = <Target Phone Number>
+; Username = <Your Login Name>
+; Password = <Your Password>
+
+For systems using the SmartLink slmodem drivers,
+the following line should be added to its /etc/wvdial.conf
+  Carrier Check = no
+So after editing in your personal information a functional file is like:
+ [Dialer Defaults]
+Modem = /dev/ttySLT0
+Baud = 115200
+Init1 = ATZ
+Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
+# if there is problem with dial tone acquisition, add into the above line:
+#    X3
+#       meaning "dial without waiting"
+ISDN = 0
+Modem Type = Analog Modem
+Phone = DialupPhoneNumber
+Username = Your_Login_Name
+# for MSN.net, use instead
+#  Username = MSN/Your_Login_Name   
+Password = Your_Password
+# if usging the SmartLink slmodem drivers, uncomment:
+#  Carrier Check = no
+
+The lines above beginning with " # " are Comments not read as code.
+Remove the " # " to activate a line.  Then try getting on line with:
+# wvdial
+The /etc/wvdial.conf generated by the RedHat/Fedora Internet Wizard 
+has a different format, adapted to its own dialer.  This includes a line
+       Stupid Mode = yes
+More informative dialup feedback May be obtained if it is commented out:
+#      Stupid Mode = yes 
+
+ A dialout with wvdial will then display like:
+# wvdial &
+--> WvDial: Internet dialer version 1.53
+--> Initializing modem.
+--> Sending: ATZ
+ATZ
+OK
+--> Sending: ATQ0 V1 E1 M1 S0=0 &C1 &D2 +FCLASS=0
+ATQ0 V1 E1 M1 S0=0 &C1 &D2 +FCLASS=0
+OK
+--> Modem initialized.
+--> Sending: ATDT3019178111
+--> Waiting for carrier.
+ATDT3019178111
+CONNECT 53333 V42bis
+--> Carrier detected.  Waiting for prompt.
+** APX1.LNH.MD.RCN.NET Terminal Server **
+Login:
+--> Looks like a login prompt.
+--> Sending: LoginName
+LoginName
+Password:
+--> Looks like a password prompt.
+--> Sending: (password)
+    Entering PPP Session.
+    IP address is 66.44.1.6
+    MTU is 1006.
+--> Looks like a welcome message.
+--> Starting pppd at Sat Jul 26 13:59:03 2003
+--> pid of pppd: 2404
+: pppd 2.4.1 started by root, uid 0
+: Using interface ppp0
+: Connect: ppp0 <--> /dev/tts/LT0
+Jul 26 13:59:08 stodolsklap kernel: PPP BSD Compression module registered
+Jul 26 13:59:08 stodolsklap kernel: PPP Deflate Compression module registered
+: local  IP address 66.44.1.6
+: remote IP address 208.59.89.132
+: primary   DNS address 207.172.3.8
+
+The & in "wvdial &" puts the process into the background, 
+allowing further usage of the command prompt.  To stop a backgrounded process:
+# fg wvdial
+# Ctrl -C 
+
+TROUBLE SHOOTING
+
+Check for modem driver loading.
+Do FIRST read INSTRUCTIONS files provided with the modem driver resource.
+Some may have installed to /usr/share/doc/Modem_or_Driver_Name/
+For RPM using distros, documentation files will be listed through
+   rpm -q -d packageName (less the version part, sometimes)
+and all directly installed files can be listed by
+   rpm -q -l packageName
+Depending upon your installation, the modem drivers may/may_not be autoloaded.
+Login as Root in a console with:
+# su - root
+# lsmod
+If the modem drivers are not already loaded onto the kernel, insert them with command
+# modprobe ModuleDriver
+If there are multiple drivers such as the lt_modem.o and lt_serial.o pair,
+commanding the serial like driver:
+# modprobe lt_serial
+should autoload all modules it depends on.  Check with:
+# lsmod 
+This proceeds through a reading of dependency files
+written to /lib/modules/$SYS/ during boot up through the "depmod -a" command.
+In constrast
+# insmod lt_serial
+would only attempt loading of that single driver and will FAIL, if its dependency on
+lt_modem.o has been satisfied by prior lt_modem.o insertion.
+ Do read "man wvdial" and /usr/share/doc/vwdial  documentation
+sometime browse the documentation that is written to /usr/share/doc/wvdial/
+Therein are instructions for setting up alternative dialouts.
+
+%%% This wvdialconf action if successful generates the files:
+ /etc/ppp/peers/wvdial
+ /etc/ppp/peers/wvdial-pipe
+in addition to the /etc/wvdial.conf
+
+Many Users prefer to use the dialout utility KPPP. This is fine.
+But each User MUST run the configuration process separately.
+In principle, different Users on the same Linux System could
+have different Internet providers and/or use different modems.
+The configuration process generates a file:  /home/UserFolder/.kde/share/config/kppprc
+Therein, non-standard modem port names can be entered, such as:
+      [Modem]                 
+      Device=/dev/ttySHSF0
+ for the Conexant hsfmodem port.  
+
+Preparation for  dialout if other COMM modes are active.
+---------------------------------------------------------------------------
+Concurrent ethernet capability will compete for
+the Domain Name Service (DNS) needed for browser naviagation. So as root:
+# /sbin/ifconfig eth0 down
+before starting a dialout!
+With a Mandrake installation, it will be necessary to:
+# /etc/init.d/network stop
+
+Internet clients such as Netscape, Mozilla, Explorer etc.
+should be CLOSED during your first dial out trials.
+Should a URL on the Internet be specifed as the default URL/connect,
+then the Client may compete with ppp for connectivity functions.
+After PPP functionality has been verified, the effects of opened
+or launched browsers can be checked
+
+If you have installed the DIALD (dial on demand) package, stop it for initial tests:
+# /etc/init.d/diald stop
+Otherwise diald function will be initiated with modem usage,
+and could compilate issues. Test diald only after ppp by itself is fine.
+
+If your internet provider assigns DNS dynamically then add to /etc/ppp/options:
+ usepeerdns
+
+To analyze a dialout attempt, it is useful to display kernel messages with:
+# tail -f /var/log/messages &
+The & puts the commanded process in the "background" allowing recovery of the command prompt.
+
+Some dialer packages (kppp etc) may automate the above steps.
+
+
+Note that for some Linux distributions (Mandrake for one),
+maintain modules in compressed module.gz format, if modem service was not specified
+during the Linux installation. A subsequent installation of any dialer package:
+  wvdial - PPP dialer with built-in intelligence.
+  kppp - PPP dialer for KDE
+  dtmfdial - A DTMF Tone Dialer
+  gkdial - Gtk-based PPP dial-up configuration tool.
+  gkdial-gnome - GNOME-based PPP dial-up configuration tool.
+  masqdialer - daemon for remote control of masqueraded dialup links
+  pppconfig - Debian configuration toolset with command: pppconf
+will stimulate unpacking of ppp related modules during bootup.
+
+The cogent ppp related modules loaded during such a CONNECT are displayed within the output from:
+# lsmod
+ppp_deflate             3512   1  (autoclean)
+zlib_inflate           18980   0  (autoclean) [ppp_deflate]
+zlib_deflate           18648   0  (autoclean) [ppp_deflate]
+bsd_comp                4440   0  (autoclean)
+ppp_async               7744   1  (autoclean)
+ppp_generic            16380   3  (autoclean) [ppp_deflate bsd_comp ppp_async]
+slhc                    5264   1  (autoclean) [ppp_generic
+
+For ealier 2.4.nn kernels, loading of these modules may require the following lines within
+  /etc/module.conf :
+### automate ppp modules loading ###
+alias /dev/ppp          ppp_generic
+alias char-major-108    ppp_generic
+alias tty-ldisc-3       ppp_async
+alias tty-ldisc-14      ppp_synctty
+alias ppp-compress-21   bsd_comp
+alias ppp-compress-24   ppp_deflate
+alias ppp-compress-26   ppp_deflate
+### end ppp block ####
+For more recent kernels with their modutils,
+these lines are no longer needed.
+
+For  potential causes of a NO DIALTONE failure, read the Post-install.html
+at  http://linmodems.technion.ac.il/  Not setting the Country Code may be
+and additional problem.
+
+ COUNTRY CODE Issues
+ ====================
+ The modem which you purchase locally or abroad may not be preset
+ with the proper Country Code setting.  An incorrect setting can
+ hinder acquisition of dial tone.
+ Inclusion of an X3 (dial without wainting) in the modem Init string
+ of under wvdial, including in /etc/wvdial.conf a line
+   Stupid Mode = yes
+
+ Dialtone recognition depends on the setting of country
+ and/or local phone line equipment.
+
+ To properly get dialtone for your country phone experiment use
+ AT+GCI=xx  where xx is country code in hexidecimal format.
+ Theoretically there could be 256 different countries but
+ not all are valid. Tables in manuals are way off date,
+ you have to write a small script to try all combinations
+ for yourself if you can't guess by chance.
+
+ After country select you can check textual name of the country it represents.
+ For example:
+   at+gci=00
+   OK
+   ati9
+   Japan
+
+ If you can't find exact country, choose the nearest one available.
+ Nearby countries tend to have similar equipment and compatible dialtones.
+
+ These comments from:   Emard <emard@softhome.net>
+ =================
+
+8) After a successful CONNECT, the Domain Name Service (DNS) needed
+ for Browser navigation can be checked with:
+# ping corel.com
+PING corel.com (206.47.20.85): 56 data bytes
+64 bytes from 206.47.20.85: icmp_seq=0 ttl=52 time=209.1 ms
+64 bytes from 206.47.20.85: icmp_seq=1 ttl=52 time=189.9 ms
+64 bytes from 206.47.20.85: icmp_seq=2 ttl=52 time=180.0 ms
+64 bytes from 206.47.20.85: icmp_seq=3 ttl=52 time=179.9 ms
+# Ctrl-C
+     aborts ping
+--- corel.com ping statistics ---
+4 packets transmitted, 4 packets received, 0% packet loss
+round-trip min/avg/max = 179.9/189.7/209.1 ms
+
+# ping 206.47.20.85
+PING 206.47.20.85 (206.47.20.85): 56 data bytes
+64 bytes from 206.47.20.85: icmp_seq=0 ttl=52 time=179.8 ms
+64 bytes from 206.47.20.85: icmp_seq=1 ttl=52 time=190.0 ms
+64 bytes from 206.47.20.85: icmp_seq=2 ttl=52 time=170.0 ms
+# Ctrl-C
+     aborts ping
+
+Should there be a success with:
+# ping 206.47.20.85
+BUT a failure with the named address:
+ping corel.com
+Then DNS has not been acquired.
+Note that failure to stop ethernet service
+# /sbin/ifconfig eth0 down
+before starting a dialout, will commonly block DNS under ppp.
+
+To terminate the wvdial session, bring the action to the foreground (fg):
+# fg wvdial
+  Ctrl-C    to terminate:
+wvdial
+Caught signal #2!  Attempting to exit gracefully...
+: secondary DNS address 207.172.3.9
+: Terminating on signal 15.
+: Connection terminated.
+: Connect time 7.8 minutes.
+--> Disconnecting at Sat Jul 26 14:06:53 2003
+
+The Debian distribution provides a utility:
+# pppconfig
+for setting up a chatscript for ppp initiation.
+Most dialers do use chatscripts and will produce similar records.
+Below is the record of a dial out initiated by:
+
+# pon
+: pppd 2.4.1 started by marv, uid 1000
+: abort on (BUSY)
+: abort on (NO CARRIER)
+: abort on (VOICE)
+: abort on (NO DIALTONE)
+: abort on (NO DIAL TONE)
+: abort on (NO ANSWER)
+: abort on (DELAYED)
+: send (ATZ^M)
+: expect (OK)
+: ATZ^M^M
+: OK
+:  -- got it
+: send (ATQ0V1E1M0S0=0W2&C1&D2+FCLASS=0^M)
+: expect (OK)
+: ^M
+: ATQ0V1E1M0S0=0W2&C1&D2+FCLASS=0^M^M
+: OK
+:  -- got it
+: send (ATDT3019178111^M)
+: expect (CONNECT)
+: ^M
+: ATDT3019178111^M^M
+: CONNECT
+:  -- got it
+: send (\d)
+: Serial connection established.
+: Using interface ppp0
+: Connect: ppp0 <--> /dev/modem
+: kernel does not support PPP filtering
+Jul 26 14:08:39 stodolsklap kernel: PPP BSD Compression module registered
+Jul 26 14:08:39 stodolsklap kernel: PPP Deflate Compression module registered
+: local  IP address 66.44.1.195
+: remote IP address 208.59.89.132
+: primary   DNS address 207.172.3.8
+
+Once your first CONNECT has been established, than in the future if should suffice
+just to use your dialer of choice: wvdial , kppp  .gnomeppp or whatever.
+
+Good surfing to you.
+
+10) GENERAL ITEMS
+
+ If attemped insertion of a modem driver evokes a complaint like:
+         unresolved symbol do_SAK_R9a0bcb74
+ then the kernel-headers using in compiling the modem drivers
+ do not match those of your current kernel whose KernelVersion is displayed by:
+    uname -r
+ and whose kernel config file is often located at /boot/config-KernelVersion
+ The section above "COMPILING DRIVERS, for Newbies" relates how to make corrections.
+
+ There are definitely IPs whose login protocols are Linux hostile.
+ If you cannot achieve a login, try another Internet Provider (IP).
+ or ask for someone on discuss@linmodems.org to test your IP.
+
+ Many driver packages provide for loading modem drivers on bootup.
+ Here is a description on how to set it up, if necessary:
+   http://linmodems.technion.ac.il/archive-fourth/msg00451.html
+
+ PLEASE include the diagnostic output of the following Root command in any problem reports:
+ # setserial -agv /dev/ttyS*
+
+ For instructions on having modem drivers loaded on bootup,
+   particularly the SmartLink slmodem drivers see:
+   http://linmodems.technion.ac.il/archive-fourth/msg00451.html
+ For automated removel of drivers after a PPP session see:
+   http://linmodems.technion.ac.il/archive-fourth/msg00145.html
+
+  For general upto date advice:
+    http://linmodems.technion.ac.il/
+    http://linmodems.technion.ac.il/resources.html
+    available in Russian at  http://linmodems.nm.ru
+ for a general PCI_ID database
+    http://www.pcidatabase.com/
+ the original Linux winmodems URL is:
+    http://linmodems.org
+ with a mailing list on Winmodems:
+    discuss@linmodems.org
+ whose archives can be searched at:
+    http://linmodems.technion.ac.il/ (near bottom of the page)
+ There is an extensive modem database at:
+    http://start.at/modem/
+ Locate your local Linux groups through:
+    http://www.linux.org/groups/index.html
+ USB modem information:  http://www.linux-usb.org/USB-guide/x332.html
+ Laptop users should browse http://tuxmobil.org/modem_linux_add1.html
+ For debugging ppp:
+   http://www.cisco.com/warp/public/471/debug_ppp_negotiation.html
+
+---------- end FOLLOW UP STEPS ---------------
+
+END
+
+       cat<<END>Modem/Slmodem.txt
+               SLMODEM PACKAGE USAGES and TESTING
+
+Summary
+-----------------             
+SmartLink (SML hereafter, http://www.smlink.com) produces chipsets for PCI card and USB modems
+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 
+from other chipset manufacturers.  The installed software has components:
+       /usr/bin/slmodemd  - a daemon that  provides most services, including dynamic port creation.
+       /dev/slamrN  and /dev/slusbN  (N = 0,1,2 or 3) are proxy devices used by 
+               slmodemd in port creation  for PCI and USB modems respectively.  The true port is of type 
+               /dev/pts/N  , N a number,  with a symbolic link to it also created:
+                     /dev/ttySL0 --> /dev/pts/N
+       slusb.ko - driver for the USB modems
+       slamr.ko -  a low level driver which accesses the port, 
+              There are subsititutes for slamr.ko within the Open Source ALSA package
+               (snd-intel8x0m.ko , snd-via82xx-modem.ko  or   snd-atiixp-modem.ko ) working with most
+              modem hardware, and provided that slmodemd was compiled with ALSA (Advanced
+              Linux Sound Architecture) support. (See the companion Slmodem-ALSA.txt)
+       the code folder  slmodem-2.9.n/scripts/  contains scripts which can provide  bootup automation
+Details follow.
+
+  Slmodem support
+   -------------------------------
+ The software features support for :
+      FAXing, though not the AT&F command; 
+      SMP (Symmetric MultiProcessor) mother boards;
+      64 bit AMD x86_64 processor mother boards, see
+        http://linmodems.technion.ac.il/archive-fourth/msg02594.html;
+      the SmartUSB56 (ST7554) chipset with vendor/product usb ids  0483:7554, 
+          see report at  http://linmodems.technion.ac.il/archive-fourth/msg03609.htm
+ A few modem hardware types are supported:
+      the USB modems ;
+      several BrandName modems, for which the primary PCI suffices for chipset identification; 
+      many soft modems, for which a "mc97 codec" as well as PCI ID must be acquired, 
+          as described in the companion SoftModem.txt and below.
+Software download sites are:
+    SML -  http://www.smlink.com for slmodem-2.9.10.tar.gz, with license to support only SML 
+        chipset modems.  The slmodem package maintainer is Sasha Khapyorsky.  His quick fixes are at:
+   http://linmodems.technion.ac.il/packages/smartlink/   Currently cogent packages are:
+           ungrab-winmodem.tar.gz  - necessary for some Systems which falsely presume that
+                the modem is a serial port modem type.  See  http://linmodems.technion.ac.il/slmodem-serial.html
+           slmodem-2.9.9d.tar.gz - providing compiling resources for slmodemd, slamr.ko and slusb.ko
+          slmodem-2.9.9d-alsa.tar.gz - providing for compilation of slmodemd  with ALSA support, 
+               so that the ALSA driver alternates described can be utilized.
+          This  2.9.9x version software is licensed for use with any compatible softmodem.   
+
+The slamr diagnostic
+-----------------------------
+If you have just downloaded the slamr.ko driver matching your kernel, 
+just move into the folder with slamr.ko  and
+# insmod  slamr.ko 
+ will generate a warning about "Tainted kernel", and perhaps about non-SmartLink chips.
+ So long as the driver loads, just ignore them. Read related kernel messages with
+# dmesg | grep slamr
+The output should include a line like:
+      slamr: mc97 codec is CodecName
+  wherein the CodecName is needed to choose the correct software
+  
+Should the be an output like like:
+---------------
+slamr: unsupported module, tainting kernel.
+slamr: module license 'Smart Link Ltd.' taints kernel.
+slamr: SmartLink AMRMO modem.
+slamr: device 10b9:5457 is grabbed by driver serial
+------------
+The "grabbed by driver serial" indicates a compensating driver is needed.
+Use the ungrab-winmodem.tar.gz resource to compile the ungrab-winmodem.ko
+After installation, first do
+# modprobe ungrab-winmodem
+before
+# modprobe slamr
+# dmesg | grep slamr
+
+
+ A slamr.ko driver may already be installed (SuSE/Novell Linux).  Please run the following test sequence:
+ # su - root
+ # modprobe -r slamr
+ Ignore any warning message
+ # modprobe slamr
+Then same as above. Get the CodecName and send the information to Discuss@linmodems.org
+ Explanation and details follow  below.
+
+  Special cases:
+  ---------------------------   
+ For BCM64/Broadcom and ATI softmodem support, only the slmodem-2.9.9d-alsa.tar.gz can serve. 
+ Within the Modem/ folder output by scanModem, browse Slmodem.txt, Slmodem-ALSA.txt and Testing.txt
+ There have been a few reports of problems being solved by using Bootup options:
+              noapci and/or apci=off
+ thus dropping back to the APM power management mode.
+ Solution of a CONNECT problem has been achieved by specifying a slower V32 modulation 
+       see  http://linmodems.technion.ac.il/archive-fifth/msg00137.html
+
+  General installation:
+  -----------------------------
+  If your Linux distribution provides a slmodem package, the package manager will typically
+  install it to  /usr/src/moduels/slmodem-2.9.N   .  But it downloaded as a slmodem-2.9.N.tar.gz,
+  if could be unpacked in a folder of your choice.  The following directions assume installation to:
+         /usr/src/moduels/slmodem-2.9.N
+ Do  a Root login into a command console:
+ #  su -  root
+ # cd   /usr/src/moduels/slmodem-2.9.N
+ Look at contents:
+ # ls
+   COPYING  Changes  Makefile  README  drivers  modem  patches  scripts
+   
+ For Debian related Distros there is an sl-modem-daemon.deb package providing
+ slmodemd and initializaton scripts.  A separate  sl-modem-source.deb packages
+ houses the slamr and slusb driver code.  It is installed as:
+    /usr/src/sl-modem.tar.bz2
+ Unpack by
+  #  cd /usr/src/
+  #  tar jxf sl-modem.tar.bz2
+  which opens into:
+    /usr/src/modules/sl-modem/
+  Move in with:
+  # cd /usr/src/modules/sl-modem/drivers
+  for subsequent steps.
+  
+  The routine compiling steps are:
+  # make clean
+  # make
+  # make install 
+A detaile example is  http://linmodems.technion.ac.il/archive-fourth/msg00176.html
+          
+  Also install the wvdial package if your Distro provides it.
+  The wvdialconf provides a first simple test of Hardware + Software functionality.
+  
+ Afterward a test can be performed:
+ # modprobe slamr
+ See a resulting the kernel report with:
+ # dmesg | grep slamr
+ which may contain a line:
+   slamr:  mc97 codec is CodecName
+ with CodecName being a variable diagnostic output.
+ There are 4 cases:
+  a) codec is SILnm , with n,m numbers
+    there are good prospects for the modem being supported by the slmodem resources.
+  b) codec is INT65
+   The Intel_secure-537AA-CurrentVersion should serve, 
+   with slmodem support an alternative for compatible modem controllers.
+  c) codec is CXTnm
+    the softmodem is a Conexant type.  
+    ONLY hsfmodem drivers from http://www.linuxant.com can be utilized.
+    Do remove the slmodem installation first with:
+      # make uninstall
+    before proceeding further.
+  d) codec is BCM64
+    the soft modem has a Broadcom codec and the slmodem-2.9.9d-alsa MUST be used.
+    See http://oboc.ucdavis.edu/Marik/inspiron/ 
+    But readon first for general information
+    
+
+Testing
+-------------------------------------------         
+To being testing , Watch your kernel messages with:
+# tail -f /var/log/messages  &
+The "&" just  backgrounds the process, or else the command prompt is lost.
+The low level interface driver is loaded with:
+# modprobe  Module
+Then
+# slmodemd --help
+just to see what it provides.  
+
+Check for support
+ of your country with:
+# slmodemd --countrylist
+The default is USA.
+# slmodemd --countrylist &> CL.txt
+will write the list to CL.txt if desirable.
+Use your own COUNTRY from the second column for the port creations command:
+
+Simple usage
+-------------------------
+It may be necessary to
+# modprobe upgrab-winmodem 
+before inserting the low level driver:
+# modprobe Module
+where Module is:
+       slamr  for PCI card modems OR
+       slusb  for a USB modem 
+       one of the ALSA drivers mentioned above
+Start the deamon with corresponding:
+# slmodemd -a --c YourCountry  /dev/slamr0   &
+for the PCI card modems
+# slmodemd -a --c YourCountry  /dev/slusb0   &
+for the USB modes
+# slmodemd -a --c YourCountry  hw:1  &
+when using an ALSA driver, except for the ATI modems use:
+# slmodemd -c YourCountry modem:0   &
+
+These commands will creat the real port  /dev/pts/N and a symbolic link
+    /dev/ttySL0 -->  /dev/pts/N
+and provide higher level functions of the slmodem code
+The first functionality test is:
+# vwdialconf  wvdialtest.txt
+if the modem is thus found prospects are good for success.
+
+1) For Redhat and Fedora, use the Internet Wizard within the popup menus to 
+configure a dialout,  A file /etc/wvdial.conf will be created. 
+
+2) For other Linux distros do:
+# wvdialconf /etc/wvdial.conf
+Edit three lines of your personal information into /etc/wvdial.conf,
+replacing the  <text>,    including the < >
+
+In both cases add to  /etc/wvdial.conf  a line needed by slmodemd
+  Carrier Check = no
+Using other dialer utilties (such as KPPP) is OK, and they will not need the:
+     Carrier Check = no
+     
+ However should a "No carrier" message be returned during a dialout attempt see:
+     http://linmodems.technion.ac.il/archive-fifth/msg00552.html
+
+Then try a dialout, with:
+# wvdial & 
+
+ The discretionary " & " just allows recovery of the command prompt.
+ To stop a command thus started:
+ # fg wvdial
+ puts the process in the foreground, so it can be stopped with
+ # Ctrl-C
+ Preferably use wvdial for testing if your distribution provides it. Otherwise use Minicom.
+ If there is a failure to acquire a dial tone, add an X3 in the /etc/wvdial.conf line like:
+   Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
+ to:
+   Init2 = ATQ0 X3 V1 E1 S0=0 &C1 &D2 +FCLASS=0
+ For dialers using a chatscript, the edit would be like:
+   ATQ0X3V1E1S0=0&C1&D2+FCLASS=0
+  
+  Read Modem/Testing.txt for further testing guidance,
+  and Modem/Slmodem-ALSA.txt  for details on ALSA mode.
+ If success has been achieved using the slamr driver, after a while
+ it is worth also testing the slmodem-2.9.9d-alsa or later  resource .
+   but do fully UNINSTALL slmodem-2.9.n first!!!
+ Only the slmodemd for creating ports is provided in ALSA mode
+  The complementing Open Source ALSA
+ drivers comes with kernel-image packages.
+ For the slamr and usb drivers the proxy ports can be displayed with:
+  # ls -l /dev/sl*
+crw-------  1 root root 212, 0 Apr 29  2004 /dev/slamr0
+crw-------  1 root root 212, 1 Apr 29  2004 /dev/slamr1
+crw-------  1 root root 212, 2 Apr 29  2004 /dev/slamr2
+crw-------  1 root root 212, 3 Apr 29  2004 /dev/slamr3
+crw-------  1 root root 213, 0 Apr 29  2004 /dev/slusb0
+crw-------  1 root root 213, 1 Apr 29  2004 /dev/slusb1
+crw-------  1 root root 213, 2 Apr 29  2004 /dev/slusb2
+crw-------  1 root root 213, 3 Apr 29  2004 /dev/slusb3
+  If your System is using the udev file system for devices. A proxy report 
+will NOT be present until the driver is inserted:
+# modprobe slamr
+OR
+# modprobe slusb  
+
+ The slmodem packages way contain a scripts/ folder , with scripts for
+ automating driver loading and port creation upon bootup. For some Systems, 
+ it has proven beneficial to cause a pause after driver loading by inserts
+       sleep 1 (or maybe 2 or 3 if necessary)
+ before the line:
+       echo -n "Starting SmartLink Modem driver for: $SLMODEMD_DEVICE"
+ Without the pause, the driver diagnositics may not complete 
+ before the following step is attempted, with a resultant failure.
+ Call back support is implemented in slmodem-2.9.10 and slmodem-2.9.9b
+See  http://linmodems.technion.ac.il/archive-fifth/msg00219.html
+   
+END 
+cat<<END>>$RECORD
+
+ The Modem/DriverCompiling.txt  is a MUST READ,
+ if you are not experienced in configuring kernel-source/
+ or get "unresolved symbols" upon driver insertion.
+
+  Most recent WinModem fixes are in:  http://linmodems.technion.ac.il/FAQ.html
+  
+(4) For guidance on automation see  http://linmodems.technion.ac.il/archive-fourth/msg03734.html
+and the scripts in the slmodem-2.9.n/scripts folder/
+
+END
+
+if [ "$DISTR" = "debian" ] && ! [ "$BEST"  =  "" ] ; then
+    echo " For Debian users, the kernel-headers-$SYS.deb can be used instead of kernel-source/" >> $RECORD
+    echo >>  $RECORD
+fi
+if [ "$BN" = "scanModem" ] ; then
+  if ! [ "`pwd`" = "/" ] ; then
+    FILES=`ls Modem`
+    cat<<END
+    
+   A subfolder Modem/  has been written,  containing these files with more detailed Information: 
+ ------------------------------------------------------------------------------------------
+ `echo $FILES`  
+-------------------------------------------------------------------------------------------
+       Please read 1stRead.txt first for Guidance.  
+END
+  fi
+
+  if test -z $FAST ; then
+    rm $TMPM $TMPM.* &> /dev/null
+  fi
+else
+  echo  -------------- ending SCANMODEM section ---------------- >>$RECORD
+fi
+echo
+
+