Меню

asterisk настройка usb модема

3G модем + asterisk. Часть 1: Подключение модема к компьютеру и перевод из режима «составное устройство» в режим «только модем»

1. Подключение 3G модема к компьютеру (Linux / Windows)

Модем должен подключаться к компьютеру без каких бы то ни было удлиннителей или пассивных хабов. В принципе, возможно — через активный хаб. Но если не через активный хаб, то только напрямую в разъемы USB, распаянные на материнской плате. В частности, это означает, что разъемы USB в передней части компьютера [речь идет о стационарных компьютерах] не подходят, модем должен втыкаться только сзади. В частности, это необходимо для успешной прошивки модема (если такая потребуется).
Если Вы подключаете 3G модем к этому компьютеру впервые, см. Приложение 2 «Работа с 3g модемом в Windows».

1.1 Подключение модема к компьютеру с linux

Теперь мы первым делом попробуем подключить модем к компьютеру с linux, на котором впоследствии будет установлен (а возможно, что уже установлен) asterisk. Вы можете воспользоваться физическим компьютером для непосредственной установки linux, либо установить программу для работы с виртуальными машинами и установить linux в виртуальной машине. Обратите внимание: в этом случае программа для работы с виртуальными машинами (гипервизор) должна поддерживать подключение устройств к этим виртуальным машинам (например, на данный момент Microsoft Hyper-V этого не поддерживает).

1.2 Проверка наличия устройств ttyUSB*

Теперь давайте проверим, появились ли устройства ttyUSB в Linux. Для этого выполните команду:
ls -la /dev/ttyUSB*
В случае, если устройства появились, Вы увидите строки вида:
/dev/ttyUSB0
/dev/ttyUSB1
.
или
/dev/ttyUSB_utps_diag
/dev/ttyUSB_utps_modem
/dev/ttyUSB_utps_pcui

Если Вы увидите сообщение вида:
ls: cannot access /dev/ttyUSB*: No such file or directory
это означает, что таких файлов не появилось.

Однако, тут возможны варианты: файлы могут называться ttyACM. Чтобы найти такие устройства, выполните команду:
ls -la /dev/ttyACM*

Если устройства ttyUSB* или ttyACM* есть, можете смело пропустить множество других пунктов и переходить сразу к пункту 5 данной статьи.
Если устройств нет, значит драйвер модема не установлен, и необходимо сначала подробно разобраться с тем, какой модели этот модем, в каком режиме он находится и так далее. Для того, чтобы узнать все это, и решить возникшие проблемы, читайте ниже.

2. Сбор информации о модеме

Всю предварительную информацию о 3g модеме мы соберем в операционной системе Microsoft Windows, поскольку в ней, даже если модем находится в режиме «составное устройство», к нему можно посылать AT команды, и, тем самым, переводить его из режима в режим безо всяких сложностей. Если Вы подключаете 3G модем к этому компьютеру впервые, см. Приложение 2 «Работа с 3g модемом в Windows».

Нам необходимо собрать следующую информацию о модеме:

  1. Модель модема — чтобы узнать, поддерживается ли модель модулем chan_dongle (и сможет ли модем работать с asterisk).
  2. Версия прошивки — с той же целью, что и пункт 1, кроме того, можно узнать возможность обновления прошивки (проверив это на сайте изготовителя).
  3. Поддержка голоса модемом — чтобы при необходимости, включить поддержку голоса или перепрошить модем.
  4. Текущий режим работы модема.
  5. Текущие vid и pid модема — для идентификации устройства в linux (особенно если у Вас имеются несколько подключенных 3G модемов).
  6. vid и pid модема в режиме «только модем» — чтобы указать их для команды usb_modeswitch в linux.

2.1 Модель модема

Модель модема может быть написана как на самом модеме (рядом с USB разъемом, на задней стенке модема, либо под крышкой рядом с раъемом для SIM карты), так и может быть получена с помощью AT-команды:
ATI
Эту команду нужно отправить на модем. Как отправлять AT-команды на 3G модем в Windows, см. Приложение 2 «Работа с 3g модемом в Windows». Узнать подробнее о команде ATI Вы можете в Приложении 1 «AT команды для 3g модемов».

2.2 Версия прошивки

Версию прошивки 3g модема можно узнать с помощью AT-команды:
ATI
Эту команду нужно отправить на модем. Как отправлять AT-команды на 3G модем в Windows, см. Приложение 2 «Работа с 3g модемом в Windows». Узнать подробнее о команде ATI Вы можете в Приложении 1 «AT команды для 3g модемов».

2.3 Поддержка голоса модемом

Вы сразу же (до начала любых действий с модемом) можете определить, поддерживает он голосовые вызовы (и решить для себя, нужно ли перепрошивать модем и т.д.). Определить поддержку голоса 3g модемом можно, отправив AT-команду:
AT^CVOICE=?
Эту команду нужно отправить на модем. Как отправлять AT-команды на 3G модем в Windows, см. Приложение 2 «Работа с 3g модемом в Windows». Узнать подробнее о команде AT^CVOICE Вы можете в Приложении 1 «AT команды для 3g модемов».

Вы также можете попробовать активировать поддержку голосовых вызовов в 3g модеме.
Небольшое введение: голосовые функции могут быть отключены на низком уровне (не предактивированы), на более высоком (предактивированы, но при звонках с модема ничего не слышно), и на уровне пользовательского софта (так называемых дашботов), когда звонки с модемов поддерживаются, но в программке от МТС, Билайна или другого оператора просто нет соответствующей вкладки для набора номера и совершения звонков.
В случае, если голосовые функции отключены на низком уровне, необходимо производить перепрошивку и/или разблокировку модема.
Если же функции голосовых звонков предактивированы, то можно воспользоваться AT командой AT^CVOICE для включения голосовых звонков. Узнать подробнее о команде AT^CVOICE Вы можете в Приложении 1 «AT команды для 3g модемов»..
В случае, когда в программе от Вашего оператора просто нет соответствующей вкладки для набора номера — ничего делать не нужно, мы будем звонить, используя собственное ПО (chan_dongle).

Читайте также:  ufc 2010 psp настройки

2.4 Режим работы модема

Возможно, что Вы начали читать эту статью, уже проведя какие-либо эксперименты с 3g модемом. Или же (по разным причинам) Ваша версия Windows или Linux при подключении модема сразу же (автоматически) переводят его в другой режим (отличающийся от режим по умолчанию) — например, сразу при первом же подключении Ваш модем уже может быть в режиме «только модем».

Для чего нужно определить текущий режим работы 3g модема? Дело в том, что в разных режимах модем имеет разные vid и pid. Например, модем Huawei 1550:
в режиме по умолчанию (AT^U2DIAG=255) vid=12D1, pid=14AC;
в режиме «модем + CDROM» (AT^U2DIAG=1) vid=12D1, pid=1003;
в режиме «только модем» ( AT^U2DIAG=0) vid=12D1, pid=1001;

Чтобы устранить эти неясности, Вам необходимо определить, в каком режиме на данный момент работает Ваш модем. Для этого используется AT-команда:
AT^GETPORTMODE
и (в дополнение к ней) AT команда:
AT^U2DIAG?
Узнать подробнее об этих командах Вы можете в Приложении 1 «AT команды для 3g модемов». Как подключиться в Windows к модему, чтобы вводить AT команды, см. Приложение 2 «Работа с 3g модемом в Windows». Обратите внимание: эти команды могут срабатывать не для всех моделей 3G модемов. Например, модель Huawei E1550 не понимает ни «AT^GETPORTMODE», ни «AT^U2DIAG?».

2.5 Текущие vid и pid модема (в режиме по умолчанию)

Узнать текущие vid и pid можно в windows сразу после подключения модема (и установки драйверов 3g модема), когда модем находится в режиме «составное устройство». О том, как это сделать, написано в Приложении 2 «Работа с 3g модемом в Windows».
Запишите найденные значения для себя как DefaultVendor (vid) и DefaultProduct (pid).

2.6 vid и pid модема в режиме «только модем»

2.6.1 Перевод 3g модема в режим «только модем»

Для того, чтобы перевести 3g модем в режим «только модем», достаточно послать ему AT команду:
AT^U2DIAG=0
или
AT^SETPORT=»A1,A2;1,2,3″
(зависит от модели модема)
Узнать подробнее об этих командах Вы можете в Приложении 1 «AT команды для 3g модемов». Как подключиться в Windows к модему, чтобы вводить AT команды, см. Приложение 2 «Работа с 3g модемом в Windows».

После ввода этих команд для смены режима работы модема необходимо его физически отключить от компьютера, и, сделав паузу в несолько секунд, подключить снова.

Теперь убедитесь, что модем находится в режиме «только модем»:

  1. Сделайте паузу для того, чтобы Windows установила драйверы для модема, находящегося в другом режиме работы.
  2. Проверьте, что отсутствует виртуальный CDROM дисковод, который обычно появляется при подключении модема.
  3. Проверьте, что отсутствует съемный диск (SD-кардридер), который обычно появляется при подключении модема.
  4. Для полной уверенности, что модем находится в нужном режиме, выполните AT команду для определения режима работы 3g модема:
    AT^GETPORTMODE
    или:
    AT^U2DIAG?
    Узнать подробнее об этих командах Вы можете в Приложении 1 «AT команды для 3g модемов». Как подключиться в Windows к модему, чтобы вводить AT команды, см. Приложение 2 «Работа с 3g модемом в Windows».

2.6.2 Текущие vid и pid модема (в режиме «только модем»)

Текущие vid и pid можно узнать так же, как и в пункте 2.5 (см. Приложение 2 «Работа с 3g модемом в Windows»). Обратите внимание: новые vid и pid должны отличаться от тех, которые были в режиме «составное устройство»! Точнее, скорее всего, будет отличаться только pid модема.
Запишите их значения для себя как TargetVendor (vid) и TargetProduct (pid).

3. Перевод 3G модема в режим «только модем» в Linux

Теперь нам необходимо перевести 3G модем в режим «только модем» в системе linux, чтобы в следующих шагах настроить chan_dongle и asterisk для работы с этим модемом.

3.1 Проверка режима работы модема в Linux

Для начала необходимо проверить, сразу после подключения модема, в каком режиме он находится. Для этого (сделав паузу в несколько секунд после подключения) выполните команду:
lsusb
Подробнее об этой команде Вы можете прочитать в Приложении 3 «Работа с 3g модемом в Linux». Сравните vid и pid Вашего 3g модема c DefaultVendor (vid) и DefaultProduct (pid), полученные Вами в системе Windows. Если они совпадают, значит модем находится в режиме по умолчанию, и его надо будет сменить на режим «только модем». Если же vid и pid совпадают с TargetVendor (vid) и TargetProduct (pid), полученные Вами в Windows, то Ваш 3g модем уже находится в режиме «только модем» и Вам ничего делать не нужно, достаточно перейти к следующему пункту.

Читайте также:  windows 7 нет настроек разрешения экрана

3.2 Перевод 3g модема в режим «только модем» в Linux

Для смена режима работы Вашего 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»

Самое сложное в этом — определить тут 16-ричную строку инициализации, которую нужно послать модему. Можно попытаться найти ее через интернет, подробнее см. Приложение 3 «Работа с 3g модемом в Linux».
Подробнее о команде usb_modeswitch см. Приложение 3 «Работа с 3g модемом в Linux».

3.3 Проверка правильности перевода 3g модема в режим «только модем» в linux

Чтобы убедиться, что Вы всё выполнили правильно, необходимо проверить, что модем переключился в режим «только модем». Для этого выполните команду:
lsusb

Подробнее об этой команде Вы можете прочитать в Приложении 3 «Работа с 3g модемом в Linux».
В результате выполнения команды Вы должны увидеть (в частности) Ваш 3G модем (обратите внимание! Теперь модем может называться по-другому, в частности, отображаться как будто это другая модель!).
Как определить наличие Вашего модема? Очень просто! Найдите в списке устройств устройство, у которого vid и pid соответствуют TargetVendor и TargetProduct (это те vid и pid для модема в режиме «только модем», которые мы определили под Windows). Если такое устройство есть — значит, всё в порядке, модем переключен в нужный режим. Если нет — значит, либо инициализация модема не закончена (сделайте паузу в несколько десятков секунд и выполните lsusb еще раз), либо (если после ввода команды usb_modeswitch прошло более минуты) модем не перешел в нужный режим — значит, Вы что-то указали неверно (DefaultVendor/DefaultProduct, TargetVendor/TargetProduct или строку инициализации).

Полезная информация: если Вам, несмотря ни на что, не удалось перевести 3g модем в режим «только модем» в системе Linux (например, Вы не нашли команду инициализации, MessageContent), то Вы можете решить эту проблему следующим образом:

  1. Установите Linux на виртуальную машину в Windows системе.
  2. Подключите 3G модем.
  3. Переведите модем в режим «только модем» в операционной системе Windows.
  4. Отключите и подключите модем заново, чтобы изменение режима его работы вступило в силу.
  5. Пробросьте этот модем в виртуальную машину с Linux («подключите» это устройство к виртуальной машине с установленным Linux средствами Вашего менеджера виртуальных машин — гипервизора)
  6. Всё! 3G модем в линуксе (в виртуальной машине) будет уже в режиме «только модем»!

4. Автоматический перевод 3g модема в режим «только модем» в Linux при перезагрузке компьютера

Обратите внимание: если Вам успешно удалось перевести Ваш 3g модем в режим «только модем» в Linux, то это еще не значит, что он теперь всегда будет оставаться в таком режиме.После физического извлечения из компьютера (и последующего подключения) модем снова окажется в режиме «составное устройство» (если при первом подключении к Linux он был в этом режиме). Обратите также внимание, что если Вы не извлекали модем из компьютера, то даже после перезагрузки Linux модем может остаться в режиме «только модем» (а сбросить этот режим может физическое извлечение модема из компьютера).

Внимание! Не торопитесь автоматически переводить модем в режим «только модем»! Вам может понадобиться установка драйверов модема [драйверов для Linux], находящихся на виртуальном компакт-дисководе модема! Подробнее об этом см. следующую часть статьи.

Рассмотрение настройки udev / usb_modeswitch для автоматизации смены режимы работы модема выходит за рамки этой статьи. Информацию Вы можете найти в интернете.

5. Поиск и подключение/создание устройств /dev/ttyUSB*

Обратите внимание: переведя 3g модем в режим «только модем», Вы можете как получить сразу, та и не получить устройства /dev/ttyUSB0, /dev/ttyUSB1 и т.д.! Разумеется, эти устройства могут сразу же автоматически появиться в системе, однако это не обязательно так.

5.1 Проверка наличия устройств ttyUSB*

Для начала давайте проверим, появились ли эти эти устройства в Linux. Для этого выполните команду:
ls -la /dev/ttyUSB*
В случае, если устройства появились, Вы увидите строки вида:
/dev/ttyUSB0
/dev/ttyUSB1
.
или
/dev/ttyUSB_utps_diag
/dev/ttyUSB_utps_modem
/dev/ttyUSB_utps_pcui

Читайте также:  не включается настройка radeon

Если Вы увидите сообщение вида:
ls: cannot access /dev/ttyUSB*: No such file or directory
это означает, что таких файлов не появилось.

Однако, тут возможны варианты: файлы могут называться ttyACM. Чтобы найти такие устройства, выполните команду:
ls -la /dev/ttyACM*

Если устройства ttyUSB* или ttyACM* есть, можете смело пропустить оставшиеся шаги на этом этапе.
Если устройств нет, значит драйвер usbserial не сработал для Вашего модема, и теперь необходимо производить настройку вручную.

5.2 Ручное создание/подключение устройств /dev/ttyUSB*

Для ручного подключения USB 3G модема в качестве COM порта (именно этот режим обеспечивает появление устройств /dev/ttyUSB*) выполните следующую команду:
modprobe -v usbserial vendor=0x TargetVendor product=0x TargetProduct
Где TargetVendor и TargetProduct — это vid и pid модема, которые были назначены ему в режиме «только модем».
например:
modprobe -v usbserial vendor=0x12d1 product=0x1506

В случае, если команда выполнена успешно, Вы увидите сообщение типа:
insmod /lib/modules/2.6.32-431.17.1.el6.i686/kernel/drivers/usb/serial/usbserial.ko vendor=0x12d1 product=0x1506

Если же никаких сообщений не появилось, или выдано сообщение об ошибке, то скорее всего, подключить USB как COM порт не удалось.

После выполнения этой команды проверьте, пояились ли устройства ttyUSB*:
ls -la /dev/ttyUSB*
В случае, если устройства появились, Вы увидите строки вида:
/dev/ttyUSB0
/dev/ttyUSB1
.

6. Диагностика работы COM портов 3g модема

Теперь необходимо проверить, действительно ли модем «откликается» по требуемым портам, сможет ли с ним работать asterisk? Для этого необходимо подключиться к COM портам (ttyUSB* или ttyACM*) и попробовать ввести несколько AT команд модема, чтобы убедиться, что модем работает нормально.
Для подключения к COM портам предназначена программа minicom. В RHEL / CentOS установить её можно следующей командой:
yum install minicom

Подробно о том, как пользоваться программой minicom, Вы можете прочитать в интернете. Здесь приводится только краткая инструкция по проверке работы 3g модема. Выполните ее строго по порядку:

  1. Запустите команду:
    minicom -s
  2. Выберите пункт «Serial port setup» («Настройка последовательного порта»)
  3. Нажмите «A» для выбора имени устройства COM порта
  4. Введите название устройства: /dev/ttyUSB.
    • если у Вас ttyUSB0, ttyUSB1, ttyUSB2 — введите /dev/ttyUSB1 (или /dev/ttyUSB0) (скорее всего, /dev/ttyUSB2 используется для аудиопотока, хотя и не факт!)
    • если у Вас ttyUSB_utps_diag, ttyUSB_utps_pcui, ttyUSB_utps_modem — введите /dev/ttyUSB_utps_diag или /dev/ttyUSB_utps_pcui (скорее всего, ttyUSB_utps_modem используется для аудиопотока)
  5. Нажмите Enter 2 раза
  6. Выберите пункт «Save setup as ..» («Сохранить настройки как»)
  7. Введите название профиля, например:
    3g
  8. Дождитесь сохранения профиля и выберите пункт «Exit from minicom» (Выход из minicom)
  9. Теперь запустите из командной строки:
    minicom имя-профиля
    например:
    minicom 3g
  10. Если программа «вылетит» с ошибкой, значит проблема в драйвере (либо драйвере модема, либо драйвере COM порта — usbserial, и т.д.). Далее мы предполагаем, что программа открылась нормально, и отобразила пустое (или непустое) окошко.
  11. Введите команду:
    ATI
    После чего нажмите Enter. Обратите внимание: символы, которые Вы вводите, могут не отображаться на экране! Однако, после ввода команды и нажатия Enter, модем должен отобразить результат (подробнее о команде и её результатах см. Приложение 1 «AT команды для 3g модемов»).
  12. Выполните команды для проверки работы модема (например, определите IMSI и IMEI — это обязательно нужно для chan_dongle в asterisk, если эти команди почему-то не срабатывают, обязательно необходимо решить эту проблему до продолжения настройки модема). Как определить IMSI / IMEI, см. Приложение 1 «AT команды для 3g модемов».
  13. Для выхода в меню программы нажмите Ctrl+A, затем Z
  14. Для выхода из программы (находясь в меню) нажмите Q и подтвердите выход нажатием Enter.
  15. Если программа не выдает никакой информации (или выдает абракадабру) в ответ на AT команды, вернитесь к пункту 1, и выполняя всё заново, в пункте 4 измените название устройства: вместо /dev/ttyUSB0 укажите /dev/ttyUSB1 или /dev/ttyUSB2. Вам необходимо определить название устройства, это название Вам понадобится для настройки asterisk chan dongle.

Настройка модема в Linux закончена:

  1. модем находится в режиме «только модем»
  2. в системе имеются устройства типа ttyUSB0, ttyUSB1.
  3. ttyUSB0, ttyUSB1. работают, т.е. Вы можете посылать модему AT команды
  4. Вы знаете, какими командами в linux снова произвести смену режима работы 3g модема, чтобы он работал в режиме «только модем» (и как подключить устройства ttyUSB*), если модем будет извлечен из компьютера или linux будет перезагружен.

Обратите внимание: в случае перезагрузки системы и/или извлечения USB модема инициализацию в Linux надо будет производить повторно! (Если Вы не настроили автоматическую смену режима работы 3g модема при подключении).

Вы читаете статью «3G модем + asterisk», состоящую из нескольких частей:

Статья опубликована: июль 2014, обновлена: 19.11.2017

источник

Добавить комментарий

Adblock
detector