Установка Asterisk 13 + chan_dongle (E1550, E1750) на Debian 8

В предыдущей статье шла речь об установке системы Asterisk версии 11 на сервер под управлением Ubuntu. Основным поводом установки 11 версии было то, что под 13 версию не существовало модуля chan_dongle. Теперь такой модуль есть, поэтому есть смысл написать заново, теперь уже о Asterisk 13, Debian и некоторых других удобных полезных функциях.

Данная инструкция описывает процесс установки телефонной системы Asterisk с модулями DAHDI, LibPRI, PJSip, SpanDSP, chan_dongle и дополнительными кодеками Opus и g729. Никаких WEB-интерфейсов и прочих утилит для конфигурирования и мониторинга системы данная инструкция не предусматривает. Это связано с тем, что автору приходилось неоднократно разбираться с конфигурационными файлами, сгенерированными автоматически при помощи FreeBPX и прочих подобных систем, что вызывало у автора сильную ненависть к подобным оболочкам. Поэтому, друзья, настраивайте все руками в конфигурационных файлах. Это не так сложно, зато работает как часы и разобраться намного проще.

Disclamer

Автор предупреждает читателей, о тонкой грани между допустимым использованием телефонных систем подобного рода и уголовной ответственностью, которая может наступить при неправильной маршрутизации телефонного трафика (рефайлинг). Пожалуйста, ознакомьтесь с законодательством Вашей страны, чтобы избежать проблем. Автор снимает с себя ответственность за любые действия читателя, в которых ему может помочь материал данной статьи и возлагает ее целиком и полностью на читателя данной статьи. Информация, приведенная в данной статье, является справочной и не носит практического характера.

Входные данные

Для написания статьи я создал тестовый виртуальный сервер под управлением Debian 8.4. Во время установки было выбрано следующее программное обеспечение: SSH-сервер и Стандартные системные утилиты. В боевой конфигурации рекомендуется выделить отдельный раздел диска для файлов записей разговоров, если это необходимо.

Debian version

Важное замечание: производите все действия по установке под учетной записью суперпользователя root. Не используйте sudo, так как это вызывает ошибки в некоторых случаях. Пожалуйста, не игнорируйте это замечание. Вы можете использовать команду

su -

либо разрешите на время установки доступ пользователю root через ssh, для чего в файле /etc/ssh/sshd_config установите параметр

PermitRootLogin yes

и перезапустите ssh-сервер

service sshd restart

Установка зависимостей

apt-get update && apt-get upgrade && apt-get dist-upgrade

Это все одна длинная строка. Дважды щелкните по блоку ниже и скопируйте текст целиком.

apt-get install -y build-essential autoconf libncurses5-dev libssl-dev libxml2-dev libsqlite3-dev libmysqlclient-dev curl mpg123 libxml2 libxml2-dev libaudiofile-dev subversion sox libsox-fmt-all uuid-dev libjansson-dev libiksemel-dev libssl-dev libtiff5-dev mysql-client libmyodbc lame linux-headers-`uname -r`

После этой процедуры желательно перезагрузить сервер.

Установка DAHDI

Внимание! В большинстве инсталляций Вам не пригодится этот модуль. Он необходим только если у Вас есть оборудование, подключенное к данному серверу, которое взаимодействует с телефонной сетью посредством E1, T1 и т.п. Это разного рода PSTN/DAHDI-платы.

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
tar xvfz dahdi-linux-complete-current.tar.gz
rm -f dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete-*
make all
make install
make config

Установка LibPRI

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
tar xvfz libpri-current.tar.gz
rm -f libpri-current.tar.gz
cd libpri-*
make
make install

Установка PJSip

PJSIP мультимедийная библиотека с открытым кодом, для реализации протоколов SIP, SDP, RTP, STUN, TURN и ICE. Она сочетает лучшие возможности SIP сигнализации, хорошую проходимость NAT и высокий уровень взаимодействия с приложениями. Подходит практически для любого типа систем, начиная от компьютеров и заканчивая встраиваемыми системами (embedded systems) и мобильными телефонами. Подробнее.

Скопируйте ссылку на загрузку последней версии с сайта http://www.pjsip.org/download.htm и используйте в команде wget ниже

cd /usr/src
wget http://www.pjsip.org/release/2.6/pjproject-2.6.tar.bz2
tar -xjvf pjproject-*.tar.bz2
rm -f pjproject-*.tar.bz2
cd pjproject-*
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
make dep
make
make install

Установка SpanDSP

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

Так как последняя версия spandsp была выпущена достаточно давно, то можно без проблем установить его из репозитория Debian

apt-get install -y libspandsp2 libspandsp-dev

Либо же загрузите последнюю версию для установки вручную

cd /usr/src
wget http://soft-switch.org/downloads/spandsp/spandsp-0.0.6pre21.tgz
tar vxfz spandsp-*.tgz
rm -f spandsp-*.tgz
cd spandsp-*
./configure
make clean
make
make install

Установка Asterisk 13

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar xvfz asterisk-13-current.tar.gz
rm -f asterisk-13-current.tar.gz
cd asterisk-13*
contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install
./configure
make menuselect

Далее в конфигурационном меню необходимо выбрать по необходимости следующие компоненты:

  • Add-ons: format_mp3
  • Core Sound Packages: CORE-SOUNDS-EN-(WAV, ALAW, GSM, G729, G722), CORE-SOUNDS-RU-(WAV, ALAW, GSM,G729, G722)
  • Extras Sound Packages: WAV, ALAW, GSM, G729 и G722

Продолжаем установку. (процесс make занимает достаточно много времени)

Если это первая установка или у Вас еще нет базовых конфигурационных файлов, Вы можете их установить, выполнив make samples. Если Вы не понимаете, о чем идет речь, однозначно устанавливайте.

make
make install
make config
make samples
ldconfig

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

Если кодек g729 не нужен — смело пропускаем.

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

Для начала нужно узнать, какой процессор используется в Вашем сервере

grep -E 'model name|flags' /proc/cpuinfo

Внимание! Перед тем, как скачивать кодек, откройте сайт http://asterisk.hosting.lv/, выберите подходящий под систему и процессор кодек, скопируйте ссылку на его загрузку и используйте именно эту ссылку в команде ниже! Это крайне важно!

wget -P /usr/lib/asterisk/modules/ -O codec_g729.so ссылка_на_загрузку

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

На этом основная установка системы окончена. Запустите Asterisk и убедитесь, что все в порядке

/etc/init.d/asterisk start
ps ax | grep asterisk
asterisk -rvvvvvvvvvvddddddddddc
quit
/etc/init.d/asterisk stop

Если планируется использовать USB-модемы, то Asterisk желательно запускать от имени группы dialout, чтобы он имел доступ к устройствам USB.

adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk PBX" asterisk
usermod -a -G dialout,audio asterisk

Задаем права на каталоги:

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

Если Вы установили базовые конфигурационные файлы, то по умолчанию в них сконфигурирован английский язык (это влияет на речевые информаторы). Если желаете, можете изменяем язык на русский во всех файлах

sed -i 's/defaultlanguage = en/defaultlanguage = ru/' /etc/asterisk/asterisk.conf
sed -i 's/;language=en/language=ru/' /etc/asterisk/*.conf

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

AST_USER="asterisk"
AST_GROUP="dialout"

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

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

Установка chan_dongle

Модуль chan_dongle необходим для работы с модемами Huawei:

  • K3715
  • E169 / K3520
  • E155X
  • E175X
  • K3765

Описываемая в данной статье версия является форком основного проекта, но основной проект не развивается с 2013 года и поддерживает только Asterisk 11. Впрочем, есть еще один форк той версии, что используется в данной статье. В связи с этим гарантировать работу модуля невозможно. Со списком известных багов можно ознакомиться по этой ссылке, но не ожидайте, что автор их исправит, так как этот список не обновлялся с 2011 года. Даже сам автор предупреждает, что модуль работает как попало и может назвонить вам куда нибудь и тем самым сожрать все ваши деньги или натворить еще что-то. Так что пожалуйста, прежде чем читать дальше, еще раз подумайте, стоит ли связываться с этим модулем. На сегодняшний день это единственный модуль, способный заставить дружить недорогие GSM-модемы с Asterisk и, скорее всего, у Вас нет выбора.

This channel driver is in alpha stage.
I am not responsible if this channel driver will eat your money on your SIM card or do any unpredicted things.

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

AT^U2DIAG=0

Также желательно отключить на модеме ожидание вызова:

AT+CCWA=0,0,1

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

apt-get install -y unzip automake autoconf

Далее загружаем форк chan_dongle под Asterisk 13, разархивируем, собираем, устанавливаем. Не обращаем внимание на строчку «automake: error: no ‘Makefile.am’ found for any configure output» — это не является ошибкой

cd /usr/src
wget https://github.com/oleg-krv/asterisk-chan-dongle/archive/asterisk13.zip
unzip asterisk13.zip
rm -f asterisk13.zip
cd asterisk-chan-dongle-asterisk13
aclocal && autoconf && automake -a
./configure
make
make install

Копируем конфигурационный файл dongle.conf

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

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

/etc/init.d/asterisk restart
asterisk -rvvvvvvvvvvddddddddddc
dongle show devices

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

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

Затем перезапустим службу udev

service udev restart

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

Идентификация по IMSI или IMEI

В Файле /etc/asterisk/dongle.conf описываются все устройства. Синтаксис файла — общепринятый в Asterisk. Например, я опишу модем, в котором установлена SIM-карта оператора Киевстар:

[Kievstar]
imsi=255012321232123
imei=345654898756548
context=from-dongle

Идентификация устройства производится по imsi и imei. Можно идентифицировать устройство только по одному из параметров. imsi — это идентификатор SIM-карты, imei — это идентификатор терминала. Если Вам важно идентифицировать устройства по SIM-картам, тогда Вы можете указать только imsi номера этих SIM-карт (написаны на картах), если же важно идентифицировать по терминалам, тогда указывайте imei терминала (написан на модеме).

Все входящие вызовы с такого устройства будут обработаны контекстом from-dongle из файла extensions.conf или extensions.ael.

Исходящие вызовы через данный модем необходимо направлять на Dongle/Kievstar

Также в описании устройства можно указать exten=+380123456789. В таком случае все входящие вызовы будут иметь указанный exten. В некоторых случаях это возможно понадобится.

Если идентификация по 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+="Kievstar-audio"
KERNEL=="ttyUSB[0-9]*", ID=="1-1:1.2", SYMLINK+="Kievstar-data"

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

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

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

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

[Kievstar]
audio=/dev/Kievstar-audio 
data=/dev/Kievstar-data
context=from-dongle

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

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

Установка Asterisk 13 + chan_dongle (E1550, E1750) на Debian 8: 47 комментариев

  1. А у меня «секс» другого плана : не могу собрать chan_dongle под freepbxdistro.
    Суть такова : до версии Астериска 13.15 включительно , тупо заливал готовый chan_dongle.so и конфиг и всё работало. Но в один «прекрасный» день сделал очередной yum update и получил 13.17 . И тут началась веселуха : модуль chan_dongle не подгружается…
    Ну, поначалу делал просто : делал downgrade до версии 13.15 и всё начинало работать.
    Но теперь downgrade идёт только до 13.16 .
    Ну, думаю, надо собрать из исходников как в старые добрые времена… делаю по мануалу из этой статьи — не собирается .. Ладно, беру виртуалку с Дебиан, собираю там Астериск 13.17.2 по мануалу из этой статьи , собираю chan_dongle … Ура ! Собрался! Копирую модуль на работающий сервак — не берёт … Ладно, начинаю установку на рабочем серваке Астериск 13.17.2 , собираю модуль — собрался и даже работает, НО ! Он то работает с собранным Астериском, а не с тем что тесно связан с Freepbx .
    В общем, пришлось мне восстанавливать систему из бекапа… Ну и опять же : собранный на этой же машине chan_dongle не хочет дружить с Астериском из сборки FreepbxDistro … Говорит мол собран не под ту версию Астериска… Но я же спецом устанавливал из исходников 13.17.2 и собирал модуль на этой же машине ! Вот такая вот беда…

    1. Добрый день.
      Там есть инструкция по установке: https://github.com/superles/chan-dongle-asterisk12/blob/master/INSTALL
      Если не получается по ней, лучше обратитесь к автору модуля с возникающими вопросами или поищите, может быть уже кто-то обращался в issue https://github.com/superles/chan-dongle-asterisk12/issues

  2. Привет!

    А как реализовать правильно еще вот такие функции:

    -USSD
    -СМС (возможно, отправка с веб-интерфейса?)
    -Запись разговоров
    -Оповещения на электронную почту о пропущенных звонках
    -Автоответчик и русский язык для голосового автоответчика
    -Режим рабочее/не рабочее время, чтобы, например в субботу включался автоответчик, с сообщением о том, что, извините, но мы не работаем сегодня, оставьте свои данные и мы вам перезвоним и при этом приходит э-мэйл.

    Вот такие вот у меня пожелания. Реально ли это?

    1. Привет.
      Прием USSD и SMS и многие другие фичи Донгла описаны в официальном мануале: https://github.com/oleg-krv/asterisk-chan-dongle/blob/master/README.txt — ссылка на репозиторий есть в статье.
      Запись разговоров — команда MixMonitor()
      Оповещение о пропущенных — используй экстеншн h и выполняй любые действия. (Но пропущенный с твоей точки зрения может быть отвеченным с точки зрения системы).
      Автоответчик — зачитывай фразу в аудиофайл, сохраняй его обязательно в моно 8 кГц, клади в папку /var/lib/asterisk/sounds/ru проигрывайте командой Playback(). У меня уже год как валяется недописанная статья про речевые информаторы и кодеки. Как нибудь наберусь сил дописать.
      Русский язык для информаторов — язык зависит от настроек драйверов: в sip.conf, dongle.conf и других конфигах есть параметр language. В статье описано, как одной командой во всех конфигах поменять на ru, но, так как конфиг донгла попал в папку позже, то открой dongle.conf и смени сам language на ru.
      Рабочее и не рабочее время — используй команду GotoIfTime() для перехода на соответствующий экстеншн в зависимости от попадания или не попадания в промежуток времени.

      Подробно не описывал, так как в интернете примеров уйма.
      Когда нибудь соберусь и напиши какую нибудь статью с набором простых решений.

      1. Спасибо! Будем изучать, примеров то много, но совет такого хорошего специалиста очень ценен, дабы не поломать чего либо из уже созданного))

  3. использование pjsip валит систему, достаточно одному абоненту сделать вызов и конец
    в чем может быть проблема ?

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

  4. Здравствуйте! gsm0 0 Free 11 5 4 Beeline E1550 11.609.20.01.715 352445046045804 250995129184906 Unknown вот вывод моего донгла. вызовы проходят в обе стороны, но звука нет. заливаю астериск 11 и все хорошо. в чем может быть проблема? причем бывает так что свосток просто отваливается без проблемы, лечится перезагрузкой

    1. Здравствуйте.
      Причина может быть во всём, начиная с того, что драйвер самописный и автор не гарантирует вообще его работу и заканчивая прошивками.
      У меня тоже есть модем, на котором периодически беспричинно пропадает слышимость, помогает только аппаратная перезагрузка по питанию.
      Долгое время под 13й астериск вообще не было драйвера. Автор драйвера много лет назад забросил его и никакие ошибки, естественно, исправлять не будет.
      Если используете телефонную систему в производстве, посмотрите в сторону нормальных GoIP шлюзов.

      1. Здравствуйте! Пересобрал все на 11,25,1 астериске, тоже самое, видимо дело в самом линуксе, т.к. на убунту 12,04 все работает нормально. Может наталкнете, что может блокировать прохождение звука (все ставил на debian 8.7.1)

      2. и еще астериск собирал без DAHDI и LibPRI т.к. модули такие не стоят, может это влиять на работу свистка? или он от низ не зависит?

        1. LibPRI обязательный модуль — без него не будет работать TDM. LibPRI может требовать для сборки модуль DAHDI, хотя этот модуль и не является обязательным, если нет аппаратных карточек взаимодействия с телефонной сетью.

          1. пересобрал с DAHDI и LibPRI но результат тот же, вызов есть, звука нет
            и да делал все без pjsip т.к. с этим протоколом абоненты регистрируются, но при первом звонке падает астериск (переустанавливал несколько раз разные версии результат одинаковый)

              1. вот как раз с sip все ОК, я не пойму почему нет звука с 3ж модема, пробовал пересобрать на 11 астериске, тоже самое. а вот рабочая система на убунту 12.04 все ок. у меня подозрения что в дебиан 8 что то его блокирует

  5. ERROR[30179][C-00000000]: translate.c:1314 ast_translator_best_choice: Cannot determine best translation path since one capability supports no formats
    [Feb 28 16:12:46] WARNING[30179][C-00000000]: channel.c:5630 set_format: Unable to find a codec translation path: (none|slin) -> (none)
    [Feb 28 16:12:46] WARNING[30179][C-00000000]: channel.c:6556 ast_channel_make_compatible_helper: Unable to set read format on channel Dongle/gsm-0100000000 to none
    такая ошибка при звонке на донгл и переадресацией на донгл

    1. Приветствую. А ты в конфиге chan_dongle точно прописал правильные ttyUSB для модема? Там обычно три устройства появляется и одно для аудио, второе для данных, третье вообще не нужно и лучше прописывать заведомо руками где что, а не определять по имеи и т. п.

    2. У меня такая же проблема. GSM->SIP работает. SIP->GSM работает.
      SIP<>SIP работает. А вот связка GSM->dongle1>ASTERISK>dongle2>GSM

      вываливается с такой же ошибкой.

      [Jun 22 08:09:15] ERROR[28402][C-00000008]: translate.c:1314 ast_translator_best_choice: Cannot determine best translation path since one capability supports no formats
      [Jun 22 08:09:15] WARNING[28402][C-00000008]: channel.c:5639 set_format: Unable to find a codec translation path: (none|slin) -> (none)

      [Jun 22 08:09:15] WARNING[28402][C-00000008]: channel.c:6565 ast_channel_make_compatible_helper: Unable to set read format on channel Dongle/3DKS1-0100000003 to none

      Астериск собрал сам по этой статье, только на Ubuntu

  6. Спасибо за статьи!

    context=toSIM
    exten=+7ХХХХХХХХХХ

    [Huawei_SIM]
    ;audio=/dev/ttyUSB1
    ;data=/dev/ttyUSB2
    imei=351911042ХХХХХХ

    [toSIM]
    exten => s,1,Set(CALLERID(all)=${CALLERID(num)})
    exten => s,n,Set(CALLERID(num)=${CALLERID(num):1})
    exten => s,n,goto(from-trunk,${DONGLEIMEI},1)

    Ловлю ошибку, звонок сбрасывается.
    [2017-02-18 23:44:03] WARNING[23365][C-00000003]: pbx.c:6796 __ast_pbx_run: Channel ‘Dongle/Huawei_SIM-0100000003’ sent to invalid extension but no invalid handler: context,exten,priority=toSIM,+7ХХХХХХХХХХ,1

    Где ошибка?

    1. Добрый день.
      Контекст, обрабатывающий вызовы с мобильных линий логичней было бы назвать fromSIM вместо toSIM. Но это неважно.
      Контекст toSIM делает вот что:
      Принимает вызов на пустой экстеншн (s), приводит в порядок его CALLERID и далее выполняет действия, описанные в контексте from-trunk начиная с обработки экстеншена ${DONGLEIMEI}.
      Ошибка sent to invalid extension but no invalid handler говорит о том, что в from-trunk нет экстеншена, который передается в перемнной ${DONGLEIMEI}

  7. Спасибо за мануал, все очень хорошо и доходчиво описано. Но есть один момент, не помешало бы еще описать как работать когда Asterisk находится за NAT(ом).

    1. Пожалуйста!
      Как будет время — опишу и этот вопрос и многие другие.
      Вообще, SIP не очень хорошо работает, если на пути есть NAT, не говоря уже о том, когда SIP-сервер за NAT.
      Под «не очень хорошо» я имею ввиду такие ситуации, когда какие-то клиенты могут иметь одностороннюю слышимость, а другие клиенты не подключаться вовсе.
      Всегда следует избегать такой конфигурации.
      Если клиенты за NAT, то лучше использовать PJSIP вместо SIP, т.к. стандартный SIP не всегда дает ожидаемый результат.
      Но сервер прятать за NAT это совсем нехорошо.

  8. Всем доброго времени суток. Помогите пожалуйста понять что не так делаю
    Все делается согласно инструкции и после ввода команды » /etc/init.d/asterisk start »
    получаю ответ error usr/sbin/asterisk not found/
    запустить астериск не получается и командами asterisk -r

    1. Добрый день.
      Скорее всего Вы не выполнили инсталляцию.

      make
      make install
      make config
      make samples
      ldconfig
      

      или же на каком-то этапе получили ошибку и не заметили ее.

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

        codec_builtin.c:706:12: note: previous definition of ‘opus_samples’ was here
        static int opus_samples(struct ast_frame *frame)
        ^
        codec_builtin.c:706:12: warning: ‘opus_samples’ defined but not used [-Wunused-function]
        /usr/src/asterisk-13.13.1/Makefile.rules:149: ошибка выполнения рецепта для цели «codec_builtin.o»
        make[1]: *** [codec_builtin.o] Ошибка 1
        Makefile:402: ошибка выполнения рецепта для цели «main»
        make: *** [main] Ошибка 2

          1. У Вас ошибка в кодеке OPUS. Он Вам действительно нужен?

            UPD. Зашел на страницу проекта кодека и увидел там дисклеймер:
            Because Digium has now released their own codec_opus for Asterisk 13 and Asterisk 14, I don’t see a compelling reason for anyone to be using this one.
            Этот кодек поддерживался только до версии 13.3
            Теперь в этом кодеке нет необходимости, так как компания Digium теперь выпускает свой кодек OPUS, входящий в состав Asterisk 13 и 14. Изменю текст статьи.

  9. Только у меня одного зависает намертво астериск при завершении вызова вызываемой стороной?
    Зависает астер так, что нужно перезагружать ubuntu полностью

  10. А у вас стабильно работают на данном донгл модемы? В чем может быть проблема, есть 3 модема 1550 на 11.609.18.00.00. 2 из них периодически виснут, то вызовы не идут, то недоступны. Что посоветуете?

    dongle show devices
    ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
    Vodafone 0 Free 23 3 3 MTS UKR E1550 11.609.18.00.00
    Kyivstar 0 Outgoing 18 3 2 KYIVSTAR E1550 11.609.18.00.00
    Lifecell 0 Free 15 3 3 lifecell E1550 11.609.18.00.00

    1. Нестабильно. Но думаю, проблема не в драйвере (донгле), а в модемах. У меня периодически виснут одни и те же модемы. Прошивка везде одинаковая. Пока что не знаю, с чем связать это.
      Пробуйте подать команду зависнувшему модему dongle reset Vodafone

      1. dongle reset не помогает, он якобы перезагружается но не работает. нужно ручками вытягивать и включать.
        Вы также 1550 используете?

        1. Тогда заменить модем. У меня тоже есть один такой. На нем иногда пропадает слышимость в одну сторону. Помогает только питание (вытащить вставить модем). Проявляется редко, так что о замене не думали. Но это однозначно проблема одного конкретного устройства. Остальные с точно такой же версией прошивки работают нормально. Бывают, что зависают, но крайне редко, может быть зависает один какой-то модем, через полгода какой-то другой. Наверное для такого режима эксплуатации это может и нормально.
          Использую только 1550. Других нет.

          1. Короче на тра***ся я с этими модемами, покупал внешний хаб с доп питанием, Dlink dub-h7, стало еще хуже через него, при звонке на один из модемов все отваливались. В итоге разрезал usb провода-удлинители от модемов и впаял отдельное питания каждому от внешнего блока и включил их в матку, работают вот уже две недели без отвалов.
            Еще освежил симки, перевыпустил, были уже довольно старые.

            1. :)
              Да, с питанием у них бывают свои тараканы. Но такое решение встречаю впервые.
              Добавлю в копилку знаний :) Спасибо.
              Буду показывать Ваш ответ на подобные вопросы, что, мол, даже так бывает.

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

  11. помогло
    systemctl stop ModemManager.service

    так как процесс ModemManager не давал доступа к устройству

    1. чувак! я 3 дня бился над этой проблемой! такая же фигня была. отключил модем менеджер и все заработало!!! спасибо тебе огромное!!!

  12. ID Group State RSSI Mode Submode Provider Name Model Firmware IMEI IMSI Number
    Kievstar 0 Not connec 0 0 0 NONE Unknown
    [May 12 18:23:58] WARNING[1316]: chan_dongle.c:224 opentty: unable to open /dev/ttyUSB2: Device or resource busy

    В чем может быть причина? уже замучился искать решение.

Добавить комментарий