Asterisk freepbx настройка windows huawei 1550

Обновлено: 03.07.2024

25 thoughts on “ VoIP-GSM шлюз для Asterisk на USB модеме HUAWEI E1550 ”

Познавательно!
Как к астериску прикрутить X-lite, что бы звонить с него через модем?

Сразу прошу прощения за откровенно дилетантские вопросы, но с астериском дружу не больше недели :-)

*CLI> dongle show devices
ID Group State RSSI Mode Submode Provider Name Model Firmware
Number
dongle0 0 Free 7 5 4 MTS-RUS E173 11.126.85.00.209

Перезагрузил астриск, исходящие звонки пошли, а вот входящие всё равно на X-lite не проходят :-(

Вот пример, ниже содержимое файла /etc/asterisk/dongle.conf:
[dongle0]
context=from-gsm
audio=/dev/ttyUSB1
data=/dev/ttyUSB2

Большое спасибо за помощь!
Тперь идут звонки и исходящие, и входящие с/на X-lite :-)

Сергей, не расскажите как поэтапно GoIP 4 к астериску прикрутить?

Итого, заработало так:
[dongle0]
audio=/dev/ttyUSB1
data=/dev/ttyUSB2

до этого я рубился через НЕПРАВИЛЬНУЮ НАСТРОЙКУ
[dongle0]
audio=/dev/ttyUSB0
data=/dev/ttyUSB2

Нажмите CTRL-A Z для получения подсказки по клавишам

