3G модем + asterisk. Приложение 3: Работа с 3G модемами в Linux
Обратите внимание: это приложение к статье 3G модем + asterisk.
Определить текущие vid и pid для 3g модема в Linux
Для этого воспользуйтесь командой linux:
lsusb
Подробнее о команде lsusb см. ниже.
Команда usb_modeswitch
Эта команда выполняет переключение режима работы 3g модема. Для ее работы Вам необходимо обладать следующей информацией:
- текущие vid и pid модема (их можно получить с помощью lsusb)
- vid и pid модема в нужном режиме работы (в том, в который Вы хотите переключиться)
- 16-ричная строка инициализации модема (где ее взять см. ниже)
Для начала Вам нужно установить пакет usb_modeswitch. Но дело в том, что в базовых репозиториях RHEL / CentOS usb_modeswitch отсутствует. Поэтому сначала необходимо подключить репозиторий RPMforge / RepoForge. После подключения репозитория установите usb_modeswitch, используя следующую команду:
yum install usb_modeswitch
Теперь, после установки программы, для смены режима работы Вашего 3g модема выполните следующую команду:
usb_modeswitch -v DefaultVendor -p DefaultProduct -V TargetVendor -P TargetProduct -M " 16-ричная строка инициализации модема"
Где:
DefaultVendor и DefaultProduct - это vid и pid, найденные в Windows для модема в режиме "составное устройство";
TargetVendor и TargetProduct - это vid и pid, найденные в Windows для модема в режиме "только модем";
16-ричная строка инициализации - это строка, которая будет передана в модем для смены режима его работы.
Например:
usb_modeswitch -v 12d1 -p 155b -V 12d1 -P 1506 -M "55534243123456780000000000000011062000000100000000000000000000"
usb_modeswitch строка инициализации модема
Самое сложное в команде usb_modeswitch - определить, какую именно 16-ричную строку инициализации нужно послать 3g модему. Можно попытаться найти эту строку через интернет, ориентируясь при поиске на те vid и pid, которые Вы определили. По этим ключевым словам можно и искать:
DefaultVendor = xxxx DefaultProduct = yyyy TargetVendor = zzzz TargetProduct = tttt, MessageContent
где:
xxxx - vid модема в режиме "составное устройство" (в режиме по умолчанию)
yyyy - pid модема в режиме "составное устройство" (в режиме по умолчанию)
zzzz - vid модема в режиме "только модем" (получен после переключения режима модема в Windows)
tttt - pid модема в режиме "только модем" (получен после переключения режима модема в Windows)
Вам нужно найти соответствующую этим идентификаторам строку MessageContent.
Убедиться, что найденная строка правильная, очень просто: попробуйте выполнить команду:
usb_modeswitch -v DefaultVendor -p DefaultProduct -V TargetVendor -P TargetProduct -M " 16-ричная строка инициализации модема"
например:
usb_modeswitch -v 12d1 -p 155b -V 12d1 -P 1506 -M "55534243123456780000000000000011062000000100000000000000000000"
после чего (сделав паузу), выполните команду:
lsusb
и проверьте, соответствуют ли vid и pid модема найденным Вами значениям
TargetVendor и TargetProduct. Если да, то найденная Вами 16-ричная строка - правильная.
Вы также можете поискать нужную 16-ричную строку инициализации по базам usb_modeswitch, например:
http://www.draisberghof.de/usb_modeswitch/device_reference.txt
строка инициализации для 3g модема 420s (E3131):
usb_modeswitch -v 12d1 -p 155b -V 12d1 -P 1506 -M "55534243123456780000000000000011062000000100000000000000000000"
строка инициализации для 3g модема E1550:
usb_modeswitch -v 12d1 -p 1446 -V 12d1 -P 1001 -M "55534243000000000000000000000011060000000000000000000000000000"
Команда lsusb
Для того, чтобы Вы могли воспользоваться программой lsusb, Вам необходимо установить пакет usbutils:
yum install usbutils
После установки пакета откройте командную строку linux, подключите к компьютеру с linux 3g модем, и выполните из командной строки команду (сделайте паузу в несколько десятков секунд между подключением 3g модема и вводом этой команды):
lsusb
Вы увидите на экране строки, подобные этим:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
Bus 001 Device 003: ID 12d1:155b Huawei Technologies Co., Ltd.
Здесь указаны:
Bus xxx - номер шины, к которой подключено устройство
Device xxx: - номер устройства на шине
ID xxxx:yyyy - это как раз и есть vid и pid модема. xxxx - это vid, а yyyy - это pid нашего 3g модема
Строка, в которой будет фигурировать наименование фирмы Вашего модема (и обязательно - строка, в которой vid и pid совпадают с нашими DefaultVendor и DefaultProduct) и будет строкой, которая отображает наш модем.
Подключиться к модему для ввода AT команд
Для подключения к COM портам предназначена программа minicom. В RHEL / CentOS установить её можно следующей командой:
yum install minicom
Подробно о том, как пользоваться программой minicom, Вы можете прочитать в интернете. Здесь приводится только краткая инструкция по проверке работы 3g модема. Выполните ее строго по порядку:
- Запустите команду:
minicom -s
- Выберите пункт "Serial port setup" ("Настройка последовательного порта")
- Нажмите "A" для выбора имени устройства COM порта
- Введите название устройства: /dev/ttyUSB...
- Нажмите Enter 2 раза
- Выберите пункт "Save setup as .." ("Сохранить настройки как")
- Введите название профиля, например:
3g
- Дождитесь сохранения профиля и выберите пункт "Exit from minicom" (Выход из minicom)
- Теперь запустите из командной строки:
minicom имя-профиля
например:
minicom 3g
- Если программа "вылетит" с ошибкой, значит проблема в драйвере (либо драйвере модема, либо драйвере COM порта - usbserial, и т.д.). Далее мы предполагаем, что программа открылась нормально, и отобразила пустое (или непустое) окошко.
- Введите команду:
ATI
После чего нажмите Enter. Обратите внимание: символы, которые Вы вводите, могут не отображаться на экране! Однако, после ввода команды и нажатия Enter, модем должен отобразить результат (подробнее о команде и её результатах см. Приложение 1 "AT команды для 3g модемов").
- Выполните нужные Вам AT команды для модема.
- Для выхода в меню программы нажмите Ctrl+A, затем Z
- Для выхода из программы (находясь в меню) нажмите Q и подтвердите выход нажатием Enter.
- Если программа не выдает никакой информации (или выдает абракадабру) в ответ на AT команды, значит неверно указано имя устройства, на котором находится часть 3G модема, принимающая AT-команды. Попробуйте другое имя (обычно это ttyUSBx, где x - цифра от 0 до 2).
Вы читаете статью "3G модем + asterisk", состоящую из нескольких частей:
- 3G модем + asterisk. Часть 1: Подключение модема к компьютеру и перевод из режима "составное устройство" в режим "только модем".
- 3G модем + asterisk. Часть 2: Настройка chan_dongle и asterisk.
- 3G модем + asterisk. Часть 3: Настройки chan_dongle - проблемы и решения.
- 3G модем + asterisk. Приложение 1: AT команды для 3G модемов.
- 3G модем + asterisk. Приложение 2: Работа с 3G модемами в Windows.
- 3G модем + asterisk. Приложение 3: Работа с 3G модемами в Linux.
|