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

Версия для печатиОтправить другу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

 

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

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

Литература