Т.е. эта железка замечательно отвечает как бэ датой с другого tty (

Тьфу, наеправильная настройка была
audio=/dev/ttyUSB2
data=/dev/ttyUSB0

Он видел эту дату, отзывался, но звонки не принимал.

Спасибо, Сергей!
Буду разбираться.

ещё есть вопрос

Сергей, я всё устанавливал по Вашей статье, есть ли особые рекомендации как установить GUI? Можно ли по этой статье wiki.enchtex.info/howto/asterisk/asterisk-ubuntu-10.04 (Установка GUI)? Ничего не слетит?

знаю что дело в диалпланах. но голова уже едит кругом

если не тяжело пример показать

[dongle0]
audio=/dev/ttyUSB1
data=/dev/ttyUSB2

[dongle1]
audio=/dev/ttyUSB4
data=/dev/ttyUSB5

Выборочно можно, только кто будет выбирать?

ну я думал добавочную цифру вводить например

99+номер моб телефона => dongle0
номер моб телефона => dongle1

VoIP-GSM шлюз USB Huawei E1550 Asterisk & FreePBX Distro на CentOS 6

В период кризиса и девальвации национальной валюты, идет резкое удорожание разнотипного VoIP оборудования. Не всегда малый бизнес готов сразу выкинуть несколько миллионов за систему IP-телефонии. А такие сервисы как запись разговоров, статистика и собственно сама IP-телефония, бывают критически необходимы. Поэтому приходиться прибегать к бюджетным решениям, одно из таких использование 3G модемов в качестве VoIP-GSM шлюза. Нельзя назвать, это решение стабильным и надежным, тем не менее когда нет денег, заказчик готов закрыть глаза на всякого рода “отваливания” модемов. В этой статье попробуем расcмотреть, как к уже готовому дистрибутиву FreePBX Distro подключить 3G модемы через USB хаб.

Исходные данные дистрибутив FreePBX Distro 2.11 64 bit, c Asterisk 11 на борту. Первым делом качаем пропатченный канальный драйвер chan_dongle с нашего сайта. И ставим необходимые зависимости:

C помощью minicom отключаем CardReader и виртуальный CD-ROM в модеме.

Выбираем настройку последовательного порта, нажимаем А и редактируем порт — /dev/ttyUSB0 после этого жмем два раза Enter и нажимаем Выход. После подключения вводим AT команду AT^U2DIAG=0 и выходим нажав Ctrl-A а потом Q

Идем дальше и разбираемся с конфигурацией модемов.

Проверяем порты модемов:

Добавляем нужный контекст для работы модемов:

Во FreePBX создаем кастомный транк, где указываем imei модема:

После всех продлённых операций можно увидеть наши модемы:

Видим в консоли следующее:

Создадаем правило udev для разрешения прав:

Для экономии питания переводим модемы в 2G режим, это очень важный нюанс, потому как из-за нехватки тока питания USB модемы начинают отваливаться.

Если есть желание, то можно задать номер телефона для сим-карт с номером Unknown:

Прописываем этот скрипт на выполнения в cron:

И конечно скрипт, который на уровне Linux передернет ваш модем в случае его зависания:

Многие из нас имеют в быту замечательные WIFI роутеры ASUS.

В данной статье речь пойдет о варианте применения этих роутеров, в частности моделей RT-N16, WL-500GP, WL-500W в качестве сервиса VOIP телефонии на базе продукта Asterisk, в том числе с построением шлюза GSM<->Asterisk<->VOIP.

В результате получаем:
— вполне работоспособную IP – телефонию на роутере, без лишних затрат и дополнительных точек отказа в виде дополнительного железа
— очень бюджетное решение по VOIP2GSM терминации для личных нужд (на базе 3G модемов HUAWEI)

Насколько это нужно — решать Вам!

Я лично использую эту схему (при минимальных затратах на «железо») для:
— недорогих звонков за границу с мобильного телефона (GSM->VOIP->GSM or Landline)
— экономии расходов на связь в роуминге (c помощью Callback на «местную» или туристическую симку)
— в качестве VOIP<-> GSM шлюза в одной из стран, где цены на локальные звонки и интернет вполне адекватные, а вот VOIP трафик стоит немало.

1. Собственно указанный роутер ASUS RT-N16, WL-500GP, WL-500W (возможно список моделей может быть шире)

2. Для GSM<->VOIP шлюза – нужен 3G модем HUAWEI E1550 или E173 (опять же – список может быть шире, но тестировались именно эти модели). Шлюз GSM-VOIP в виде сервиса мегафона «Мультифон» — остается за рамками нашей темы.

Постараюсь не повторяться а осветить особенности установки Asterisk именно на роутере.

Итак, Часть 1-я, «Установка Asterisk»

1. Ставим на роутер прошивку на ядре 2.6* «от энтузиастов» на базе прошивки Oleg’а.

Почему эта, а не dd-wrt, tomato и тд – работает быстро, проект динамично обновляется(спасибо «энтузиастам»).

2. Для пакета asterisk и прочих зависимостей памяти роутера нам будет явно недостаточно, поэтому понадобится внешний USB накопитель (1 gb- вполне устроит). Вместо флешки – мы можем воспользоваться опцией замечательных 3g модемов Huawei e1550 и E173 (кстати – все еще продается по акции мегафона за 750 рублей, в комплекте с симкой на 1 мес бесплатного мобильного интернета) – которые имеют слот для Micro SD Card, совмещая в себе функции флешки. Таким образом, этот чудесный модем воплощает в себе одновременно 3 свойства:
— 3G модем (интернет на роутер можем получать через него)
— Флешка (при вставленной micro sd) для установки доп. пакетов на роутере
— GSM шлюз с поддержкой голоса, SMS, USSD

3. Подключаем модем-флешку или просто флешку, логинимся в роутер по SSH, и производим первоначальную конфигурацию и установку необходимых пакетов.
Процесс неплохо описан здесь wl500g.info/showthread.php?t=3171, я приведу основные этапы:

b) Форматим флешку и подключаем ее в качестве доступного хранилища
umount /tmp/mnt/disca_1
mke2fs -j /dev/discs/disca/part1
mkdir /tmp/mnt/disca_1/opt
mount -obind /tmp/harddisk/opt /opt
echo 'mount -obind /tmp/harddisk/opt /opt ' >> /usr/local/sbin/post-mount
flashfs save
flashfs commit
flashfs enable

c) Подключаемся к репозиторию и устанавливаем нужные пакеты
mkdir -p /opt/tmp/ipkg
ipkg.sh update
ipkg.sh install ipkg-opt
echo "option verbose-wget">>/opt/etc/ipkg.conf
ipkg update
ipkg upgrade

d) Ставим софт для удобства работы
ipkg install nano mc findutils grep wget
echo "export TERMINFO=/opt/share/terminfo" >> /usr/local/root/.profile
echo "export TERM=xterm" >> /usr/local/root/.profile
flashfs save
flashfs commit
flashfs enable

4. Ставим Asterisk 16
ipkg install asterisk16

5. Запускаем asterisk

и получаем……… «Segmentation Fault» (может быть Вам повезет больше? )

Небольшое лирическое отступление: все бы хорошо, но Asterisk «вылетает». Я потратил немало времени, пробовал компилировать Asterisk на роутере – вполне благополучно (с некоторыми хитростями), но тоже вылетает. Пробовал кросс компиляцию – аналогично.

Вот он:
mkdir /opt/lib/asterisk/modules_backup
mv /opt/lib/asterisk/modules/res* /opt/lib/asterisk/modules_backup/

Т.е. все res_* отключаем, надеюсь что Вам это будет некритично.

7. Запускаем опять asterisk, и «ВУАЛЯ»!
Asterisk Ready.
*CLI>

