Установка chan_dongle


Модуль chan_dongle необходим для работы с модемами Huawei:

  • K3715
  • E169 / K3520
  • E155X
  • E175X
  • K3765

Описываемая в данной статье версия является форком основного проекта, но основной проект не развивается с 2013 года и поддерживает только Asterisk 11. Впрочем, есть еще один форк той версии, что используется в данной статье. В связи с этим гарантировать работу модуля невозможно. Со списком известных багов можно ознакомиться по этой ссылке, но не ожидайте, что автор их исправит, так как этот список не обновлялся с 2011 года. Даже сам автор предупреждает, что модуль работает как попало и может назвонить вам куда нибудь и тем самым сожрать все ваши деньги или натворить еще что-то. Так что пожалуйста, прежде чем читать дальше, еще раз подумайте, стоит ли связываться с этим модулем. На сегодняшний день это единственный модуль, способный заставить дружить недорогие GSM-модемы с Asterisk и, скорее всего, у Вас нет выбора.

This channel driver is in alpha stage.
I am not responsible if this channel driver will eat your money on your SIM card or do any unpredicted things.

Модемы должны быть разлочены, проверка PIN-кода на SIM-карте должна быть отключена. Также необходимо обязательно отключить на модемах функции CR-ROM и CARDREADER, оставив модем только в режиме модема. Для этого необходимо подключиться к модему консолью и дать следующую АТ-команду:

Также желательно отключить на модеме ожидание вызова:

Установите необходимые для сборки chan_dongle пакеты

Далее загружаем форк chan_dongle под Asterisk 13, разархивируем, собираем, устанавливаем. Не обращаем внимание на строчку «automake: error: no ‘Makefile.am’ found for any configure output» — это не является ошибкой

Копируем конфигурационный файл dongle.conf

Перезапускаем Asterisk, смотрим, загрузился ли модуль

Далее необходимо сделать так, чтобы модемам при подключении назначался верный владелец (чтобы Asterisk имел к ним доступ). Для этого создадим файл /etc/udev/rules.d/92-dongle.rules со следующим содержимым

Затем перезапустим службу udev

Теперь при подключении устройства типа ttyUSB, система автоматически назначит ему владельца asterisk и группу dialout.

Идентификация по IMSI или IMEI

В Файле /etc/asterisk/dongle.conf описываются все устройства. Синтаксис файла — общепринятый в Asterisk. Например, я опишу модем, в котором установлена SIM-карта оператора Киевстар:

Идентификация устройства производится по imsi и imei. Можно идентифицировать устройство только по одному из параметров. imsi — это идентификатор SIM-карты, imei — это идентификатор терминала. Если Вам важно идентифицировать устройства по SIM-картам, тогда Вы можете указать только imsi номера этих SIM-карт (написаны на картах), если же важно идентифицировать по терминалам, тогда указывайте imei терминала (написан на модеме).

Все входящие вызовы с такого устройства будут обработаны контекстом from-dongle из файла extensions.conf или extensions.ael.

Исходящие вызовы через данный модем необходимо направлять на Dongle/GSM1

Также в описании устройства можно указать exten=+79123456789. В таком случае все входящие вызовы будут иметь указанный exten. В некоторых случаях это возможно понадобится.

Если идентификация по IMEI / IMSI не работает

В последней версии chan_dongle обнаружение устройств выполняется либо по идентификатору терминала (модема) — IMEI, либо по идентификатору абонента (SIM-карты) — IMSI. Если же по каким-то причинам Вам необходимо идентифицировать устройство по порту USB-контроллера, то используйте расширенную конфигурацию udev для присвоения псевдонимов портам, а затем эти псевдонимы можно использовать для определения модемов в dongle.conf.

Для привязки модемов по номеру порта контроллера USB, нужно определить адреса этих портов. Извлеките все модемы из сервера, затем запустите

Вставляйте по одному модему и записывайте адреса портов контроллера, которые относятся к каждому из них. Затем в файл /etc/udev/rules.d/92-dongle.rules допишите псевдонимы для каждого из модемов, указав адреса контроллеров в качестве ID, подобно следующему:

Как видно из примера, необходимы только два порта, вместо четырех.

Теперь в файле /etc/asterisk/dongle.conf вместо идентификации по IMEI и/или IMSI укажите идентификацию по портам USB следующим образом:

Однако этот метод определения модемов не является рекомендуемым, т.к. при случайной смене USB-порта либо вообще ничего не будет работать, либо Ваши вызовы пойдут не туда куда планировалось. Настоятельно рекомендуется использовать идентификацию по IMEI / IMSI.

На этом установка полностью завершена.