Huawei e1550 linux at

Подключение GSM-модема USB Huawei E1550 к Asterisk 13 + chan_dongle на Debian 8 Jessie.

Появилась интересная задача, которая заключается в том что нужно подключить GSM-модем USB HUAWEI E1550 к Asterisk 13 работающий на Debian 8 Jessie. Настроить возможность принимать/отправлять SMS, принимать/звонить с номера находящегося в GSM-модеме.

Рекомендуется чтобы GSM-модем HUAWEI E1550 работал на прошивке версии: 11.608.12.00.143, а так же чтобы работал только в режиме «только модем».

На момент написания статьи используемая версия Asterisk — 13.25.0, который развернут на Debian 8 Jessie (как развернуть Asterisk 13 на Debian 8 Jessie, можно по этой статье)

Настройка системы и GSM-модема

Обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

Устанавливаем необходимые пакеты для работы с USB GSM шлюзом:

apt-get install usb-modeswitch minicom

usb-modeswitch необходима для автоматического переключения устройства из режима, minicom необходима для подключения к последовательным портам (COM).

Подключаем GSM-модем HUAWEI E1550, проверяем появились ли устройства ttyUSB*:

ls -al /dev | grep ttyUSB crw-rw---- 1 root dialout 188, 0 фев 27 11:34 ttyUSB0 crw-rw---- 1 root dialout 188, 1 фев 27 11:33 ttyUSB1 crw-rw---- 1 root dialout 188, 2 фев 27 12:37 ttyUSB2

Теперь необходимо перевести GSM-модем HUAWEI E1550 в режим работы «только модем».

В случае если GSM-модем HUAWEI E1550, уже находится в режиме работы «только модем», то пропускайте данный пункт и переходите к установке модуля chan_dongle.

Запускаем утилиту для подключения к последовательным портам (COM):

Выбираем пункт «Настройка последовательного порта»:

+-----------[конфигурация]-----------+ | Каталоги и файлы | | Протоколы | | Настройка последовательного порта | | Модем и дозвон | | Экран и клавиатура | | Сохранить настройки как dfl | | Сохранить настройки как. | | Выход | | Выход из Minicom | +------------------------------------+

Нажимаем «A» для выбора имени устройства COM порта, вводим название устройства «/dev/ttyUSB0»

+-----------------------------------------------------------------------+ | A - Последовательный порт : /dev/ttyUSB0 | | B - Размещение lock-файла : /var/lock | | C - Программа при выходе : | | D - Программа при запуске : | | E - Скорость/Чётность/Биты : 115200 8N1 | | F - Аппаратное управление потоком : Да | | G - Программное управление потоком : Нет | | | | Какую настройку изменить? | +-----------------------------------------------------------------------+ | Экран и клавиатура | | Сохранить настройки как dfl | | Сохранить настройки как. | | Выход | | Выход из Minicom | +------------------------------------+

Нажимаем 2 раза ENTER и выбираем «Сохранить настройки как…»

+-----------[конфигурация]-----------+ | Каталоги и файлы | | Протоколы | | Настройка последовательного порта | | Модем и дозвон | | Экран и клавиатура | | Сохранить настройки как dfl | | Сохранить настройки как. | | Выход | | Выход из Minicom | +------------------------------------+

Вводим название профиля, нажимаем ENTER и выбираем пункт «Выход из Minicom»

Читайте также:  Linux командная строка посмотреть содержимое файла

Подключаемся к сохраненному профилю (я сохранил профиль как e1550):

В терминале, вводим команду AT, нажимаем ENTER, должен вернутся результат — «ОК«.

Обратите внимание, что символы, которые вводим, могут не отображаться на экране! Однако, после ввода команды и нажатия Enter, GSM-модем должен отобразить результат.

После успешного выполнения команды AT, выполним команду, которая переключит режим работы GSM-модем, в режим работы «только модем»:

AT^U2DIAG=0 (режим только модем)
AT^U2DIAG=1 (режим модем + CD-ROM)
AT^U2DIAG=255 (режим модем + CD-ROM + Card Reader)
AT^U2DIAG=256 (режим модем + Card Reader)

ATI — Информация о устройстве
AT+CIMI — IMSI модема
AT+CGSN — IMEI модема

Для выхода из программы нажмите Ctrl+A, затем нажмите Q и подтвердите выход нажатием Enter.

Установка модуля chan_dongle

Скачиваем исходник модуля chan_dongle под Asterisk 13 и разархивируем его:

cd /opt wget https://github.com/oleg-krv/asterisk-chan-dongle/archive/asterisk13.zip unzip asterisk13.zip cd asterisk-chan-dongle-asterisk13

Выполняем сборку модуля, компиляцию и установку модуля:

aclocal && autoconf && automake -a ./configure make make install

Не обращаем внимание на строчку «automake: error: no ‘Makefile.am’ found for any configure output» — это не является ошибкой

Копируем конфигурационный файл dongle.conf в каталог asterisk и назначаем ему нужные права:

cp etc/dongle.conf /etc/asterisk/ chown asterisk:asterisk /etc/asterisk/dongle.conf

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

KERNEL=="ttyUSB*", MODE="0666", OWNER="asterisk", GROUP="dialout"

Перезапустим службу udev и asterisk:

service udev restart service asterisk restart

Для проверки, переподключим GSM-модем к системе и проверим назначенные права на него:

ls -al /dev | grep ttyUSB crw-rw-rw- 1 asterisk dialout 188, 0 фев 27 11:34 ttyUSB0 crw-rw-rw- 1 asterisk dialout 188, 1 фев 27 11:33 ttyUSB1 crw-rw-rw- 1 asterisk dialout 188, 2 фев 27 13:09 ttyUSB2

Настройка обработки SMS, USSD, Входящих/Исходящих вызовов

В файле конфигурации (/etc/asterisk/dongle.conf) опишем параметры подключенного устройства HUAWEI E1550.

Для примера скорректируем имеющуюся секцию [dongle0]:

[dongle0] audio=/dev/ttyUSB1 ; tty порт для audio соединений; data=/dev/ttyUSB2 ; tty порт для AT команд; context=from-dongle ; используемый контекст language=ru ; используемый язык ;imei=123456789012345 ;imsi=123456789012345

Параметры imei, imsi должны автоматом подхватится при соединении asterisk c GSM-модемом. Если не этого не произошло, то можно в ручную их указать, в строках imei, imsi.

В консоли asterisk, перечитываем конфигурацию chan_dongle и проверяем состояние устройства. Если все было сделано правильно, то подключение к GSM-модему будет осуществлено и устройство будет отображаться в консоли asterisk:

asterisk -rv dongle reload now dongle show devices ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number dongle0 0 Free 18 5 4 MTS-RUS E1550 11.608.12.00.143 3588*** 2500*** Unknown

Теперь когда соединение с GSM-модемом установлено, настроим dialplan обработки SMS, USSD, входящих и исходящих вызовов. В файле конфигурации (/etc/asterisk/extensions.conf) добавляем следующее:

[dongle-incoming-sms] exten => sms,1,Noop(Incoming SMS from $ $)>) exten => sms,n,System(echo '$,,%Y-%m-%d %H:%M:%S)> - $ - $: $)>' >> /var/log/asterisk/sms.txt) exten => sms,n,Hangup() [dongle-incoming-ussd] exten => ussd,1,Noop(Incoming USSD: $)>) exten => ussd,n,System(echo '$,,%Y-%m-%d %H:%M:%S)> - $: $)>' >> /var/log/asterisk/ussd.txt) exten => ussd,n,Hangup() [dongle-incoming-call] exten => +7915*****13,1,Answer() exten => +7915*****13,n,Playback(demo-echotest) exten => +7915*****13,n,Echo exten => +7915*****13,n,Playback(demo-echodone) exten => +7915*****13,n,Hangup() [dongle-outgoing-call] exten = _X.,1,Dial(Dongle/dongle0/$,,t) exten = _X.,n,Hangup() [from-dongle] include => dongle-incoming-sms include => dongle-incoming-ussd include => dongle-incoming-call include => dongle-outgoing-call

При поступлении SMS и USSD запросов, данные их будут сохранятся в тестовые файлы (/var/log/asterisk/sms.txt), (/var/log/asterisk/ussd.txt). При входящем звонке на номер который находится на GSM-модеме, будет запущен «ЭХО тест», при исходящем будет вызван набранный номер.

Для наглядности работы модуля chan_dongle, приведу выводы из консоли asterisk.

[dongle0] Got SMS from +7985*****73: 'ТЕСТОВОЕ СООБЩЕНИЕ' -- Executing [sms@from-dongle:1] NoOp("Local/sms@from-dongle-00000002;1", "Incoming SMS from +7985*****73 ТЕСТОВОЕ СООБЩЕНИЕ") in new stack -- Executing [sms@from-dongle:2] System("Local/sms@from-dongle-00000002;1", "echo '2019-02-27 11:24:31 - e1550 - +7985*****73: ТЕСТОВОЕ СООБЩЕНИЕ' >> /var/log/asterisk/sms.txt") in new stack -- Executing [sms@from-dongle:3] Hangup("Local/sms@from-dongle-00000002;1", "") in new stack == Spawn extension (from-dongle, sms, 3) exited non-zero on 'Local/sms@from-dongle-00000002;1'
dongle sms dongle0 +7917*****00 HELLO! THIS IS TEST MESSAGE! [dongle0] SMS queued for send with id 0x7fc348000a90 -- [dongle0] Successfully sent SMS message 0x7fc348000a90 [Feb 27 11:30:22] NOTICE[852]: at_response.c:257 at_response_ok: [dongle0] Successfully sent SMS message 0x7fc348000a90

Пример отправки USSD запроса:

dongle ussd dongle0 *100# [dongle0] USSD queued for send with id 0x2e44cc0 -- [dongle0] Successfully sent USSD 0x2e44cc0 [Feb 27 11:37:13] NOTICE[852]: at_response.c:267 at_response_ok: [e1550] Successfully sent USSD 0x2e44cc0 [dongle0] Got USSD type 0 'USSD Notify': 'Баланс:5676,62р ' -- Executing [ussd@from-dongle:1] NoOp("Local/ussd@from-dongle-00000004;1", "Incoming USSD: Баланс:5676,62р ") in new stack -- Executing [ussd@from-dongle:2] System("Local/ussd@from-dongle-00000004;1", "echo '2019-02-27 11:37:15 - e1550: Баланс:5676,62р ' >> /var/log/asterisk/ussd.txt") in new stack -- Executing [ussd@from-dongle:3] Hangup("Local/ussd@from-dongle-00000004;1", "") in new stack == Spawn extension (from-dongle, ussd, 3) exited non-zero on 'Local/ussd@from-dongle-00000004;1'

Очистка SMS из памяти SIM и GSM-модема

Периодически рекомендуется очищать SMS из память SIM и GSM-модема.

Для очистки памяти SIM в консоли asterisk, вводим команды:

dongle cmd AT+CPMS=\"SM\",\"SM\",\"SM\" dongle cmd AT+CMGD=1,4

Для очистки памяти GSM-модема в консоли asterisk, вводим команды:

dongle cmd AT+CPMS=\"ME\",\"ME\",\"ME\" dongle cmd AT+CMGD=1,4
Понравилась или оказалась полезной статья, поблагодари автора

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Всего комментариев: 7 Комментировать

Похоже вы что-то не договариваете в заметке
root@debian:/opt/dongle# aclocal && autoconf && automake -a
aclocal: warning: autoconf input should be named ‘configure.ac’, not ‘configure.in’
automake: warning: autoconf input should be named ‘configure.ac’, not ‘configure.in’
configure.in:50: installing ‘./compile’
configure.in:6: installing ‘./config.guess’
configure.in:6: installing ‘./config.sub’
configure.in:7: installing ‘./install-sh’
configure.in:7: installing ‘./missing’
automake: error: no ‘Makefile.am’ found for any configure output
root@debian:/opt/dongle# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.8 (stretch)
Release: 9.8
Codename: stretch
root@debian:/opt/dongle# uname -a
Linux debian 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
root@debian:/opt/dongle# asterisk -rx «core show version»
Asterisk 15.7.2 built by root @ debian on a x86_64 running Linux on 2019-03-01 13:11:50 UTC
root@debian:/opt/dongle#

Похоже что вы пытаетесь сделать на Asterisk 15.7.2 + Debian 9, хотя в заметке явно указано что все описанное применимо к Asterisk 13 + Debian 8 Jessie! Лично у меня на Asterisk 13 + Debian 8 Jessie, все прекрасно заводится, делая в точности по шагам заметки. На других версиях не пробовал и не могу знать что там за подводные камни могут быть. К примеру указанный в статье модуль chan_dongle поддерживает Asterisk 13, поддержку Asterisk 15, насколько я знаю никто не делал..

Привет всем. У меня такой вот вопрос. Звонит человек извне на номер, привязанный к аналоговому транку DAHDI (Openvox A800p). Еще существует транк chan_dongle на основе модема Huawei E171. Возможно ли его звонок перенаправить каким-либо образом с DAHDI в билайновский chan_dongle, по определенным временным условиям?
ситуация простая, здесь, где я нахожусь, нет возможностей интернета абсолютно, SIP гуляет только от поднятого FreePBX13+Asterisk11 и только внутри. Наружу работают только аналоговая плата OpenVox (один FXO) и усб-модем вышеуказанный. Хотелось бы сделать, чтобы все входящие после восьми часов вечера на основной телефон, который включен в DAHDI инициировал бы дозвон по определенному сотовому номеру донгловский транк и потом как-то их контачил между собой. Звонки c внутренних sipовских экстеншнов нормально проходят по условиям исходящей маршрутизации на chan_dongle. Но , возможно ли осуществить вот такой коннекшн транков ?
простите, я новичок. начал изучение с FreePBX, а не с астера :'( может быть поэтому — туплю

Зачем делать контекст для входящих для проигрывания демо-теста и ложить трубку? Так круто? [dongle-incoming-call]
exten => +7915*****13,1,Answer()
exten => +7915*****13,n,Playback(demo-echotest)
exten => +7915*****13,n,Echo
exten => +7915*****13,n,Playback(demo-echodone)
exten => +7915*****13,n,Hangup()

Источник

Оцените статью
Adblock
detector