Процесс конфигурирования оставлю в покое, немало мано-факов по той тебе исписано, лишь сделаю ремарку, что для себя в /opt/etc/asterisk использую лишь эти конфигурационные файлы:
asterisk.conf cdr.conf extensions.conf indications.conf logger.conf modules.conf rtp.conf sip.conf
И для GSM модема еще dongle.conf (или datacard.conf)

Часть 2, Установка GSM Шлюза

С установкой Asterisk закончили, перейдем к установке GSM шлюза на базе 3G модемов HUAWEI, моделей E1550 и E173.

2. Если модем используется в качестве флешки для роутера – то эта функция должна быть инициализирована (можно сделать через терминал):
AT^U2DIAG=0 (девайс переводится в режим "только модем")
AT^U2DIAG=1 ( . "модем + CD-ROM")
AT^U2DIAG=255 ( . "модем + CD-ROM + Card reader")
AT^U2DIAG=256 ( . "модем + Card reader")

3. Далее пути два:

Первый – простой… использовать для шлюза готовый скомпилированный модуль chan_datacard.so

Дальше добавляем в /opt/etc/asterisk/ конфигурационный файл datacard.conf примерно следующего содержания

>>>>>>>>>>>>>>>>>>>>>>>>>>>
[datacard0]
audio=/dev/ttyUSB1 ; tty for audio connection
data=/dev/ttyUSB2 ; tty for AT commands
context=datacard-incoming ; context for incoming calls
group=1 ; calling group
rxgain=3 ; increase the incoming volume
txgain=3 ; increase the outgoint volume
resetdatacard=yes ; reset datacard during initialization
u2diag=256 ; set U2DIAG parameter (256 = modem+card_reader)
usecallingpres=yes ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation
<<<<<<<<<<<<<<<<<<<<<<<

И далее, уже в файле extensions.conf создаем раздел [datacard-incoming] и добавляем туда свои правила диалплана. Для теста, например,

>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[datacard-incoming]
exten => s,1,Playback(demo-echotest) ; Let them know what's going on.
exten => s,2,Echo ; Do the echo test.
exten => s,1,Playback(demo-echodone)
<<<<<<<<<<<<<<<<<<

Вариант второй – посложнее, но и возможностей больше.

Для этого ставим на роутер необходимые для компиляции пакеты:

ipkg install buildroot optware-devel make

Далее настраиваем диалплан, и наслаждаемся работающим сервисом Asterisk с GSM шлюзом на роутере!

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

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

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

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


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

Подключаем GSM-модем HUAWEI E1550, проверяем появились ли устройства 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


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

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


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


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


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

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

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

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


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

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

chown asterisk : asterisk / etc / asterisk / dongle . conf KERNEL == "ttyUSB*" , MODE = "0666" , OWNER = "asterisk" , GROUP = "dialout"

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

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

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

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

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

audio = / dev / ttyUSB1 ; tty порт для audio соединений ;


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

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

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) добавляем следующее:

exten = > sms , n , System ( echo '$,,%Y-%m-%d %H:%M:%S)> - $ - $: $)>' >> / var / log / asterisk / sms . txt ) exten = > ussd , n , System ( echo '$,,%Y-%m-%d %H:%M:%S)> - $: $)>' >> / var / log / asterisk / ussd . txt ) exten = > + 7915 * * * * * 13 , n , Playback ( demo - echotest ) exten = > + 7915 * * * * * 13 , n , Playback ( demo - echodone )


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

-- 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'

Пример отправки SMS:

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 запроса:

[ 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 < dongle_name > AT + CPMS = \ " SM \ " , \ " SM \ " , \ " SM \ "

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

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

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

Похоже что вы пытаетесь сделать на Asterisk 15.7.2 + Debian 9, хотя в заметке явно указано что все описанное применимо к Asterisk 13 + Debian 8 Jessie!

Лично у меня на Asterisk 13 + Debian 8 Jessie, все прекрасно заводится, делая в точности по шагам заметки. На других версиях не пробовал и не могу знать что там за подводные камни могут быть.

К примеру указанный в статье модуль chan_dongle поддерживает Asterisk 13, поддержку Asterisk 15, насколько я знаю никто не делал..

Зачем делать контекст для входящих для проигрывания демо-теста и ложить трубку? Так круто?

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

Здравствуйте. Спасибо за пост, вроде всё по делу. Не подскажете ли, в чем может быть дело, если мне не удается получить смски с помощью донгла (у меня модем E173) в процессе работы Asterisk?

сложно сказать почему у вас так, но на тот момент когда я реализовал, вроде все работало нормально. А сейчас даже не могу подсказать.

Читайте также: