Установка Asterisk 11 chan_dongle E1550 на Ubuntu 14

Вышла более новая статья, описывающая установку Asterisk 13 с chan_dongle на Debian 8

За все время работы в разных телекоммуникационных компаниях приходилось много раз устанавливать и настраивать софтсвитч Asterisk. Чтобы каждый раз не вспоминать последовательность действий, вывел для себя своего рода эталонную инструкцию, следуя которой можно быстро и без проблем собрать рабочий сервер Asterisk с драйверами GSM-модемов Huaweii E1500. Версия Asterisk 11 выбрана потому, как драйверов модемов E1550 нет под более новые версии. Последний релиз 11 версии достаточно стабилен и может успешно применяться для организации офисной мини-АТС или для организации небольшого контакт-центра.

Так как изначально Asterisk предназначен и полностью заточен под ядро Linux, то и устанавливать его будем под Убунту, которую проще и быстрее развернуть. На самом деле совершенно не принципиально, под какой дистрибутив Linux производить установку. Попытки полноценно установить и использовать все модули под FreeBSD не привели к желаемому результату. Для правильной работы всех модулей все таки рекомендуется именно Linux.

В этой статье будет рассмотрена установка софтсвитча asterisk 11 chan_dongle на операционную систему Ubuntu 14.04 LTS. Тоже самое не раз было проделано на Debian 7 и 8 без изменений. Так что можете смело использовать Debian.

Описана процедура установки только телефонной системы без веб-интерфейсов и т.д.

Ставим UBUNTU 14.04 LTS сервер, при разметке диска выносим /media/calls в отдельный физический раздел. Этот каталог пригодиться позже, когда будем вести запись телефонных разговоров.

Установка необходимых инструментов и зависимостей

Ставим утилиты, нужные для сборки

sudo apt-get install build-essential

Устанавливаем зависимости (список зависимостей очень важен! подбирался лично!)

sudo apt-get install libncurses5-dev libssl-dev libxml2-dev libsqlite3-dev libmysqlclient15-dev curl mpg123 libxml2 libxml2-dev libaudiofile-dev subversion sox libiksemel-dev libssl-dev

Если при инсталляции системы не были установлены хедеры ядра, то еще ставим их

sudo apt-get install linux-headers-`uname -r`

Установка DAHDI

Качаем и собираем DAHDI (берем последнюю версию)

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
tar -zxvf dahdi-linux-complete-current.tar.gz

переходим в распаковавшийся каталог и запускаем сборку и установку

cd dahdi-linux-complete-2.10.0.1+2.10.0.1
sudo make all && sudo make install && sudo make config
cd ..

Удачное завершение выглядит примерно так:

01 - after dahdi install

Установка LibPRI

Качаем и собираем LibPRI (берем последнюю версию)

wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
tar -zxvf libpri-1.4-current.tar.gz

переходим в распаковавшийся каталог и запускаем сборку и установку

cd libpri-1.4.15
sudo make && sudo make install
cd ..

Удачное завершение выглядит примерно так:

02 - after libpri

Установка SpanDSP

Если надо работать с факсом, качаем и собираем spandsp (опытная установка не удалась!)

Для начала скачаем и установим libtiff http://packages.ubuntu.com/saucy/libtiff4

sudo dpkg -i ./libtiff4_3.9.7-2ubuntu1_amd64.deb

теперь выкачиваем и ставим SnapDSP

wget http://www.soft-switch.org/downloads/spandsp/spandsp-0.0.6.tar.gz
tar -zxvf spandsp-0.0.6.tar.gz

переходим в распаковавшийся каталог

./configure
sudo make && sudo make install

Установка Asterisk

Теперь подошла очередь самого Asterisk.

Выкачиваем последнюю версию 11 ветки:

wget -c http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz

Распаковываем и переходим в распакованную директорию (на время написания версия 11.15)

tar -zxvf asterisk-11-current.tar.gz
cd asterisk-11.15.0

Конфигурим

./configure

Если увидели лого Asterisk (звездочку), значит все в порядке, идем дальше.

03 - asterisk after configure

Вызываем конфигурационное меню

make menuselect

Отмечаем в меню следующие пункты (возврат в предыдущее меню — стрелка влево):

Add-ons: format_mp3, app_mysql, cdr_mysql
Resource Modules: res_xmpp (не обязательно. используется для уведомлений в jabber о пропущенных)
Core Sound Packages: CORE-SOUNDS-EN-ALAW, CORE-SOUNDS-EN-GSM, CORE-SOUNDS-EN-G729, CORE-SOUNDS-RU-ALAW, CORE-SOUNDS-RU-GSM, CORE-SOUNDS-RU-G729
Music On Hold File Packages: MOH-OPSOUND-WAV
Extras Sound Packages: ALAW, GSM и G729

Нажимаем [S] для сохранения конфигурации

04 - menuselect add-ons 05 - menuselect resource modules 06 - core sound pack 07 - menuselect MOH 08 - menuselect extras sound pack

Запускаем скрипт скачивания source mp3 (т.к. выбрали модуль поддержки mp3):

contrib/scripts/get_mp3_source.sh

09 - get mp3 source

Собираем и устанавливаем

sudo make install

Сборка происходит достаточно долго с загрузкой звуковых пакетов. В итоге увидим примерно это:

10 - asterisk make install

Создаем демонстрационные конфиги (если нужны), если не нужны — не создаем

sudo make samples

Генерим все необходимые скрипты (скирпты запуска)

sudo make config

Выходим из каталога с исходниками:

cd ..

Стартуем!

sudo /etc/init.d/asterisk start

11 - asterisk start

Подключаемся к консоли и проверяем, все ли ОК (выход из консоли Ctrl+C или quit)

sudo asterisk -rvvvvvvvvvvddddddddddc

12 - asterisk console

Все в порядке!

Выйти из консоли Asterisk можно нажав комбинацию клавиш Ctrl+C

Установка кодеков G729

G729 — узкополосный речевой кодек, который применяется для эффективного цифрового представления узкополосной телефонной речи (сигнала телефонного качества).

Устанавливаем при необходимости использования (передаем SIP-трафик через узкополосные соединения). Скачать с сайта http://asterisk.ru/codecs/ кодек G729, который подходит под версию Asterisk и под версию процессора, положить в /usr/lib/asterisk/modules и затем перезагрузить Asterisk. Открыть ссылку выше в браузере, найти подходящий кодек, скопировать URL на файл и вставить его в команду wget, как показано ниже:

wget -P /usr/lib/asterisk/modules -O codec_g729.so (подставить ссылку на нужный кодек)

Послеустановочная настройка

Создаем пользователя asterisk и нужные группы

sudo /etc/init.d/asterisk stop
sudo adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk PBX" asterisk
sudo adduser asterisk dialout
sudo adduser asterisk audio

Если используем веб на этом же сервере, то и:

sudo adduser www-data asterisk

Создаем каталог запуска

sudo mkdir -p /var/run/asterisk

Изменяем права на нужные каталоги

Если нет устройств DAHDI, то и /dev/dahdi не существует. Это нормально.

sudo chown -R asterisk:asterisk /var/lib/asterisk
sudo chown -R asterisk:asterisk /var/log/asterisk
sudo chown -R asterisk:asterisk /var/run/asterisk
sudo chown -R asterisk:asterisk /var/spool/asterisk
sudo chown -R asterisk:asterisk /usr/lib/asterisk
sudo chown -R asterisk:asterisk /dev/dahdi
sudo chmod -R u=rwX,g=rX,o= /var/lib/asterisk
sudo chmod -R u=rwX,g=rX,o= /var/log/asterisk
sudo chmod -R u=rwX,g=rX,o= /var/run/asterisk
sudo chmod -R u=rwX,g=rX,o= /var/spool/asterisk
sudo chmod -R u=rwX,g=rX,o= /usr/lib/asterisk
sudo chmod -R u=rwX,g=rX,o= /dev/dahdi
sudo chown -R asterisk:asterisk /etc/asterisk
sudo chmod -R u=rwX,g=rX,o= /etc/asterisk

В файле /etc/default/asterisk раскомментируем две строчки и изменяем название группы

AST_USER="asterisk"
AST_GROUP="dialout"

13 - file default asterisk

Запускаем Asterisk и смотрим, от какого пользователя он запустился

sudo /etc/init.d/asterisk start
ps aux | grep asterisk

14 - user and group

Все в порядке!

Использование GSM модемов E1550

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

AT^U2DIAG=0

