Подключение модема ZyXEL OMNI 56K USB Plus EE к серверу под управлением FreeBSD

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b0932e8049511418b403129df486affc' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\"><img alt=\"ZyXEL OMNI 56K USB Plus EE\" align=\"left\" width=\"200\" height=\"169\" src=\"http://muff.kiev.ua/files/zyxel_omni.jpg\" />Возникла необходимость в подключении <a href=\"http://omni.zyxel.ru/catalogue/internet/dialup/296/description\">ZyXEL OMNI 56K USB Plus EE</a> к серверу под управлением FreeBSD. Подключается он по интерфейсу USB.</p>\n<p class=\"rtejustify\">Перелопатив в Интернете массу информации,&nbsp;так и не нашел &quot;хау ту&quot;, как его подключить. Были посты только по подключению данного модема к серверам под управлением Linux.</p>\n<p class=\"rtejustify\">В основном же,&nbsp;все советы сводились к тому, что необходимо поменять этот модем на такой же,&nbsp;но с подключением через COM-порт, что,&nbsp;конечно же,&nbsp;не очень устраивает.</p>\n<p class=\"rtejustify\">На официальном сайте <a href=\"http://zyxel.ru/\">ZyXEL</a> драйвера тоже нашлись только под Windows-системы. Пришлось &quot;копать&quot; наобум...</p>\n<p class=\"rtejustify\">Итак, имеется система с установленной FreeBSD 8.1 Release:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rteleft\"><strong># uname -a</strong><br />\n FreeBSD router.office 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Aug 23 04:33:46 ICT 2010 root@router:/usr/obj/usr/src/sys/Router amd64</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Ядро собрано без поддержки USB, поэтому,&nbsp;чтобы не пересобирать ядро еще раз,&nbsp;подгрузим необходимые модули. Загрузим модуль поддержки шины USB:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># <strong>kldload /boot/kernel/usb.ko</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Потом загружаем модуль хост-контроллера UHCI:</p>\n<p class=\"rtejustify\">\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># <strong>kldload /boot/kernel/uhci.ko</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">После этого можно наблюдать то,&nbsp;как проинициализировались&nbsp;устройства на USB-шине (данные валятся в /var/log/messages):</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rteleft\">Aug 25 19:52:19 router kernel: uhci0: &lt;Intel 82801G (ICH7) USB controller USB-A&gt; port 0xd400-0xd41f irq 23 at device 29.0 on pci0<br />\n Aug 25 19:52:19 router kernel: uhci0: [ITHREAD]<br />\n Aug 25 19:52:19 router kernel: usbus0: &lt;Intel 82801G (ICH7) USB controller USB-A&gt; on uhci0<br />\n Aug 25 19:52:19 router kernel: usbus0: 12Mbps Full Speed USB v1.0<br />\n Aug 25 19:52:19 router kernel: uhci1: &lt;Intel 82801G (ICH7) USB controller USB-B&gt; port 0xd480-0xd49f irq 19 at device 29.1 on pci0<br />\n Aug 25 19:52:19 router kernel: uhci1: [ITHREAD]<br />\n Aug 25 19:52:19 router kernel: ugen0.1: &lt;Intel&gt; at usbus0<br />\n Aug 25 19:52:19 router kernel: uhub0: &lt;Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1&gt; on usbus0<br />\n Aug 25 19:52:19 router kernel: usbus1: &lt;Intel 82801G (ICH7) USB controller USB-B&gt; on uhci1<br />\n Aug 25 19:52:19 router kernel: usbus1: 12Mbps Full Speed USB v1.0<br />\n Aug 25 19:52:19 router kernel: uhci2: &lt;Intel 82801G (ICH7) USB controller USB-C&gt; port 0xd800-0xd81f irq 18 at device 29.2 on pci0<br />\n Aug 25 19:52:19 router kernel: uhci2: [ITHREAD]<br />\n Aug 25 19:52:19 router kernel: ugen1.1: &lt;Intel&gt; at usbus1<br />\n Aug 25 19:52:19 router kernel: uhub1: &lt;Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1&gt; on usbus1<br />\n Aug 25 19:52:19 router kernel: usbus2: &lt;Intel 82801G (ICH7) USB controller USB-C&gt; on uhci2<br />\n Aug 25 19:52:19 router kernel: usbus2: 12Mbps Full Speed USB v1.0<br />\n Aug 25 19:52:19 router kernel: uhci3: &lt;Intel 82801G (ICH7) USB controller USB-D&gt; port 0xd880-0xd89f irq 16 at device 29.3 on pci0<br />\n Aug 25 19:52:19 router kernel: uhci3: [ITHREAD]<br />\n Aug 25 19:52:19 router kernel: ugen2.1: &lt;Intel&gt; at usbus2<br />\n Aug 25 19:52:19 router kernel: uhub2: &lt;Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1&gt; on usbus2<br />\n Aug 25 19:52:19 router kernel: usbus3: &lt;Intel 82801G (ICH7) USB controller USB-D&gt; on uhci3<br />\n Aug 25 19:52:19 router kernel: usbus3: 12Mbps Full Speed USB v1.0<br />\n Aug 25 19:52:19 router kernel: ugen3.1: &lt;Intel&gt; at usbus3<br />\n Aug 25 19:52:19 router kernel: uhub3: &lt;Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1&gt; on usbus3<br />\n Aug 25 19:52:19 router kernel: uhub0: 2 ports with 2 removable, self powered<br />\n Aug 25 19:52:19 router kernel: uhub1: 2 ports with 2 removable, self powered<br />\n Aug 25 19:52:20 router kernel: uhub2: 2 ports with 2 removable, self powered<br />\n Aug 25 19:52:20 router kernel: uhub3: 2 ports with 2 removable, self powered<br />\n Aug 25 19:52:20 router root: Unknown USB device: vendor 0x0ace product 0x1611 bus uhub1<br />\n Aug 25 19:52:20 router kernel: ugen1.2: &lt;ZyDAS&gt; at usbus1</p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Следующим шагом будет загрузка модуля модуля поддержки USB-модемов:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># <strong>kldload /boot/kernel/umodem.ko</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Кстати,&nbsp;он автоматически подгружает зависимый модуль <strong>ucom.ko</strong>. В результате наблюдаем следующие сообщения в логах:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\">Aug 25 20:09:21 router kernel: umodem0: &lt;ZyDAS &gt; on usbus1<br />\n Aug 25 20:09:21 router kernel: umodem0: data interface 1, has CM over data, has break</p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">Также,&nbsp;можно воспользоваться командой usbconfig, чтбы&nbsp;узнать что за устройство висит на шине:</p>\n<p><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"><strong># usbconfig -u 1 -a 2</strong><br />\n ugen1.2: &lt;56K USB Modem ZyDAS&gt; at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON</p>\n</td>\n</tr>\n</tbody>\n</table>\n</p>\n<p class=\"rtejustify\">В результате этих &quot;танцев с бубном&quot; появляется устройство <strong>/dev/cuaU0</strong>, что и требовалось доказать. Теперь только осталось проверить работу устройства. Для этого воспользуемся утилитой <a href=\"http://muff.kiev.ua/content/minicom-rabotaem-s-oborudovaniem-cherez-rs232\">minicom</a>:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"><strong># minicom</strong></p>\n<p class=\"rtejustify\">Добро пожаловать в minicom 2.4</p>\n<p class=\"rtejustify\">ПАРАМЕТРЫ: I18n<br />\n Дата компиляции Aug 25 2010, 17:39:25.<br />\n Port /dev/cuau0</p>\n<p class=\"rtejustify\">Нажмите CTRL-A Z для получения подсказки по клавишам<br />\n &nbsp;</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Необходимо minicom на работу с портом <strong>USB</strong>. Для этого сочетанием клавиш CTRL+O вызываем меню конфигурации:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre class=\"rtejustify\">\n +-----------[конфигурация]-----------+\n | Каталоги и файлы |\n | Протоколы |\n | Настройка последовательного порта |\n | Модем и дозвон |\n | Экран и клавиатура |\n | Сохранить настройки как dfl |\n | Сохранить настройки как... |\n | Выход |\n +------------------------------------+</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Клавишами навигации (вверх-вниз), выбираем пункт &quot;Настройка последовательного порта&quot;, и жмем клавишу &quot;Enter&quot;:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<pre class=\"rtejustify\">\n +-----------------------------------------------------------------------+\n | A - Последовательный порт : /dev/cuau0 |\n | B - Размещение lock-файла : /var/spool/lock |\n | C - Программа при выходе : |\n | D - Программа при запуске : |\n | E - Скорость/Чётность/Биты : 57600 8N1 |\n | F - Аппаратное управление потоком : Да |\n | G - Программное управление потоком : Нет |\n | |\n | Какую настройку изменить? |\n +-----------------------------------------------------------------------+</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Жмем клавишу &quot;А&quot; и прописывем последовательный порт как <strong>/dev/cuaU0</strong> и жмем &quot;Enter&quot;, потом жмем клавишу &quot;Е&quot; и в открывшемся окне еще раз &quot;Е&quot;, устанавливая етим самым максимальную скорость обмена с портом - 115200. Возвращаемся в minicom,&nbsp; и набираем волшебную команду - ATZ:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><strong>ATZ</strong><br />\n OK</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">В&nbsp;ответ получаем ответ от модема - OK, что подтверждает,&nbsp;что модем &quot;на связи&quot; и ожидает команд.</p>\n<p class=\"rtejustify\">Последний штрих - добавим автоматическую загрузку модулей после запуска системы:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>echo \'usb_load=&quot;YES&quot;\' &gt;&gt; /boot/loader.conf<br />\n </strong># <strong>echo \'uhci_load=&quot;YES&quot;\' &gt;&gt; /boot/loader.conf<br />\n </strong># <strong>echo \'umodem_load=&quot;YES&quot;\' &gt;&gt; /boot/loader.conf</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;</p>\n', created = 1767929597, expire = 1768015997, headers = '', serialized = 0 WHERE cid = '2:b0932e8049511418b403129df486affc' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767929597, expire = 1768015997, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767929597, expire = 1768015997, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

ZyXEL OMNI 56K USB Plus EEВозникла необходимость в подключении ZyXEL OMNI 56K USB Plus EE к серверу под управлением FreeBSD. Подключается он по интерфейсу USB.

Перелопатив в Интернете массу информации, так и не нашел "хау ту", как его подключить. Были посты только по подключению данного модема к серверам под управлением Linux.

В основном же, все советы сводились к тому, что необходимо поменять этот модем на такой же, но с подключением через COM-порт, что, конечно же, не очень устраивает.

На официальном сайте ZyXEL драйвера тоже нашлись только под Windows-системы. Пришлось "копать" наобум...

Итак, имеется система с установленной FreeBSD 8.1 Release:

# uname -a
FreeBSD router.office 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Aug 23 04:33:46 ICT 2010 root@router:/usr/obj/usr/src/sys/Router amd64

Ядро собрано без поддержки USB, поэтому, чтобы не пересобирать ядро еще раз, подгрузим необходимые модули. Загрузим модуль поддержки шины USB:

# kldload /boot/kernel/usb.ko

Потом загружаем модуль хост-контроллера UHCI:

# kldload /boot/kernel/uhci.ko

После этого можно наблюдать то, как проинициализировались устройства на USB-шине (данные валятся в /var/log/messages):

Aug 25 19:52:19 router kernel: uhci0: <Intel 82801G (ICH7) USB controller USB-A> port 0xd400-0xd41f irq 23 at device 29.0 on pci0
Aug 25 19:52:19 router kernel: uhci0: [ITHREAD]
Aug 25 19:52:19 router kernel: usbus0: <Intel 82801G (ICH7) USB controller USB-A> on uhci0
Aug 25 19:52:19 router kernel: usbus0: 12Mbps Full Speed USB v1.0
Aug 25 19:52:19 router kernel: uhci1: <Intel 82801G (ICH7) USB controller USB-B> port 0xd480-0xd49f irq 19 at device 29.1 on pci0
Aug 25 19:52:19 router kernel: uhci1: [ITHREAD]
Aug 25 19:52:19 router kernel: ugen0.1: <Intel> at usbus0
Aug 25 19:52:19 router kernel: uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
Aug 25 19:52:19 router kernel: usbus1: <Intel 82801G (ICH7) USB controller USB-B> on uhci1
Aug 25 19:52:19 router kernel: usbus1: 12Mbps Full Speed USB v1.0
Aug 25 19:52:19 router kernel: uhci2: <Intel 82801G (ICH7) USB controller USB-C> port 0xd800-0xd81f irq 18 at device 29.2 on pci0
Aug 25 19:52:19 router kernel: uhci2: [ITHREAD]
Aug 25 19:52:19 router kernel: ugen1.1: <Intel> at usbus1
Aug 25 19:52:19 router kernel: uhub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
Aug 25 19:52:19 router kernel: usbus2: <Intel 82801G (ICH7) USB controller USB-C> on uhci2
Aug 25 19:52:19 router kernel: usbus2: 12Mbps Full Speed USB v1.0
Aug 25 19:52:19 router kernel: uhci3: <Intel 82801G (ICH7) USB controller USB-D> port 0xd880-0xd89f irq 16 at device 29.3 on pci0
Aug 25 19:52:19 router kernel: uhci3: [ITHREAD]
Aug 25 19:52:19 router kernel: ugen2.1: <Intel> at usbus2
Aug 25 19:52:19 router kernel: uhub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus2
Aug 25 19:52:19 router kernel: usbus3: <Intel 82801G (ICH7) USB controller USB-D> on uhci3
Aug 25 19:52:19 router kernel: usbus3: 12Mbps Full Speed USB v1.0
Aug 25 19:52:19 router kernel: ugen3.1: <Intel> at usbus3
Aug 25 19:52:19 router kernel: uhub3: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus3
Aug 25 19:52:19 router kernel: uhub0: 2 ports with 2 removable, self powered
Aug 25 19:52:19 router kernel: uhub1: 2 ports with 2 removable, self powered
Aug 25 19:52:20 router kernel: uhub2: 2 ports with 2 removable, self powered
Aug 25 19:52:20 router kernel: uhub3: 2 ports with 2 removable, self powered
Aug 25 19:52:20 router root: Unknown USB device: vendor 0x0ace product 0x1611 bus uhub1
Aug 25 19:52:20 router kernel: ugen1.2: <ZyDAS> at usbus1

Следующим шагом будет загрузка модуля модуля поддержки USB-модемов:

# kldload /boot/kernel/umodem.ko

Кстати, он автоматически подгружает зависимый модуль ucom.ko. В результате наблюдаем следующие сообщения в логах:

Aug 25 20:09:21 router kernel: umodem0: <ZyDAS > on usbus1
Aug 25 20:09:21 router kernel: umodem0: data interface 1, has CM over data, has break

Также, можно воспользоваться командой usbconfig, чтбы узнать что за устройство висит на шине:

# usbconfig -u 1 -a 2
ugen1.2: <56K USB Modem ZyDAS> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

В результате этих "танцев с бубном" появляется устройство /dev/cuaU0, что и требовалось доказать. Теперь только осталось проверить работу устройства. Для этого воспользуемся утилитой minicom:

# minicom

Добро пожаловать в minicom 2.4

ПАРАМЕТРЫ: I18n
Дата компиляции Aug 25 2010, 17:39:25.
Port /dev/cuau0

Нажмите CTRL-A Z для получения подсказки по клавишам
 

 Необходимо minicom на работу с портом USB. Для этого сочетанием клавиш CTRL+O вызываем меню конфигурации:

            +-----------[конфигурация]-----------+
            | Каталоги и файлы                   |
            | Протоколы                          |
            | Настройка последовательного порта  |
            | Модем и дозвон                     |
            | Экран и клавиатура                 |
            | Сохранить настройки как dfl        |
            | Сохранить настройки как...         |
            | Выход                              |
            +------------------------------------+

Клавишами навигации (вверх-вниз), выбираем пункт "Настройка последовательного порта", и жмем клавишу "Enter":

    +-----------------------------------------------------------------------+
    | A - Последовательный порт          : /dev/cuau0                       |
    | B - Размещение lock-файла          : /var/spool/lock                  |
    | C - Программа при выходе           :                                  |
    | D - Программа при запуске          :                                  |
    | E - Скорость/Чётность/Биты         : 57600 8N1                        |
    | F - Аппаратное управление потоком  : Да                               |
    | G - Программное управление потоком : Нет                              |
    |                                                                       |
    |    Какую настройку изменить?                                          |
    +-----------------------------------------------------------------------+

 Жмем клавишу "А" и прописывем последовательный порт как /dev/cuaU0 и жмем "Enter", потом жмем клавишу "Е" и в открывшемся окне еще раз "Е", устанавливая етим самым максимальную скорость обмена с портом - 115200. Возвращаемся в minicom,  и набираем волшебную команду - ATZ:

ATZ
OK

В ответ получаем ответ от модема - OK, что подтверждает, что модем "на связи" и ожидает команд.

Последний штрих - добавим автоматическую загрузку модулей после запуска системы:

# echo 'usb_load="YES"' >> /boot/loader.conf
# echo 'uhci_load="YES"' >> /boot/loader.conf
# echo 'umodem_load="YES"' >> /boot/loader.conf

 

Голосов пока нет

Вставай, Україно!

Литература

Сисадмин: - Hу и пусть гoвoрят, чтo испoльзoвать в качестве парoля имя свoегo кoта - дурнoй тoн! RrgTt_fx32!b, кыс-кыс-кыс...