The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Поиск:  Каталог документации


Линмодем HOWTO (winmodem под Linux)

Sean Walbran sean(at)walbran.org и Marvin Stodolsky stodolsk(at)erols.com, перевод Александра В. Шубнякова, http://linmodems.nm.ru/, linmodemsATnmDOTru

v0.43, 24 февраля 2001


В этом документе рассматривается поддержка линмодемов (aka винмодемы) в Linux. Хотя такая поддержка ограничена (почти исключительно в форме созданных производителем, но неподдерживаемых им, бинарных модулей ядра (binary kernel modules)), число чипсетов, имеющих хоть какую-нибудь поддержку, увеличивается быстро.

1. Введение

2. Линмодемы

3. Модули ядра. Вопросы установки

4. Советы и уловки (Tips and Tricks) для модулей, скомпилированных под ядром, версия которого отличается от версии вашего ядра

5. Конкретные чипсеты и драйверы к ним

6. Устранение неполадок

7. ЧаВО

8. Приложение


1. Введение

Это Linux Linmodem HOWTO. Он поможет Вам выяснить, есть ли способ заставить ваш (так называемый) винмодем работать в Linux. Но сначала Вам следует понять, что для вашего винмодема, возможно, нет никакой поддержки: есть ограниченная поддержка, часто в форме созданных производителем, но неподдерживаемых им, бинарных (и только) модулей ядра (хотя существует небольшое число open-source-проектов).

Конечно, вашим лучшим выбором под Linux будет покупка настоящего аппаратного модема (hardware modem). Однако, если Вы уже купили винмодем, возможно, этот документ поможет Вам.

Для получения наиболее актуальной информации о доступных для линмодемов драйверах посетите сайт Роба Кларка (Rob Clark), нашу маленькую страницу ссылок и архивы мэйлинг-листа сайта Linmodems.org. Общие вопросы, касающиеся модемов, типа настройки IRQ и скриптов дозвона (dialup scripts) более подробно рассмотрены в Modem-HOWTO, Serial-HOWTO, PPP-HOWTO и в других HOWTO, доступных на сайте Linux Documentation Project и его многочисленных зеркалах.

1.1 Авторские права

Copyright (c) 2000,2001 by Sean Walbran, Marvin Stodolsky

Пожалуйста свободно копируйте и распространяйте (продавайте или отдавайте просто так) этот документ в любом формате. Все исправления и/или комментарии желательно отправлять авторам этого документа. Вы можете написать на основе данной собственную работу и распространять ее при условии, что Вы:

Если Вы хотите сделать не просто перевод, а внести что-то свое в него, то желательно, чтобы Вы обсудили ваши планы с авторами.

1.2 Оговорка

Используйте информацию, содержащуюся в этом документе, на ваш собственный риск. Мы отрицаем любую потенциальную ответственность за содержание этого документа. Использование концепций, примеров и/или другого содержания этого документа - полностью на ваш собственный риск.

Все авторские права принадлежат их владельцам, если специально не отмечено иное. Использование термина в этом документе не должно быть расценено как незаконное использование какой-либо торговой или сервисной марки. В частности, с тех пор как термин "Winmodem" является торговой маркой US Robotics/3Com, мы используем здесь термин "винмодем" ("winmodem"), как это делает Роб Кларк: читать следует как "Winmodems (tm), host-based-модемы, HCF-модемы, HSP-модемы, и все сходные модемо-подобные аппаратные средства." Linux - торговая марка Линуса Торвальдса (Linus Torvalds).

Перечисление конкретных изделий или торговых марок не должно рассматриваться как endorsements.

Настоятельно рекомендуется делать резервирование (backup) важных и/или необходимых файлов перед любой инсталляционной процедурой.

1.3 Благодарности

Большинство индивидуальных благодарностей дано в самом тексте.

Большая часть информации, содержащейся в этом документе, взято из таких больших источников как сайт Роба Кларка, мэйлинг-лист сайта Linmodems.org и Mobilix-страниц Werner Heuser.

Особая благодарность Mark Spieth (mark(at)digivation.com.au) за дискуссии, советы и многочисленные продолжающиеся вклады в эту работу.

Сам этот документ был создан с помощью шаблона SGML HOWTO от Stein Gojen, как это сделать - описано на сайте HOWTO-HOWTO.

1.4 Новые версии этого HOWTO

Самая последняя HTML-версия этого документа доступна на http://walbran.org/sean/linux/linmodem-howto.html, как один HTML-файл с http://walbran.org/sean/linux/linmodem-howto-all.html, с кодом SGML с http://walbran.org/sean/linux/linmodem-howto.sgml.

Старая версия этого документа становилась огромной и неуправляемой, так что эта переработка (rewrite) казалась необходимой. Чтобы избежать полной потери той информации, копия старой версии доступна на http://walbran.org/sean/linux/linmodem-howto-old.html.

Вы имеете линмодем, который работает, но не описан здесь? Вы разрабатываете драйвер? Вы думаете, что что-то в этом документе неправильно или вводит в заблуждение? Вы думаете, что ваша или чья-то еще работа использована здесь, но нет соответствующей ссылки на нее? Пожалуйста, шлите мне по электронной почте sean(at)walbran.org исправления и предложения.


2. Линмодемы

2.1 Что такое линмодем?

Линмодем - это "винмодем" (см. оговорку), работающий под Linux. Эти устройства - 'меньше чем' модем в том смысле, что для выполнения традиционных функций модемов им необходимо в той или иной степени программное обеспечение. Объяснение этому - программное обеспечение (software) дешевле аппаратных средств (hardware), оно, как правило, может быть легко модернизировано/расширено/улучшено без отвертки; естественно, программное обеспечение, необходимое для функционирования модема вообще, может работать под определенной операционной системой, под которую оно (программное обеспечение), собственно говоря, писалось.

2.2 Какие линмодемы поддерживаются?

Число винмодемов, которые будут работать в Linux, увеличивается с каждым днем. Ниже в этом документе Вы найдете описания установки известных нам драйверов под конкретные чипсеты. О поддержке в Linux любых других чипсетов ничего не известно (по крайней мере, не известно нам).

2.3 Как я могу выснить, какой чипсет имеет мой GeeWhiz 9.8.7 Modem / Laptop?

Информация от системы

Информация об установленных аппаратных средствах:

MarvS обращает внимание, что Менеджер Устройств (Device Manager) под Windows может предоставить подобную информацию, но должно быть отмечено, что изготовитель часто просто помещает свой brand name во встроенный модем, так что эта информация не столь полезна, как Вы могли бы надеяться (например, какой чипсет имеет модем "Compaq Internal 56k"?). Иногда дополнительную информацию можно получить из лог-файла модема, для этого надо поставить соответствующую галочку в окне Удаленного доступа (Dial Up Networking). Полученный файл будет иметь имя C:\WINDOWS\MODEM.LOG. Он будет содержать строки инициализации модема и, возможно, также имя конфигурационного файла модема, из которого можно подчерпнуть другую полезную информацию.

Названия модемов и идентификационные номера

Если Вы знаете точное название вашего модема, Вы можете попробовать поискать его в большой базе данных Linux Modem Compatibility на сайте Роба Кларка. Цветной/буквенный код на левой стороне таблицы укажет, функционирует или нет ваш модем под Linux. Код "LM" указывает на линмодем, в примечаниях должен быть указан драйвер, необходимый Вам. "WM" означает, что это - винмодем, не имеющей пока поддержки в Linux. Будьте осторожны: не думайте, что модемы со схожими названиями построены на одинаковых чипсетах или обязательно будут работать схожим образом! Ваш WhizBang LX56 и WhizBang GT56 вашего друга могут полностью отличаться друг от друга.

Если Вы не знаете точного названия вашего модема, Вы можете вести поиск, основываясь на идентификационном номере модема (на каждом модеме должен быть напечатан регистрационный номер, который может быть или обозначением производителя данной платы, или регистрационным номером FCC. Фотография примера такого ID-номера на модемной плате может быть найдена на сайте Роба Кларка, здесь.) Воспользуйтесь возможностью поиска на странице вашего web-браузера ("Find in Page"), чтобы найти его таблицу модемов и FCC ID's для получения информации о чипсете/драйвере. Или же непосредственно поищите в базе данных Федеральной Комиссии Связи США (FCC) по адресу http://www.fcc.gov/oet/fccid/. Читайте внимательно инструкции и, смотрите, не перепутайте O (буква) с 0 (число) или что-нибудь еще.

Лэптопы (laptops) с внутренними модемами

Если Вы имеете лэптоп, который предпочитаете не вскрывать, или собираетесь купить лэптоп, а производитель не предоставляет подробную информацию о нем, Вы не сможете получить FCC ID-номер. В этом случае Вы можете попробовать:


3. Модули ядра. Вопросы установки

3.1 Поддержка модулей ядром

Все драйверы, перечисленные здесь, выпущены как модули ядра (если хотите, ядерные модули); поэтому, Вы должны убедиться, что имеете ядро с поддержкой модулей. Кроме того, для того чтобы при использовании ядер и модулей, не совпадающих по версии, было меньше проблем, следует задействовать "module version" support, как описано ниже. Если Вы используете ядро из современного диструбутива Linux, такая поддержка модулей скорее всего уже включена. Если Вы компилируете ядро самостотельно, то Вы уже должны знать о том, как задействовать модули (из Kernel HOWTO). В любом случае, Вы можете перепроверить, что следующие параметры есть в вашем файле конфигурации ядра (который обычно м.б. найден в /usr/src/linux):

