Установка 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. Денис подскажите пожалуйста Вы делили так чтобы можно было донабирать номера после того как мы дозвонились на 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

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

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

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

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

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

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

    Дай по порядку:
    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 А на гнездо.

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

  4. Привет Денис!
    чёт опять туплю
    что то не так настроил 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-хаб с эл. питанием, чтоб ничто не могло помешать к полноценной работе))))

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

    =========================================================================
    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-хаб с внешним питанием.

  6. Доброго времени суток!
    Ребят подскажите пожалуйста. Донгл завел с полпинка, т.е. 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 будет проще и логичней писать маршрутизацию.

  7. Всем привет!
    Вот столкнулся с такой проблемой.
    после вода команды 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()

  8. ОХХХ отдельное конечно СПАСИБИЩЕ )) за такую статью !!!!!! именно про 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 выполнять и не переживать, что что-то не заработает в итоге :)

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

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

    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
          Должно сработать.

  10. Все как бы получается, но звука нет.
    — 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. К сожалению, не знаю, что может быть.
        Если всё по инструкции, то должно заработать.
        Впервые сталкиваюсь с такой проблемой. Может кто-то из посетителей блога подскажет.

  11. Здравствуйте! после команды
    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:~#

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

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

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

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

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

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

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

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

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

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

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