Это можно сделать как под Windows (при помощи гипертерминала), так и под Linux (при помощи команды:

minicom -s

Установка chan_dongle

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

apt-get install unzip automake autoconf

Качаем пропатченный под 11 версию астериска chan_dongle. Подойдет только эта версия! И разархивируем.

wget https://github.com/jstasiak/asterisk-chan-dongle/archive/asterisk11.zip
unzip asterisk11.zip

Переходим в распаковавшийся каталог

Подготавливаем к сборке

cd asterisk-chan-dongle-asterisk11
aclocal && autoconf && automake -a

Не обращаем внимание на последнюю строку. Возникает всегда, но на работу не влияет.

15 - dongle automake

Конфигурим

./configure

Конфигурирование завершится примерно такими строками:

16 - dongle configure

Собираем и инсталлируем

make && make install

Все должно пройти успешно. В итоге увидим примерно следующее:

17 - dongle make install

Копируем файл конфига

cp etc/dongle.conf /etc/asterisk/
sudo chown -R asterisk:asterisk /etc/asterisk
sudo chmod -R u=rwX,g=rX,o= /etc/asterisk

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

sudo /etc/init.d/asterisk restart
sudo asterisk -rvvv
asterisk*CLI> reload
asterisk*CLI> dongle show devices

Если модуль загрузился и функционирует, не смотря на наличие модемов, должна появиться строка:

18 - dongle show devices

Создаем файл /etc/udev/rules.d/92-dongle.rules со следующим содержимым (назначения пользователя и группы устройствам):

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

Перезагружаем демон udev:

service udev restart

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

В Файле /etc/asterisk/dongle.conf обязательно прописываем все модемы по IMEI (и/или IMSI). Можно указать и то и другое, но лучше привязать только по одному параметру. В ранних версиях chan_dongle была возможность привязки только к контроллеру, что не давало менять модемы местами, а в udev приходилось прописывать все устройства, назначая им aliases. В текущей версии этого делать нет необходимости. Модемы замечательно привязываются по IMEI. Их можно менять местами, делать что угодно — система сама найдет их.

[KS]
imsi=255012345678012
imei=345678901234567
exten=+380991234567
context=from-gsm

В данном примере [KS] — это идентификатор устройства. На этот идентификатор можно будет направлять вызовы. IMSI — идентификатор SIM-карты (мобильного абонента). IMEI — идентификатор GSM-терминала (мобильного устройства). exten — номер телефона в международном формате, context — имя контекста (группы), с которого будут приниматься и обрабатываться вызовы.

В конфиге можно не указывать exten. Достаточно указать либо IMSI либо IMEI — модуль dongle по этим идентификаторам сам отыщет устройство и сопоставит его с конкретным идентификатором устройства. Указание context обязательно.

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

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

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

udevadm monitor

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

KERNEL=="ttyUSB[0-9]*", ID=="1-1:1.1", SYMLINK+="KS-audio"
KERNEL=="ttyUSB[0-9]*", ID=="1-1:1.2", SYMLINK+="KS-data"

KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.1", SYMLINK+="MTS-audio"
KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.2", SYMLINK+="MTS-data"

KERNEL=="ttyUSB[0-9]*", ID=="1-3:1.1", SYMLINK+="LIFE-audio"
KERNEL=="ttyUSB[0-9]*", ID=="1-3:1.2", SYMLINK+="LIFE-data"

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

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

[KS]
audio=/dev/KS-audio 
data=/dev/KS-data
exten=+380991234567
context=from-gsm

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

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

Дополнения от читателей

17.07.2016 от Александра Dongle на виртуальной машине:

Через USB-hub подключил 3G-modem, в свойствах виртуальной машины подключил этот самый 3G модем (виртуальная машина ->Съемные устройства ->HUAWEI mobile -> подключить), он увиделся донглом.


Если эта статья помогла Вам, пожалуйста, окажите финансовую поддержку моему блогу.

Установка Asterisk 11 chan_dongle E1550 на Ubuntu 14: 159 комментариев

  1. Я ТАК И НЕ ПОНЯЛ ЗАЧЕМ СТОЛЬКО СЛОЖНОСТЕЙ У МНОГИХ В ИНСТРУКЦИЯХ??!?!

    ставим Убунту 16.
    вводим несколько строчек из этой статьи: (тут была ссылка) (занимает минут 10)
    правим sip.conf extensions.conf под себя
    добавляем донгл командами из этой статьи
    ВСЕЕЕЕЕ!!! работает!!!

    1. Из репозитория любая блондинка поставит, даже без инструкции :)
      Но это не всегда работало нормально. К тому же, в репозиториях всегда древние версии, а большинству хочется свеженьких, которые в репозиторий попадут только спустя год, как минимум.
      Если устраивает версия из репозитория, так тут и инструкция не нужна. Установите из репозитория как обычный пакет. Делов то.

  2. Здравствуйте, есть цель звонить нашим благотворителям (у нас фонд по защити уличных животных) и проигрывать аудио файл где говорится о новых собаках в нашем приюте, а также принимать звонки и проигрывает тот же файл, я так наверное по своей наивности не нашел никакого решения бесплатного или вылеченного от жадности под виндовс, конечно можно подумать, нужно брать Астерикс или что-то в этом роде. Но я с линуксом не дружу, а настройка стоит от 3т.р, сейчас для меня это не подъемная сумма,нашёл в вылечинную от жадности oktell но я так и не понял как там через неё звонить, может быть есть какой-то интуитивно понятная программа. Возможно даже зарубежная. Которая бы дружила GSM шлюзом, или какая-нибудь сборка юникса но очень дружелюбное простая для новичка, Сильно не пинайте новичка.

    Кто сможет помочь в настройке пишите в телегу @seogud ,ICQ: 665 055 198 , скайп nugnyi-nick

    1. Добрый день.
      Наверное, автоматизировать этот процесс, используя только asterisk, невозможно.
      Все, что можно сделать из коробки, это проигрывать файл при получении входящего вызова. Вам звонят, система отвечает на вызов и проигрывает приветственное сообщение, затем вызов направляется на телефонный аппарат.
      Но чтобы обзванивать клиентов и проигрывать им файл, наверное, нужен внешний скрипт, который будет производить обзвон (через AMI). То есть здесь, скорее всего, без программирования не обойтись. Может быть сообщество лучше подскажет.
      А по поводу дружелюбности линуса — Ubuntu server, наверное, самый простой в обслуживании для новичка.

  3. Здравствуйте.
    Спасибо за статью. Все получилось быстро.
    Кроме указанного в статье также попытался принимать СМС. СМС пишутся в указанный файл (sms.txt).
    Правда не смог решить такую проблему — если в тексте СМС приходит символ «@» (чаще e-mail), то все что после «@» исчезает / не приходят / чем то отсекается, исключением является кириллица и то через раз.

    Вот настройки к донглу:
    exten => sms, 1, Noop (Incoming SMS from $ {CALLERID (num)} $ {BASE64_DECODE ($ {SMS_BASE64})})
    exten => sms, n, System (echo «$ {STRFTIME ($ {EPOCH} ,,% Y-% m-% d% H:% M:% S)} — $ {DONGLENAME} — $ {CALLERID (num )} $ {BASE64_DECODE ($ {SMS_BASE64})} ь >> /var/log/asterisk/sms.txt)
    exten => sms, n, Hangup ()

  4. Добрый день!
    СИтуация забавная, если прописать imsi то после рестарта сервера не подключается, но если прописать audio и data — то всё подключается, а если после этого заменить на imsi, и сдедать CLI> dongle reload now то тоже всё в порядке, сам определяет юсб и подключются

    == Parsing ‘/etc/asterisk/dongle.conf’: Found
    [2017-03-26 16:39:30] NOTICE[1969]: chan_dongle.c:426 do_monitor_phone: [LIFECELL] stopping by restart request
    — [LIFECELL] Dongle has disconnected
    — [LIFECELL] IMSI 2550610XXXXXXXX found on data_tty=/dev/ttyUSB5 audio_tty=/dev/ttyUSB4
    — [LIFECELL] Trying to connect on /dev/ttyUSB5…
    — [LIFECELL] Dongle has connected, initializing…
    [2017-03-26 16:39:30] NOTICE[1888]: chan_dongle.c:426 do_monitor_phone: [KYIVSTAR] stopping by restart request
    — [KYIVSTAR] Dongle has disconnected
    — [KYIVSTAR] IMSI 2550306XXXXXXXX found on data_tty=/dev/ttyUSB2 audio_tty=/dev/ttyUSB1
    — [KYIVSTAR] Trying to connect on /dev/ttyUSB2…
    — [KYIVSTAR] Dongle has connected, initializing…
    — [LIFECELL] Dongle initialized and ready
    — [KYIVSTAR] Dongle initialized and ready

    можете подсказать в чём может быть проблема?

    Asterisk 13.13.1

    [LIFECELL]
    audio=/dev/ttyUSB4
    data=/dev/ttyUSB5
    ;imei=3529650XXXXXXXX
    ;imsi=2550610XXXXXXXX
    exten=+38063XXXXXXX

    [KYIVSTAR]
    audio=/dev/ttyUSB1
    data=/dev/ttyUSB2
    ;imei=3546380XXXXXXXX
    ;imsi=2550306XXXXXXXX
    exten=+38067XXXXXXX

    1. Добрый день.
      Драйвер донгла полон сюрпризов, да и рестарт сервера и релоад донгла — все таки не одно и то же.
      Если не работает определение по imei/imsi, просто используйте порты аудио и данных. Это не так удобно, конечно, зато надежно. Вы же не переставляете модемы каждый день местами.
      Может быть найдете ответ в официальной документации

  5. Характеристики Asterisk — chan_dongle — Modem E173

    Входящие проходят нормально, при исходящем звонке на моб (пример 89123456789) выходит ошибка:
    [2016-11-05 11:45:05] ERROR[1894][C-00000000]: channel.c:7910 ast_channel_start_silence_generator: Could not set write format to SLINEAR
    [2016-11-05 11:45:06] ERROR[1894][C-00000000]: channel.c:5424 set_format: Unable to set format because channel Local/FMGL-89123456789#@from-internal-00000001;2 supports no formats

    Настройки проверил, норм, возможно причина в прошивке модема? Прошивка 11.126.85.00.209

  6. Все 6 GSM dongle я настроил на виртуалке, работают без проблем, входящие/исходящие есть. Но в процесе эксплуатации возникла острая необходимость записывать все входящие звонки на эти самые 3G модемы — но записи нет вообще!( Исходящие пишутся без проблем.
    Единственное что нарыл — при настройке внутренних Extension номеров (FreePBX), есть возможность указать запись разговоров. Но при входящих видно что CDR report говорит входящий от мобильного абонента на мобильный номер
    CallerID — 8063888XXXX (клиент) -> Destination +38063233XXXX (номер dongle) — хотя звонок принимает внутренний номер 5000. Записи нет. ((
    extension такой:
    [from-gsm]
    exten => +38063233XXXX,1,Set(CALLERID(all)=${CALLERID(num)})
    exten => +38063233XXXX,n,Set(CALLERID(num)=${CALLERID(num):1})
    exten => +38063233XXXX,n,Dial(SIP/5000,120)

    Перепробовал кучу разных шаблонов выложенных в нете, но входящие принимаются только с таким extension [from-gsm] шаблоном.
    Не подскажете куда рыть?

    1. Александр, я не берусь помогать, если конфиг астериска сгенерирован различными интерфейсами, типа FreePBX и прочих. Такие автоконфиги абсолютно не читаемые и ковыряться в них — себе дороже.
      Касательно записи есть два момента:
      1. За запись отвечает MixMonitor. Между первой и второй строкой вставьте:
      exten => +38063233XXXX,n,MixMonitor(путь_к_файлу_и_имя_файла.wav)
      тогда у Вас все разговоры будут записаны в указанный файл. Вместо имени файла, конечно же, лучше подставить переменные (CallerID и т.д.)
      2. Убедитесь, что в Asterisk в настройках SIP выключена функция ReInvite, а так же выключена данная фукнция на SIP-клиентах.
      ReInvite позволяет устанавливать речевой канал непосредственно между клиентами минуя астериск

    1. Модемы, конечно же, работать не будут. Нужен прямой доступ к USB.
      Все остальное работать будет, но если будете пускать голос через Asterisk, то скорее всего качество будет не очень хорошим.
      Если найдете решение, как заставить работать USB напрямую на виртуальной машине — напишите, пожалуйста, здесь.

      1. Работает! Я все же поставил виртуалку, Ubuntu 14.04 32bit (ставил на VMWare Workstation 12.1.1), Asterisk 11 версии — всё по вашему мануалу. Далее через USB-hub подключил 3G-modem, в свойствах виртуальной машины подключил этот самый 3G модем(виртуальная машина ->Съемные устройства ->HUAWEI mobile -> подключить ), он увиделся донглом. Нюансы:Пока настроил только исходящие звонки через сим-ку. Донгл второй модем не определяет, хотя сама Ubuntu видит два модема. Возможно что это из-за того что симка не может зарегистрироваться в сети, буду дальше копать.

        1. Без сим-карты донгл тоже должен определяться. Проблема не в отсутствии симки. Проверьте, отключили ли Вы CD-ROM и CardReader.

          Запускайте Астериск в режиме полной диагностики asterisk -rvvvvvvvvvvddddddddddc и пробуйте выполнить входящий вызов. Возможно, где-то допустили опечатку в конфиге.

          Большое спасибо за информацию! Вставлю часть Вашего комментария в статью.

          1. Получилось добавить и второй модем, но только в ручную (тогда как первый определился автоматически как dongle0), для второго мне понадобилось вручную, в файле /etc/asterisk/dongle.conf описать его параметры:
            [MTS]
            audio=/dev/ttyUSB4
            data=/dev/ttyUSB5
            imei=356356042656815
            context=from-gsm
            — только тогда он увиделся и подгрузился.
            Входящие так же удалось настроить.
            Спасибо Вам огромное замануал! Лучшего чем этот, я в интернете не нашел)
            Буду дальше разбираться с настройками групп и т.д. и т.п.

            1. Без принудительного указания портов не получалось? Автообнаружение по IMEI / IMSI не сработало?
              Спасибо за Ваш опыт и за благодарность.
              Успехов Вам в освоении!

              1. «Без принудительного указания портов не получалось? Автообнаружение по IMEI / IMSI не сработало?» — нет, не получалось(
                Нужно разбираться, еще не нарыл причину.

                1. по умолчанию раскомментированы строчки в dongle.conf imei и imsi в конце файла, закомментируй их

  7. Добрый день. Может быть есть идеи, почему отваливается модем при любом обращении к нему из asterisk (ussd, sms, звонок)? Пишет ERROR[29143]: chan_dongle.c:414 do_monitor_phone: [dongle1] Lost connection to Dongle — [dongle1] Dongle has disconnected
    При этом через пару секунд модем поднимается сам

    1. Добрый день, Павел.
      Такое может быть, если ему не хватает тока по питанию. При любой попытке задействовать передатчик модема, он начинает потреблять относительно большой ток, и, если тока недостаточно, происходит просадка по напряжению, что может привести к перезагрузке модема. Это как одна из возможных причин. Везде рекомендуют включать модемы через USB-хаб с нормальным внешним питанием 500 мА на гнездо.
      Но я не гарантирую, что проблема в этом. Проблем с этими модемами, к сожалению, может быть множество.

  8. Здравствуйте, собрал все по инструкции. при запуске астериска вижу chan_dongle.c:218 opentty: unable to open /dev/ttyUSB3: Device or resource busy система Debian 8 модем МТС Е1550 разлочен. с мегафоновской симкартой. пробовал запускать из под винды — все работает. даже звонок приходит на модем

  9. Модем huawei E160G, Asterisk 11, chan_dongle. Нет ответа от ussd.

    asterisk*CLI> dongle ussd MEGAFON *100#
    [MEGAFON] USSD queued for send with id 0x7f3814000f40
    — [MEGAFON] Successfully sent USSD 0x7f3814000f40
    asterisk*CLI>

    И тишина. В extensions.conf ussd экстеншн есть:
    [MEGAFON-ussd]
    exten => ussd,1,Verbose(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})

    В чём может быть дело?

    1. В мобильник вставляю симку, тоже самое набираю — ответ есть. Баланс, на русском языке. Может chan_dongl’у язык не нравится?

      Как-то можно посмотреть возвращается хоть что-то в ответ? Может не с ‘ussd’ экстеншеном возвращается.

      Заранее благодарю.

      1. Добрый день. Только что проверил на своем тестовом сервере, который собирал для написания статьи Asterisk13+cnan_dongle. Всё работает:
        sip*CLI> dongle ussd GSM *111#
        [Apr 28 10:06:44] NOTICE[3011]: at_response.c:267 at_response_ok: [GSM] Successfully sent USSD 0x7f033044c660
        [GSM] Got USSD type 0 'USSD Notify': 'Balans 0.00hrn, bonus 0.00hrn.
        ***
        Vidpravte OK na 5707 - vygrayte 100 000 GRN ta iPhone 6S! 2,5 grn/den'
        '

        Может быть проблема в конкретной модели модема или прошивке. Я не могу подсказать, к сожалению.
        sip*CLI> dongle show devices
        ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
        GSM 0 Free 31 3 3 life:) E1550 11.609.18.00.00

        1. Ок, попробую перепрошить более новой прошивкой и поискать если есть другой вариант chan-dongle для Asterisk 11.

          1. Кстати, когда dongle собирал, в configure ему никаких параметров не передавал?

            А у разработчика советуется вот так:
            2.3) Configure package
            simple
            ./configure
            explicite set install directory for module
            DESTDIR=»/usr/lib/asterisk/modules» ./configure
            turn off some parts
            ./configure —disable-manager —disable-apps
            explicite set path to asterisk headers
            ./configure —with-asterisk=/usr/src/asterisk-1.6.2.13/include
            or
            CFLAGS=»-I /usr/src/asterisk-1.6.2.13/include» ./configure
            enable debugging
            ./configure —enable-debug

            Ты так делал?

  10. Здравствуй Денис. Спасибо большое всё получилось. Не подскажешь как в конференции убрать эхо ?

    1. Добрый день. Эхокомпенсация — это задача устройств с DSP, преобразующих аналоговый сигнал в цифровой, т.е. телефонных аппаратов, плат расширения DAHDI и т.д.
      Если между двумя софт-фонами, подключенными по SIP через Asterisk возникает эхо, покрутите настройки софтфонов, попробуйте заменить на другие, например на PhonerLite, в котором множество настроек.

  11. Денис, добрый день!
    Вот уже второй день бьюсь. Никак не могу понять почему астериск не конектится к модемам.
    $ lsusb
    Bus 001 Device 009: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
    модем на АТ команды отвечает,
    модуль chan_dongle встал.
    $ ls -l /dev/ttyUSB*
    crw-rw-rw- 1 ev dialout 188, 0 Apr 17 21:18 /dev/ttyUSB0
    crw-rw-rw- 1 ev dialout 188, 1 Apr 17 21:18 /dev/ttyUSB1
    crw-rw-rw- 1 ev dialout 188, 2 Apr 17 21:12 /dev/ttyUSB2

    $ ps aux | grep asterisk
    ev 27289 52.4 0.6 2663036 55024 ? Ssl 21:20 0:02 /usr/sbin/asterisk -U ev -G dialout
    ev 27345 0.0 0.0 10744 2288 pts/19 S+ 21:20 0:00 grep —color=auto asterisk

    в CLI выдает [dongle0] Trying to connect on /dev/ttyUSB2…
    [dongle0] Trying to connect on /dev/ttyUSB2..

    1. Денис подскажите пожалуйста Вы делили так чтобы можно было донабирать номера после того как мы дозвонились на asterisk через GSM ?

      1. Добрый день.
        Прошу прощение за задержку. Сейчас, к сожалению, времени на блог совершенно нет.

        В файле extensions.conf у Вас должен быть блок с именем контекста, в котором обрабатываются вызовы, поступившие с данного контекста.
        Например, dongle имеет context=from-gsm-lines, тогда в extensions.conf должен быть блок [from-gsm-lines] — в нем Вы обрабатываете поступающие вызовы.
        Сначала у Вас должны идти правила, которые примут входящий вызов (Вы звоните на GSM-модем). Asterisk должен ответить и перейти в ожидание следующего extension. Это делается следующим образом:

        exten => s,1,Wait(2) ; подождать 2 секунды
        exten => s,n,Answer() ; затем ответить на вызов
        exten => s,n,Playtones(dial) ; воспроизвести dialtone (зуммер). Исправьте страну в файле indications.conf (country=), если нужен стандартный тон для Вашей страны
        exten => s,n,WaitExten(60) ; ожидать новый маршрут (extension)

        Далее в этом же блоке указываете все необходимые маршруты, которые могут поступить с данного контекста при донаборе, например:

        exten => _06[7,8]XXXXXXX,1,Dial(Dongle/KIEVSTAR/${EXTEN}) ; маршрутировать все вызовы, подпадающие под план набора, на GSM-модем с SIM-картой Киевстар

        Далее можете добавлять любые другие extensions, на которые необходимо осуществить маршрутизацию при донаборе.

        1. Денис сделал как Вы написали не получилось, при наборе номера GSM идет вызов на экране показывает такое сообщение :
          — Executing [+380937546598@from-gsm:1] Dial(«Dongle/LIFECELL-0100000002», «Dongle/LIFECELL/+380937546598») in new stack
          [2016-04-07 15:19:27] WARNING[1514][C-00000002]: channel.c:180 channel_request: [LIFECELL] Request to call on device which can not make call at this moment
          [2016-04-07 15:19:27] WARNING[1514][C-00000002]: app_dial.c:2437 dial_exec_full: Unable to create channel of type ‘Dongle’ (cause 44 — Requested channel not available)
          == Everyone is busy/congested at this time (1:0/0/1)
          — Auto fallthrough, channel ‘Dongle/LIFECELL-0100000002’ status is ‘CHANUNAVAIL’
          после чего идет сброс

          1. Сергей, а каким образом у Вас получилось сделать донабор с плюсом?
            Еще смущает, что Вы маршрутируете вызов на тот же DONGLE, с которого приняли вызов. Линия же занята.

            Только что проверил у себя — все работает. Единственное, я после ответа набирал 067…
            — Executing [067ххххххх@from-test:1] Dial(«Dongle/LIFE-0100000002», «Dongle/KS/067ххххххх») in new stack
            Обратите внимание, я получил вызов с одного dongle, а направляю на другой. Они ведь одноканальные.

            Ну и заметил еще такую особенность. У меня настроена передача DTMF в голосовом тракте, а это значит, что не всегда качественно воспринимаются набираемые после ответа цифры.

            1. Добрый день Денис. Прошу извинение за свою настойчивость. Я в настройке конфигураций астериска не сильно разбираюсь. Помогите сделать конфигурацию исходя из следующего: на сервер установлен астериск к нему прикреплен gsm модем согласно вашей статье. У меня получается звонить с мобильного телефона через gsm модем на внутренний номер 36000 (который создан на сервере ). Помогите сделать конфигурацию, чтобы звонить на gsm модем и донабирать любые номера созданные на сервере и на номера привязанные к нему по транку.
              Пытались настроить по выше указанному примеру но не получилось создать маршрут на донабор внутренних номеров. Спасибо за понимание и терпение !

              1. Добрый день. К сожалению, написать за вас конфигурацию я не смогу. У меня нет на это времени, к сожалению.
                Если у Вас получилось звонить с мобильного через GSM на внутренний номер Asterisk, то все остальное настраивается точно так же.
                Единственное, что Вы НЕ сможете сделать — это позвонить донабором через тот же GSM-можем, через который приняли вызов. Это невозможно технически. Линия занята.
                Самый простой вариант — это продублировать все маршруты для контекста gsm-модема, которые созданы для других контекстов. Более правильное решение — написать эти маршруты один раз и использовать include везде, где они нужны. Пример я Вам уже приводил ранее. Элементарные правила маршрутизации я рассматривал в блоге: Пример 1

  12. Добрый день Денис сделали все по вашей инструкции, все получилось. Огромное спасибо. Не могли бы вы подсказать как сделать, что бы с GSM модема звонить не на один номер, а набирать любые номера которые созданы на сервере и привязаны по транку ???

    1. Вы же понимаете, что времени на блог у меня не столько, чтобы часто писать статьи.
      Дело в том, что я начал цикл статей по быстрой простой настройке, которые бы подтолкнули администраторов Астериска к дальнейшему изучению системы и уже самостоятельному ее расширению.
      И я планировал написать и об IVR и об очередях и еще много о чем. И, если у меня будет время, я обязательно напишу.
      Но, к сожалению, я не располагаю пока что достаточным количеством свободного времени.
      Всё будет. Но когда — сам не знаю. Если нужно срочно — поищите в интернете, есть масса статей по настройке.

  13. Привет Денис, а ты мог бы указать свои прошивки своих свистков?
    Может мне стоит переспрашивать именно такими прошивками как у тебя на свистках?

      1. Денис, да всё было из-за прошивки так что сейчас работает, огромное тебе за статью и помощь и терпение

        1. Пожалуйста. Рад, что помог. О приобретении хаба не жалейте. Это очень нужное устройство. Оно сможет нормально питать модемы, в отличие от материнской платы.

  14. Привет Денис!
    Я конечно очень благодарен за описание и разжёвывание многих нюансов, огромное спасибо!
    И всё таки есть много непоняток и недочётов.

    Дай по порядку:
    1. В статье УСТАНОВКА ASTERISK 11 CHAN_DONGLE E1550 НА UBUNTU 14 ты писал про установку плагина DAHDI , так вот новый плагин выдаёт ошибки так что надо обязательно устанавливать только dahdi-linux-complete-2.10.0.1+2.10.0.1
    2. Что касаемо модемов, могу заверить, что у меня ни разу не определился модем по imsi только по imei
    2.1 Конечно я понимаю что статья в общих чертах написана, но всё таки вот ты потом писал что у тебя 2 модема, прости а как второй то определить, тут совсем не понятно.
    3. Определить USB порта по команде так же никаких результатов не дал, команда «udevadm monitor»
    вообще ничего не показывает
    4. И как я писал раньше, при звонке когда поднимаешь трубку отваливается модем и перезагружается сам, хотя по твоему совету купил usb-хаб в эл. питанием. как я вижу это не помогло.
    Если не затруднит Денис объясни эти моменты и укажи в чём не верные действия думаю, что я не один у же задавал тебе такие вопросы

    1. Добился, всё теперь видны все 2 свистка звонки приходят но не уходят)))
      И так же по прежнему осталась проблема с отваливанием свистков, что первый что второй все они при поднятии трубки сразу отваливаются и перезагружаются.(
      Также проблема осталась если входящий приходит звонок то поднимая трубку несколько секунд тишина потом отбой.(
      Замучился и теперь не понимаю как с этим бороться, скоро пополню ряды товарищей в психушке)

      1. Привет!
        1. Последний раз устанавливал Астериск примерно 2 недели назад. Все нормально установилось на Debian8. Четко по своей же инструкции делал (копировал/вставлял команды, чтобы не набирать). Ошибок не возникало. Если где-то нашли информацию о несовместимости последней версии DAHDI, дайте пожалуйста ссылку.
        2. Мои модемы Dongle вполне нормально определяет по IMSI номеру SIM-карты. У меня E1550.
        2.1. В модемах стоят SIM-карты. У SIM карт есть уникальный номер — IMSI. Модуль Dongle читает конфигурацию и сопоставляет номера IMSI из конфигурации с номерами IMSI карточек, установленных в модемы. Тут даже запутаться негде :) Привязка донгла к USB-интерфейсу осуществляется путем поиска по IMSI.
        3. udev нужно юзать только в том случае, если у тебя старый dongle, который еще не умел определять по imei и imsi. Это было в далеком 2008 году. Тогда единственный способ привязки донглов к модемам был прямое указание контроллеров USB. Сейчас не нужно это указывать. Модуль Dongle сам найдет нужные интерфейсы по IMSI симки или по IMEI модема.
        4. Все действия верные. Может прошивка модемов, может модель. Через меня прошло относительно много Е1550. Некоторые имели различные глюки в виде неразборчивого звука, односторонней слышимости или зависаний. Но ситуация, когда при любом событии, которое вызывает увеличение потребляемого тока (когда начинает интенсивно работать приемопередатчик) вызывает перезагрузку модема всегда однозначно означала нехватку по току. Причины я называл выше. Всегда помогает в этом случае USB-хаб. Причем блок питания должен быть расчиан минимум на 500 мА на одно гнездо. Лучше 1 А на гнездо.

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

  15. Привет Денис!
    чёт опять туплю
    что то не так настроил sip походу, не укажешь на ошибки?
    =======================================================
    мой sip.config
    bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
    bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
    context=from-tele2 ; Default context for incoming calls

    [6000]
    type=friend
    secret=re44ff10350!
    host=dynamic

    [6001]
    type=friend
    secret=re44ff10350!
    host=dynamic
    ===============================================
    вот мой dongle.conf
    [dongle0]
    audio=/dev/ttyUSB1 ; tty port for audio connection; no default value
    data=/dev/ttyUSB2 ; tty port for AT commands; no default value
    exten=+795XXXXXXX

    context=from-tele2

    language=ru
    group=0 ; Группа вызова
    rxgain=10 ; Изменение громкости динамика
    txgain=-5 ; Изменение громкости микрофона
    autodeletesms=yes ; auto delete incoming sms
    resetdatacard=yes ; reset datacard during initialization

    usecallingpres=yes ; use the caller ID presentation or not
    callingpres=allowed_passed_screen ; set caller ID presentation

    imei=352000000000000
    imsi=250000000000000
    =============================================
    вот extensions.conf
    [from-tele2]
    exten => _+X.,1,Dial(SIP/6000)
    exten => h,1,Hangup()

    [from-office]
    exten => _6XXX,1,Dial(SIP/${EXTEN})
    exten => _8XXXXXXXXXX,1,Dial(Dongle/dongle0/${EXTEN})
    ======================================================
    ну и лог asterisk -rvvvvvvvvvvddddddddddc
    вот теперь такой
    — Executing [+7xxxxxxxxxx@from-tele2:1] Dial(«Dongle/dongle0-0100000000», «SIP/6000») in new stack
    [Feb 15 21:56:53] WARNING[21959][C-00000000]: channel.c:6009 ast_request: No channel type registered for ‘SIP’
    [Feb 15 21:56:53] WARNING[21959][C-00000000]: app_dial.c:2437 dial_exec_full: Unable to create channel of type ‘SIP’ (cause 66 — Channel not implemented)
    == Everyone is busy/congested at this time (1:0/0/1)
    — Auto fallthrough, channel ‘Dongle/dongle0-0100000000’ status is ‘CHANUNAVAIL’
    — Executing [h@from-tele2:1] Hangup(«Dongle/dongle0-0100000000», «») in new stack
    == Spawn extension (from-tele2, h, 1) exited non-zero on ‘Dongle/dongle0-0100000000’

    ошибка так понимаю sip? или нет?

    1. Если можно то сразу как почитаешь комент удалить, а то там сверкает номер, а тут нет возможности редактировать свои коментарии

      1. Денис я конечно жутко извиняюсь что я такой новичок в этом деле, но я очень хочу понять и настроить .
        Я понимаю что и у Вас много своих дел но просто вещь интересная, а ваш блог чутка до конца не рассказывает как полноценно настроить такую систему, я у же во всеоружии, даже купил USB-хаб с эл. питанием, чтоб ничто не могло помешать к полноценной работе))))

  16. Денис, здравствуйте!
    я конечно может не совсем понимаю но вод выполнил то что вы по рекомендовали и после логи вот такие

    =========================================================================
    Connected to Asterisk 11.21.0 currently running on tele (pid = 1537)
    Core debug was OFF and is now 10.
    — Executing [+7952XXXXXXX@from-tele2:1] Dial(«Dongle/dongle0-0100000000», «SIP/6000») in new stack
    == Using SIP RTP CoS mark 5
    — Called SIP/6000
    [Feb 14 23:20:48] WARNING[1586][C-00000000]: channel.c:1002 channel_indicate: [Dongle/dongle0-0100000000] Don’t know how to indicate condition 22
    [Feb 14 23:20:48] WARNING[1586][C-00000000]: channel.c:1002 channel_indicate: [Dongle/dongle0-0100000000] Don’t know how to indicate condition 22
    [Feb 14 23:20:48] WARNING[1586][C-00000000]: channel.c:1002 channel_indicate: [Dongle/dongle0-0100000000] Don’t know how to indicate condition 33
    [Feb 14 23:20:48] WARNING[1586][C-00000000]: channel.c:1002 channel_indicate: [Dongle/dongle0-0100000000] Don’t know how to indicate condition 33
    — SIP/6000-00000000 is ringing
    [Feb 14 23:20:58] WARNING[1586][C-00000000]: channel.c:1002 channel_indicate: [Dongle/dongle0-0100000000] Don’t know how to indicate condition 33
    [Feb 14 23:20:58] WARNING[1586][C-00000000]: channel.c:1002 channel_indicate: [Dongle/dongle0-0100000000] Don’t know how to indicate condition 22
    — SIP/6000-00000000 answered Dongle/dongle0-0100000000
    > 0x7f51340140e0 — Probation passed — setting RTP source address to 192.168.0.110:10098
    [Feb 14 23:21:04] ERROR[1574]: chan_dongle.c:414 do_monitor_phone: [dongle0] Lost connection to Dongle
    — [dongle0] Dongle has disconnected
    — Executing [h@from-tele2:1] Hangup(«Dongle/dongle0-0100000000», «») in new stack
    == Spawn extension (from-tele2, h, 1) exited non-zero on ‘Dongle/dongle0-0100000000’
    == Spawn extension (from-tele2, +7952XXXXXXX, 1) exited non-zero on ‘Dongle/dongle0-0100000000’
    — [dongle0] IMEI 352965049156688 IMSI 250203316446035 found on data_tty=/dev/ttyUSB2 audio_tty=/dev/ttyUSB1
    — [dongle0] Trying to connect on /dev/ttyUSB2…
    — [dongle0] Dongle has connected, initializing…
    — [dongle0] Dongle initialized and ready

    после отваливается модем.

    1. У Вас модем отваливается
      [Feb 14 23:21:04] ERROR[1574]: chan_dongle.c:414 do_monitor_phone: [dongle0] Lost connection to Dongle
      — [dongle0] Dongle has disconnected

      Я похожее наблюдал, когда модему не хватало питания. Как только на модем поступает вызов, он начинает интенсивно использовать передатчик и, если не хватает тока, напряжение просаживается, что приводит к перезагрузке модема.
      Старайтесь включать модемы только через надежные гнезда. Лучше те, что в материнской плате, а не через шлейфы.
      А самый надежный способ — использовать USB-хаб с внешним питанием.

  17. Доброго времени суток!
    Ребят подскажите пожалуйста. Донгл завел с полпинка, т.е. dongle show devices показывает что все ок. но вот с дальнейшей настройкой что то никак. Вроде контексты прописал, а Ekiga даже цепляться не хочет. Цель проста как 3 копейки. В комп с астериском втыкаем два донгла, каждый пользователь звонит со своего донгла и принимает звонки на свой софтфон. с записью разговоров и пр плюшками позже можно будетразобраться. вот мои sip.conf и extensions.conf
    https://www.dropbox.com/s/4l7hy6y6nosd2l3/extensions.conf?dl=0
    https://www.dropbox.com/s/xk80nrk2cirq156/sip.conf?dl=0

    в Ekiga пытаюсь настроить акк вот так:
    https://www.dropbox.com/s/u5wm0tt9m1o7vlj/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0_2016-02-13_17-52-43.png?dl=0

    подскажите что делаю не так

    1. Добрый день.
      Если не можете подключиться SIP-клентом, значит ищите проблему сначала в этой части. Возможно Ваш SIP-клиент находится за NAT. Тогда в конфиг sip.conf для этого клиента добавьте:
      nat=force_rport,comedia
      Конфигурация sip правильная. Нужно разобраться, почему не подключается. Может фаервол или еще что-то. Когда запускаете SIP-клиент, смотрите в консоль астериска, видна ли попытка регистрации. В общем, нужно понять, почему не подключается SIP-клиент. Может нужно включить в клиенте опцию «Включить учетную запись».
      Консоль запускайте в максимальном режиме отладки:
      asterisk -rvvvvvvvvvvddddddddddc
      Подключился клиент или нет можно также посмотреть командой:
      sip show peers
      Смотрите колонку status
      И советую переименовать контекст для sip. Ведь это не dongle. Будете только путаться. Назовите его from-sip и тогда в extensions будет проще и логичней писать маршрутизацию.

  18. Всем привет!
    Вот столкнулся с такой проблемой.
    после вода команды sudo asterisk -rvvv и после того как делаешь звонок на модем
    вот появляется вот такие ошибки

    sudo asterisk -rvvv
    Asterisk 11.21.0, Copyright (C) 1999 — 2013 Digium, Inc. and others.
    Created by Mark Spencer
    Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
    This is free software, with components licensed under the GNU General Public
    License version 2 and other licenses; you are welcome to redistribute it under
    certain conditions. Type ‘core show license’ for details.
    =========================================================================
    Connected to Asterisk 11.21.0 currently running on tele (pid = 918)
    — Channel ‘Dongle/dongle0-0100000000’ sent to invalid extension: context,exten,priority=default,+7952396ХХХХ,1
    — Executing [i@default:1] Playback(«Dongle/dongle0-0100000000», «invalid») in new stack
    — Playing ‘invalid.gsm’ (language ‘en’)
    [Feb 4 11:42:59] ERROR[1015]: chan_dongle.c:414 do_monitor_phone: [dongle0] Lost connection to Dongle
    — [dongle0] Dongle has disconnected
    == Spawn extension (default, i, 1) exited non-zero on ‘Dongle/dongle0-0100000000’
    — [dongle0] Trying to connect on /dev/ttyUSB2…
    [Feb 4 11:43:04] WARNING[1014]: chan_dongle.c:218 opentty: unable to open /dev/ttyUSB2: No such file or directory
    — [dongle0] Trying to connect on /dev/ttyUSB2…
    — [dongle0] Dongle has connected, initializing…
    — [dongle0] Dongle initialized and ready

    модем E1550
    после срабатывает сброс и говорят что соединение разорвано

    Не просветите в чём у меня проблема?

    1. Тут я понял что не указал вот это context=from-tele2

      но после этого всё равно выдаёт ошибку при звонке

      sudo asterisk -rvvv
      Asterisk 11.21.0, Copyright (C) 1999 — 2013 Digium, Inc. and others.
      Created by Mark Spencer
      Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
      This is free software, with components licensed under the GNU General Public
      License version 2 and other licenses; you are welcome to redistribute it under
      certain conditions. Type ‘core show license’ for details.
      =========================================================================
      Connected to Asterisk 11.21.0 currently running on tele (pid = 916)
      [Feb 4 12:18:18] WARNING[1127][C-00000002]: pbx.c:6796 __ast_pbx_run: Channel ‘Dongle/dongle0-0100000002’ sent to invalid extension but no invalid handler: context,exten,priority=from-tele2,+7952396ХХХХ,1
      tele*CLI>
      это что может быть?
      не настроено перенаправление на SIP номер?

      1. Еще раз всем привет!
        Вот даже при настройке SIP номеров всё равно если звонишь с мобильного на на номер выдаёт вот так

        [Feb 5 12:31:12] WARNING[1800][C-00000010]: pbx.c:6796 __ast_pbx_run: Channel ‘Dongle/dongle0-0100000001’ sent to invalid extension but no invalid handler: context,exten,priority=from-tele2,+7952ХХХХХХХ,1

        Если не сложно подскажите что я выполнил не правильно?????

          1. Здравствуйте, ну звонок входящий я настроил, но есть следующая проблема , вот когда снимаешь трубку, то там тишина и потом через несколько секунд связь отваливается

            вот ссылки на файлы
            https://www.dropbox.com/s/1t4qochn0t6m2hf/dongle.conf?dl=0
            https://www.dropbox.com/s/5w6beojb9qi4px6/extensions.conf?dl=0
            вот лог
            https://www.dropbox.com/s/9znswgz69keeuqi/%D0%BB%D0%BE%D0%B3%D0%B8.txt?dl=0

          2. Да и так же не совсем понял как настроить исходящие звонки если не трудно объясните?

            1. В dongle закомментируйте audio и data. Модуль находит модем по imei и/или imsi.

              В логе смущает строка:
              [Feb 7 19:45:45] ERROR[1055]: chan_dongle.c:414 do_monitor_phone: [dongle0] Lost connection to Dongle
              Похоже, что отваливается модем.
              Больше в логе нет ничего похожего на входящий вызов.

              Что касается extensions — создайте лучше чистый новый файл, очень сложно разобраться в огромном дефолтном файле. Ошибка может быть где угодно.
              Раздел конфига на первый взгляд верный, если конечно вызов с донгла приходит на телефонный номер тогда вы и ловите этот телефонный номер фильтром _+X.:
              [from-tele2]
              exten => _+X.,1,Dial(SIP/6000)
              exten => h,1,Hangup()

              Но вполне может быть, что вызов с донгла приходит на входящую линию (т.е. никакого номера Б нет) — это можно увидеть в логах, если запустить консоль астериска в режиме полной отладки и позвонить на модем. Чтобы принять вызов на входящую линию, а не на номер, конфиг должен быть примерно таким:
              [from-tele2]
              exten => s,1,Dial(SIP/6000)
              exten => h,1,Hangup()

  19. ОХХХ отдельное конечно СПАСИБИЩЕ )) за такую статью !!!!!! именно про 11 астер и конкретноe1550 !!!!!из множества что было прочитано тут действительно собрано все!!! здравствуйте!!!!!!!
    Помогите прояснить ситуацию
    Испробовал много вариантов… ставил на centos , поставил и на Ubuntu Server полностью по Вашему мануалу вроде все прошло без ошибок, донгл определяется, звонит и принимает звонки, на компьютере в наушниках все слышно идеально!!! но голос из софтфона (eyeBeam 4.0. и X-Lite посл) рвется первые 2 секунды и потом его нет вообще — в мобильном его неслышно..
    Грешил на роутер, nat. ….. плюнул и делаю тесты в закрытом свиче только 2 компьютера на статике
    Грешил на прошивку, прошился … не помогло
    Грешил на режим работы модема 2g/3g нет по AT модем только в 2g и только модем!! да и отвалов нет!!!

    чтоб не спамить выложу маленький кусок лога

    u32*CLI> rtp set debug on
    RTP Debugging Enabled
    — Executing [380933625117@from-gsm:1] Dial(«Dongle/KS-0100000008», «SIP/1001») in new stack
    == Using SIP RTP CoS mark 5
    — Called SIP/1001
    [Dec 2 15:15:12] WARNING[1947][C-00000008]: channel.c:1002 channel_indicate: [Dongle/KS-0100000008] Don’ t know how to indicate condition 33
    — SIP/1001-00000007 is ringing
    [Dec 2 15:15:14] WARNING[1947][C-00000008]: channel.c:1002 channel_indicate: [Dongle/KS-0100000008] Don’ t know how to indicate condition 33
    — SIP/1001-00000007 answered Dongle/KS-0100000008
    Got RTP packet from 192.168.0.112:33918 (type 00, seq 004176, ts 958100, len 000160)
    Got RTP packet from 192.168.0.112:33918 (type 00, seq 004177, ts 958260, len 000160)
    Got RTP packet from 192.168.0.112:33918 (type 00, seq 004178, ts 958420, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063681, ts 000160, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063682, ts 000320, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063683, ts 000480, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063684, ts 000640, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063685, ts 000800, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063686, ts 000960, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063687, ts 001120, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063688, ts 001280, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063689, ts 001440, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063690, ts 001600, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063691, ts 001760, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063692, ts 001920, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063693, ts 002080, len 000160)
    Got RTP packet from 192.168.0.112:33918 (type 00, seq 004179, ts 958580, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063694, ts 002240, len 000160)
    Sent RTP packet to 192.168.0.112:33918 (type 00, seq 063695, ts 002400, len 000160)
    Got RTP packet from 192.168.0.112:33918 (type 00, seq 004180, ts 958740, len 000160)

    при других настройках sip.conf когда играюсь постоянно сыпет предупреждение

    warning «Don’t know how to indicate condition 33

    а под centos
    Probation passed — setting RTP source address to

    догадываюсь что проблема по пакетам но сдаюсь.. ))
    Помогите пожалуйста разобраться!! Спасибо!!!!

    1. Добрый день.
      Попробуйте сделать две простые проверки: позвоните между софтфонами, позвоните между gsm
      Нужно вычислить, на каком этапе проявляется проблема. Из сообщения не совсем понятно при каких условиях.

      1. переустановил еще раз сразу из sudo su т.к. в статье местами от sudo а потом без
        Теперь все работает!!! голос в 2 стороны , все отлично!!!!
        но ошибка осталась..
        [Dec 23 15:10:26] WARNING[1257][C-00000010]: channel.c:1002 channel_indicate: [Dongle/KS-010000000f] Don’t know how to indicate condition 33
        Но в любом случае спасибо!!!!!

        1. Не обращайте внимание на это предупреждение. У самого тоже самое и не нашел ни одного форума, где сказали бы что это плохо.
          В статье sudo там, где это необходимо. Конечно же, можно все под sudo -i выполнять и не переживать, что что-то не заработает в итоге :)

  20. Денис, здравствуйте.

    Может быть сможете мне помочь…
    Сделал всё по инструкции по вашей, звонки между внутренними номерами работают.
    Все конфиги на данный момент настроены по вашим статьям и комментариям.
    Но как только хочу позвонить через модем, получаю такую ошибку:

    at_response.c:467 at_response_error: [MODEM1] Dial failed

    Если после этого набрать dongle show device то показывает state — Dialing и так и висит
    Модем (E1550) вроде бы разлочен, голос активирован…

    Спасибо.

    1. Добрый день.
      Сложно сказать. На всякий случай защита карты пин-кодом отключена? Хотя не зарегистрировалась бы в сети, если бы была включена. Раз Dialing, значит модем пытается позвонить. Странно. Не сталкивался никогда с подобным. Если что-то придет в голову — напишу.

      1. Поменял симкарту, заработало. Странно, вроде в телефоне нормально всё с ней… Ну да ладно. Спасибо за ответ :)
        И еще тут маленький вопросик есть, хотел бы уточнить один момент, при установке возникает.
        При сборке chan_dongle после «make…» у меня всегда запускается команда —
        «/usr/bin/install -c -m- 755 chan_dongle.so». А у вас в примере она запускается с добавлением еще пути «/usr/lib/asterisk/modules».
        Естественно что вываливается с ошибкой что не хватает ей данных.
        Если вручную её запустить как нужно, то всё отрабатывает.
        Собственно вопрос почему у меня она всегда такая не полная получается?
        Несколько раз пробовал, всё время так… Я что-то где-то упускаю?
        Спасибо.

        1. К сожалению, ответить на этот вопрос я не могу :(
          В итоге получается проинсталлировать файлы?

          UPD: Открыл инструкцию по установке модуля от автора (в архиве файл INSTALL) и нашел следующее:
          explicite set install directory for module
          DESTDIR=»/usr/lib/asterisk/modules» ./configure

          Поэтому на этапе конфигурирования вместо строки ./configure введите:
          DESTDIR=»/usr/lib/asterisk/modules» ./configure
          Должно сработать.

  21. Все как бы получается, но звука нет.
    — Channel ‘Dongle/dongle0-0100000000’ sent to invalid extension: context,exten,priority=default,+1234567890,1
    — Executing [i@default:1] playback(«Dongle/dongle0-0100000000», «invalid»)
    — Playing ‘invalid.gsm’ (language ‘en’)
    — Executing [i@default:1] background(«Dongle/dongle0-0100000000», «demo-instruct»)
    — Playing ‘demo-instruct.gsm’ (language ‘en’)
    == Spawn extension (default, i, 1) exited non-zero on ‘Dongle/dongle0-0100000000’
    В телефоне ничего не слышно
    модем MTS-RUS E150 11.609.82.02.143 под FreeBSD работал

    где ошибся?

      1. К сожалению, не знаю, что может быть.
        Если всё по инструкции, то должно заработать.
        Впервые сталкиваюсь с такой проблемой. Может кто-то из посетителей блога подскажет.

  22. Здравствуйте! после команды
    ps aux | grep asterisk

    выдал

    root@gigamarket24-HP-Pavilion-dv6700-Notebook-PC:~# sudo /etc/init.d/asterisk start
    * Starting Asterisk PBX: asterisk /usr/sbin/asterisk already running.
    [ OK ]
    root@gigamarket24-HP-Pavilion-dv6700-Notebook-PC:~# ps aux | grep asterisk
    root 2451 0.0 0.2 72532 4112 pts/4 T 13:31 0:00 sudo asterisk -rvvvvvvvvvvddddddddddc
    root 2452 0.0 0.2 37600 4860 pts/4 T 13:31 0:00 rasterisk rvvvvvvvvvvddddddddddc
    root 2916 0.0 0.1 17200 2268 pts/4 R+ 13:56 0:00 grep —color=auto asterisk
    root@gigamarket24-HP-Pavilion-dv6700-Notebook-PC:~#

    что-то пошло не так? Спасибо!

  23. Добрый день Денис. Очередная проблема случилась.на виртуальной машине подключаю модем и при входящих и исходящих звонках голос есть, но установив систему уже на реальный сервер появилась проблема, при исходящих звонках с симки голос проходит, а в обратном направлении (т.е. когда я звоню на симку в модеме) голос не проходит, но звонок на сип телефон поступает. при чём голоса не слышно ни на телефоне с которого звоню, ни в сип телефоне, микрофон везде работает, наушники тоже. В чём может быть проблема?

  24. Я уже читаю и книгу по Линуксу и по Астеру, я по другому поводу хотел поговорить, ну да ладно. А можно будет если есть конечно такая возможность, выложить статью по настройке Astra (это ip-tv).

  25. Денис как можно с вами связаться лично, без коментов. если Вы есть в скайпе, то добавьте меня npuz89

    1. Владислав, я не занимаюсь подготовкой специалистов в области TCP/IP, SIP и т.д.
      Я могу в пределах своего уровня знаний, которые я изложил в статье, помочь разобраться, если что-то не работает касательно статьи.
      Вы допускаете грубые ошибки в своих примерах. Если Вы потратите неделю на прочтение книги, которая у Вас имеется, то вы просто больше не будете допускать таких ошибок.
      С конфигурированием Asterisk редко когда возникают вопросы: тут все однозначно и прозрачно. Проще некуда. Вам важно понять философию системы. Понять ее архитектуру. Я не возьмусь это объяснять, поймите, у меня не так много опыта, чтобы брать на себя ответственность в обучении.
      В моем блоге будут периодически выходить статьи по конфигурированию Asterisk с разжевыванием каждой строчки конфига. Но сйечас просто нет на это времени. Если у меня появится на это время, то мне проще будет написать статью, чем помочь индивидуально. Ведь статья принесет пользу не только Вам, а и всем тем, кто ищет ответы на подобные вопросы.
      Поэтому прошу меня простить, но обучать вас основам я не буду.
      Следите за блогом, я в скором времени обязательно размещу материал о базовой конфигурации системы, который будет безусловно понятен всем.
      Хорошего дня!

  26. Интернет у меня по адсл соединению, и сначала стоит адсл модем, после него вай фай роутер. это для смартфонов.

    1. Если сервер с Астериском подключен через роутер, то, при условии, что роутер получает белый адрес, просто пробросить порты на нем на ваш сервер. Читайте инструкцию к роутеру как это делать.
      Если ваш провайдер не назначает вам белый адрес, либо назначаемый белый адрес динамический (меняется каждое соединение), то придется заказать белый статический адрес у оператора. Эта услуга скорее всего не бесплатна.

      1. да, стоимость белого статического 3$.Просто я думал что есть возможность и через серый айпи зайти, пусть он и меняется, просто каждый раз узнавать новый ip и всё.Видимо не выйдет.((

        1. Серых IP в интернете не существует. Они могут существовать только в небольших локальных сетях с возможностью выхода в интернет. Очень рекомендую заняться изучением TCP/IP. Это очень важно для вашей работы.

  27. добрый вечер Денис. Хотелось бы спросить не по теме немного, а как подключится к астеру из вне(то есть из любой точки мира), я установил сервер на компьютере, но ip адреса у меня серые, я узнал свой ip,но как увидеть сервер в сети я не знаю.

  28. Я понимаю, что это невозможно сделать в коментах))) [defaultMTS] это я просто с головы придумал. так как решил что 2 [default] одновременно существовать не могут))) звонки должны отправляться на все подряд. просто у меня модемы мтс и билайн, поэтому я их так и назвал. Самое что интересное у меня даже есть книга по астериск (будущее телефонии называется), но я её читаю по дороге на работу, и порой информация пролетает мимо.но я попробую вникнуть в эту тему.)) Спасибо.

    1. default — это не просто слово с потолка. Это наименование контекста, вызовы которого обрабатываются правилами в этом блоке. В вашем случае это контекст ваших линий сип. Откройте sip.conf и вы его там найдете. Вы написали кучу ненужных правил, хотя я дал вам одно верное, которое должно работать: что набрали на сип телефоне — то и пошло на модем.
      Имея такую книгу вы точно не должны задавать таких вопросов.

  29. Добрый день Денис. снова обращаюсь за помощью, второй модем у меня увидился, и по отдельности всё работает, только проблема в другов в файле extension.conf мне постоянно приходится менять параметр dongle, с MTS на Beeline и это как бы не удобно. я решил добавить ещё строки, и вот что у меня вышло [globals]
    [default]

    exten => 101,n,Dial(SIP/101)
    exten => _9X.,1,Dial(Dongle/Beeline/holdother:+${FILTER(0-9,${EXTEN})})
    exten => _+9X.,1,Dial(Dongle/Beeline/holdother:+${FILTER(0-9,${EXTEN})})
    exten => _9X.,1,Dial(Dongle/Beeline/holdother:+9${FILTER(0-9,${EXTEN:1})})
    exten => _009X.,1,Dial(Dongle/Beeline/holdother:+9${FILTER(0-9,${EXTEN:3})})
    exten => h,1,Hangup()

    [defaultMTS]
    exten => 101,n,Dial(SIP/101)
    exten => _9X.,1,Dial(Dongle/MTS/holdother:+${FILTER(0-9,${EXTEN})})
    exten => _+9X.,1,Dial(Dongle/MTS/holdother:+${FILTER(0-9,${EXTEN})})
    exten => _9X.,1,Dial(Dongle/MTS/holdother:+9${FILTER(0-9,${EXTEN:1})})
    exten => _009X.,1,Dial(Dongle/MTS/holdother:+9${FILTER(0-9,${EXTEN:3})})
    exten => h,1,Hangup()

    Но теперь звонки с MTS перестали проходить, а с Beeline проходят, как всё это уложить так чтобы постоянно не менять их параметры местами?
    Заранее спасибо.

    1. Добрый день.
      1) с какой целью эти хитрые преобразования номера?
      2) на МТС и на Билайн должны направляться вызовы только на эти сети? или все подряд?
      3) что за контекст defaultMTS? Что за линии входят в этот контекст?
      Вам не помешало бы прочитать хотя бы парочку статей в интренете о принципах конфигурирования, о том, каким образом вызов продвигается по системе, как понимать откуда приходит вызов и как смаршрутировать в нужное назначение. Я не могу вас в комментариях полностью от и до обучить.

  30. Денис, хотелось бы узнать а как подключить два модема, и что где нужно изменить. пробовал по стандарту, как первый так и второй, но второй модем не видится. при чём даже когда один вытаскиваю, и вставляю второй, толку нет, видится только модем мтс.

    1. Во-первых, при подключении/отключении модема в консоль операционной системы должно выдаваться сообщение.
      Посмотреть можно командой в ОС: ls -l /dev/ | grep ttyUSB
      На каждый можем по 3 USB устройства.

      Во-вторых, если при подключении модема появляются три устройства в системе, то в сам asterisk модем добавляется в конфиг dongle.conf. Просто добавьте еще одну аналогичную секцию, пропишите IMEI и/или IMSI, перезагрузите астериск или перезагрузите модуль dongle.

  31. Денис, если вам будет не сложно, можно помочь с конфигами на extension.conf,(точнее с диал планом) я с Узбекистана, номер у нас реально начинается на +998 потом добавляется 9 и после него разные значения 90-91 — Билайн, 97, МТС, и т.д. Я хотел бы проверить сначала линию между сиповским телефоном (в моём случае X-lite) и возможность звонить с этого телефона например на любой номер в моей стране. Можно хотя бы пример с вашим вариантом.Заранее благодарен.

    1. Судя по информации из Википедии, Узбекистан перешел на международный формат в мае 2014 года. Оттуда же возьмем информацию о плане нумерации. https://goo.gl/GSw3EI
      Международный код +998
      Коды сетей/регионов — трехзначные (например, для Билайна 590 и 591)
      Внутризональная нумерация — семизначная.
      Это значит, что телефонный номер в международном формате записывается так:
      +998 590 1234567 (только слитно без пробелов)

      Теперь что касается проверки связи между SIP-клиентами вашего asterisk:
      1) нужно создать ваших клиентов в файле sip.conf например так:

      bindport=5060
      bindaddr=0.0.0.0
      context=from-sip

      [5000]
      type=friend
      secret=password5000
      host=dynamic

      [5001]
      type=friend
      secret=password5001
      host=dynamic

      2) нужно настроить диалплан. Чтобы все ваши sip-абоненты могли звонить внутри вашего asterisk, нужно всего лишь вот такое правило в файле extension.conf

      [from-sip]
      exten => _5XXX,1,Dial(SIP/${EXTEN})

      from-sip — это контекст, вызовы с которого будут обрабатываться тем или иным блоком правил в диалплане. Он же указывается в файле sip.conf
      Далее единственное правило, которое обрабатывает все вызовы на номера, начинающие с цифры 5 следом за которой следуют три любые цифры. Результатом действия будет Dial (вызов) направленный подсистеме SIP на номер ${EXTEN} — это переменная, которая содержит переданный экстеншн (в нашем случае набранный номер).
      Попробуйте с номера 5000 позвонить на 5001 и наоборот.

      Чтобы все остальные вызовы без исключения отправлялись на модем, достаточно вот такого правила (добавляйте в блок [from-sip]):

      exten => _X.,1,Dial(Dongle/YOUR_DONGLE/${EXTEN})

      Теперь все вызовы, которые не попадут под правило _5ХХХ, однозначно попадут под правило _Х. (после Х точка), которое означает «любые цифры в любом количестве», действием которого будет Dial (вызов) направленный подсистеме Dongle, затем следует название вашего Dongle (который вы указали в dongle.conf в квадратных скобках, в моем примере в статье это KS) и далее переменная, которая содержит набранные цифры номера — это вы уже знаете из предыдущего примера.

      Успехов!

      1. Большое вам спасибо. Я правда всё же попробовал сам всё настроить, и о чудо, всё получилось, но за предоставленную информацию, ещё раз большое спасибо.

        1. Пожалуйста. Астериск за всё время достиг такого состояния, где уже все логично, понятно и работает как надо. Так что не бойтесь конфигурировать. Тем более, если уже поняли принцип. В интернете есть очень хорошие русскоязычные справочники по конфигурированию. Я по ним сам учился. Найти не проблема по любому запросу, например: sip.conf :)

  32. и делаю я всё это на виртуальной машине.где то я читал в коментах, что лучше устанавливать всю эту систему на нормальную, а не виртуальную тачку.

    1. Так и есть. Гипервизор, управляющий виртуальными машинами, «подключает» системные ресурсы к ним лишь при необходимости. Пока ресурсы использует одна машина, остальные ожидают освобождения ресурсов. Это не подходит для приложений реального времени, каким являются все приложения для передачи голоса и видео.
      Чисто экспериментально можно установить систему на виртуальную машину, только не забудьте в гипервизоре подключить USB контроллер, к которому подключаете модемы, к вашей конкретной виртуальной машине. Ну и если звук будет рваться или будет неразборчив — это из-за виртуализации. Тренируйтесь на виртуальной, но продакшн должен быть только на отдельной машине, где больше ничего кроме телефонии не запускается! Доступ к ресурсам должен быть 100% в любое время, а не когда освободятся.

  33. Забыл ещё написать, у меня модем мегафон е-173u-1, может ли это повлиять, и симка стоит не мегафон а билайн.

      1. с модемом разобрался, оказывается мегафон не разлочился, нашёл мтс е-153, и он заработал, и ошибки больше не выходили.

  34. И ещё один вопрос на счёт номера телефона, дело в том что в нашем городе номера начинаются на +998, значит мне за место +3 указывать +9?

    1. Если Вы находитесь в России, то международный код Вашей страны +7
      Международный Код Украины +380
      Беларуси +375
      Вы указали код Узбекистана. Если все верно, то да, он +998
      Если из другой страны, то найдите код страны самостоятельно: https://goo.gl/41KJne

      В моем примере: exten=+3805012345678
      +380 — это международный код Украины
      50 — это код сети (региона/оператора)
      12345678 — это я просто набил цифры номера для примера. На самом деле их 7, а не 8 как в примере (7-значная система нумерации), т.е. 1234567

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

      Вот мой пример файла dongle.conf, можете использовать у себя

      [general]
      interval=15

      [defaults]
      group=0
      rxgain=3
      txgain=0
      autodeletesms=yes
      resetdongle=yes
      u2diag=0
      usecallingpres=yes
      callingpres=allowed_passed_screen
      disablesms=no
      language=ru
      smsaspdu=yes
      mindtmfgap=45
      mindtmfduration=80
      mindtmfinterval=200
      callwaiting=auto
      disable=no
      initstate=start
      dtmf=relax

      [MTS]
      imsi=255123456789012
      imei=356123456789012
      exten=+3805012345678
      context=from-gsm

      Не обязательно указывать и imei и imsi одновременно. Можете указать только что-то одно. Если удобно привязывать по модемам, то укажите IMEI, если нужно по конкретным сим-картам привязать, то IMSI. У меня указаны оба параметра, но я понимаю как это работает и не запутаюсь. Так что для того, чтобы упростить жизнь, можете использовать какой-то один из них.

      1. Большое спасибо, попробую разобраться. Я уж прошу прощения, просто я в этом деле совсем зелёный.

  35. ах да и ещё, при выполнении команды cp etc/dongle.conf /etc/asterisk/, терминал выдаёт ошибку что stat не может быть выполнен нет файkа или каталога /etc/dongle.conf
    P.S. chan_dongle переустановил.

  36. Добрый день, я установил asterisk,chan_dongle но немного напортачил с dongle.conf, я его удалил из /etc/asterisk/, потом нашёл его в самом chan_dongle и перенёс в /etc/asterisk/ но когда я его открыл, я его полностью очистил.является ли эта ошибка, проблемой в том, что при воде команды dongle show devices, у меня не показывается модем. Я пробовал и мтс e-153 и мегафон e-173u.

  37. Добрый день. Денис, скажите а большая разница между 11 Астериском и 1,8.? Который день бьюсь с модемом никак не могу побороть система 12,04 Убунту, 1,8 Астриск Веб морда PBX. Если ставлю chan_datacard идут входящие, но нет исходящих. Если ставлю chan_dongle вообще ничего. Где посмотреть трабл, подскажите пож.

    1. Константин, добрый день. 1.8 устаревшая версия. Что касается драйверов модема — то их нужно устанавливать строго под вашу версию. Раз уж у вас 1.8, значит и dongle нужно искать под 1.8.
      Если есть возможность установить 11 версию — это будет наилучший вариант. Тем более, что конфиги скорее всего подойдут без изменений.
      Что касается конкретно разницы между 1.8 и 11 — это Вам лучше почитать на официальном сайте или на неофициальных ресурсах по Asterisk. В двух словах не объяснить.

  38. Добрый день! Скажите пожалуйста … у меня есть сервер астериск на убунту 12.04 . Есть проблема : подключаю к нему 2 свистка е1550 напрямую к usb системника . по диалплану астер должен скинуть звонок и перезвонить через callback . Все вроде бы работает но переодически модем не отвечает , идут длинные гудки . Возможно ли что просто не хватает питания ?

    1. Добрый день.
      По поводу питания — вполне возможно. Рекомендуется включать модемы через хаб с внешним питанием.
      С другой стороны, раз идут длинные гудки, значит модем в сети (мобильной), а вот астериск не видит этих звонков. Открывайте консоль в режиме verbose, звоните на модем и смотрите что пишет в консоль. Как вариант, посмотрите еще состояние dongle. Может быть модемы «отваливаются» от астериска, что тоже очень похоже.

  39. Приветствую вас, Денис.
    У меня к вам просьба помочь советом. Есть модем под chan_dongle, астериск 1.6.2.24. Исходящие звонки работают отлично, а вот входящие не работают — как-будто модем вообще выключен (идет сразу переадресация на автоответчик). Можете подсказать, что это может быть и куда копать?Инфо о модеме из статуса:
    Voice : Yes
    SMS : Yes
    Manufacturer : huawei
    Model : E173
    Firmware : 11.126.16.04.174
    GSM Registration Status : Registered, home network
    RSSI : 21, -112 dBm
    Mode : GSM/GPRS
    Submode : EDGE
    Provider Name : life:)
    Use UCS-2 encoding : Yes
    USSD use 7 bit encoding : Yes
    USSD use UCS-2 decoding : No
    Tasks in queue : 0
    Commands in queue : 0
    Call Waiting : Disabled
    Current device state : start
    Desired device state : start
    When change state : now

    1. Удалите или не обращайте внимания на мой вопрос, пожалуйста. Уже сам разобрался.

      1. Извините, не мог раньше ответить.
        Расскажите, в чем была проблема и как решили? Я с подобным никогда не сталкивался. Если мобильный терминал зарегистрирован в сети, то вызовы на него уже должны приходить. Ему не обязательно быть куда либо подключенным.

  40. У меня при входящем звонке ошибка
    pbx.c:6646 __ast_pbx_run: Channel ‘Dongle/dongle0-0100000001’ sent to invalid extension but no invalid handler: context,exten,priority=from-gsm,

    1. Extension, на который приходит вызов, не совпадает. Запустите консоль в режиме полного вывода, позвоните на сим-карту и посмотрите, в каком виде приходит вызов. Возможно у вас вызов приходит не на +38050…. а на 50… например.
      Тогда и правило: exten => _+X.,1,Dial(SIP/101) должно быть другим, соответствующим тому виду extension, на который поступает вызов.
      Покажите правила, которые должны обслуживать входящие вызовы.

  41. Доброго времени, Денис скажите пожалуйста поддержать блог возможно только через платёжную систему PayPal или есть другие варианты? И есть ли в планах новые темы по развёртыванию Asterisk?

    1. Добрый день, Алексей.
      В планах по Asterisk есть еще несколько тем, в которых будут описаны основы конфигурирования с простыми примерами (организация телефонии в небольшом офисе и в контакт-центре).
      Что касается вариантов платежных систем, добавлю WebMoney, если это удобно. Или какую систему лучше использовать?
      Спасибо за Ваш отзыв.

      1. Попробую на WebMoney, а то через PayPal выдаёт следующее — «В данный момент счета PayPal в Украина могут использоваться только для отправки платежей. Этот получатель не имеет права получать денежные средства.» Печально, что такие отношения сейчас :(

  42. Доброго времени, сейчас прохожу весь процесс установки с самого начала и в процессе возникают такие ошибки:
    1)В разделе «Resource Modules: res_xmpp» нет возможности выбора данного пункта.

    XXX res_xmpp
    — extended —

    2)Подготавливаем к сборке (если возникнет error – не обращаем внимание)

    aclocal && autoconf && automake -a


    bug@ubuntu:~/asterisk-chan-dongle-asterisk11$ 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

    automake: error: no ‘Makefile.am’ found for any configure output — на это внимания не обратил, как было сказано выше.

    3)Конфигурим

    ./configure

    config.status: creating Makefile
    config.status: creating config.h
    config.status: config.h is unchanged
    config.status: executing depfiles commands
    strip chan_dongle.so
    /usr/bin/install -c -m 755 chan_dongle.so
    /usr/bin/install: missing destination file operand after ‘chan_dongle.so’
    Try '/usr/bin/install --help' for more information.
    make: *** [install] Error 1
    bug@ubuntu:~/asterisk-chan-dongle-asterisk11$

    на эту ошибку тоже не обращать внимания?

    Спасибо за терпение.

    1. Алексей, судя по всему, Вы забыли установить зависимости, описанные в начале статьи. Выполните команды:
      sudo apt-get install build-essential
      sudo apt-get install libncurses5-dev libssl-dev libxml2-dev libsqlite3-dev libmysqlclient15-dev curl mpg123 libxml2 libxml2-dev libaudiofile-dev subversion sox libiksemel-dev libssl-dev
      sudo apt-get install linux-headers-`uname -r`

      Я только что собрал тестовый сервер и повторил свою инструкцию пункт за пунктом. Кое что добавил (команды переходов в распакованные из архивов каталоги), но это и так должно было быть понятно.
      Дополнил статью скриншотами.
      Так что устанавливайте все, как написано в статье. Работает 100500%
      Версия ОС: ubuntu server 14.04.1 LTS

      1. Здравствуйте Денис, огромное спасибо за проделанную работу! Всё повторил строка в строку и всё же есть расхождения:
        Ставим утилиты, нужные для сборки
        sudo apt-get install build-essential
        Устанавливаем зависимости (список зависимостей очень важен! подбирался лично!)
        sudo apt-get install libncurses5-dev libssl-dev libxml2-dev libsqlite3-dev libmysqlclient15-dev curl mpg123 libxml2 libxml2-dev libaudiofile-dev subversion
        Если при инсталляции системы не были установлены хедеры ядра, то еще ставим их
        sudo apt-get install linux-headers-`uname -r`
        Установка DAHDI
        Установка LibPRI
        Установка SpanDSP — не пытался установить, т.к. в предыдущие разы положительного результата не было.
        Установка Asterisk
        Вызываем конфигурационное меню — До данного пункта всёпрошло один в один с Вашим руководством.
        Вызываю меню и наблюдаю следующее:
        http://uploads.ru/iDlyH.jpg
        Пришлось установить iksemel

        wget https://iksemel.googlecode.com/files/iksemel-1.4.tar.gz
        tar xf iksemel-1.4.tar.gz
        cd iksemel-1.4
        ./configure
        make
        make install

        Повторно конфигурирую Asterisk — теперь все ок.

        1. Мне почему-то кажется, что Вы не до конца копируете строку с зависимостями. Она очень длинная. Нажмите кнопку «показать код в новом окне»:

          apt-get install libncurses5-dev libssl-dev libxml2-dev libsqlite3-dev libmysqlclient15-dev curl mpg123 libxml2 libxml2-dev libaudiofile-dev subversion sox libiksemel-dev libssl-dev

          Среди устанавливаемых пакетов есть iksemel (точнее есть необходимый для сборки libiksemel-dev).

  43. Спасибо за внимание.
    1)
    root@ubuntu:/home/bug# ps aux | grep asterisk
    asterisk 1642 1.0 1.9 47248 20192 ? Ssl 20:50 0:04 /usr/sbin/asterisk -U asterisk -G dialout
    root 1690 0.0 0.0 4676 828 pts/0 S+ 20:58 0:00 grep —color=auto asterisk
    ===============================================================================================================
    2)
    Не дожидаясь Вашего ответа проделал следующее:
    chown asterisk:asterisk -R /dev/ttyUSB*
    после этого отказ доступа к ttyUSB* не происходило
    ===============================================================================================================
    3)
    Не понимаю следующего:
    В Вашем примере содержимое файла «/etc/asterisk/dongle.conf» такое-
    [KS] — так и не понял, что означает
    imsi=255012345678012 — ясно
    imei=345678901234567 — ясно
    exten=+380991234567 — это видимо номер симки 3g-модема?
    context=from-gsm — это профиль 3g-модема для управления вызовами
    —————————————————————————————————————
    Вот содержимое моего файла «/etc/asterisk/dongle.conf»
    —————————————————————————————————————
    что находится выше всё закомментировано
    ; dongle required settings
    [dongle0]
    audio=/dev/ttyUSB1 ; tty port for audio connection; no default value
    data=/dev/ttyUSB2 ; tty port for AT commands; no default value
    language=ru
    ; or you can omit both audio and data together and use imei=123456789012345 and/or imsi=123456789012345
    ; imei and imsi must contain exactly 15 digits !
    ; imei/imsi discovery is available on Linux only
    imei=3524450XXXXXXXX
    imsi=2502033XXXXXXXX

    ; if audio and data set together with imei and/or imsi audio and data has precedence
    ; you can use both imei and imsi together in this case exact match by imei and imsi required
    context=from-gsm
    —————————————————————————————————————-
    ================================================================================================================
    4)
    Для работы 3g-модема не могу настроить «/etc/asterisk/extensions.conf», пробовал руководствами с различных сайтов,
    но везде есть различия. Перепробовал разные примеры, но увы, только голова пухнет и глаза краснеют.
    Единственное, что получилось настроить по шаблону, так это звонок с одного SIP1 на SIP2 между виртуальными машинами.
    Вот содержимое моих sip.conf и extensions.conf
    —————————————————————————————————————-
    «/etc/asterisk/sip.conf»
    localnet=192.168.0.0/255.255.255.0
    [101](natted-phone)
    secret=XXXXXX
    [102](natted-phone)
    secret=XXXXXX
    [103](natted-phone)
    secret=XXXXXX
    [104](natted-phone)
    ——————————————————————————————————————
    «/etc/asterisk/extensions.conf»
    [dongle-incoming-sms]
    exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
    exten => sms,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DONGLENAME} — ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}’

    >> /var/log/asterisk/sms.txt)
    exten => sms,n,Hangup()

    [dongle-incoming-ussd]
    exten => ussd,1,Noop(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
    exten => ussd,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}’ >>

    /var/log/asterisk/ussd.txt)
    exten => ussd,n,Hangup()

    [dongle-incoming]
    include => dongle-incoming-sms
    include => dongle-incoming-ussd

    exten => _X.,1,Dial(SIP/101) — все входящие на 3g-модем перенаправляются на SIP1
    exten => h,1,Hangup()

    [from-office]
    exten => 101,1,Dial(SIP/101)
    exten => 102,1,Dial(SIP/102)
    exten => 103,1,Dial(SIP/103)
    exten => 104,1,Dial(SIP/104)
    ——————————————————————————————————————-
    Хотя последнее выходит за рамки Вашего руководства, я всё-же осмелюсь попросить помощи в решении данных вопросов.
    С уважением, Алексей.

    1. 1) все верно
      2) это поможет до следующего отключения/подключения или перезагрузки. Используйте демон UDEV, чтобы назначение прав происходило автоматически. Имя группы, назначаемой устройствам ttyUSB и имя группы, от имени которой запускается Asterisk обязательно должно совпадать.
      3) [KS] — это сокращенно «Киевстар». В системе установлено несколько симкарт разных операторов. В данном случае [KS] — это идентификатор данной линии в Asterisk. На этот идентификатор вы потом сможете направлять вызовы вот так:
      exten => _06[7,8]XXXXXXX,1,Dial(Dongle/KS/${EXTEN})
      Данное правило направит все вызовы, которые попадают под шаблон _06[7,8]XXXXXXX на модем с SIM-картой Киевстар.
      exten= — это телефонный номер. Можно не использовать.
      context= — это контекст, с которого будут обрабатываться входящие вызовы (в файле extensopns.conf)
      параметры audio и data использовать более не нужно. Я в прошлый раз Вам об этом писал. Модем теперь определяется по IMEI/IMSI, а не по портам audio/data, как раньше.
      4) звонки между SIP-линиями внутри одного asterisk можно сделать в одну строку:
      exten => _1XX,n,Dial(SIP/${EXTEN})
      и не придется добавлять каждый раз новые правила. Одно правило работает для всех номеров сразу.
      Если следовать моему примеру, то принимать звонки с GSM-модема и направлять их на определенный внутренний SIP-номер (например на 101) можно так (в extensions.conf):
      [from-gsm]
      exten => _+X.,1,Dial(SIP/101)
      Ну, а пример с звонками с внутреннего номера на мобильный через модем я привел выше в п. 3

      extensions.conf — это тема отдельной статьи и не одной. В одном комментарии рассказать как оно работает не получится.

      1. Извиняюсь, но не могу выявить где у меня допущена ошибка?
        ————————————————-
        мой файл «/etc/asterisk/dongle.conf»

        [dongle0]
        ;audio=/dev/ttyUSB1 ; tty port for audio connection; no default value
        ;data=/dev/ttyUSB2 ; tty port for AT commands; no default value
        language=ru
        ; or you can omit both audio and data together and use imei=123456789012345 and/or imsi=123456789012345
        ; imei and imsi must contain exactly 15 digits !
        ; imei/imsi discovery is available on Linux only
        imei=352445043269423
        imsi=250203309277771

        ; if audio and data set together with imei and/or imsi audio and data has precedence
        ; you can use both imei and imsi together in this case exact match by imei and imsi required
        context=from-tele2

        —————————————————
        мой файл «/etc/asterisk/extensions.conf»

        [from-tele2-sms]
        exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
        exten => sms,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DONGLENAME} — ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}’

        >> /var/log/asterisk/sms.txt)
        exten => sms,n,Hangup()

        [from-tele2-ussd]
        exten => ussd,1,Noop(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
        exten => ussd,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}’ >>

        /var/log/asterisk/ussd.txt)
        exten => ussd,n,Hangup()

        [from-tele2]
        include => dongle-incoming-sms
        include => dongle-incoming-ussd

        exten => _+X.,1,Dial(SIP/101)
        exten => h,1,Hangup()

        [from-office]
        exten => _1XX,n,Dial(SIP/${EXTEN})
        —————————————————-
        При попытке позвонить на 3g-модем идёт сброс вызова, данные с консоли ниже:

        Connected to Asterisk 11.15.0 currently running on ubuntu (pid = 1762)
        ubuntu*CLI> dongle show devices
        ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
        dongle0 0 Free 17 0 0 E1550 11.608.12.00.143 352445043269423 250203309277771 Unknown
        ubuntu*CLI> sip show peers
        Name/username Host Dyn Forcerport Comedia ACL Port Status Description
        101/101 192.168.0.14 D Auto (No) No 5060 Unmonitored
        102 (Unspecified) D Auto (No) No 0 Unmonitored
        103/103 192.168.0.15 D Auto (No) No 5060 Unmonitored
        104 (Unspecified) D Auto (No) No 0 Unmonitored
        4 sip peers [Monitored: 0 online, 0 offline Unmonitored: 2 online, 2 offline]
        [Jan 25 23:31:59] WARNING[1807][C-00000000]: pbx.c:6646 __ast_pbx_run: Channel ‘Dongle/dongle0-0100000000’ sent to invalid extension but no invalid handler: context,exten,priority=from-tele2,s,1
        — Executing [h@from-tele2:1] Hangup(«Dongle/dongle0-0100000000», «») in new stack
        == Spawn extension (from-tele2, h, 1) exited non-zero on ‘Dongle/dongle0-0100000000’
        ubuntu*CLI>

        1. Начните с самого минимального:

          Файл /etc/asterisk/dongle.conf
          [dongle0]
          imei=352445043269423
          imsi=250203309277771
          context=from-tele2

          Файл /etc/asterisk/extensions.conf
          [from-tele2]
          exten => _+X.,1,Dial(SIP/101)
          exten => h,1,Hangup()

          [from-office]
          exten => _1XX,1,Dial(SIP/${EXTEN})
          exten => _8095XXXXXXX,1,Dial(Dongle/dongle0/${EXTEN})

          При этом минимуме у вас получится: звонить на мобильный и принимать эти вызовы на внутренний номер 101, звонить между внутренними номерами, звонить с внутреннего номера на мобильные, начинающие с 095 через модем.
          Запускайте Asterisk командой asterisk -rvvvvvvvvvvddddddddddc
          Затем звоните с мобильного на модем и смотрите логи на экране, с какого exten приходит вызов. Exten — это номер телефона. Он может выглядеть как угодно, например, для России, +70951234567 или просто 0951234567. В любом случае, нужно проанализировать это и изменить шаблон. В моем случае при входящем вызове exten принимает вид +380951234567, поэтому и в шаблоне «_+Х.», т.е. «что угодно, начинающееся на + и далее содержащее какое угодно количество знаков».

  44. Здравствуйте Денис, спасибо за данное руководство у меня совсем не имеющего знаний по Linux и Asterisk почти всё получилось и всё же без косяков не вышло:
    1) Не установился — SnapDSP (да и бог с ним, пока не нужен)
    2) В файле /etc/default/asterisk раскомментируем две строчки.
    #AST_USER=»asterisk»
    #AST_GROUP=»dialout»
    в моём случае в файле только
    #AST_USER=»asterisk»
    #AST_GROUP=»asterisk»
    и не понимаю на каком этапе я допустил ошибку?
    3)Перезапускаем Asterisk, смотрим, загрузился ли модуль
    sudo /etc/init.d/asterisk restart
    sudo asterisk -rvvv
    asterisk*CLI> reload
    asterisk*CLI> dongle show devices
    на команду «asterisk*CLI> dongle show devices» отвечает:
    ubuntu*CLI> dongle show devices
    ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
    dongle0 0 Not connec 0 0 0 NONE
    4) И при запуске Asterisk происходит следующее:
    — [dongle0] Trying to connect on /dev/ttyUSB2…
    Спасибо.
    [Jan 25 16:18:27] WARNING[1170]: chan_dongle.c:218 opentty: unable to open /dev/ttyUSB2: Permission denied

    1. Добрый день, Алексей.
      1) SnapDSP у меня у самого не получилось установить, но т.к. никогда не было в нем необходимости, то и не пытался разобраться, почему не получается.
      2) По поводу /etc/default/asterisk: раскомментируйте строки и измените группу, чтобы было вот так:
      AST_USER=»asterisk»
      AST_GROUP=»dialout»
      Если Вы будете использовать модемы, подключенные по USB, то вам необходимо запускать asterisk от имени группы dialout, иначе asterisk не сможет получить полный доступ к модемам (только члены группы dialout имеют полный доступ к USB). После редактирования файла перезапутите asterisk, как написано в статье, и посмотрите, от чьего имени он работает. К меня так:
      root@astgsm:~# ps aux | grep aster
      asterisk 6216 0.6 1.3 62976 28444 ? Ssl Jan09 143:41 /usr/sbin/asterisk -U asterisk -G dialout
      3) в данном случае все нормально. Модуль dongle загрузился. Иначе бы была ошибка.
      4) о вашем модеме система ничего не знает. Во-первых: нужно создать файл /etc/udev/rules.d/92-dongle.rules, в который прописать строку:
      KERNEL==»ttyUSB*», MODE=»0666″, OWNER=»asterisk», GROUP=»dialout»
      После чего перезапустите демон udev командой: service udev restart
      Это действие позволит при подключении модемов назначить устройствам права доступа, чтобы asterisk смог получить полный доступ к ним. И во-вторых, нужно перечислить ваши модемы в файле /etc/asterisk/dongle.conf, указав либо imei (идентификатор gsm-модуля), либо imsi (идентификатор sim-карты), как указано в статье.
      Я внес некоторые изменения в статью, опираясь на Ваши вопросы.

  45. Неделю пытаюсь настройть астериск + chan_dongle.
    И не получается.
    В данном мануале я остановился на команде «./configure»
    Высыпалась ошибка
    -bash: ./configure: Нет такого файла или каталога

    1. Виктор, Вы просто забыли перейти в распакованный каталог. Я не могу привести имя этого каталога, т.к. в зависимости от версии имя будет разное. Но в любом случае после того, как Вы распаковали архив, у вас должен появиться каталог с распакованными файлами.
      После распаковки выполните команду:
      cd asterisk-11 (полное имя каталога, можете нажать клавишу Tab, чтобы оболочка автоматически предложила имя).
      И только потом выполняйте ./configure

      1. Разобрался. Появилась новая проблема. Плохое качество связи в исходящем от модема направлении. Пять разных модемов. И на каждом меня слышат с пропадающими словами через букву

        1. Извините за задержку с ответом. Плохое качество звука может быть из-за самих модемов. У меня так было. Через некоторые модемы звук рвался и даже было тяжело догадаться о чем говорят. После замены модемов стало замечательно. Прошивка модема роли не играет — проверял. Еще один вариант плохого качества звука — загруженность шины. Астериск обязательно нужно ставить на физическую (не виртуальную) машину, на которой кроме Астериска больше ничего нет. Ему нужен очень быстрый доступ к шине. Если его нет, то звук будет ужасным. Проверьте это, позвонив между внутренними телефонными SIP-линиями.

          1. Спасибо за ответ))
            Думаете все пять модемов могут быть косячными?
            Пробовал звонок SIP — SIP. Буквы не пропадают.
            Как проверить скорость шины?

            1. Ну, из практики — у меня были модемы, через которые речь была практически не разборчивой. Так что это факт. Экземпляры бывают разные. Прошивка не при чем.
              Ну и еще: GSM-связь оставляет желать лучшего по качеству. Убедитесь, что уровни сигналов на модемах нормальные, а то вполне вероятно, что модемы заперты в металлическом шкафу.
              CLI> dongle show device имя_устройства
              Ищите там RSSI. У меня на модемах сигнал достаточно хороший — показывает: 27, -59 dBm. Если у вас будет -80 дБм — дела очень плохи. Выносите модемы через USB-удлинитель и хаб.
              И вот еще, что немаловажно, обязательно подключайте внешнее питание на хаб! С этой проблемой тоже сталкивались. Нехватка питания и, как следствие, просадка напряжения при работе передатчика, что влияет на всё сразу. Так что предпочтительнее: модемы в хаб, к хабу внешний блок питания.
              Как проверить шину — к сожалению не знаю. Просто не грузите сервер еще чем-то, кроме Астериска. Тут важен не процессор и не память. Важна именно шина. Телефония — это приложение реального времени. Вот если вы получаете задержку по шине, например, в 10 мс, то эту задержку вы слышите и в трубке, либо же кусок фразы просто вывалится из потока. Шина должна быть свободной. Убирайте с сервера всё, кроме Астериска!
              Если с модемами не заладится, подыщите недорогие GoIP решения (можно найти что-то вроде GoIP-8). Обычно такие аппараты работают по SIP и подключить их к астериску намного проще. Качество голоса будет значительно выше + можно использовать внешние антенны при необходимости.

Прокомментировать