Smart Link Ltd.
http://www.smlink.com
Sep 30, 2003
Smart Link Soft Modem for Linux
-------------------------------
Introduction
============
This is Smart Link Soft Modem for Linux version 2.9. It provides
full-featured 56K Voice Fax Modem.
This is implemented as generic application (slmodemd) and set of
hardware specific kernel-space drivers (slamr, slusb).
Features
========
Modem: V.92, V.90, V.34, V.32bis, V.23, V.22, V.21, Bell 103/212.
Flow control: V.42, MNP 2-4.
Compression: V.44, V.42bis, MNP5.
Fax: Class 1.
Voice: ADPCM voice compression, Digital Answering Machine.
Multiple modems are supported.
Supported Hardware
==================
HAMR5600 based AMR/CNR/MDC/ACR modem cards on the following Southbridge
chips:
- Intel ICH0,ICH2, ICH3, ICH4
- Via 686A, 686B, 8231, 8233
- SiS 630
- ALI 1535.
SmartPCI56/561/562/563 based PCI modem cards.
SmartUSB56 based USB modem.
Requirements
============
CPU: Intel Pentium II, Celron. AMD K6, Cyrix 500MHz or higher.
Memory: 64MB.
OS: Linux 2.4. You need the kernel header files at least (or full kernel
source tree) installed and configured.
Linux 2.6. You need the full kernel source tree installed and configured.
Note: Most Linux Distributions have 'ready to use' kernel source package -
be sure that this is installed.
Installation
============
1. Unpack tar.gz package file:
$ gzip -dc slmodem-2.9.X.tar.gz | tar xf -
2. 'cd' to package directory:
$ cd slmodem-2.9.X
3. Review and edit 'Makefile' (if need):
In many cases you will need to correct path to your local kernel
source tree:
KERNEL_DIR=/path/to/linux
Default KERNEL_DIR is '/lib/modules/<kerne-version>/build'. Many Linux
Distributions use directory '/usr/src/linux-<version>' also.
Note: If you are using Linux kernel 2.4, only header files should be
available for build in $(KERNEL_DIR)/include
Another way to pass right value KERNEL_DIR is to use command line
parameter while running 'make':
$ make KERNEL_DIR=/path/to/linux ...
4. Run 'make' command to compile package:
$ make
5. Install. As 'root' user run:
# make install
It will install:
- application 'slmodemd' under '/usr/sbin' directory
- hardware specific drivers (kernel modules) 'slamr' and 'slusb'
under conventional kernel modules directory
- character device nodes '/dev/slamr0-3' with major number 212
(for pci modems) and '/dev/slusb0-3' with major number 213
(for usb modems).
- config modules for autoloading (by editing file '/etc/modules.conf')
(only with 2.4 kernels)
6. Config modem country.
Use AT+GCI=<T.35 country code> command to setup country.
Also you can setup default modem country by passing command line
parameter '--country=MY_COUNTRY' to program 'slmodemd'
(also see 'slmodemd --help').
Note: Command ATI7 shows currently installed country setting.
8. Uninstallation.
In package directory just type:
# make uninstall
Getting Started
===============
After successful installation and configuration:
1. Load modem driver.
Load your modem hardware specific kernel module:
# modprobe slamr
if you are using AMR/CNR/PCI modem, or
# modprobe slusb
if you are using SmartUSB56 Modem.
Note: this will be done automatically when modules were
configured for 'loading on demand'
Note: this is safe to load both 'alamr' and 'slusb' modules.
2. Run soft modem application.
# /usr/sbin/slmodemd [options] <device_name>
Where device name is appropriate device node for your modem
(look at output of 'dmesg' command).
Run '/usr/sbin/slmodemd --help' for details.
Examples:
# /usr/sbin/slmodemd --country=USA /dev/slamr0
, or for SmartUSB56 Modems:
# /usr/sbin/slmodemd --country=ITALY /dev/slusb0
3. Using the modem.
When 'slmodemd' is running this creates PTY (pseudo-terminal) to
emulate modem port device, also this creates symbolic link
like '/dev/ttySL0' (shown at startup).
Config your application to use this link '/dev/ttySL0' (or PTY node
itself) as modem port.
Note: Some application want 'to know' that they are working with
pseudo-terminal and may require additional configurations.
Known application notes:
- 'wvdial' requires option 'Carrier Check = no' in config file
ALSA mode (2.6 kernel only)
=========
Notes: Only ICH based AC97 modems are currently supported.
'intel8x0m' modem driver was included in main ALSA tree and available
in alsa-driver-1.0.2.
Kernel patch was generated with 2.6.1 (hopefully may works with
other 2.6 versions).
1. Apply patch 'patches/alsa-linux-2.6.0.patch' to your kernel source:
$ cd <kernel-source-dir>
$ patch -p1 < /path/to/where/slmodem-2.9.x/patches/alsa-linux-2.6.0.patch
2. Configure your kernel and enable ALSA and ICH based modem support
( 'Device Drivers' -> 'Sound' -> 'Advanced Linux Sound Architecture' ->
'PCI devices' -> 'Intel i8x0/MX440; AMD768/8111 modems' ) .
3. Build and install kernel and modules as usual (make , make modules_install, etc.).
ICH modem driver modem module name is 'snd-intel8x0m' (if was configured as module).
4. Build application 'slmodemd' with ALSA support. For this in slmodem-2.9.x dir:
$ cd modem
$ make SUPPORT_ALSA=1
This will build 'slmodemd' with ALSA support. If compilation is failed review
Makefile (near ALSA_SUPPORT condition) and define right library and/or CFLAGS
5. Use option '--alsa' when running 'slmodemd' and ALSA conventional device name
('hw:0' or 'hw:1' for instance). If modem support in the kernel was enabled as
module module 'snd-intel8x0m' should be loaded.
When using ALSA modem driver you don't need to load other modules ('slamr').
Troubleshooting
===============
If you get an error message during installation/configuration or loading
the modules try to see it in FAQ file.
Please report the problem to your modem provider or to us
(
[email protected]).
Feedback
========
Please send any feedbacks to Smart Link. See the Smart Link
web site for contact information (
www.smlink.com) or to
[email protected].