CONFIG_MODULES=y
CONFIG_MODVERSIONS=y

3.2 ISA Plug-n-Play

Если у Вас модем ISA Plug-n-Play, то Вам скорее всего придется использовать isapnptools, чтобы назначить ресурсы модему. Для этого Вам надо иметь isapnptools установленным и ваш модем должен быть занесен в файл /etc/isapnp.conf. Вам следует почитать страницы руководства (manual pages) и Plug-and-Play-HOWTO, но если у Вас нет никаких других ISA-устройств, почти все, что Вам надо сделать:

  1. Если возможно, в BIOS поставить "Non-PNP OS."
  2. Как root запустить pnpdump, чтобы сгенерировать прототип файла isapnp.conf, основанный на исследованных картах и текущем использовании ресурсов вашей системы.
  3. Найти ваш модем в этом файле и раскомментировать строчки, соответствующие IRQ (незанятому), которое Вы желаете использовать для модема. К примеру, isapnp.conf для Sean's Thinkpad i1411 с модемом Lucent LT включает следующие строки:

    (CONFIGURE ACRd119/1 (LD 0                   
      (INT 0 (IRQ 11 (MODE +E)))                   
      (IO 1 (SIZE 8) (BASE 0x0100) (CHECK))       
      (NAME "ACRd119/1[0]{LT Win Modem        }") 
    # (ACT Y)                                    
    ))                                           
    
    Странно, но в нашем случае необходимо было оставить строку #(ACT Y) закомментированной. Если у Вас это не будет работать, попробуйте тогда раскомментировать эту строку.
  4. Скопируйте этот файл в /etc/isapnp.conf
  5. Перезагрузитесь. На этапе загрузки Вы увидите сообщение 'Initializing ISA PNP devices...OK'. Если Вы его не увидите, то вероятно Вы выбрали параметр IRQ/DMA, который уже используется; попробуйте другой из выданных pnpdump. (Замечание: если Вы выполните isapnp с правильными флагами, то Вам, возможно, не надо будет перезагружаться. Однако, для новичка будет проще перезагрузиться.)

3.3 PCI-модемы

Хотите узнать больше о своем PCI-модеме, чем дает cat /proc/pci, используйте утилиты из пакета pciutils такие, как scanpci и lspci. В частности, lspci -vv дает большое количество хорошей, полезной информации.

3.4 Команды для работы с модулями

Следующие команды полезны при работе с модулями. Многие требуют привилегий root. См. страницы руководства (например, man insmod) для более детальной информации по этим командам.

insmod, insmod -f, и modprobe

Модуль ядра, совпадающий с ним по версии (version-matched kernel module), вставляется обычно командой modprobe module_name; modprobe попытается вставить все модули, от которых зависит ваш модуль (как это определено depmod, описанной ниже).

Один модуль (без модулей, от которых он зависит) может быть вставлен командой insmod module_name. Если этот модуль был скомпилирован для ядра, отличающегося от текущего, insmod сообщит о несоответствии версий (version mismatch) и откажется его загружать. Однако, можно использовать флаг (он же ключ), который заставит модуль загружаться несмотря на несоответствие: insmod -f module_name. Если интерфейс между ядром и модулями (the kernel interface the module uses) изменился не сильно с версией ядра, модуль будет вставлен и будет до некоторой степени функционален.

Так, например, обстоит дело с модулем для модема ESS esscom.o, который, будучи скомпилирован под 2.2.12, может быть насильно (forcibly) вставлен с более поздними ядрами вплоть до версии 2.2.14 без каких-либо изменений; для ядер версий выше 2.2.15 требуется правка tty.h, описанная ниже. Но для ядер серии 2.4 насильная вставка (forcing insertion) не поможет.

rmmod

Модуль может быть выгружен (удален из ядра) командой rmmod.

depmod

Команды depmod анализируют зависимости модуля (module dependencies). Совместимость скомпилированных модулей с загруженным текущим ядром может быть проверена командой:

   depmod -e ltmodem.o
В данном конкретном примере модуль ltmodem.o скомпилирован под ядром 2.2.12, загруженное текущее ядро имеет версию 2.2.17; команда выдает следующую информацию: Использование модуля с неразрешенными символами (unresolved symbols) может быть рискованным, см. ниже.


4. Советы и уловки (Tips and Tricks) для модулей, скомпилированных под ядром, версия которого отличается от версии вашего ядра

Многие из драйверов линмодемов доступны только как скомпилированные, бинарные ядерные модули. Вообще говоря, модули/бинарники нормально функционируют только с тем ядром, под которым они компилировались. Поэтому, будет ли работать скомпилированный драйвер линмодема с вашим конкретным ядром - это еще вопрос.

Ядро Linux развивается активно, но многие производители модемов/чипов все еще не хотят предоставить исходные тексты своих драйверов, и это обстоятельство не позволяет нам и Вам модифицировать эти драйверы под новые версии ядра. Несколько бинарных модулей путем различных уловок, как описано ниже, были приспособлены функционировать под некоторыми более поздними версими ядра; однако, даже если модуль может предоставить какие-то функциональные возможности, желательно использовать их по минимуму. Цитата из email от Mark Spieth:

"Драйвер никогда не сможет работать должным образом, если есть неразрешенные символы (unresolved symbols), поскольку это означает, что что-то не будет работать. Кроме того, это означает, что это что-то вызовет в ядре что-то еще, и это может быть что угодно. Это очень плохо."

Таким образом, Вам следует быть осторожным при использовании бинарных модулей с ядром другой версии; как говорится, на свой страх и риск. Если Вам прежде всего нужен работающий модем, то рассмотрите как возможность понижение версии вашего ядра до соответствующей модулю. Тем не менее, история знает случаи использования несовпадающих бинарных модулей и ядер (правда, с небольшими проблемами (типа случайной kernel panic) при помощи различных уловок и средств типа следующих.

4.1 Fixscripting

"fixscripts" от Mark Spieth исправляют бинарный модуль - предупреждения о несоответствии (mismatch warnings) версий исчезают. Вставка исправленного модуля ("fixed" module) не требует флага -f, то есть просто insmod module_name. Более поздние версии также переименовывают символы модуля, чтобы соответствовать символам, экспортируемым ядром, т.о. проверка depmod -e. не возвращает ошибки "Unresolved symbols". Должно быть подчеркнуто, что эта замена носит почти полностью косметический характер - все еще рекомендуется, чтобы модуль использовался по минимуму.

Чтобы исправить, например, тот же самый бинарный модуль ltmodem.o от Lucent с помощью fixscript, создайте рабочий каталог /root/modem. Получите самый последний fixscript с http://www.test.dclabs.com.au/linmodem/fixscript. Сохраните его как fixscript. Откройте его с помощью less или своего любимого текстового редактора, чтобы проверить, не появились ли в нем случайно DOS hard stops. В зависимости от вашего средства просмотра (viewer)/редактора они выглядят либо как полужирная М, либо как подчеркнутая М, либо как ^M. ОБРАТИТЕ ВНИМАНИЕ: more НЕ отображает эти DOS newlines.

Сделайте файл исполнимым: chmod +x fixscript. Выполните

    ./fixscript ltmodem.o ltmodem2217.o

(это создаст исправленный модуль ("fixed" module) ltmodem2217.o). При проверке зависимостей модуля:

    depmod -e ltmodem2217.o

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

    insmod ltmodem2217.o

"Исходный код", поставляемый вместе с некоторыми модулями от PCTel (маленький Cи-файл), при компилировании и линковке вносит схожие исправления в бинарные библиотеки этих пакетов; в отличие от частично открытого (partially-open-source) драйвера от Lucent, который не компенсирует изменения в интерфейсе ядра.

4.2 Внесение исправлений в tty.h

В своих попытках заставить работать оригинальный, бинарный драйвер для модема Lucent LT (версия 5.68) с ядрами версий выше 2.2.14, Mark Spieth сделал наблюдение, что одно простое изменение в коде ядра исправляет основные несовместимости между ядрами версий 2.2.14 и 2.2.16. Если Вы используете частично открытый (partial source/binary) драйвер от Lucent (версия 5.78), то Вам не о чем беспокоиться; если же Вы имеете другой модем, чей драйвер скомпилирован под ядром версии ниже 2.2.15, то читайте дальше.

Исправленный tty.h и несколько правильных пакетов ядер 2.2.17 доступны на http://walbran.org/sean/linux/stodolsk/. Желаете сделать исправление сами - в структуре tty_struct в файле include/linux/tty.h в более поздних ядрах присутствует дополнительный член poll_wait. Переместите этот член в низ структуры, оставшаяся часть структуры тогда будет такой же как и в ядрах версий ниже 2.2.15, то есть совместимой с уже скомпилированным модулем. Перекомпилируйте ядро и модули после внесения этого исправления в код.

4.3 Использование ppp.o из ядра версии 2.2.14

Для использовани бинарных модулей с ядрами версий выше 2.2.15 есть еще одна уловка, которая не требует перекомпиляции ядра; однако, подобно внесению исправлений в tty.h, описанному выше, эта уловка больше не нужна и не рекомендуется. А заключается она в замене модуля /lib/modules/net/ppp.o одноименным модулем из ядра 2.2.14. Так, по словам Christoph Hebeisen (cth(at)sfu.ca) с модулем Lucent под ядрами 2.2.16 надо использовать ppp.o версии 2.2.14, а не 2.2.16. А Willie Green (willjr(at)lcc.net) сообщил, что данная уловка работает и с модулем ESS. После вставки supporting version-matched модуля:

    insmod slhc
вставляется mismatched модуль ppp.o из ядра 2.2.14
    insmod -f ppp.o 
Мы хотим подчеркнуть, что эта уловка с насильной вставкой менее стабильна, чем простое и более эффективное внесение исправлений в файл tty.h, описанное выше.


5. Конкретные чипсеты и драйверы к ним

5.1 IBM Mwave (Thinkpad 600E)

IBM имеет драйвер с полностью открытым кодом (GPL'ed) для софт-модема в их Thinkpad 600E, который Вы можете взять отсюда.

5.2 Lucent LT

Краткий обзор

Этот модем имеет наибольшую поддержку (enjoys the most support) под Linux - для него существует аж целых три различных драйвера:

Надо отметить, что binary-only модуль (из "linux568.zip") содержит код из драйвера Linux serial.c лицензированного GPL, таким образом, так как исходный код самого драйвера не доступен, заимствование в нем из serial.c, очевидно, явлется нарушением GPL. Распространение же частично открытого драйвера ("i56lvp578.zip") может быть законным, а может и не быть, так как открытый (GPL'ed) код , хотя пока еще не свзан с закрытым кодом, предполагается быть таковым. Подробности смотрите в этом выпуске Kernel Traffic и в архиве мэйлинг-листа Linux-Kernel за неделю, включающую 3-е декабря 2000.

Драйвер v5.78(c, d, e...) - Установка

Получите самый последний пакет для своего ядра с http://walbran.org/sean/linux/stodolsk/, далее следуйте инструкциям, данным там.

Драйвер версии 5.68 от производителя - Установка

Этот драйвер заменен версией 5.78, описанной выше; однако, он может все еще быть полезен в особых случаях.

  1. Получите пакет для своего ядра:
    1. 2.2.12 - 2.2.15 http://linmodems.org/linux568.zip
    2. 2.2.15 и выше: тот же самый URL, но требуется правка "tty.h"; см. выше в "Советах и уловках...".
  2. unzip linux568.zip
  3. su (введите пароль суперпользователя)
  4. ./ltinst (из-за недоработки в инсталляционном скрипте будет выдана ошибка 'file not found'; проигнорируйте эту ошибку.)
Теперь ваш модем должен быть доступен как устройство /dev/modem или /dev/ttyS14.

Open Source Tools - Установка

За инструкциями обращайтесь к документации, поставляемой вместе с исходным кодом.

5.3 ESS

Краткий обзор

Доступны binary-only драйверы дл ES56T-PI (PCI) и ES56V-I (ISA), скомпилированные под RedHat 6.0 с ядром 2.2.12-20. Для ядер до 2.2.15 включительно требуется насильная вставка драйвера, а для ядер до 2.2.17 включительно для использования данных драйверов нужно исправить "tty.h", как это описано в разделе "Советы и уловки..." выше.

Установка

  1. Получите пакет для своего модема:
  2. Для ядер 2.2.15 и выше, внесите указанные в "Советах и уловках..." выше исправления в tty.h; перекомпилируйте ядро и модули.
  3. Распакуйте пакет: unzip package_name
  4. su (введите пароль суперпользователя)
  5. Создайте файл устройства: mknod /dev/esscom c 127 1
  6. Сделайте для удобства ссылку: ln -s /dev/esscom /dev/modem
  7. Сделайте для удобства ссылку: ln -s /dev/esscom /dev/ttyS15
  8. Установите владельца устройства: chgrp uucp /dev/esscom
  9. Установите права доступа к устройству: chmod 666 /dev/esscom
  10. "Замаскируйте" (masquerade) версию модуля (См. "Советы и уловки..." выше): ./fixscript essmodem.o essmodem.fix.o
  11. Установите исправленный модуль, скопировав его файл в соответсвующий каталог: cp essmodem.fix.o /lib/modules/`версия вашего ядра`/misc/essmodem.o
  12. Вставьте модуль в ядро: insmod -f essmodem
  13. (Дополнительно) Для автоматической загрузки модуля добавьте строчку "alias char-major-127 essmodem" в файл /etc/modules.conf или /etc/conf.modules

5.4 PCTel

Краткий обзор

Бинарные драйверы можно найти на http://www.idir.net/~gromitkc/winmodem.html#drivers.

Инсталляционный пакет в формате Debian для ядра 2.2.16 был выложен Corel по адресу: ftp://ftp.corel.com/pub/linux/CorelLinux/dists/corellinux-1.2/corel/binary-i386/utils/pctel-kernel-2.2.16-driver-cdl-v1.0_1.0.deb, хотя теперь, кажется, эта ссылка не работает. Но gzipped/tarred-пакет, полученный из этого .deb, доступен здесь. Кроме того, для ядра 2.4 Томасом Райтом (Thomas Wright) был предоставлен драйвер, который можно взять там же. Другие пакеты, требующие поверхностной (superficial) компиляции, описаны ниже.

Установка

Есть два типа пакетов с модулями PCTel:

  1. Пакет (rpm или deb), который устанавливает два модуля, pctel_hsp.o и pctel_pci.o, в /lib/modules/2.2.16.

    С ядрами версий выше 2.2.16 Вам надо будет использовать насильную вставку модулей (insmod -f), если она не увенчается успехом - попробуйте "fixscript" (не испытано!!!). Имея ядро версии ниже 2.2.16, Вам либо придется его обновить до 2.2.16, либо опять же попробовать fixscripting (также ничего не гарантирую). Пожалуйста, сообщите мне о результатах.

  2. Пакет, после распаковки дающий набор библиотек (hsp.a и т.д) и маленький файл с кодом на Си (ptmodule.c), которые должны располагаться в каталогах lib/ и src/module/. Если нет никаких каталогов, создайте их и переместите в них эти файлы:
    mkdir lib
    mkdir src
    mkdir src/module
    mv *.a lib/
    mv Makefile *.c src/module
    

    Теперь перейдите в каталог src/module и наберите make. Эта команда должна создать файл модуля pctel.o в каталоге lib. (Модуль драйвера не есть объектный файл ptmodule.o в src/module!)

    Версия модуля, полученного таким образом, будет соответствовать версии вашего ядра.

Имея модули на руках, продолжите установку следующим образом:

  1. su (введите пароль суперпользователя)
  2. Создайте файл устройства: mknod /dev/pctel c 62 79
  3. Сделайте для удобства ссылку: ln -s /dev/pctel /dev/modem
  4. Сделайте для удобства ссылку: ln -s /dev/pctel /dev/ttyS15
  5. Установите владельца устройства: chgrp uucp /dev/pctel
  6. Установите права доступа к устройству: chmod 666 /dev/pctel
  7. Установите модуль, скопировав его в соответствующий каталог (нужно только для пакета 2-го типа, см выше): cp pctel.o /lib/modules/`версия вашего ядра`/misc/
  8. Вставьте модуль(и) в ядро: insmod -f modulename

5.5 Conexant/Rockwell HSF

Есть драйверы для ядер 2.2.14, 2.2.16 и 2.2.17. Со страницы http://www.olitec.com/pci56kv2.html загрузите соответствующий пакет, распакуйте его командой tar -zxvf и запустите инсталляционный скрипт ins_all.

Этот драйвер немного "глюкавый" (наиболее частый "глюк" - отклик "NO DIALTONE"), но обычно это лечится путем вставки ID производителя (vendor ID) модема в .inf-файл модема, возможно, также потребуется заменить старший номер устройства (device major number) с 254 на 253 (мне известно, что значительное число людей именно таким образом смогло заставить этот драйвер работать). За подробностями обращайтесь к архивам мэйлинг-листа Linmodems.org; например, сюда.

5.6 Intel (прежде Ambient Technology, прежде Cirrus Logic)

Mikhail Moreyra написал GPL'ed драйвер для чипсета CL-MD5620DT, который может обеспечить 33.6 kbps; однако, этот драйвер является alpha software - короче, я вас предупредил. Драйвер можно взять с http://linmodems.org/CLModem-0.3.0.tar.gz. Gabriel Gambetta (ggambett(at)internet.com.uy) выпустил исправленную версию драйвера, позволяющую использовать AT-команды (standart AT modem commands); получить эту версию можно на сайте Роба Кларка.

Драйвер для модема HaM был beta-tested в начале 2001 и, как ожидается, весьма скоро будет выпущен.

5.7 3Com

56k

rpm-пакет с драйвером для модема 3Com MDP3900V-U (по-видимому найденный в Dell Dimension L733r) был отправлен в мэйлинг-лист Linmodems.org (ткните здесь для получения дополнительной информации), этот пакет Вы также можете взять у нас.

Mini-PCI

Как я знаю, драйвера пока еще нет, могу только отослать Вас к странице miniPCI Werner Heuser, содержащей большее количество информации и ссылок.

См. также здесь.

5.8 AMR

Ian Stewart сообщает, что он работает над "mid-level driver" для кодека AC97.


6. Устранение неполадок

Итак, Вы прочитали этот документ, Modem-HOWTO и PPP Howto, нашли драйвер для своего модема, следуя инструкциям, установили его, но модем все еще не работает. Знакомая история. Читайте дальше.

Вообще говоря, Linux сохраняет сведения о сетевых соединених (networking connections), которые оказываются очень полезными при устранении проблем. Конкретные имена файлов с этими сведениями зависят от дистрибутива Linux и программного обеспечения для дозвона (Dial-in software), но еще есть системные журналы (system log files) /var/log/messages, /var/log/syslog и т.д., которые также должны предоставить некоторую информацию.

Перед устранением неполадок собственными силами и перед обращением за помощью к мэйлинг-листу будет полезно, если Вы соберете необходимую информацию. Как root перейдите к каталогу, в котором находятся скрипты установки модема (modem install scripts), создайте скрипт, как показано ниже, и пошлите его копию в мэйлинг-лист.

(Ниже # (решетка) предваряет комментарии.)

# начните запись,
script ModemTest.txt 
# напечатайте всю имеющуюся у Вас информацию о своем модеме
echo название винмодема, производитель, обозначение, чип
# версия ядра
uname -r
# информация о последовательных портах
setserial -agv /dev/ttyS*
# информация о прерываних (irq)
cat /proc/interrupts
# содержание вашего скрипта установки модулей (вставьте имя скрипта вместо ScriptName):
cat ScriptName
# Проверьте, явлется ли этот скрипт исполнимым:
ls -l ScriptName
# скрипт исполнимый, если в ответ Вы получите что-то типа (обратите внимание на "x"):
# -rwxrw-rw-  1 root	root  654 Jan  6  2000 ltinst
# в противном случае сделайте его исполнимым:
chmod o+x ScriptName
# вновь проверьте
ls -l ScriptName
# запустите скрипт:
./ScriptName
# на что установлена символическа ссылка /dev/modem:
ls -l /dev/modem
# Что за DeviceName определен в вашем скрипте (/dev/ttyS14 или ...?) - посмотрите и наберите
# вместо DeviceName
echo DeviceName
# Имя файла драйвера вашего модема. Должно быть что-то вроде DriverName.o
# с ".o", указывающим на то, что он бинарный - посмотрите и наберите вместо DriverName
echo This is my DriverName.o
# Вставлен ли драйвер в Modules Path:
find /lib/modules | grep DriverName
# Есть ли ваш драйвер среди модулей, установленных в запущенном ядре?
lsmod
# если нет, попробуйте простую вставку - наберите:
insmod ./DriverName.o
# или же, если драйвер был перечислен в Modules Path, будет достаточно набрать:
insmod DriverName
# проверьте:
lsmod
# если драйвера опять нет, попробуйте насильную вставку:
insmod -f ./DriverName
# снова проверьте:
lsmod
# Если имя файла драйвера НЕ перечислено, 
# значит модем, драйвер и ядро не совместимы.
# Дальнейшие попытки будут бесполезны.
# Если имя файла драйвера перечислено, давайте добавим еще немного информации.
# Сперва можно выполнить конфигурационную утилиту,
# используемую для установки параметров телефонных соединений в вашем дистрибутиве Linux.
# Не забудьте потом удалить из этой записи свой пароль.
# Вы, вероятно, будете опрошены на предмет следующей информации: 
# используемый порт (/dev/modem или /dev/ttySn), телефонный номер (Dial-inNumber),
# имя пользователя (UserName), пароль (PassWord). 
# Запустите вашу конфигурационную утилиту.
YourSetUpConf
# Остановите запись 
exit

Если дозвон (dialin) не был удачным, добавьте в конец скрипта запись из вашего log-файла (/var/log/syslog).


7. ЧаВО

7.1 У меня винмодем. Будет ли он работать в Linux?

Большая вероятность того, что нет. См. раздел "Какие линмодемы поддерживаются?" выше; проверьте винмодем по базе данных Linux Modem Compatibility на сайте Роба Кларка.

7.2 Я получаю "NO DIALTONE".

Попробуйте установить в BIOS "non-PNP OS" вместо "PNP OS", "Other OS" вместо "Windows" или... как там у Вас это называется.

Обладатели Conexant: См. раздел о Conexant выше.

7.3 Я получаю ошибку "device or resource busy".

7.4 Я получаю неразрешенные символы (unresolved symbols), когда делаю fixscripting/insmoding.

Неразрешенные символы (unresolved symbols) почти неизбежны при использовании бинарных модулей. Это происходит из-за несоответствия модуля ядру. Вот несколько общих случаев:

Попробуйте другой ppp-dialer. Перейдите на ядро, соответствующее модулю.

7.5 Мой модем PCTel не работает.

7.6 Модем набирает номер и прекрасно соединяется, но потом бросает трубку.

Это часто встречающася проблема, которая может иметь (или нет) несколько решений:

  1. Возможно, что модуль правильно установлен и работает, но у Вас что-то не так с конфигурацией ppp. В частности, если в логе Вы находите ошибку "peer is not authorized", попробуйте изменить "auth" на "noauth" в /etc/ppp/options и/или закомментировать "auth" и "lock" (поместив '#' в начале строки). Corel имеет целую страницу ЧаВО по этой теме, доступную по адресу http://linux.corel.com/support/html/9314.htm.
  2. Сообщалось, что при некоторых несоответствиях ядро/модуль программа kppp выдает эту обшику, в то время как wvdial для тех же модулей и аппаратных средств (hardware) ничего не выдает. Т.о., Вы можете попробовать другой ppp-dialer и посмотреть, поможет ли это.
  3. Наконец, это может быть связано с поддержкой звука ядром (sound support). Так, для модуля ltmodem.o и ядра без поддержки звука дозвон получается (dial-in is OK), но ppp НЕ достигается.

    Большинство дистрибутивов Linux позволяют конфигурировать ядро при его загрузке. Для дистрибутивов, основанных на Debian, таким файлом конфигурации ядра является

      /boot/config-version
    
    О том, есть ли поддержка звука в ядре или нет, можно узнать, выполнив команду
      grep SOUND /boot/config-version |grep -v not
    
    Я для своего ядра версии 2.2.17 получил следующее:

    # grep SOUND  /boot/config-2.2.17 |grep -v not
    CONFIG_SOUND=m
    CONFIG_SOUND_OSS=m
    CONFIG_SOUND_SB=m
    CONFIG_SOUND_MPU401=m
    CONFIG_SOUND_YM3812=m
    CONFIG_SOUND_VMIDI=m
    CONFIG_SOUND_YMPCI=m
    CONFIG_LOWLEVEL_SOUND=y
    

    CONFIG_SOUND=m или CONFIG_SOUND=yes свидетельствуют о том, что ядро имеет поддержку звука.

    Если ничто из вышеперечисленного не помогает, то попробуйте перейти на наиболее подходящее к вашему модулю ядро. Если и это не помогает (или Вы принципиально не хотите переходить на более старую версию ядра), то ищите помощи в мэйлинг-листе на Linmodems.org.

7.7 Я получаю kernel panic при закрытии соединения или выгрузке драйвера.

Есть пара возможных решений этого, ни одно из которых может не работать:

7.8 Ничего не работает. К кому я могу обратиться за помощью?

Если ничего не помогает, пошлите сообщение с необходимой информацией, описанной в разделе "Устранение неполадок" выше, в мэйлинг-лист Linmodems.org.

7.9 Кто написал драйвер для моего винмодема и как я могу связаться с ним/ней?

Если адрес для контактов не был дан выше, то, вероятно, этот человек по контракту с изготовителем не имеет полномочий на модификацию/выпуск/изменение (update/release/change) исходников и не имеет времени, чтобы ответить на ваш email. См., например, http://lwn.net/1999/1209/a/lucent.html


8. Приложение

8.1 Параметры модуля PCTel: коды стран

Нижеследующее взято из readme-файлов от PCTel. Соответствующий код страны можно выбрать путем вставки модуля с параметром:

insmod pctel.o country_code=7
("7" должна быть заменена кодом вашей страны, выбранным из списка ниже). Спасибо Jonathan Emery за то, что указал правильный синтаксис.

Как установить и как узнать код страны (country_code).

Есть два способа:

СПОСОБ #1:

Чтобы установить код страны:
"country_sel_rep sel 7" установит код страны на 7.

Чтобы узнать текущий код страны:
"country_sel_rep rep" возвращает текущий код страны как код завершения.

СПОСОБ #2:

Чтобы установить код страны:
"country_sel 7" установит код страны на 7.

Чтобы узнать текущий код страны:
"country_rep" возвращают текущий код страны как код завершения.

country_code                    country_name

    1                           США
    2                           ФРАНЦИЯ
    3                           ГЕРМАНИЯ
    4                           ИТАЛИЯ
    5                           ШВЕЦИЯ
    6                           ВЕЛИКОБРИТАНИЯ
    7                           ЯПОНИЯ
    8                           АВСТРАЛИЯ
    9                           ИСПАНИЯ
   10                           ТАЙВАНЬ
   11                           СИНГАПУР
   12                           КОРЕЯ
   13                           ШВЕЙЦАРИЯ
   14                           НОРВЕГИЯ
   15                           НИДЕРЛАНДЫ
   16                           БЕЛЬГИЯ
   17                           КАНАДА
   18                           ИРЛАНДИЯ
   19                           ПОРТУГАЛИЯ
   20                           ПОЛЬША
   21                           ВЕНГРИЯ
   22                           ФИНЛЯНДИЯ
   23                           ДАНИЯ
   24                           АВСТРИЯ
   25                           Ю.АФРИКА
   26                           СТРАНЫ CTR21
   27                           КИТАЙ
   28                           МАЛАЙЗИЯ
   29                           ЛЮКСЕМБУРГ
   30                           ГРЕЦИЯ
   31                           ИСЛАНДИЯ
   32                           НОВАЯ ЗЕЛАНДИЯ
   33                           БРАЗИЛИЯ





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру