Linux on Sony Vaio grt170 progress update...modem
So I'm continuing to make progress with Suse 8.2 on this Vaio pcg-grt170.
Now I'm working on the modem (winmodem).
First I went to <a href="http://www.linmodems.org">www.linmodems.org</a> and read a bit and followed links.
Then found the tool they recommended called <a href="http://linmodems.technion.ac.il/packages/scanModem.gz">scanModem</a>.
I downlaoded it, ungzipped it, chmod'd it to execute and voila, lots of information (output in the "read more" section of this article.
It identified it as a SmartLink modem and that they provide excellent Linux support. So I followed the links and went to:
<a href="http://www.smlink.com/main/index1.php?ln=en&main_id=32">here for linux drivers</a> and downloaded the drivers and did a make, make install-amr (see <a href="http://www.smlink.com/main/down/linux_instructions.txt">their instructions</a>).
Did a modprobe slmdm, and voila, detected modem. I can do AT commands and get results, KPPP detects and probes it fine. HOWEVER....
So, using Kppp I setup a dialup account, went to dial and :(
NO DIALTONE.
I verified the line was fine. Did a manual ATDT to the phone number I called (ATDT5554321 fort example) and same result no dialtone. <sigh>
According to the docs this cold be from not having a correct country listing, but I have the following option in modules.conf:
options slmdm country=USA
And did a modprobe slmdm country=USA
ATI7 shows: Country: USA
I will try rebooting. If that fails, I will post to the linmodems mailing list. I will post to this article as soon as I have an update.
See READ MORE linke below for the detailed output from scanModem...
I followed the recommendations of scanModem and tried with version 2.7.10 instead of 2.7.14. But still no luck.
Made sure the ownership and permissions were correct on /dev/ttySL0.
Used minicom and wvdial to try to troubleshoot instead of kppp. Still no joy.
Tried adding the initialization string ATX3 (ignore dialtone) still no luck.
Currently, as of September 9th at 3:15 pm I have the modem module loaded and can perform AT commands successfully, but the modem refuses to pick up the phone line.
I've posted to the discuss@linmodems mailing list and so far no useful suggestions, but I'll keep trying and update this article when there is success. Meanwhile see the detailed output from scanModem and such in the READ MORE link below this article...
cat ModemData.txt
The most recent update of scanmodem accessed at http://linmodems.technion.ac.il/packages/scanModem.gz
should ALWAYS be used before requesting help from discuss@linmodem.org,
URLs to cogent advice are regularly entered and updated, and your problem may be solved therein.
If further help is needed, send a description of your problem to: discuss@linmodems.org
with this ModemData.txt Attached, using the following in the email Subject Line:
SUBJECT="scanModem, SuSE kernel 2.4.20-4GB
-------------- System information ------------------------
SuSE SuSE Linux 8.2 (i586)
VERSION = 8.2
on system: Linux lnx170 2.4.20-4GB #3 Wed Sep 3 00:26:09 MDT 2003 i686 unknown unknown GNU/Linux"
GCC=3.3
UPDATE=2003 Sept 4
An AC'97 modem codec was not detected
Path to lspci is: /sbin/lspci
--------- lspci scan ----------------
00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device 0648 (rev 03)
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SG86C202
00:02.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513 (rev 14)
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE]
00:02.6 Modem: Silicon Integrated Systems [SiS] Intel 537 [56k Winmodem] (rev a0)
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] SiS7012 PCI Audio Accelerator (rev a0)
00:03.0 USB Controller: Silicon Integrated Systems [SiS] SiS7001 USB Controller (rev 0f)
00:03.1 USB Controller: Silicon Integrated Systems [SiS] SiS7001 USB Controller (rev 0f)
00:03.2 USB Controller: Silicon Integrated Systems [SiS] SiS7001 USB Controller (rev 0f)
00:03.3 USB Controller: Silicon Integrated Systems [SiS] SiS7002 USB 2.0
00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 10/100 Ethernet (rev 90)
00:07.0 Network controller: Harris Semiconductor: Unknown device 3872 (rev 01)
00:0a.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
00:0a.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
00:0a.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation: Unknown device 031a (rev a1)
-------------------------------------
Reading more detail for the Device at:
PCI bus
-------
00:02.6 Class 0703: 1039:7013 (rev a0)
Subsystem 104d:814e
00:02.6 Modem: Silicon Integrated Systems [SiS] Intel 537 [56k Winmodem] (rev a0) (prog-if 00 [Generic])
Subsystem: Sony Corporation: Unknown device 814e
Flags: medium devsel, IRQ 10
I/O ports at 1800 [size=256]
I/O ports at 1400 [size=128]
Capabilities: [48] Power Management version 2
-------------------------------------------------------
1039:7013 PCI_ID of the PCI bus with vendor: 1039
104d:814e PCI_ID of Subsystem with vendor: 104d
-------------------------------------------------------
are key Sought Descriptions of your modem firmware.
Have them ready when visiting URLs with service software!!
An AC'97 or MC97 controller cooperates with the modem Subsystem
1039:7013 SIS 630 + p
Some soft modems under this controller are supported by the
SmartLink slmdm-2.7.10 drivers,
even though an AC'97 modem_codec may not be displayed.
First accessing chipset provider and modem assembler information
for the modem SubSystem under the AC'97 or MC97 Controller.
=== Checking 104d through chipset providers and modem assemblers ====
Vendor 104d is Sony, http://www.sony.com , but without Linux info.
A Sony PCV-RX407 has a SIL39 id, imlpying an Agere Soft modem:
PCI_ID 1039:7013 ALI 630 Controller,
SubSys 104d:8129 the soft modem.
Pending release of Agere support, try the slmdm-2.7.10 driver kit at:
ftp://ftp.smlink.com/linux/unsupported/ with a report at:
http://phep2.technion.ac.il/linmodems/archive-third/msg00120.html
Vendor=8086 is Intel, Inc. producing HaM and 536ep host controller free (HCF) modems, the 537 soft modem
and AC'97 and MC97 controllers managing a varierty of non-Intel soft modem subSystems.
These subSystems will in have PCI_IDs assigned by the modem assembler, not Intel.
Download available drivers from: http://developer.intel.com/design/modems/support/drivers.htm
Also check at: http://linmodems.technion.ac.il/resources.html
for early releases and perhaps Already compiled drivers for some Linux distributions
The Intel 537 chipsets are sold to a variety of modem assemblers.
Linux support from Intel is expected by the Fall of 2003.
The soft modem Subsystem: 104d:814e
serving under the controller:
PCI_ID=1039:7013, Modem: Silicon Integrated Systems [SiS] Intel 537 [56k Winmodem] (rev a0)
may be supported by the SmartLink slmdm-2.7.10 drivers.
For versions after 2.7.10 the drivers may load, but there will be a failure to dial correctly!!
See the related supoort table listing in /tmp/modem/ModemData.txt.2
Vendor 163c is SmartLink, http://www.smlink.com/ with EXCELLENT Linux support!
Downloads from ftp://ftp.smlink.com/linux/unsupported/ with some backups at:
http://linmodems.technion.ac.il/packages/smartlink/
The slmdm-2.7.10 drivers may support several non-SmartLink chipsets.
Please see the compatibility table within /tmp/modem/ModemData.txt.2
=== Checking 1039 through chipset providers and modem assemblers ====
Vendor 1039 is SiS, Silicon Integrated System.
Some of their modems under AC'97/MC97 Controllers are served by the SmartLink slmdm-2.7.10 drivers,
or preferable the most current version for those "Smart Link HAMR5600 compatible".
Vendor=8086 is Intel, Inc. producing HaM and 536ep host controller free (HCF) modems, the 537 soft modem
and AC'97 and MC97 controllers managing a varierty of non-Intel soft modem subSystems.
These subSystems will in have PCI_IDs assigned by the modem assembler, not Intel.
Download available drivers from: http://developer.intel.com/design/modems/support/drivers.htm
Also check at: http://linmodems.technion.ac.il/resources.html
for early releases and perhaps Already compiled drivers for some Linux distributions
The Intel 537 chipsets are sold to a variety of modem assemblers.
Linux support from Intel is expected by the Fall of 2003.
The soft modem Subsystem: 104d:814e
serving under the controller:
PCI_ID=1039:7013, Modem: Silicon Integrated Systems [SiS] Intel 537 [56k Winmodem] (rev a0)
may be supported by the SmartLink slmdm-2.7.10 drivers.
For versions after 2.7.10 the drivers may load, but there will be a failure to dial correctly!!
See the related supoort table listing in /tmp/modem/ModemData.txt.2
Vendor 163c is SmartLink, http://www.smlink.com/ with EXCELLENT Linux support!
Downloads from ftp://ftp.smlink.com/linux/unsupported/ with some backups at:
http://linmodems.technion.ac.il/packages/smartlink/
The slmdm-2.7.10 drivers may support several non-SmartLink chipsets.
Please see the compatibility table within /tmp/modem/ModemData.txt.2
====== PCI_ID checking completed ======
Update=2003 Sept 4
GCCversion=3.3
The following information blocks just query some ppp support items.
====================================================================
grep ppp /etc/modules.conf
--------------------------------
# ppp over ethernet
# the kernel 2.2 uses pppox
# the kernel 2.4 uses pppoe
alias char-major-144 pppox
post-install pppox insmod mssclampfw
pre-remove pppox rmmod mssclampfw
alias char-major-108 ppp_generic
alias char-major-144 pppoe
alias net-pf-24 pppoe
# the kernel 2.2 uses ppp.o as ppp driver,
# the kernel 2.4 uses ppp_generic.o
alias ppp0 ppp
alias ppp1 ppp
alias tty-ldisc-3 ppp
alias ppp0 ppp_generic
alias ppp1 ppp_generic
alias tty-ldisc-3 ppp_async
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
--------------------------------
=== ifconfig test ====
eth1 Link encap:Ethernet HWaddr 00:02:8A:94:FE:9A
inet6 addr: fe80::202:8aff:fe94:fe9a/64 Scope:Link
lo Link encap:Local Loopback
DEVPPP=crw-rw---- 1 root root 108, 0 Mar 14 06:08 /dev/ppp
A /dev/modem symbolic link is not present
No devfsd.conf file sound, indicated absense of the devfsd daemon package
for device file system (devfs) symbolic link support.
DEVFSD=
cat ModemData.txt.2
Do NOT send this common information to discuss@linmodems.org
==============
Several sections are included in this file:
The rational of scanModem service;
Summary of modem support under Linux
Description of the SIL_ID test
Some output from scanModem specific to your System
An explanation of the gcc 2.nn compiler warning
Ethernet interference with DNS (domain name service)
COMPILING DRIVERS, for Newbies
Followup actions, to get online.
RATIONAL
This ./scanModem service is sadly necessary because of the precompiled 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 Linux distributions do not deliver Closed Source code,
or tools adequate to fully identify the modem. This script tries to close
this information gap. It will happily be terminated or shortened,
as Linux distributions can host more comprehensive modem diagnostic tools.
USB modems will not be detected UNTIL proper USB support is installed.
See http://www.linux-usb.org/USB-guide/x332.html
http://www.smlink.com may provide support for
SmartUSB56 (ST7554) based modems with vendor/product usb ids: 0483:7554
For modems not recognized by ./scanModem, chipset information may be obtained under Microsoft Windows through:
1) Start > Settings > Control Panel > Modem
Start > Settings > Control Panel > System > Devices > Modem
Do the modem test is available.
Try to identify the modem setup file, with name perhaps MODEM.INF
2) Open a COMM console, and send ATI commands to the modem,
which may elicit chipset and driver information.
Linux SUPPORT SUMMARY - as of 2003 Sept 4
-------------------------------------
Conexant - all modems supported: http://www.linuxant.com
SmartLink - all modems supported: http://www.smlink.com
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 updated and will probably fail under emerging 2.6 kernels
the 536ep modem is actively supported.
the 537 AC'97 Link modem subSystem will be supported by Intel soon,
but the SmartLink slmdm-2.7.10 (and NO later version) drivers are effective for now.
Lucent/Agere
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
AC'97/MC97 soft modem support is enroute to release,
but SmartLink slmdm-2.7.10 drivers are effective for now, through only under Some AC'97/MC97 controllers,
Coding of support for PCI soft modems has not yet begun, and probably will first be available within 2004.
PCTel - http://pctelcompdb.sourceforge.net/
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 served well by the SmartLink slmdm-2.7.10 drivers.
Broadcom modems in Dell laptops - can be made to function under 2.4 kernels, but code hasn't been updated recently.
ESS - no formal support since 2.2.2 kernels
Motorola - no formal support since 2.4.5 kernels
3Com Winmodems - no support
-------------------------------------------
SUPPORT under 2.6.nn kernels
The proprietary component of winmodem resouces will have to be re-compiled by chipset vendors.
Thus at this time, only the more expensive Controller chip modems,
using the Open Source serial driver, can be expected to function.
-------------------------------------------
COMPILING - Preparing winmodem drivers will generally require compiling.
If you are not familar with this process DEFINITELY read carefully
the section of /tmp/modem/ModemData.txt.2 on "COMPILING DRIVERS, for Linux Newbies"
Silicon chipset (SIL) analysis information
-------------------------------------------
During bootup, kernel diagnostics on the System are stored for later display by:
dmesg
The scanModem script processes dmesg output to capture AC97 modem information and
parses it into a SIL_id with display of modem manufacturer 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 a digital audio card and the ac97_codec had to 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:
./scanModem 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: AC'97 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 SIL_id section ---------------
==================== AC'97/MC97 summary ==========================
Any of the Controllers in the left most column could support
a variety of subSystem soft modems.
Hence the current ambiguity in possible support by drivers under Linux
VendorID:DeviceID == PCI_ID Controller type
bus PCI_ID subSystemID AC97 MC97 try drivers from
---------- ----------- ---------------- ----------------
Intel:
8086:2416 82801AA (ICH) + p c
8086:2426 82801AB (ICH0) +
8086:2446 82801BA (ICH2) + p c
8086:2486 ICH3 + p c
8086:24c6 INTEL ICH4
8086:1040 S1724
8086:7196 ???? +
1543:3052 1543:3000 SI3052
1039:7013 SIS 630 + p
1039:7018 SIS 960 +
1055:9178 Standard Microsystems +
1106:3068 VIA + p c
1022:7446 AMD +
10b9:5450 ALI 5450
10b9:5451 ALI 5451
10b9:5453 ALI p c
10b9:5457 ALI 5457 + p c
e159:0001 TigerJet 320
e159:0001 0359:0003 TJ320 v3.1
e159:0001 8086:0003 TJ320 v2.0
PCI cards with SmartLink support at least from slmdm-2.7.10
10b9:5459 ALI 5459 SmartPCI561 ++
10ec:8197 - SmartLAN56 (RealTek ether/modem combo ++
1131:3400 - SmartPCI56 (Philips UCB1500) ++
163c:5459, 10a5:5459 - kinds of SmartPCI561 ++
4005:0308 - ALS300plus (Avance sound/modem combo ++
--------------------------------------------------------
p http://pctelcompdb.sourceforge.net/
c Conexant - http://www.linuxant.com
+ SmartLink HAMR5600 compatible AMR/CNR/MDC soft modems
++ SmartLink PCI slot modems
For drivers: ftp://ftp.smlink.com/linux/unsupported/ ,
EXCEPT for non-SmartLink modems. INSTEAD use version slmdm-2.7.10 also available at
http://linmodems.technion.ac.il/packages/smartlink/
Later versions will NOT dialout correctly.
======================================================================
Soft modems under AC'97 or MC97 Controllers
=============================
If a modem_codec SIL_id was not output earlier, please reboot Linux to freshen the
bootup dmesg buffer and then rerun scanModem, to acquire an expected SIL_id.
However
The roughly classified with AC'97 modems may be housed within an
AMR connector, the MDC connector, IBM's CDC connector, or a mini PCI slot.
SmartLink http://www.smlink.com has a readible documentation set on
soft modem rational and technologies. Their common feature is that they
utilize the services of a digital audio card through use of an ac97_codec.
This greatly reduces the cost of the modem and specialization to the
diverse telephone line standards around the world.
Hoever the primary PCI_ID 1039:7013 identifies Only the Controller of the
soft modem Subsystem 104d:814e. This commonly FAILS to designate the chipset!!
Queries under MS windows may be informative, by the following routes:
Open a COMM console and send ATI commands to the modem,
which may provide identifying information.
For a good report see: http://phep2.technion.ac.il/linmodems/archive/msg05099.html
Get whatever detail information is available through:
Start > Settings > Control Panel > Modem
Start > Settings > Control Panel > System > Devices > Modem
Try to identify the modem setup file, with name perhaps MODEM.INF
Information therein including driver names may help to identify the chipset.
See complaint to IBM: http://phep2.technion.ac.il/linmodems/archive/msg05076.html
Soft modems serving under AC97 or MC97 Controllers with Lucent/Agere are
is projected for Summer-Fall of 2003. However service by other software may substitute:
http://phep2.technion.ac.il/linmodems/archive-third/msg00120.html
with slmdm-2.7.10 available at http://linmodems.technion.ac.il/packages/smartlink/
Later versions will NOT dial out properly for non-SmartLink modems.
If your modem has an AC'97 or MC97 controller but a an ac97_codec was NOT reported,
there may still be a success with the SmartLink driver.
Get slmdm-2.7.10 driver at http://linmodems.technion.ac.il/packages/smartlink/
The currently available ltmodem drivers
for Digital Signal Processing chipsets are NOT adequate to support ppp under these modems.
They may achieve a dialout, but will fail at ppp initiation.
If the Primary and Subsystem Vendor information was not adeqaute,
it may be useful to download http://www.yourvote.com/pci/vendors.txt
and search it for the Vendor IDs with and without caps, for example: both 114d and 114D
----------------------------------------
Analyzing information for PCMCIA device at PCI Bus 00:0a.0
00:0a.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
Subsystem: Sony Corporation: Unknown device 814e
Flags: bus master, medium devsel, latency 168, IRQ 5
Memory at 20000000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=00, secondary=02, subordinate=05, sec-latency=176
Memory window 0: 20400000-207ff000 (prefetchable)
Memory window 1: 20800000-20bff000
I/O window 0: 00004000-000040ff
I/O window 1: 00004400-000044ff
16-bit legacy interface ports at 0001
GREPping for an inserted PCMCIA modem with filter: ommunication
Analyzing information for PCMCIA device at PCI Bus 00:0a.1
00:0a.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev aa)
Subsystem: Sony Corporation: Unknown device 814e
Flags: bus master, medium devsel, latency 168, IRQ 5
Memory at 20001000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=00, secondary=06, subordinate=09, sec-latency=176
Memory window 0: 20c00000-20fff000 (prefetchable)
Memory window 1: 21000000-213ff000
I/O window 0: 00004800-000048ff
I/O window 1: 00004c00-00004cff
16-bit legacy interface ports at 0001
GREPping for an inserted PCMCIA modem with filter: ommunication
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-8.26a9.tar.gz at http://ltmodem.heby.de/
---------------------------------------------------------------------------------------------
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: 3.3
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
-----------------------------------------------------
The System has Ethernet capability. If not expert,
shut down ethernet before initiated modem usage with:
# ifconfig eth0 down
00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 10/100 Ethernet (rev 90)
Subsystem: Sony Corporation: Unknown device 814e
Flags: bus master, medium devsel, latency 173, IRQ 11
I/O ports at 2000 [size=256]
Memory at d4004000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at <unassigned> [disabled] [size=128K]
Capabilities: [40] Power Management version 2
================================================================
COMPILING DRIVERS, for Linux Newbies
This text provides a very minimal introduction to compiling drivers,
particularly WinModem drivers under Linux. Must points are covered in
much more detail in the Linux HOWTO documentation set.
WinModem drivers 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 the binary and a Closed Source component of the modem code.
2) A Closed Source component compiled into BINARY form
in which the original source code is not available
to the public to protect its proprietary information.
The binary format precludes incorporation of the modem
drivers in many Linux distributions (Debian, Mandrake, Red hat, etc.)
for legal reasons, practical reasons, and/or
reasons of principle.
Thus the modem user must commonly COMPILE his own drivers,
and properly install these drivers into their Linux System.
Fully precompiled modem binaries are generally not provided.
The administrative cost is too high, for maintaining drivers for
all the different customized variations to the linux kernel distributions use.
Precompiled binaries are usually only found for
the most common and generic distributions on the market.
Since almost all the newer PCs are now equipped with WinModems, most everyone 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 (ie: no DSP and/or no
controller chips). Some of the functions of the older
Controller based chipsets are replaced by a combination of software code and/or other
System hardware. Modems without a controller are referred to as "controllerless
modems" and modems without a DSP and controller are referred to as "soft modems"
With faster central processor units (CPU), some processing tasks are performed
by the CPU for the HCF (host controller free) modems.
For the HSF soft modems serving under AC'97/MC97 controllers,
the digital audio card does some of the signal processing.
COMPILING COMPILING is the process of converting human readable source code
into compact binary code that the Operating System (OS) can process quickly.
For linux softmodems, code components from the modem chipset provider
are combined with KERNEL-HEADERS, thus generating one or
more complementary drivers. They are commonly compiled as Modules and
installed as ModuleNames.o into sub-folders of:
/lib/modules/kernel-version/
Therefrom they can be dynamically inserted into the boot kernel of the
Operating System (OS) when needed, sometimes with auxiliary instructions from
/etc/modules.conf
They can be removed from the kernel when no longer serving, thus
economizing on System resources.
The KERNEL-HEADERs have FileNames.h can can be read with a text browser.
Some are installed to
/usr/include/
For systems with RPM package managers, they are provided by a
kernel-headers-SomeVersion.rpm
They specify:
1) code bits to be incorporated by various of your installed programs, and
2) the dependencies within the set of FileNames.h
However the
/usr/include/FileNames.h
Are in general TOO FEW to support compiling. Exceptions to note are
the kernel-header-kernel-version.deb packages of Debian style DISTROs,
which are designed to support compiling.
A KERNEL-SOURCE package must more generally be installed to produce needed kernel headers.
The kernel-source is some 20-30 MB now even in compressed form.
The kernel-source package provided by your Linux Distro SHOULD preferentially be used.
It will usually have some modifications from that initially released at http://www.kernel.org .
Typically the installation process will set a symbolic link:
/usr/src/linux --> PATH_to/kernel-source-version/
Check with:
ls -l /usr/src/linux
Move into it with:
cd /usr/src/linux
Look at the first few lines of the Makefile with:
more Makefile
They will look like:
--------------------
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 21
EXTRAVERSION = -Last.Usage.Extraversion
--------------------
wherein -Last.Usage.Extraversion was that last used by your Linux Distro for
a specialization of the more general kernel-release 2.4.21 .
For Mandrake Linux their will generally be an include an "mdk", such as:
EXTRAVERSION = -3.1mdk
These four makefile lines specify that:
1) the compiled kernel will have a version name like:
vmlinuz-2.4.21-3.1mkd
2) the complementary kernel modules will have an encoded version label: 2.4.21-3.1mkd
3) the modules will be installed by:
make modules-install
to sub-folders of /lib/modules/2.4.21-3.1mkd/
Some kernel-headers from a prior usage may be resident from the Last.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 (for example) by
cat include/linux/version.h
#define UTS_RELEASE "2.4.21-3.1mdk"
Next, list completely the contents of your current folder /usr/src/linux 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.
IMPORTANT: the kernel-source as installed generally WILL NOT
represent your current kernel version as displayed with:
uname -r
even if the kernel-version is the same. For example, in the RedHat Distro kernel-source/
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.h and "uname -r" .
!!!! Thus a PROPER CONFIGURATION MUST BE DONE by You, before any usage of kernel-source !!!!
KERNEL-SOURCE configuration is where almost all the Mistakes occur!!!
Here is a way to do it correctly (but read through EXCEPTIONAL CASES below).
1)Within /usr/src/linux
# make mrproper
cleans up leftovers from any previous usage .dot-files and the include/linux/ folder.
Additionally you may need to edit within Makefile, ONLY that 4th line.
If the general source release version is say 2.4.21 and
# uname -r
Displays
2.4.21-8.1enterprise
2) If necessary to edit, FIRST make a backup:
cp Makefile Makefile.backup
then edit ONLY the 4th line of Makefile to
EXTRAVERSION = -8.1enterprise
NEVER change anything else within the Makefile.
3) Copy the config file of the current kernel to
# /usr/src/linux/.config
and DO SPECIFY that " . "
But where is it? For many Distros, it will be the file like
/boot/config-2.4.21-Current.Kernel.Extraversion
Or it may be the target of a symbolic link: /boot/config -->
So
# cp /boot/config-2.4.21-Current.Kernel.Extraversion /usr/src/linux/.config
For SuSE linux it is:
# cp /boot/vmlinuz.config /usr/src/linux/.config
4) Next read .config with
# make oldconfig
which feeds .config through a process specifying
the SAME inter-dependencies previously used in compiling your kernel,
and generating fresh .dot-config files . Check with:
ls -al
5) Though it may be redundant after "make mrproper", it will do no harm to:
make clean
5a) If your Linux Distribution is SuSE, there will exist files:
/boot/vmlinuz.autoconf.h -> /usr/src/linux/include/linux/autoconf.h
/boot/vmlinuz.version.h -> /usr/src/linux/include/linux/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 rebuild kernel headers with:
make dep
7) Check with:
ls include/linux/
and
cat include/linux/version.h
to verify the version.
EXCEPTIONAL CASES
For Distros with a Debian style package management system,
a kernel-header-Version.deb package matched with your kernel-version is available.
If may suffice to set a symbolic link:
ln -s /usr/src/kernel-header-Version /usr/src/linux
and then compile the modem drivers. If a custom kernel is to be compiled,
the kernel-package.deb software will GREATLY simplify the task.
Here is a typical command line:
make-kpkg --revision 2:test.1 --append_to_version -MySpecial --arch_in_name --initrd kernel_headers kernel_image
wherein "--append_to_version -MySpecial" replaces the need for an edit of the Makefile 4th line: EXTRAVERSION =
For the 2.4.nn kernels, a symbolic link is set during initial module installations:
/lib/modules/kernel-version/build --> /usr/src/linux
The driver resources from Intel (and others?) have a Makefile using this build link.
So if your compile fails, check with:
ls -l /lib/modules/kernel-version/build
Then establish the build link if necessary with:
ln -s PATH-To/kernel-source or headers folder/ /lib/modules/kernel-version/build
Do NOT forget the "-s" for symbolic, or you will Duplicate folder contents
As already mentioned above, for the SuSE distribution, there may be files:
version.h autoconfig.h
located in the /boot/ folder. Before beginning a compile,
they should be copied to /usr/src/linux/include/linux/
Someone reported that a critical header file: modversions.h
is written to /usr/src/linux/include/linux ONLY if the
kernel-source package has been installed with the YAST package manager.
COMPILING the MODEM DRIVERS can now finally be done.
Unpack the compiler kit for your modem drivers,
cd into its folder, read any README files,
make clean
and FINALLY, your modem drivers will compiled by a command like
make ModuleName
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 drives, often with:
make install
## end COMPILING DRIVERS
===================================================
FOLLOW UP STEPS.
1) Check for a symbolic link:
ls -l /dev/modem
which should display something like
/dev/modem --> /dev/WinModemPort
Some Distros may set a default
/dev/modem --> /dev/ttyS0 (or 1,2,3)
which are for Controller Chip modems only.
If represent,as Root:
# rm -f /dev/modem
# ln -s /dev/WinModemPort /dev/modem
If may prove necessary to disable a default BOOT UP setup for Controller Chip modems,
to prevent resetting of the unwanted default link.
2) Loading drivers
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
3) Testing drivers.
For a first test of the drivers, it is Very Usefull to have installed the package: wvdial
Do read "man wvdial" and sometime browse the documentation that is written to /usr/share/doc/wvdial/
The first step in setting up wvdial is to run its configuration program as Root.
Below is the output from a System with a Lucent/Agere modem
wvdialconf will either follow a symbolic link /dev/modem --> /dev/ModemPort
or check through ports with name style: /dev/ttyS*
Below ttySLT0 is the modem port name,
replacing /dev/ttyLTO when the Device Files System (devfs) is in use.
%% begun lines below are my added comments.
# wvdialconf /etc/wvdial.conf
Scanning your serial ports for a modem.
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
%% in the AT* tests above Only the lt_modem.o driver is being interrogated
ttySLT0<*1>: Modem Identifier: ATI -- LT V.92 Data+Fax Modem Version 8.26a
%% The ATI test queries the modem firmware, concurrently prompting loading of the lt_serial.o driver
ttySLT0<*1>: Speed 4800: AT -- OK
ttySLT0<*1>: Speed 9600: AT -- OK
ttySLT0<*1>: Speed 19200: AT -- OK
ttySLT0<*1>: Speed 38400: AT -- OK
ttySLT0<*1>: Speed 57600: AT -- OK
ttySLT0<*1>: Speed 115200: AT -- OK
ttySLT0<*1>: Max speed is 115200; that should be safe.
ttySLT0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
Found a modem on /dev/ttySLT0.
<Warn>: Can't read config file /etc/wvdial.conf : No such file or directory
Modem configuration written to /etc/wvdial.conf
ttySLT0<Info>: Speed 115200; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
%%% This wvdialconf action if successful generates the files:
/etc/ppp/peers/wvdial
/etc/ppp/peers/wvdial-pipe
and for further editing, /etc/wvdial.conf
[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>
Note that if your IP is the MicroSoft Network, then use syntax:
Username = MSN/<Your Login Name>
Edit these lines and remove the ";" to activate them.
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.
4) Preparation for your first dialout.
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
5) 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 &
or to achieve some prefix trimming:
# tail -f /var/log/messages | cut -d: -f4- &
The & puts the commanded process in the "background" allowing recovery of the command prompt.
Some dialer packages (kppp etc) may automate the above steps.
6) A dail out 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: marvstod
marvstod
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
: kernel does not support PPP filtering
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
7) 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
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 be need 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.
8) 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 Modem = 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=00..FF hex number
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 contry, choose the nearest one available.
Nearby countries tend to have similar equipment and compatible dialtones.
These comments from: Emard <emard@softhome.net>
=================
9) 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
10) 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
11) 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.
For general upto date advice:
http://linmodems.technion.ac.il/
http://linmodems.technion.ac.il/resources.html
for a general PCI_ID database
http://www.yourvote.com/pci/
The Vendor listing is http://www.yourvote.com/pci/vendors.txt
with some Device IDs too.
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/wgindex.html
There is an extensive modem database at:
USB modem information: http://www.linux-usb.org/USB-guide/x332.html
http://start.at/modem/
If your IP is MSN, the Microsoft Network,
then for UserName in dialup scripts under Linux, instead use:
MSN/UserName
---------- end FOLLOW UP STEPS ---------------
- Category(s)
-
Nix
- The URL to Trackback this entry is:
- http://www.hawkes-haven.com/blahg/linux-on-sony-vaio-grt170-progress-update-modem/tbping