Звонки через 3G модем Huawei E173 (chan_dongle)
Настройка звонков через 3G модем Huawei E173
Huawei E173 — это USB 3G-модем от компании Huawei, который совместим с модулем chan_dongle для Asterisk. Используя этот модем с chan_dongle, вы можете настроить Asterisk для совершения голосовых звонков и отправки SMS через GSM-сеть, превратив модем в полноценный GSM-шлюз.
Dongle модемы работают не стабильно. Им необходимо надежное, стабильное питание и устойчивый GSM сигнал.
Подготовка USB модема
Первым делом посмотрим какие USB устройства подключены к ПК:
lsusb
Bus 001 Device 002: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Тут нам интересно устройство «12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem».
12d1 - это идентификатор вендора.
1001 - идентификатор продукта.
Для корректной работы модема его необходимо перевести в режим «1001 (только модем)».
Далее ищем информацию об устройстве по идентификатору вендора «12d1»:
dmesg | grep 12d1
[ 2.828272] usb 1-1: New USB device found, idVendor=12d1, idProduct=1001, bcdDevice= 0.00
Далее ищем информацию по номеру USB устройства «usb 1-1»:
dmesg | grep 'usb 1-1'
[ 2.262750] usb 1-1: new high-speed USB device number 2 using ehci-pci
[ 2.828272] usb 1-1: New USB device found, idVendor=12d1, idProduct=1001, bcdDevice= 0.00
[ 2.828479] usb 1-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[ 2.828641] usb 1-1: Product: HUAWEI Mobile
[ 2.828754] usb 1-1: Manufacturer: HUAWEI Technology
[ 2.856994] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 2.861194] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 2.864265] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
Теперь нам известны идентификаторы серийных устройств модема ttyUSB0, ttyUSB1, ttyUSB2.
Проверка настроек модема
minicom -D /dev/ttyUSB0
Появится приглашение:
Welcome to minicom 2.8
OPTIONS: I18n
Compiled on Apr 26 2021, 18:06:16.
Port /dev/ttyUSB0, 12:30:42
Press CTRL-A Z for help on special keys
Теперь можно вводить команды AT для управления и настройки модема.
Примеры команд
AT^CARDLOCK? – проверка состояния блокировки модема и количества попыток ввода кода разблокировки:(ответ модема: CARDLOCK: A,B,0 , если A=2 модем разблокирован, A=1 модем заблокирован – SimLock, если A=3 здесь два варианта либо вы израсходовали все 10 попыток ввести код, либо у вас в модеме кастомизированная прошивка, B – количество оставшихся попыток ввода кода разблокировки (по умолчанию 10 раз))
AT^CARDLOCK=«NCK Code» разблокировка модема, для возможности работы со всеми операторами связи
AT^CVOICE=? – проверка состояния голосовых функций модема (0 - значит включено)
AT^CVOICE=0 – включение голосовых функций модема
AT^U2DIAG=0 - включение режима «Только модем»
Что проверяем?
Убедитесь, что модем поддерживает голосовые функции
Модем должен работать в режиме «Только модем»
По возможности (при наличии кода) разблокируйте модем для возможности работы с любым оператором связи
chan_dongle Asterisk
В web интерфейсе АТС переходим в web интерфейсе «Система» - «Кастомизация системных файлов»
Открываем файл «/etc/asterisk/modules.conf»
Выбираем режим «Добавлять в конец файла»
Добавляем код
load => chan_dongle.so
Открываем на редактирование файл «/etc/asterisk/dongle.conf»
Выбираем действие «Заменять полностью»
Копируем конфигурацию
[general] interval=15 [defaults] context=public-direct-dial group=0 rxgain=0 txgain=0 autodeletesms=yes resetdongle=yes u2diag=-1 usecallingpres=yes callingpres=allowed_passed_screen disablesms=no language=en smsaspdu=yes mindtmfgap=45 mindtmfduration=80 mindtmfinterval=200 callwaiting=auto disable=no initstate=start dtmf=relax [dongle0] audio=/dev/ttyUSB1 data=/dev/ttyUSB2
Открываем на редактирование файл «/etc/asterisk/modules.conf»
Выбираем режим «Добавлять в конец файла»
Обязательно добавьте контексты для обработки sms и ussd
[dongle-incoming-ussd] exten => ussd,1,Noop(Incoming USSD: ${BASE64DECODE(${USSDBASE64})}) exten => ussd,n,Hangup() [dongle-incoming-sms] exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})}) exten => sms,n,Hangup()
После настройки «dongle.conf» потребуется перезагрузить АТС
dongle0 - произвольное имя линии, в дальнейшем будет использоваться в Dial команде для исходящих звонков. audio, data - значения этих параметров - адреса серийных устройств, определенных на предыдущем этапе. Верные значения придется определить экспериментально. Если не будет звука, то поменять местами.
Настройка DID
Для корректной обработки входящих звонков какдому dongle необходимо настроить DID номер.
Запускаем консоль asterisk:
asterisk -r
Смотрим список модемов
mikopbx*CLI> dongle show devices ID Group State RSSI Model Firmware IMEI IMSI Number dongle0 0 Free 12 E173 11.126.15.00.209 *** *** 79255283744
Если в колонке «Number» номер не указан, то необходимо выполнить команды
dongle cmd dongle0 AT+CPBS=\"ON\" dongle cmd dongle0 AT+CPBW=1,\"79255283744\",145
Вместо «dongle0» укажите идентификатор своей линии Вместо «79255283744» номер телефона sim карты.
Перезагрузите АТС.
Настройка входящего маршрута
В web перейлите в раздел «Маршрутизация» -> «Входящие маршруты»
Опишите новый маршрут, в поле DID укажите номер sim карты, настроенный на предыдущем этапе:
Настройка исходящих маршрутов
В разделе «Маршрутизация» - «Провайдеры» добавьте новую учетную запись SIP со следующими параметрами:
"Название" - «Dongle0» (может быть произвольным)
"Хост или IP адрес" - укажите 127.0.0.1
"Тип учетной записи" - Аутентификация по IP адресу, без пароля
Из адресной строки браузера скопируйте ID провайдера, он будет иметь вид SIP-TRUNK-ECBE1168
В разделе «Маршуртизация» - «Исходящие маршруты» создайте новый маршрут со следующими параметрами:
Перейдите в раздел "Система" -> "Кастомизация системных файлов". Откройте для редактирования файл "/etc/asterisk/extensions.conf". Выберите режим "Добавлять в конец файла" и вставьте следующий код:
[SIP-TRUNK-ECBE1168-outgoing-custom]
exten => _[0-9*#+]!,1,Set(DIAL_COMMAND=Dongle/dongle0/${number})
same => n,return
Last updated
Was this helpful?