UMGUM.COM (лучше) 

Softmodem + Conexant + Linux ( Запуск программного ("софт") модема под управлением Linux. )

18 июня 2010  (обновлено 27 мая 2017)

Эта публикация отнесена в архив. Она неактуальна.

OS: Debian Linux.

Захотелось мне задействовать последний не настроенный под Linux интерфейс на заслуженном ноутбуке HP Compaq nc6320 Notebook PC, а именно - модем. Поиск на сайте производителя выдал информацию о том, что на нем установлен программный факс-модем, он же "soft-modem", Conexant HDAUDIO с функцией SmartCP.

"Софт-модем" - это такой модем, у которого реализовано только DSP (максимально простой и дешёвый, а то и этого нет), а обработка, кодирование данных и исправление ошибок осуществляется драйвером. В "обычных" модемах все эти операции осуществляется аппаратным обеспечением самого модема. "Дерьмецо" по существу, конечно, с какой стороны не посмотри, но раз есть - приходиться использовать.

Итак, приступаем к поиску модема.
Просмотрим список устройств обнаруженных на PCI шине ноутбука:


# lspci | grep -i modem

....

Ничего нет, похожего на модем, как автономное устройство.

"Софт-модемы" работают в весьма тесной связке со звуковым чипом. Смотрим, как у нас дела со звуком:

# lspci | grep -i audio

00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)

Хорошо, устройство чётко опознано. Работа звуковой подсистемы у меня обеспечивается пакетом ALSA. Воспользуемся утилитой "aplay" из указанного пакета для просмотра списка аудио оборудования:

# aplay --list-devices

**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: AD198x Analog [AD198x Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 6: Si3054 Modem [Si3054 Modem]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Прогресс на лицо, обнаружен аналоговый модем на чипе Si3054 в составе аппаратного обеспечения звуковой подсистемы, лучше, чем ничего.

Непродолжительные поиски в доступных источниках информации показали, что для чипа Si3054 есть узда в виде slmodem (SmartLink software modem daemon) работающая только через ALSA, инсталлируем:

# aptitude install slmodem

Установщик создал для своего "демона" группу и пользователя, нам это ещё пригодится при настройке обращения к модему:

....
Adding system user `Slmodemd' ...
Adding new group `Slmodemd' ...
Adding new user `Slmodemd' with group `Slmodemd' ...
....

Для обеспечения доступа к аппаратной составляющей необходимо загрузка установленных с пакетом "slmodem" модулей "slamr" или "slusb", надо полагать, в зависимости от того, какой тип модема мы применяем.

Создатели slmodem люди умные, видно по init скрипту, как они заботятся о том, чтобы запуск "демона" прошёл успешно в автоматическом режиме, не доставляя никаких проблем пользователю. Всё так, однако я настраиваю модем для исключительно редкого использования (вполне хватает пока Ethernet, WiFi, Bluetooth, GPRS и так далее и тому подобного), потому отключим автозапуск путём корректировки файла "/etc/default/sl-modem-daemon":

....
DONTSTART=1
....

Запускаем утилиту, эмулятор порта с работающим модемом (понятно, что hw:0,6 - указатель на номер карты и устройства извлечённые из вывода утилит сканирования наличествующего оборудования):

# slmodemd --alsa hw:0,6

При необходимости, при запуске можно указать страну, к особенностям телефонной сети необходимо адаптироваться:

# slmodemd -c RUSSIA --alsa hw:0,6

SmartLink Soft Modem: version 2.9.9e-pre1 Sep  7 2008 23:29:38
symbolic link `/dev/ttySL0' -> `/dev/pts/6' created.
modem `hw:0,6' created. TTY is `/dev/pts/6'
Use `/dev/ttySL0' as modem device, Ctrl+C for termination.

# ls -l /dev/ttySL*

lrwxrwxrwx 1 root root 10 2010-06-18 13:46 /dev/ttySL0 -> /dev/pts/6

Инсталлируем утилиту "cu" для теста работы с модемом:

# aptitude install cu

Тестируем с помощью HAYES совместимых AT команд:

# cu -l /dev/ttySL0

Connected.
AT
OK
ATI0
SmartLink Soft Modem
OK
ATI2
SmartLink Soft Modem, 2.9.9e-pre1
Smart Link Ltd.
OK
ATI3
hw:0,6
alsa modem driver
OK

Прекрасно, модем откликается. Пытаемся позвонить на произвольный номер из консоли терминала:

ATD12345
NO CARRIER

Не работает, и вывод slmodemd при каждой попытке набрать номер показывает следующее:

....
error: period size 48 is not supported by playback (64).
....

Поиск по этой ошибке наводит на множество постов в форумах, одна из наиболее предполагаемых версий - проблемы в работе ALSA. Мне, как весьма слабо разбирающемуся во всех этих тонкостях "кёрнел-хакерства", по началу не пришло в голову ничего лучшего, как скачать наиболее свежую версию "slmodem" и попытаться откомпилировать её. Нашёл по адресу http://linmodems.technion.ac.il/packages/smartlink/ последнюю бинарную сборку утилиты (в моём случае сборка от 13 Марта 2010 года), вынул её из архива и воспользовался ею, не удаляя оригинальный пакет Debian Lenny. Как ни удивительно, но оно работает.

Пытаемся позвонить на несуществующий номер из консоли терминала:

ATDT12345
NO DIALTONE
ATI2
SmartLink Soft Modem, 2.9.11
Smart Link Ltd.
OK

Ура! Вывод "демона" slmodemd чист, как слеза младенца.

Пытаемся позвонить на существующий номер модемного "пула" павлодарского провайдера Dial-Up из консоли терминала:

ATDT390039
CONNECT 52000

GW2.PWQ1 line 42 Dial-In: 390039

                 Welcome to Nursat Access Point!

  If you have any question/troubles/comments, please contact us:
      +7-327-260-8000 +7-327-298-0000 +7-327-260-8120 (Fax)
                        http://noc.nursat.net
                          ip-op@nursat.net

User Access Verification

Username: test
Password:

% Authentication failed.

Username: nursat
Password:

GW2.PWQ1>?
Exec commands:
  disable  Turn off privileged commands
  exit     Exit from the EXEC
  help     Description of the interactive help system
  logout   Exit from the EXEC
  ppp      Start IETF Point-to-Point Protocol (PPP)
  slip     Start Serial-line IP (SLIP)

GW2.PWQ1>exit
NO CARRIER

Пляшем танец папуаса, который смог включить портативный телевизионный приёмник, не подозревающего о том, что после дня эксплуатации ему придётся искать на своём тихоокеанском острове батарейки, которые распространяются только дилерами на территории США. В общем - модем заработал.

То ли реализация эмуляции модема не проработана, то ли ещё что, но я не смог включить "пищалку" устройства для индикации процесса набора номера и этапов работу с помощью таких команд, как:

ATL Громкость звука:

Параметры: 0, 1, 2, 3;
По умолчанию: 2;

ATL0 Низкая громкость;
ATL1 Низкая громкость;
ATL2 Средняя громкость;
ATL3 Высокая громкость.

ATM Громкость звука:

Параметры: 0, 1, 2, 3;
По умолчанию: 1 (громкоговоритель включён до появления несущей);

ATM0 Громкоговоритель выключен всегда;
ATM1 Громкоговоритель включён до появления несущей;
ATM2 Громкоговоритель включён всегда;
ATM3 То же, что и ATM1, но тон DTMF не слышен.

Под Windows, вроде бы, модем пищал, хотя давно это было, года три назад, могу и напутать что нибудь. В общем, под Linux модем молча, как партизан, делает своё дело.

Кстати, учитывая то, что технология Dial-Up подразумевает работу в диапазоне голосовых частот, её параллельной работе с асинхронным DSL (в Казахстане это Megaline, например) ничего не мешает. Так что, можно воспользоваться одновременным доступом по широкополосному каналу в "Интернет" и по Dial-Up - в FIDO.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )