sean(at)walbran.org
и Marvin Stodolsky
stodolsk(at)erols.com
, перевод Александра В. Шубнякова,
http://linmodems.nm.ru/, linmodemsATnmDOTru
Это 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 и его многочисленных зеркалах.
Copyright (c) 2000,2001 by Sean Walbran, Marvin Stodolsky
Пожалуйста свободно копируйте и распространяйте (продавайте или отдавайте просто так) этот документ в любом формате. Все исправления и/или комментарии желательно отправлять авторам этого документа. Вы можете написать на основе данной собственную работу и распространять ее при условии, что Вы:
Если Вы хотите сделать не просто перевод, а внести что-то свое в него, то желательно, чтобы Вы обсудили ваши планы с авторами.
Используйте информацию, содержащуюся в этом документе, на ваш собственный риск. Мы отрицаем любую потенциальную ответственность за содержание этого документа. Использование концепций, примеров и/или другого содержания этого документа - полностью на ваш собственный риск.
Все авторские права принадлежат их владельцам, если специально не отмечено иное. Использование термина в этом документе не должно быть расценено как незаконное использование какой-либо торговой или сервисной марки. В частности, с тех пор как термин "Winmodem" является торговой маркой US Robotics/3Com, мы используем здесь термин "винмодем" ("winmodem"), как это делает Роб Кларк: читать следует как "Winmodems (tm), host-based-модемы, HCF-модемы, HSP-модемы, и все сходные модемо-подобные аппаратные средства." Linux - торговая марка Линуса Торвальдса (Linus Torvalds).
Перечисление конкретных изделий или торговых марок не должно рассматриваться как endorsements.
Настоятельно рекомендуется делать резервирование (backup) важных и/или необходимых файлов перед любой инсталляционной процедурой.
Большинство индивидуальных благодарностей дано в самом тексте.
Большая часть информации, содержащейся в этом документе, взято из таких больших источников как сайт Роба Кларка, мэйлинг-лист сайта Linmodems.org и Mobilix-страниц Werner Heuser.
Особая благодарность Mark Spieth (mark(at)digivation.com.au) за дискуссии, советы и многочисленные продолжающиеся вклады в эту работу.
Сам этот документ был создан с помощью шаблона SGML HOWTO от Stein Gojen, как это сделать - описано на сайте HOWTO-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
исправления и предложения.
Линмодем - это "винмодем" (см. оговорку), работающий под Linux. Эти устройства - 'меньше чем' модем в том смысле, что для выполнения традиционных функций модемов им необходимо в той или иной степени программное обеспечение. Объяснение этому - программное обеспечение (software) дешевле аппаратных средств (hardware), оно, как правило, может быть легко модернизировано/расширено/улучшено без отвертки; естественно, программное обеспечение, необходимое для функционирования модема вообще, может работать под определенной операционной системой, под которую оно (программное обеспечение), собственно говоря, писалось.
Число винмодемов, которые будут работать в Linux, увеличивается с каждым днем. Ниже в этом документе Вы найдете описания установки известных нам драйверов под конкретные чипсеты. О поддержке в Linux любых других чипсетов ничего не известно (по крайней мере, не известно нам).
Информация об установленных аппаратных средствах:
cat /proc/pci
и lspci
pnpdump
и isapnp
cardctl ident
dmesg | more
и cat /proc/interrupts
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 (число) или что-нибудь еще.
Если Вы имеете лэптоп, который предпочитаете не вскрывать, или собираетесь купить лэптоп, а производитель не предоставляет подробную информацию о нем, Вы не сможете получить FCC ID-номер. В этом случае Вы можете попробовать:
Все драйверы, перечисленные здесь, выпущены как модули ядра (если хотите,
ядерные модули); поэтому, Вы должны убедиться, что имеете ядро с поддержкой
модулей. Кроме того, для того чтобы при использовании ядер и модулей, не
совпадающих по версии, было меньше проблем, следует задействовать "module
version" support, как описано ниже. Если Вы используете ядро из современного
диструбутива Linux, такая поддержка модулей скорее всего уже включена. Если Вы
компилируете ядро самостотельно, то Вы уже должны знать о том, как задействовать
модули (из Kernel
HOWTO). В любом случае, Вы можете перепроверить, что следующие параметры
есть в вашем файле конфигурации ядра (который обычно м.б. найден в
/usr/src/linux
):
CONFIG_MODULES=y CONFIG_MODVERSIONS=y
Если у Вас модем ISA Plug-n-Play, то Вам скорее всего придется использовать
isapnptools, чтобы назначить ресурсы модему. Для этого Вам надо иметь
isapnptools установленным и ваш модем должен быть занесен в файл
/etc/isapnp.conf
. Вам следует почитать страницы руководства (manual
pages) и Plug-and-Play-HOWTO,
но если у Вас нет никаких других ISA-устройств, почти все, что Вам надо сделать:
pnpdump
, чтобы сгенерировать прототип
файла isapnp.conf, основанный на исследованных картах и текущем использовании
ресурсов вашей системы.
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)
закомментированной. Если у Вас это не будет работать, попробуйте
тогда раскомментировать эту строку.
/etc/isapnp.conf
pnpdump
. (Замечание: если Вы выполните isapnp с правильными
флагами, то Вам, возможно, не надо будет перезагружаться. Однако, для новичка
будет проще перезагрузиться.)
Хотите узнать больше о своем PCI-модеме, чем дает cat /proc/pci
,
используйте утилиты из пакета pciutils
такие, как
scanpci
и lspci
. В частности, lspci -vv
дает большое количество хорошей, полезной информации.
Следующие команды полезны при работе с модулями. Многие требуют привилегий
root. См. страницы руководства (например, man insmod
) для более
детальной информации по этим командам.
Модуль ядра, совпадающий с ним по версии (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
.
Команды depmod
анализируют зависимости модуля (module
dependencies). Совместимость скомпилированных модулей с загруженным текущим
ядром может быть проверена командой:
depmod -e ltmodem.oВ данном конкретном примере модуль ltmodem.o скомпилирован под ядром 2.2.12, загруженное текущее ядро имеет версию 2.2.17; команда выдает следующую информацию:
Многие из драйверов линмодемов доступны только как скомпилированные, бинарные ядерные модули. Вообще говоря, модули/бинарники нормально функционируют только с тем ядром, под которым они компилировались. Поэтому, будет ли работать скомпилированный драйвер линмодема с вашим конкретным ядром - это еще вопрос.
Ядро Linux развивается активно, но многие производители модемов/чипов все еще не хотят предоставить исходные тексты своих драйверов, и это обстоятельство не позволяет нам и Вам модифицировать эти драйверы под новые версии ядра. Несколько бинарных модулей путем различных уловок, как описано ниже, были приспособлены функционировать под некоторыми более поздними версими ядра; однако, даже если модуль может предоставить какие-то функциональные возможности, желательно использовать их по минимуму. Цитата из email от Mark Spieth:
"Драйвер никогда не сможет работать должным образом, если есть неразрешенные символы (unresolved symbols), поскольку это означает, что что-то не будет работать. Кроме того, это означает, что это что-то вызовет в ядре что-то еще, и это может быть что угодно. Это очень плохо."
Таким образом, Вам следует быть осторожным при использовании бинарных модулей с ядром другой версии; как говорится, на свой страх и риск. Если Вам прежде всего нужен работающий модем, то рассмотрите как возможность понижение версии вашего ядра до соответствующей модулю. Тем не менее, история знает случаи использования несовпадающих бинарных модулей и ядер (правда, с небольшими проблемами (типа случайной kernel panic) при помощи различных уловок и средств типа следующих.
"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, который не компенсирует изменения в интерфейсе ядра.
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, то есть совместимой с уже скомпилированным модулем.
Перекомпилируйте ядро и модули после внесения этого исправления в код.
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
,
описанное выше.
IBM имеет драйвер с полностью открытым кодом (GPL'ed) для софт-модема в их Thinkpad 600E, который Вы можете взять отсюда.
Этот модем имеет наибольшую поддержку (enjoys the most support) под Linux - для него существует аж целых три различных драйвера:
serial.c
лицензированного GPL, таким образом, так как исходный код
самого драйвера не доступен, заимствование в нем из serial.c, очевидно, явлется
нарушением GPL. Распространение же частично открытого драйвера ("i56lvp578.zip")
может быть законным, а может и не быть, так как открытый (GPL'ed) код , хотя
пока еще не свзан с закрытым кодом, предполагается быть таковым. Подробности
смотрите в этом
выпуске Kernel Traffic и в архиве мэйлинг-листа Linux-Kernel за неделю,
включающую 3-е декабря 2000.
Получите самый последний пакет для своего ядра с http://walbran.org/sean/linux/stodolsk/, далее следуйте инструкциям, данным там.
Этот драйвер заменен версией 5.78, описанной выше; однако, он может все еще быть полезен в особых случаях.
unzip linux568.zip
su
(введите пароль суперпользователя)
./ltinst
(из-за недоработки в инсталляционном скрипте будет
выдана ошибка 'file not found'; проигнорируйте эту ошибку.) /dev/modem
или
/dev/ttyS14
.
За инструкциями обращайтесь к документации, поставляемой вместе с исходным кодом.
Доступны binary-only драйверы дл ES56T-PI (PCI) и ES56V-I (ISA), скомпилированные под RedHat 6.0 с ядром 2.2.12-20. Для ядер до 2.2.15 включительно требуется насильная вставка драйвера, а для ядер до 2.2.17 включительно для использования данных драйверов нужно исправить "tty.h", как это описано в разделе "Советы и уловки..." выше.
unzip
package_name
su
(введите пароль суперпользователя)
mknod /dev/esscom c 127 1
ln -s /dev/esscom /dev/modem
ln -s /dev/esscom /dev/ttyS15
chgrp uucp /dev/esscom
chmod 666 /dev/esscom
./fixscript essmodem.o essmodem.fix.o
cp essmodem.fix.o /lib/modules/`версия вашего
ядра`/misc/essmodem.o
insmod -f essmodem
/etc/modules.conf
или
/etc/conf.modules
Бинарные драйверы можно найти на 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:
/lib/modules/2.2.16
.
С ядрами версий выше 2.2.16 Вам надо будет использовать насильную вставку модулей (insmod -f), если она не увенчается успехом - попробуйте "fixscript" (не испытано!!!). Имея ядро версии ниже 2.2.16, Вам либо придется его обновить до 2.2.16, либо опять же попробовать fixscripting (также ничего не гарантирую). Пожалуйста, сообщите мне о результатах.
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
!)
Версия модуля, полученного таким образом, будет соответствовать версии вашего ядра.
Имея модули на руках, продолжите установку следующим образом:
su
(введите пароль суперпользователя)
mknod /dev/pctel c 62 79
ln -s /dev/pctel /dev/modem
ln -s /dev/pctel /dev/ttyS15
chgrp uucp /dev/pctel
chmod 666 /dev/pctel
cp pctel.o /lib/modules/`версия вашего
ядра`/misc/
insmod -f
modulename
Есть драйверы для ядер 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; например, сюда.
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 и, как ожидается, весьма скоро будет выпущен.
rpm-пакет с драйвером для модема 3Com MDP3900V-U (по-видимому найденный в Dell Dimension L733r) был отправлен в мэйлинг-лист Linmodems.org (ткните здесь для получения дополнительной информации), этот пакет Вы также можете взять у нас.
Как я знаю, драйвера пока еще нет, могу только отослать Вас к странице miniPCI Werner Heuser, содержащей большее количество информации и ссылок.
См. также здесь.
Ian Stewart сообщает, что он работает над "mid-level driver" для кодека AC97.
Итак, Вы прочитали этот документ, 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).
Большая вероятность того, что нет. См. раздел "Какие линмодемы поддерживаются?" выше; проверьте винмодем по базе данных Linux Modem Compatibility на сайте Роба Кларка.
Попробуйте установить в BIOS "non-PNP OS" вместо "PNP OS", "Other OS" вместо "Windows" или... как там у Вас это называется.
Обладатели Conexant: См. раздел о Conexant выше.
Неразрешенные символы (unresolved symbols) почти неизбежны при использовании бинарных модулей. Это происходит из-за несоответствия модуля ядру. Вот несколько общих случаев:
slhc_xxxx
: Вставьте (insmod) сначала модуль slhc и только
потом модули modem/ppp; используйте modprobe взамен insmod.
printk, jiffies
: Ваше ядро может быть скомпилировано с
"включением средств поддержки многопроцессорной конфигурации" (SMP enabled).
Бинарные модули будет работать только на однопроцессорной машине
(single-processor machine) с соответствующим ядром (single-processor kernel),
т.е. с отключенной SMP (SMP disabled). Перекомпилируйте ядро или раздобудьте
версию с SMP disabled. (Спасибо Tom Reinertson (treinertson(at)uswest.net))
tty_xxxx
с модулем esscom.o: Используйте fixscript с http://www.test.dclabs.com.au/linmodem/fixscript
.
Это часто встречающася проблема, которая может иметь (или нет) несколько решений:
kppp
выдает эту обшику, в то время как wvdial
для
тех же модулей и аппаратных средств (hardware) ничего не выдает. Т.о., Вы
можете попробовать другой ppp-dialer и посмотреть, поможет ли это.
Большинство дистрибутивов 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.
Есть пара возможных решений этого, ни одно из которых может не работать:
Если ничего не помогает, пошлите сообщение с необходимой информацией, описанной в разделе "Устранение неполадок" выше, в мэйлинг-лист Linmodems.org.
Если адрес для контактов не был дан выше, то, вероятно, этот человек по контракту с изготовителем не имеет полномочий на модификацию/выпуск/изменение (update/release/change) исходников и не имеет времени, чтобы ответить на ваш email. См., например, http://lwn.net/1999/1209/a/lucent.html
Нижеследующее взято из 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 БРАЗИЛИЯ
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |