RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Задача: подключить купленый недавно за 2000 в магазине usb gsm модем huawei eg162 к корпоративному серверу для отправки с него смс.
Проблема, собственно, заключается в том, что модемы серии huawei просто так не воспринимаются freebsd.
Первый и довольно-таки важный шаг - проверить, снят ли пин-код на симкарте!
Мною было потрачено пару часов на разбор, почему не работает отправка и
прием смс, оказывается, стоял пин-код. Пин не сложно указать потом в
конфигурационном файле(если требуется).
Особенности подключения внешних модемов - они изначально подключаются
как сменный накопитель(или как внешний cdrom), после установки
драйверов с которых флешка переключается в режим модема.
Для того, чтобы впоследствии корректно обрабатывать флешку мне пришлось подклюить модуль ubsa (usb-rs232(компорт)):
# kldload ubsa
чтобы потом модуль загружался автоматичеси, можно добавить его в /boot/loader.conf
ubsa_load="YES"
Возможно, может потребоваться подключение модулей ucom и umodem. Технология подключения точно такая же.
Итак, подключаем устройство и смотрим, подключилось ли:
# usbdevs -v
Controller /dev/usb0:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 addr 2: full speed, power 500 mA, config 1, HUAWEI Mobile(0x1001), HUAWEI Technologies(0x12d1), rev 0.00
port 2 powered
Есть контакт! Посвятим немного времени обзору: HUAWEI Technologies(0x12d1) - это код производителя HUAWEI Mobile(0x1001) - номер модели(меняется в случае разных huawei'ев)
Однако, для работы нам нужен порт, который, как правило, обозначается в freebsd как /dev/cuaU0, цифра на конце может менятся в зависимости от уже подключенных устройств.
Проверяем, активен ли наш модем:
# ls /dev | grep cuaU
Ответ пуст, модем еще не активен.
В 7 ветке freebsd(а возможно и в более ранних) уже есть поддержка модемов huawei, необходимо лишь включить нужный режим.
Большинство мануалов в интернете относятся к моделям huawei e220, нам подходит т.к. принцип работы у них тот же.
В частности, предлагается внести следующие изменения в ядро:
Я привожу этот код для того, чтобы если кто-то ищет подобные материалы, находил эту статью.
Нам не придется перекомпилировать ядро, не нужно даже подключать
дополнительных модулей. Все что требуется для включения работы модема -
это послать ему сигнал на переключение режима, чем и занимается
вышеприведенный код драйвера, но есть простая программа, проделывающая
то же самое изменение:
Для использования создаем файл: huawei.c, переносим в него код программы, а затем создаем исполняемый файл:
# cc -o huawei huawei.c
запускаем:
# ./huawei /dev/usb0 2
где /dev/usb0 и 2 - это цифры из usbdevs -v ("Controller /dev/usb0" и "port 1 addr 2")
Если возвращает "Error!" - что-то в параметрах указано неверно. Если
все верно нужно попробовать запустить программу еще раз. Верным
результатом будет пустая строка.
В дальнейшем можно добавить эту строчку в автозапуск системы.
Проверяем, активен ли наш модем:
# ls /dev | grep cuaU
В данном случае вывод должен содержать:
cuaU0
cuaU0.init
cuaU0.lock
В зависимости от модели портов может быть несколько.
Все! Теперь можно работать с нашим модемом. Если требуется подключение
к сети интернет, нужно поискать статью о подключении к интернет с
помощью gsm модема, мне требовалось подключить обработу смс, поэтому
ставим smstools:
# pkg_add -r smstools
Теперь внимание: модель huawei eg162, а, возможно, и другие модели huawei'ов,
почему-то не поддерживает аппаратного управления хэндшейком... И плюс к
тому, не поддерживает строку преинициализации и не работал у меня без
ATZ.
Таким образом после минимальной подстройки рабочий конфиг /usr/local/etc/smsd.conf: