Ключевые слова:modem, usb, linux, driver, kernel, patch, (найти похожие документы)
From: McMCC <mcmcc at mail.ru>
Date: Mon, 4 Aug 2004 14:31:37 +0000 (UTC)
Subject: Подключение модемов ZyXEL Omni 56K по шине USB в ОС Linux
Оригинал: http://mcmcc.bat.ru/omniusb/
СОДЕРЖАНИЕ
1. Подключение модемов ZyXEL Omni 56K PLUS & DUO по шине USB в ОС Linux.
2. Подключение модема ZyXEL Omni 56K UNO по шине USB в ОС Linux.
1. Подключение модемов ZyXEL Omni 56K PLUS & DUO по шине USB в ОС Linux.
Модемы ZyXEL Omni 56K PLUS & DUO имеют 2-а интерфейса подключения к компьютеру,
это RS-232 и USB. Если подключение по RS-232 не вызывает каких-либо вопросов и
проблем, то для подключения по USB требуются специальные драйвера. В составе
любого ядра Linux, начиная с версии 2.2, входит стандартный драйвер для работы
USB serial устройств под названием usbserial, его требуется загрузить
сразу после загрузки модулей usbcore и usb-uhci(usb-ohci), так как данный
драйвер содержит только протокол общения с устройствами USB-to-RS232, то для
работы модемов ZyXEL Omni 56K PLUS & DUO необходим еще дополнительный драйвер,
который будет общаться с модемами на аппаратном уровне и обмениваться данными
по протоколу, который реализован в драйвере usbserial. Такой драйвер входит
в стандартное ядро Linux и называется omninet, однако этот драйвер не будет
работать с данными модемами, так как требуется дополнительная доработка этого
драйвера на предмет Product ID. Патч для доработки драйвера omninet прилагается
к данному описанию и называется omninet.diff, либо приведен ниже:
---------------------------------------------------------------------------
--- drivers/usb/serial/omninet.c.orig 2002-11-29 02:53:15.000000000 +0300
+++ drivers/usb/serial/omninet.c 2003-08-27 13:11:51.000000000 +0400
@@ -66,6 +66,8 @@
#define ZYXEL_VENDOR_ID 0x0586
#define ZYXEL_OMNINET_ID 0x1000
+#define ZYXEL_OMNI_56KPLUS_ID 0x1500
+#define ZYXEL_OMNI_56K_DUO_ID 0x1512
/* function prototypes */
static int omninet_open (struct usb_serial_port *port, struct file *filp);
@@ -78,6 +80,8 @@
static struct usb_device_id id_table [] = {
{ USB_DEVICE(ZYXEL_VENDOR_ID, ZYXEL_OMNINET_ID) },
+ { USB_DEVICE(ZYXEL_VENDOR_ID, ZYXEL_OMNI_56KPLUS_ID) },
+ { USB_DEVICE(ZYXEL_VENDOR_ID, ZYXEL_OMNI_56K_DUO_ID) },
{ } /* Terminating entry */
};
---------------------------------------------------------------------------
Для установки патча необходимо произвести следущую процедуру в директории,
где установлены исходные тексты вашего ядра:
cp omninet.diff /usr/src/linux-2.4
cd /usr/src/linux-2.4
patch -p0 < omninet.diff
и затем собрать ваше ядро или модуль(предполагается, что ядро собиралось ранее
и достаточно дать команду make modules, или ядро собирается заново).
Если вас не устраивает данный метод, то можно воспользоваться сборкой отдельного
драйвера omniusb и за место omninet загружать его. Данный метод не требует сборки
всего ядра и каких-либо модификаций, но требуется наличие исходных кодов ядра,
которые должны быть установлены из вашего дистрибутива. Если вы используете RedHat,
ASPLinux и т.п., то вам необходимо произвести такие операции как make oldconfig и
make dep, этого будет достаточно для правильной сборки драйвера omniusb
(http://mcmcc.bat.ru/omniusb/omniusb-1.1.tar.gz). Помните, что бы запустить
make oldconfig, вам необходимо скопировать нужный конфигурационный
файл ядра из директории configs (например kernel-2.4.22-athlon.config) и
переименовать его в .config:
cd /usr/src/linux-2.4
cp configs/kernel-2.4.22-athlon.config .config
make oldconfig
make dep
Необходимо произвести сборку драйвера:
cp omniusb-1.1.tar.gz /usr/local/src
cd /usr/local/src
tar xvpzf [5]omniusb-1.1.tar.gz
cd omniusb-1.1
make
make install
Драйвер omniusb самостоятельный и расчитан только для работы модемов ZyXEL
Omni 56K PLUS & DUO, при работе он не пересекается со стандартным драйвером omninet
из ядра.
После того, как драйвер был собран и установлен, необходимо проверить наличие
устройств в директории /dev:
ls -l /dev/ttyUSB*
должны получить:
crw-rw---- 1 root uucp 188, 0 Янв 30 2003 /dev/ttyUSB0
crw-rw---- 1 root uucp 188, 1 Янв 30 2003 /dev/ttyUSB1
crw-rw---- 1 root uucp 188, 10 Янв 30 2003 /dev/ttyUSB10
crw-rw---- 1 root uucp 188, 11 Янв 30 2003 /dev/ttyUSB11
crw-rw---- 1 root uucp 188, 12 Янв 30 2003 /dev/ttyUSB12
crw-rw---- 1 root uucp 188, 13 Янв 30 2003 /dev/ttyUSB13
crw-rw---- 1 root uucp 188, 14 Янв 30 2003 /dev/ttyUSB14
crw-rw---- 1 root uucp 188, 15 Янв 30 2003 /dev/ttyUSB15
crw-rw---- 1 root uucp 188, 2 Янв 30 2003 /dev/ttyUSB2
crw-rw---- 1 root uucp 188, 3 Янв 30 2003 /dev/ttyUSB3
crw-rw---- 1 root uucp 188, 4 Янв 30 2003 /dev/ttyUSB4
crw-rw---- 1 root uucp 188, 5 Янв 30 2003 /dev/ttyUSB5
crw-rw---- 1 root uucp 188, 6 Янв 30 2003 /dev/ttyUSB6
crw-rw---- 1 root uucp 188, 7 Янв 30 2003 /dev/ttyUSB7
crw-rw---- 1 root uucp 188, 8 Янв 30 2003 /dev/ttyUSB8
crw-rw---- 1 root uucp 188, 9 Янв 30 2003 /dev/ttyUSB9
Если этой информации нет, то необходимо создать эти устройства:
mknod /dev/ttyUSB0 c 188 0
mknod /dev/ttyUSB1 c 188 1
mknod /dev/ttyUSB2 c 188 2
mknod /dev/ttyUSB3 c 188 3
.
.
.
mknod /dev/ttyUSB254 c 188 254
mknod /dev/ttyUSB255 c 188 255
Если планируется использовать только один модем, то рекомендуется создать
линк для удобства c /dev/ttyUSB0 на /dev/modem и во всех конфигурациях
требующих настройки порта модема, использовать этот линк. Так же может
понадобиться установка дополнительных прав на устройства, по умолчанию 660,
но может возникнуть необходимость в 666.
ln -s /dev/ttyUSB0 /dev/modem
и если надо
chmod 666 /dev/ttyUSB0
Теперь, когда все процедуры по установки драйвера и проверки наличия
нужных устройств закончены, необходимо загрузить драйверы в следующем порядке:
insmod usbcore
insmod usb-uhci (или usb-ohci)
insmod usbserial
insmod omniusb (или пропатченный omninet)
Примечание: insmod usbcore и insmod usb-uhci (или usb-ohci), требуется грузить
в тех дистрибутивах ОС Linux, где нет наличия автоконфигурации, во всех дистрибутивах
RedHat, SuSe, ASPLinux и т.п. этого делать не надо, поэтому достаточно загрузить:
insmod usbserial
insmod omniusb (или пропатченный omninet)
Что бы не грузить каждый раз в ручную usbserial и omniusb, можно вставить следущую
строчку в /etc/modules.conf:
alias char-major-188 usbserial
install char-major-188 /sbin/insmod omniusb
remove char-major-188 /sbin/rmmod omniusb
или
alias char-major-188 usbserial
install char-major-188 /sbin/insmod omninet
remove char-major-188 /sbin/rmmod omninet
Примечание: Данный метод может не работать, тогда нужно будет произвести
установку по рекомендациям для настройки hotplug устройств...
man hotplug или посетить сайт http://linux-hotplug.sourceforge.net
P.S. Для RedHat-8/9 не требуется редактировать /etc/modules.conf если
установлена поддержка hotplug , система сама автоматически находит нужные
модули для загрузки и не требует какой-либо дополнительной конфигурации.
2. Подключение модема ZyXEL Omni 56K UNO по шине USB в ОС Linux.
Модем ZyXEL Omni 56K UNO имеет единственный интерфейс подключения к
компьютеру - USB. Данный модем соответствует спецификации Universal Serial Bus
Communication Device Class Abstract Control Model (USB CDC ACM) и поэтому
использует стандартный драйвер acm из ядра.
Для того, что бы загрузить драйвер acm необходимо проверить наличие нужных
устройств в директории /dev:
ls -l /dev/usb/ttyACM*
должны получить:
crw-rw---- 1 root uucp 166, 0 Янв 30 2003 /dev/usb/ttyACM0
crw-rw---- 1 root uucp 166, 1 Янв 30 2003 /dev/usb/ttyACM1
crw-rw---- 1 root uucp 166, 10 Янв 30 2003 /dev/usb/ttyACM10
crw-rw---- 1 root uucp 166, 11 Янв 30 2003 /dev/usb/ttyACM11
crw-rw---- 1 root uucp 166, 12 Янв 30 2003 /dev/usb/ttyACM12
crw-rw---- 1 root uucp 166, 13 Янв 30 2003 /dev/usb/ttyACM13
crw-rw---- 1 root uucp 166, 14 Янв 30 2003 /dev/usb/ttyACM14
crw-rw---- 1 root uucp 166, 15 Янв 30 2003 /dev/usb/ttyACM15
crw-rw---- 1 root uucp 166, 2 Янв 30 2003 /dev/usb/ttyACM2
crw-rw---- 1 root uucp 166, 3 Янв 30 2003 /dev/usb/ttyACM3
crw-rw---- 1 root uucp 166, 4 Янв 30 2003 /dev/usb/ttyACM4
crw-rw---- 1 root uucp 166, 5 Янв 30 2003 /dev/usb/ttyACM5
crw-rw---- 1 root uucp 166, 6 Янв 30 2003 /dev/usb/ttyACM6
crw-rw---- 1 root uucp 166, 7 Янв 30 2003 /dev/usb/ttyACM7
crw-rw---- 1 root uucp 166, 8 Янв 30 2003 /dev/usb/ttyACM8
crw-rw---- 1 root uucp 166, 9 Янв 30 2003 /dev/usb/ttyACM9
Если этой информации нет, то необходимо создать эти устройства:
mknod /dev/usb/ttyACM0 c 166 0
mknod /dev/usb/ttyACM1 c 166 1
и т.д.
Для удобства сделать линк на /dev/modem c /dev/usb/ttyACM0:
ln -s /dev/usb/ttyACM0 /dev/modem
если модем один, то этим и ограничиться...
Пробуем загрузить драйвера в следующем порядке:
insmod usbcore
insmod usb-uhci (или usb-ohci)
insmod acm
Если драйвер acm отсутствует, то нужно пересобрать ядро с поддержкой этого
драйвера модулем, перегрузиться с новым ядром, и заново попробовать загрузить
драйвера usbcore, usb-uhci (или usb-ohci), acm.
Примечание: Система автоконфигурирования kudzu находит модем и сама предлагает
произвести установку драйвера, однако это может быть не корректно.
Что бы не грузить каждый раз в ручную драйвер acm, можно вставить следущую
строчку в /etc/modules.conf:
alias char-major-166 acm
Примечание: Данный метод может не работать, тогда нужно будет произвести
установку по рекомендациям для настройки hotplug устройств...
man hotplug или посетить сайт http://linux-hotplug.sourceforge.net
P.S. Для RedHat-8/9 не требуется редактировать /etc/modules.conf если
установлена поддержка hotplug , система сама автоматически находит нужные
модули для загрузки и не требует какой-либо дополнительной конфигурации.
15.09.2003 McMCC <mcmcc@mail.ru>
>> а кто-нибудь знает как поддключить ISDN модем INTRACOM NetMod ??? Помогите плиз!!!
чтобы он нормально заработал под линем, надо залить в модем последнюю прошивку
Пробовал подключать UNO. Действительно всё работает.
Никаких дполнительных патчей дров не требовалось.
Замечания касатеьно файлов устройтств и модулей:
1. В стандартном ядре всегда есть нужные модули.
2. В большинстве дистрибутивов и устройства нужные всегда есть.
3. вместо /dev/usb/ttyACM0 (ttyACM1, ttyACM2, ...) может быть /dev/usb/acm/0 (или 1,2,3... соответственно).
Замечания относительно модулей для ядер 2.6.х:
модуль usb-uhci (usb-ohci) называется uhci-hcd (ohci-hcd), а acm - cdc-acm.
Здравствуйте!
Мне никак не удается подключить модем ZyXEL Omni 56K Plus к своему компьютеру. Всегда выходит информация об отсутствии драйверов ( Код 28), хотя я использую заводской установочный диск. Операционная система Windows XP. На втором компьютере с этой же операционкой модем работает.
Помогите, пожалуйста, разобраться.
Доброго времени суток.
Воть, столкнулся с такой проблемой с зухелем уно:
при подключении модема в юсб - он определяется, в /var/log/messages пишеццо следующее:
Jul 19 18:44:05 sbslinko kernel: ohci_hcd 0000:00:02.0: wakeup
Jul 19 18:44:06 sbslinko kernel: usb 2-2: new full speed USB device using ohci_hcd and address 16
Jul 19 18:44:07 sbslinko kernel: usb 2-2: configuration #1 chosen from 1 choice
Jul 19 18:44:07 sbslinko kernel: cdc_acm 2-2:1.0: ttyACM0: USB ACM device
после того, как я натравливаю на сей девайс FaxGetty :
Jul 19 18:46:53 sbslinko FaxGetty[13123]: /dev/ttyACM0: Can not initialize modem.
ohci-hcd и cdc-acm стоят и здравствуют, насколько я понял - этому модему кроме стандартных дров ничего не нужно, но он не инициализируецца :(
помогите плиз разобраться в чём грабля.
Подскажите пожалуйста будет ли определяться модем ZyXEL Omni 56K UNO USB в Linux CentOS 5.2 с версией ядра 2.6.18 На сайтах разработчиков и в списках определяемого на Linux железа я такой информации не нашла. А модемы приобретать надо. Может кто еще какую версию аналогового ZyXELя порекомендует. Заранее спасибо.
lsusb
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 006: ID 0586:1500 ZyXEL Communications Corp. Omni 56K Plus
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 046d:c044 Logitech, Inc. LX3 Optical Mouse
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
dmesg
[10334.124043] usb 2-1: new full speed USB device using ohci_hcd and address 7
[10334.284028] usb 2-1: configuration #1 chosen from 1 choice
[10334.292084] usb 2-1: New USB device found, idVendor=0586, idProduct=1500
[10334.292095] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Не определяет устройство. Что делать. Подскажите хлопци)
Поставил Ubuntu и хочу настроить нет,в наличии есть модемы Zyxel Omni 56K Pro и Sagem F@ST 9520-35-GLR(WiMax).Поскольку етой осью только учусь пользоватся интересует будет ли хоть один из етих модемов работать под Ubuntu.Буду благодарен за любой совет ибо винда задрала а в линуксе нехватает интернета!Ответы просьба слать на Wehrmacht@ukr.net
Не знаю вообще как его подключить, принисли модем и один провод Usb Как я понял питание, там ещё 2 выхода Line - phohe интернет у меня от телефона когда его подключил пишет нет кабеля Интернета!