scanModem update

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



thanks Marvin, attachment file ef.txt and other
UPDATE=2008_08_21
 Continuing as this update is only 1 weeks old,
 but the current Update is always at: http://linmodems.technion.ac.il


Identifying PCI bus slots with candidate modems.
Running PCIbus cases
Analysing card in PCI bus 00:1b.0, writing to scanout.00:1b.0
Using scanout.00:1b.0 data, and writing guidance to ModemData.txt
Writing DOCs/Intel.txt

 Writing residual guidance customized to your System.
   A subfolder Modem/  has been written,  containing these files with more detailed Information: 
 ------------------------------------------------------------------------------------------
 1stRead.txt  DOCs  ModemData.txt  scanout.00:1b.0  tmp
    and in the DOCs subfolder:
 DriverCompiling.txt  InfoGeneral.txt  Intel.txt   Rational.txt	  SoftModem.txt
Testing.txt	     UNSUBSCRIBE.txt  wvdial.txt  YourSystem.txt
-------------------------------------------------------------------------------------------
       Please read 1stRead.txt first for Guidance.


If you want help from the email group Discuss@xxxxxxxxxxxxx, PLEASE join the List
at http://www.linmodems.org . Otherwise your messages will be delayed until the evening,
waiting for someone to verify it is not junk mail, before forwarding through the List server.
   
The files in this Modem/ folder have the following roles:

ModemData.txt - Diagnostics and accumulated information cogent to your modem and host system.
     This is the ONLY file which should be sent to the List  DISCUSS@xxxxxxxxxxxxx , 
     if further help is needed. Send your email and attachments as plain text as 
     other formats are rejected by the List Server, to avoid virus transmission.
     Always send the ENTIRE ModemData.txt,  as It includes subtle diagnostic ouputs needed 
     to best guide you. Please in the covering email mention your Country, to enable Country 
     specific advice.
     Always use the most recent update of scanModem accessed ONLY at
	   http://linmodems.technion.ac.il/packages/scanModem.gz 
     to produce ModemData.txt
     URLs to cogent advice are regularly updated, so your problem may be solved therein.
     Please Do NOT send  Do NOT send other files in this folder Modem/

Several informative files without diagnostics are in the DOCs subfolder.
A file(s) specific to your modem chipset will be written, such as:
  Smartlink.txt, Conexant.txt, Intel.txt , etc

YourModem.txt - Guidance about operating your particular System, for your benefit
     It should NOT be sent to Discuss@xxxxxxxxxxxxx

Rational.txt - Motivations of this scanModem package.  

DriverCompiling.txt -  Explains the roles of additional files which may have to be installed
   to support compiling of modem drivers, and the steps to take.   

SoftModem.txt - Information and instructions about "soft modems".
     For these modems, additional steps may be necessary for choice of supporting software.
     The primary PCI ID is that of the host audio or modem controller, which can support diverse Subsystems. It is the chipset of the Subsystem which determines the software needed.

ModemTesting.txt SHOULD be read, but after drivers have been installed.

InfoGeneral.txt has general information about the status of winmodem support under Linux,
    Do read it if ModemData.txt  reports that your current modem is not supported under Linux. 

Unsubscribe.txt - Howto terminate email tranmissions from the List.

If you are Linux newcomer, please do locate your local Linux group through:
    http://www.linux.org/groups/index.html  .  If you are not comfortable with English,
    a local Linux user can often be of substantial assistance in getting you on to the Internet.
 
 Only plain text email is forwarded by the  Discuss@xxxxxxxxxxxxx List Server,
 as HTML can contain viruses. Use as the email Subject Line:
           YourName, YourCountry  kernel 2.6.24-19-generic 
 With this Subject Line cogent experts will be alerted, and useful case names left in the Archive.
 YourCountry will enable Country specific guidance. Linux experts in YourCountry 
 can be found through: http://www.linux.org/groups/index.html.
They will know your Country's modem code, which may be essential for dialup service.
Responses from Discuss@xxxxxxxxxxxxx are sometimes blocked by an Internet Provider mail filters.
 So in a day, also check the Archived responses at http://www.linmodems.org 
--------------------------  System information ----------------------------
CPU=i686,  
Linux version 2.6.24-19-generic (buildd@terranova) (gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) #1 SMP Fri Jul 11 23:41:49 UTC 2008
 scanModem update of:  2008_08_21

 There are no blacklisted modem drivers in /etc/modprobe*  files 
Attached USB devices are:
 ID 046d:c001 Logitech, Inc. N48/M-BB48 [FirstMouse Plus]

USB modems not recognized

For candidate card in slot 00:1b.0, firmware information and bootup diagnostics are:
 PCI slot	PCI ID		SubsystemID	Name
 ----------	---------	---------	--------------
 00:1b.0	8086:284b	1179:ff00	Audio device: Intel Corporation 82801H 

 Modem interrupt assignment and sharing: 
 22:      48658      49035   IO-APIC-fasteoi   HDA Intel
 --- Bootup diagnostics for card in PCI slot 00:1b.0 ----
[   31.403782] ACPI: PCI Interrupt 0000:00:1b.0[A] -> GSI 22 (level, low) -> IRQ 22
[   31.403810] PCI: Setting latency timer of device 0000:00:1b.0 to 64


===== Advanced Linux Sound Architecture (ALSA) diagnostics ===== 
The ALSA packages provide audio support and also drivers for some modems.
ALSA diagnostics are written during bootup to /proc/asound/ folders.

The ALSA verion is 1.0.16
The modem cards detected by "aplay -l"  are: None


The /proc/asound/pcm file reports:
-----------------------
00-04: ALC268 Analog : ALC268 Analog : capture 1
00-00: ALC268 Analog : ALC268 Analog : playback 1 : capture 1

about /proc/asound/cards:
------------------------
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xfc500000 irq 22

 PCI slot 00:1b.0 has a High Definition Audio Card
 The drivers are in the kernel modules tree at:
 /lib/modules/2.6.24-16-generic/ubuntu/sound/alsa-driver/pci/hda/snd-hda-intel.ko
/lib/modules/2.6.24-19-generic/ubuntu/sound/alsa-driver/pci/hda/snd-hda-intel.ko
 The modem codec file for the HDA card is: /proc/asound/card0/codec#1
--------------------------------------------------------
Codec: Generic 11c1 ID 1040
Address: 1
Vendor Id: 0x11c11040
Subsystem Id: 0x11790001
Revision Id: 0x100200
Modem Function Group: 0x1

 The audio card hosts a softmodem chip:  0x11c11040
If not a Conexant modem, the driver agrmodem+agrserial+patched_snd-hda-intel with its dependent drivers:

----------
provide audio + modem support with the modem chip residing on the subsystem.
Any particular card can host any one of several soft modem chips. 

=== Finished firmware and bootup diagnostics, next deducing cogent software. ===

Predictive  diagnostics for card in bus 00:1b.0:
	Modem chipset  detected on
NAME="Audio device: Intel Corporation 82801H "
CLASS=0403
PCIDEV=8086:284b
SUBSYS=1179:ff00
IRQ=22
HDA=8086:284b
SOFT=8086:284b.HDA
CHIP=0x11c11040
IDENT=11c11040
Driver=agrmodem+agrserial+patched_snd-hda-intel

 For candidate modem in:  00:1b.0
   0403 Audio device: Intel Corporation 82801H 
      Primary device ID:  8086:284b
    Subsystem PCI_id  1179:ff00 
    Softmodem codec or chipset from diagnostics: 0x11c11040
                               from    Archives: 
                        The HDA card softmodem chip is 0x11c11040
      

Support type needed or chipset:	11c11040

----------------end Softmodem section --------------

Writing DOCs/Intel.txt

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

martian - At http://linmodems.technion.ac.il/packages/ltmodem/kernel-2.6/martian/
AGRSM - At http://linmodems.technion.ac.il/packages/ltmodem/11c11040/
  Compiling resources for a driver module pair: agrmodem.ko + agrserial.ko
  Use the  agrsm-HDA-20080721-ALSA15.tar.bz2 or agrsm-HDA-20080721.tar.bz2
  Read the agrsm_howto.txt.  For 11c11040 chips, also the HOWTO-Agere-11c11040-HDA.html

-------------- end Agere Systems section -------------------

 Completed candidate modem analyses.

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

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


 
 Minimal compiling resources appear complete:
   make utility - /usr/bin/make
   Compiler version 4.2
   linuc_headers base folder /lib/modules/2.6.24-19-generic/build

 However some compilations and executable functions may need additional files,
 in the FileNames.h (so called kernel "h"eaders) collection installed in  /usr/include/ .
 For martian_modem, additional required packages are needed. The also required headers of package libc6 are commonly installed by default. 
 Compiling hsfmodem drivers does require linux-libc-dev and libc6-dev packages, for kernels 2.6.24 and later versions.
 In not included on your install CD, search for them at http://packages.ubuntu.com
 or comparable Repository for other Linux distros.
 When compiling ALSA drivers, the utility "patch" will also be needed.




If a driver compilation fails, with message including some lack of some FileName.h (stdio.h for example), then
Some additional kernel-header files need installation to /usr/include. The minimal additional packages are libc6-dev
and any of its dependents, under Ubuntu linux-libc-dev

If an alternate ethernet connection is available,
$  apt-get update
$  apt-get -s install linux-kernel-devel
will install needed packages.
For Debian/Ubuntu related distributions, run the following command to display the needed package list:

Otherwise packages have to be found through http://packages.ubuntu.com
Once downloaded and transferred into a Linux partition,
they can be installed alltogether with:
$ sudo dpkg -i *.deb


Checking pppd properties:
	-rwsr-xr-- 1 root dip 269256 2007-10-04 15:57 /usr/sbin/pppd

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

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

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

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

Read Modem/DOCs/YourSystem.txt concerning other COMM channels: eth0
Which can interfere with Browser naviagation.

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

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

     Within /etc/modprobe.conf files:
/etc/modprobe.d/blacklist-modem:# Uncomment these entries in order to blacklist unwanted modem drivers
/etc/modprobe.d/blacklist-modem:# blacklist snd-atiixp-modem
/etc/modprobe.d/blacklist-modem:# blacklist snd-via82xx-modem
/etc/modprobe.d/alsa-base:options snd-atiixp-modem index=-2
/etc/modprobe.d/alsa-base:options snd-via82xx-modem index=-2
     Within any ancient /etc/devfs files:

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

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

CLASS=0403
NAME="Audio device: Intel Corporation 82801H "
PCIDEV=8086:284b
SUBSYS=1179:ff00
IRQ=22
HDA=8086:284b
SOFT=8086:284b.HDA
CodecDiagnosed=
slamrTest=
CHIP=0x11c11040
CodecClass=
IDENT=11c11040
SLMODEMD_DEVICE=
OPTS=
Driver=agrmodem+agrserial+patched_snd-hda-intel
DRIVER=agrmodem+agrserial+patched_snd_hda_intel
 =======================================================
          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-2.6.24-19-generic. 
Modules located in subfolders of /lib/modules/2.6.24-19-generic/  .  They can be inserted into or removed 
from the acting kernel upon demand. This provides adaptablity to the diverse 
hardware components of PCs and changing requirments. 

Modem drivers are one type of module.  As contrasted to most Linux software, modem driver codes have
some non-public code components. That is the drivers are not fully Open Source, to protect 
Intellectual Property of the providing companies.   This has a consequence that many Linux distributions
will not or cannot legally  supply proprietary  modem drivers.  Rather the Users must get the 
modem code package and direct  compiling of the code and driver installation.

A complementary resource for compiling is a family of FileNames.h, collectively called kernel-headers.
They are both code bits themselves and also call for other code bits their functioning depends on.
Depending on the Linux distribution, kernel-headers may not be automatically installed.
If not they will always be made available on installation media or some Linux repository.
They can be searched for by package names including:  kernel-source, linux-source, kernel-headers and 44
There are always some kernel-headers in afolder /usr/include/.   But these are an INCOMPLETE, too small collection 
and DO NOT suffice for compiling processes.

In addition some software utilities may have to be installed.  The instructions for compiling are read by make.
A set of compiler tools are installed as a  gcc-SomeVersion package.  After compiling, the various pieces 
and linked dynamically together with "ld". Together wiith some simpler software tools, the ld will 
already be installed on Linux systems.  Systems using the Debian style maintanence system
additionally require a package "kernel-kbuild-3.n" to properly utilize kernel-headers or 2.6.n kernels.

The  "kernel-headers" are matched with an installed kernel, or must be generated from a kernel-source package. 
These are provided in different ways by the various Linux distributions, under 2.6.n kernels:
     Redhat and Fedora - installation is coincident with kernel installation, 
         with placement of the kernel-header base folder in /lib/modules/2.6.24-19-generic/build/
    Mandrake and SuSE/Novell - installation as part of a kernel-source or linux-source  packages,
         with location at /usr/src/kernel-headers-2.6.24-19-generic  or /usr/src/linux-2.6.24-19-generic 
    Debian and distros using its Package.deb format have names:
          kernel-headers-2.6.24-19-generic
	  linux-headers-2.6.24-19-generic  for Ubuntu
	  and installation is into  /usr/src/
	  for Xandros, there is a xandros-kernel-source-version.deb  which has to be installed
	      Unpack if necessary with 
	         # cd /usr/src/
		 # ls
	         # tar jxf xandros-kernel-source-version.tar.bz2
	      see   http://support.xandros.com/kb-view.php?topic=64  for details
	         but for 2.6.n kernels, the step after:
		 # make EXTRAVERSION=-x1 oldconfig
	         should be
		 # make EXTRAVERSION=-x1 bzImage
    Others - ???

For  the prior generation of 2.4.n kernels, there are special cases.  Skip this if your kernel is a 2.6.n or a Debian type.
For RPM using distros, the kernel-source-2.6.24-19-generic or linux-source-2.6.24-19-generic 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-2.6.24-19-generic.deb package matching your kernel version 2.6.24-19-generic.

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/2.6.24-19-generic/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/2.6.24-19-generic/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/2.6.24-19-generic/build
  cd /usr/src/linux

 There is a Makefile on your System at:  /lib/modules/2.6.24-19-generic/build/Makefile
 with first few lines:

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 24
EXTRAVERSION = .3
NAME = Err Metey! A Heury Beelge-a Ret!

# *DOCUMENTATION*

For your current kernel, the fourth line should be
   EXTRAVERSION = 
where  has been read from your current kernel version: 2.6.24-19-generic.
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 2.6.24-19-generic
   EXTRAVERSION = -
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-2.6.24-19-generic
matching the output of:
  uname -r
Or it may be the target of a symbolic link:  /boot/config -->
So
  cp /boot/config-2.6.24-19-generic .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/DOCs/DriverCompiling.txt

Modem Type Readout and Supporting Software Identification.
-------------------------------------------------------
Most add on cards to motherboards (including modems) adhere to a PCI standard, for
which there is firmware on the card which can be readout, providing setup parameters
and specification of the required software. This works under Linux provided that
drivers are resident. Herein is the practical problem. During the evolution of 
modems, some of the complementing software components became Proprietary and
Closed Source.  A consequence is that for reasons of Legality and/or Principle,
many Linux distributions do not distribute such modem drivers with the regular
releases, even when the modem chipset designer does provide Linux support code.
Without the drivers, additional assistance is needed to identify the modem
chipset and its complementing software.

The scanModem script includes four routines to determine the software required:
1) Readouts with a lspci tool accessing firmware on PCI cards.
2) A test using modem drivers already on your system as part of the ALSA (Advanced Linux 
Sound Architecture) software package. See DOCs/Smartlink.txt for details.
3) Comparison of Primary+Subsystem PCI IDs with others historically gathered, and 
then archived within scanModem.
4) A test requiring the SmartLink slamr.ko driver. See DOCs/Smartlink.txt for details.

Should these not be adequate, there are directions below for doing diagnostics during 
an alernate Microsoft Windows bootup.

Stop here on a first reading, and just run
   ./scanModem
Read on later if you are interested in details, OR
need instructions for doing modem diagnostics under Microsoft.

Using MicroSoft(MS) Windows:
-----------------------------
MS installations do generally have adequate diagostic capability. Try the following
routine 1), beginning with mouse clicks on:
   1) Start > Settings > Control Panel > Classical View (for Window XP) > System 
> Hardware > Device Manager > Modems > Click on the + > Modem. Double click to 
expand the graphic. Manufacturer information may be displayed. For example, CXT 
stands for Conexant. Click the Diagnostics Tab. Record any hardware ID or vendor 
and device information.
Next do the Query Modem and record the ATI specifications displayed such as:
     ATI3 - Agere SoftModem Version 2.1.22
     ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27
Try to identify the modem setup file, with name perhaps MODEM.INF.

   2) Open a COMM console. Send ATI commands to the modem (ATI, ATI1, ATI2, etc) 
which may elicit chipset and driver information. Here is an example:
     ATI3 - Agere SoftModem Version 2.1.22
     ATI5 - 2.1.22, AMR Intel MB, AC97 ID:SIL REV:0x27
successfully identifying an Agere SoftModem chipset, both by name and through 
the softmodem SIL ID: AC97 ID:SIL REV:0x27

The IBM mwave modem:
This has a DSP chip usually seated on the motherboard. Not carried on a PCI card 
it cannot be detected by scanModem. However, the mwave driver is included in 
2.6.n kernel releases.
So try:
   # modprobe mwave
Either the module will load or the absence of the modem will be indicated by:
   FATAL: Error inserting mwave (/lib/modules/2.6.10-1-
686/kernel/drivers/char/mwave/mwave.ko): Input/output error
See http://www.linuxdocs.org/HOWTOs/mini/ACP-Modem/ for details on this modem.

Modem evolution:
----------------
Here is a very abbreviated history on how modem evolutionary development. The
earliest modems (MOdulate and DEModulate signals for phone lines transmission)
managed all signal proceesing on the modem card through actions of expensive
Controllers chipsets with DSP (digital signal processing) capability. Copyrighted 
Vn.nm compression routines were also encoded in the chipset. Under Linux, an Open 
Source serial driver was the minimal complementing software. This generation of 
Controller chipset modems placed minimal burden on the early slow  central 
processing unips (CPU) of personal computers, such as the Intel 386.

As CPUs became faster, it was feasible to transfer some modem functions to
the CPU. A 2nd generation of modems retained a DSP chip, but Controller functions
were software driven on the CPU. A benefit was that modem hardware became cheaper.
But sadly the supporting software was Proprietary. Worst, some Intellectual Property
components were Closed Source to protect large investment in code development. Such
Controller free modems include the Conexant HCF, Intel-537EP and Mars chipset 
modems from Lucent or its later subsidary, Agere Systems Inc.

As CPUs became even faster, even DSP functions could be software code driven on
the CPU. This third generation of modems are commonly called "softmodems". Their
complementing software is comparable in sizeto that of the Linux kernel itself. The
residual "modem chip" is very cheap, but the development of the complementing
software is a large investment on the part of the chip designer/maker. 

Modem chipset determination under Linux:
---------------------------------------
The chipset of a modem determines which complementing software is required.
The Manufacturer and Model of an assembled modem are often inadequate to identify
the chipset. But sometimes there is an easy chipset identification. There is
a "lspci" utility provided in the Linux pciutils package. It reports the PCI 
identifiers (IDs hereafter) or the Primary card, its Subsystem, and some setup
parameters written in firmware. For example, there is a softmodem in the
PCI bus of address 00:11.6 on my laptop. Shown below is firmware information
acquired by two lspci commands:
$ lspci -s 00:11.6
00:11.6 Communication controller: VIA Technologies, Inc. AC'97 Modem Controller
$ lspci -s 00:11.6 -nv
     00:11.6 0780: 1106:3068 (rev 80)
        Subsystem: 14ff:100b
        Flags: medium devsel, IRQ 193
        I/O ports at e000 [size=256]
The translation is:  The card inserted into PCI bus slot 00:11.6 is named
"Communication controller: VIA Technologies, Inc. AC'97 Modem Controller".  The 
modem was assembled by a Vendor with ID identification code 1106 . Among 1106's 
products, it has a Device ID of 3068 in its 80th revison.  This usually  provides
adequate information, to get software from the Vendor designated by 1106 (VIA 
Technologies, Inc. in this case) for their device designation 3068.  The parameters
        Flags: medium devsel, IRQ 193
        I/O ports at e000 [size=256]
are determining by the environment of the host computer as reading modem firmware.
It may change if other hardware is added/removed from the host computer, or
under a change or Operating System (OS) kernel.

The problem for softmodems is that additional information is needed for the software
specification. The Subsystem Vendor_ID identifies only the assembler company.  But 
the modem chip housed in the Subsystem could be of a variety of types, each requiring 
different support software. In general, a single Subsystem assembler could use a
variety of different softmodem chips.  The Subsystem firwmare information on the chipset
is not accessible to lspci. Rather it requires usage of a modem driver, if one first had
some competent modem driver for minimal diagnostics.

Fortunately there are the software tools and drivers of the ALSA (Advanced Linux 
Sound Architecture) suite. This includes modem drivers lacking COMM proficiency by
themselves, but enough capability to readout the Subsystem firmware.  For the VIA
modem above, the encoded modem codec is SIL22, reporting that the softmodem chip was
made by SmartLink Inc. 

It is important to emphasis, that AC'97 Modem Controllers are made by a variety
of companies, and each may house many different Subsystem modem chips. There is
an Archive within scanModem of those with previously identified codecs. For example, 
the table for the 1106:3068 AC'97 Controller is:
	codec SubSystems_with_codec  ------------>
	CXT   104d:8143 104d:80f6 1025:0030 
	SIL27 1102:0033 1025:0046 1025:0033 1734:1078 1509:2870 1025:0046 
	SIL22 1743:1032 10cf:118e 1734:1054 1462:309e 1631:e004 1543:4c22 161f:2032 and_more
	SIL21 10cf:118e 13bd:1022 1543:4c21 1071:8375 1019:0c04 1458:1543 1019:b320
	MOT66 1734:109b 
Because of hardware configuration issues, the ALSA tools may initially fail. Then this
Archive is a fall back reporting the codec, and therefrom the needed software. For reasons
obscure, a single Subsystem ID may have different codecs under different Primary
controllers. Thus the pair Primary+Subsystem IDs must BOTH be retained to record 
the codec.

In addition to the Modem Controllers adhering to the AC'97 specifications, softmodem
Subsystems may be hosted by High Definition Audio (HDA) cards such as the:
8086:2668 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller
These lack a softmodem codec.  Instead the softmodem chip information acquired with ALSA
tools is within a folder:   /proc/asound/card0/codec*#1/
and includes the Vendor ID of the softmodem chip, such as 14f1 corresponding to Conexant. 

The software support:
---------------------
The CXT designation above is an abbreviation of CXT_some_number, for Conexant HSF softmodem 
codecs. These now number some 41 (perhaps more) CXT. Fortunately, all these codecs are
supported by a single hsfmodem software package provided through http://www.Linuxant.com
The trial package is free, but locked to speeds of 14,400 K.  A software key must be 
purchased to enable full speed support, with future software updates free. There is NO
freeware alternative for the hsfmodem software.  But Linuxant does provide pre-compiled
drivers for the more common Linux kernels, and their support services are good.

In the Table below, there are currently some 13 other softmodem codecs. Fortunately
all are supported by a combination of the ALSA modem drivers, the ALSA audio drivers
the modem drivers depend on, and a very smart helper utility from Smartlink Inc.,
the slmodemd helper. Sasha Kharposky wrote the Linux slmodemd utility and remains its
volunteer maintainer. It  provides the cleverness to interface between the low level 
ALSA modem driver and the pppd package communications codes. For details do:
$ slmodemd --help
and read associated documentation.  The slmodemd is provided with some Linux distributions,
and can also be downloaded in SLMODEMD packages from:
    http://linmodems.technion.ac.il/packages/smartlink/

Subsystems of AC'97 Modem Controllers
--------------------------------------- 
Subsystems for softmodems are primarily made by Silicon Labs (SIL) under 
contract to companies like Intel, Agere Systems, Motorola etc. In the Table 
below, ChipMadeBy does NOT imply software support directly from that 
manufacturer. The chart of information below is largely harvested from messages 
to discuss@xxxxxxxxxxxxxx
A codec_indent such as REV:0x27 is reported by diagnostics under Microsoft, as 
illustrated above. The matching designations such as SIL27 are translations 
under Linux, which are output by a diagnostic of the slamr.ko driver from the 
SmartLink slmodem software.
SIL is an abbreviation for Silicon Laboratories Inc., which provides Subsystems
on order to many modem assemblers. 
SML is used below as abbreviation for SmartLink Inc. with official driver 
resources at http://www.smlink.com/main/index1.php?ln=en&main_id=40 .  BUT use
updated resources at http://linmodems.technion.ac.il/packages/smartlink/.
ALSA+SML means use an ALSA modem driver plus the Smartlink slmodemd helper,
with the particular driver depending on the AC'97 or HDA host controller.
ID was originally a hexadecimal readout from 7c and 7e registers of the SubSystem, 
but are translated into "english", as done automatically by the slamr driver.

ID    chip_maker     driver/helper sources
----------------     ----------------------
CXTnm   Conexant     hsfmodem package from http://www.linuxant.com with several hsf* drivers.
   nm - a number
SIL25   Intel        ALSA+SML or INTEL-537EP supported AA variant
INT65   Intel        ALSA+SML or INTEL-537EP supported EA variant
SIL26   SML          SML, slamr driver plus slmodemd
SIL27   AgereSystems ALSA+SML
SIL2f     "          ALSA+SML
MOT66     "          ALSA+SML
AGR01     "          ALSA+SML
AGR02     "          ALSA+SML 
SIL21   PCTel        ALSA+SML
SIL23   PCTel        ALSA+SML
SIL22   SML          ALSA+SML
SIL24   Broadcom     ALSA+SML
BCM64   Broadcom     ALSA+SML, under Intel ICH family, AC'97 controllers.
----------------------------------------------
Subsystems with the above characteristics could reside under any of
the primary softmodem controllers listed below. Ignore the stuff after the > .
It serves during parsing of the Table by scan modem

Primary              
PCI_IDs           Name	                   Possible support by:
---------------  -----------------------------  -------------------------
8086:2416 82801AA ICHAA AC97 Modem Controller>  		+ A a  p c .
8086:2426 82801AB ICHAB AC97 Modem Controller> 		+ A a .
8086:7186 >				        			c .
8086:7196 82440MX Banister AC97 Modem Controller >     	+ A a      c .
8086:2446 82801BA/BAM ICH2 AC97 Modem Controller > 		+ A a p c .
8086:2486 82801CA/CAM ICH3 AC97 Modem Controller > 	+ A a p c i .
8086:24c6 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)1DB ICH4 AC97 Modem Controller> 		+ A a   c i b .
8086:25a7 6300ESB AC97 Modem Controller  NEW >
8086:24d6 82801EB/ER ICH5/ICH5SR AC97 Modem Controller> 		+ A     c i .
8086:8280 1EB ICH6 AC97 Modem Controller> 	        + A	c .
8086:2668 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller> H c . 
8086:266d Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC97 Modem Controller >
8086:2669 631xESB/632xESB AC97 Modem Controller  NEW >
8086:27d8 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller HDA > .
8086:27dd (ICH7 Family) AC97 Modem Controller  NEW >
8086:xxxx types above are from Intel> 

1039:7013  SIS 630 >               		+ a p c i .
1039:7018  SIS 960 >               		+       i .
10de:01c1  Nvidia Corp >          		+       i .
10de:00d9  Nvidia Corp >			    A      c   .
1106:3068  VIA >			+ a p c i .
1022:7446  AMD AC_LINK >		+ .
10b9:5450  ALI 5450 >
10b9:5451  ALI 5451 >			+ a  c .
10b9:5453  ALI 5453 AC-Link  >	      	p c .
1025:5453  ALI 5453 AC-Link  > 		    c .
10b9:5457  ALI 5457 AC-Link > 	+    p   c i .
1025:5457  ALI 5457 AC-Link  >        	     c .                   .
1002:434d  ATI >					  T  a    c i .
1002:437b  ATI Audio device: ATI Technologies Inc SB450 HDA Audio a .
1002:4378 ATI >						     c .
1543:3052  SI3052 >

Class 0403, High Definition Audio Controllers (HDA)
-----------------------------------------------------
8086:2668   Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) HDA Controller
8086:27d8   Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller
1002:437b   Audio device: ATI Technologies Inc SB450 HDA Audio (rev 01)
10de:026c   nVidia Corporation MCP51 High Definition Audio
----------------------------------------------------
are the members of this family encountered as of September 2006.
>From the file  /proc/asound/card0/codec*#1/, there are the following Subsystem chips:

  Vendor IDs  Chip maker     Support type
  ----------  ----------    -------------
  0x14f12bfa  Conexant      hsfmodem , not slmodemd compatible
  0x14f12c06
  0x11c13026  AgereSystems  snd-hda-intel, slmodemd
  0x11c11040      "         not supported into 2008
  0x163c3055  Smartlink     snd-hda-intel, slmodemd
  0x163c3155    "               "             "
  0x10573055  Motorola          "             "
  0x10573155     "              "             "


[Index of Archives]     [Linux Media Development]     [Asterisk]     [DCCP]     [Netdev]     [X.org]     [Xfree86]     [Fedora Women]     [Linux USB]

  Powered by Linux