3G модем + asterisk. Часть 2: Настройка chan_dongle и asterisk
1. Скачивание и компиляция chan_dongle
1.1 Где взять chan_dongle
Официальным сайтом chan_dongle считается следующий: https://code.google.com/p/asterisk-chan-dongle/. Однако, там нет версии chan_dongle, которая бы работала с asterisk 10 / 11 или более поздними версиями. Для скачивания версии chan_dongle, работающей с новыми версиями asterisk, можно использовать эти ссылки:
С поддержкой asterisk до версии 1.8 включительно: https://github.com/jstasiak/asterisk-chan-dongle и
https://github.com/bg111/asterisk-chan-dongle/
С поддержкой asterisk версии 10: https://github.com/jstasiak/asterisk-chan-dongle/tree/asterisk10
С поддержкой asterisk версии 11: https://github.com/jstasiak/asterisk-chan-dongle/tree/asterisk11
С поддержкой asterisk версии 12 (форк проекта): https://github.com/superles/chan-dongle-asterisk12
С поддержкой asterisk версии 13 (форк проекта): https://github.com/oleg-krv/asterisk-chan-dongle/tree/asterisk13
Модуль chan_dongle для asterisk 13 можно скачать здесь: https://github.com/oleg-krv/asterisk-chan-dongle/tree/asterisk13. Подробнее об этом форке можно прочитать в блоге Олега.
Во всех этих вариантах скачать сам файл с архивом проекта можно в правой части страницы - там есть ссылка "Download ZIP".
1.2 Скачивание и распаковка chan_dongle
Скачивание chan_dongle для asterisk 1.8
Для астериска версии 1.8 доступно несколько версий chan_dongle:
- В виде ZIP архива, версия 1.1 Revision 34, скачать можно следующими командами linux:
cd /usr/src
wget https://github.com/jstasiak/asterisk-chan-dongle/archive/master.zip
- В виде SVN, версия 1.1 Revision 45, скачать можно следующими командами linux:
cd /usr/src
svn checkout http://asterisk-chan-dongle.googlecode.com/svn/trunk/ asterisk-chan-dongle-read-only
- (новое, апрель 2015) В виде ZIP архива, версия 1.1, Revision 42gh=46cg, скачать можно следующими командами linux:
cd /usr/src
wget https://github.com/bg111/asterisk-chan-dongle/archive/master.zip
- (новое, апрель 2015) В виде SVN, версия 1.1, Revision 42gh=46cg, скачать можно следующими командами linux:
cd /usr/src
svn checkout https://github.com/bg111/asterisk-chan-dongle.git asterisk-chan-dongle-read-only
Скачивание chan_dongle для asterisk 11
Для астериска 11-й версии подходит не любой chan_dongle; если версия chan_dongle не подходит для Вашей версии asterisk, chan_dongle не скомпилируется, поскольку в астериске с версии 1.8 до версии 11 часть функций (к которым обращается chan_dongle) изменилась. Поэтому необходимо скачать версию chan_dongle, пропатченную для asterisk 11.
В виде ZIP архива, версия 1.1 Revision 34:
Для начала скопируйте ссылку на архив, перейдите в каталог /usr/src и запустите команду wget, указав ей в качестве параметра ссылку на zip архив:
cd /usr/src/
wget https://github.com/jstasiak/asterisk-chan-dongle/archive/asterisk11.zip
Распаковка chan_dongle
Теперь (независимо от версии chan_dongle и asterisk) необходимо распаковать ZIP архив (в случае SVN у Вас уже скачались распакованные файлы, ничего разархивировать не нужно). Стандартные команды linux gzip и bzip для извлечения из ZIP архива не подходят, В RHEL / CentOS для этого нужно установить дополнительный пакет:
yum install unzip
А теперь выполняем распаковку архива:
cd /usr/src/
unzip asterisk11.zip
1.2 подготовка к компиляции chan_dongle
Для успешной компиляции / сборки chan_dongle (для любой версии asterisk) Вам понадобятся утилиты:
- aclocal
- autoconf
- automake
- make
Для работы утилит aclocal, autoconf и automake нужно установить пакет automake.
В RHEL / CentOS для этого выполните команду:
yum install -y automake
В Debian выполните команду:
apt-get install automake
1.3 Компиляция и сборка chan_dongle
Для того, чтобы скомпилировать и собрать модуль chan_dongle для asterisk, прочитайте файл INSTALL, который находится в каталоге исходников chan_dongle. В этом файле пошагово описано, какие команды необходимо выполнить для компиляции, сборки и установки chan_dongle.
Подразумевается, что у Вас уже установлен asterisk. Без установленного asterisk (и папки с исходными кодами установленного asterisk!) модуль chan_dongle не соберётся.
Если у Вас не компилируется / не собирается модуль chan_dongle:
- проверьте, что у Вас имеется каталог с исходными кодами именно той версии asterisk, которая установлена. И asterisk устанавливался из этого каталога. Если версии совпадают, но каталог не тот, можно указать путь к каталогу с исходниками asterisk в опциях команды configure.
- проверьте, что версия chan_dongle предназначена для той версии asterisk, которая у Вас установлена. Chan_dongle с официального сайта не будет собираться с asterisk выше, чем версия 1.8 (а именно с 10-й, 11-й или 12-й версией). На сайте (например) github можно взять пропатченный chan_dongle для 10-й и 11-й версий. Для 12-й версии asterisk) на данный момент есть неофициальный патч, т.е. он может не заработать (у меня скомпилировался chan_dongle с 11-й версией asterisk, но не скомпилировался с 12-й версией)
1.4 Установка пакета chan_dongle и интеграция с астериском
Для установки пакета (все инструкции описаны в файле INSTALL, который находится в каталоге исходников chan_dongle) перейдите в папку с исходными кодами chan_dongle и выполните в Вашей системе linux из командной строки:
aclocal
autoconf
automake -a
./configure
make
make install
После выполнения команды make install:
- убедитесь в том, что в каталог модулей asterisk скопирован модуль chan_dongle.so. Каталог модулей asterisk по умолчанию находится здесь: /usr/lib/asterisk/modules . Если там нет файла chan_dongle.so, найдите его в папке с исходными кодами chan_dongle и скопируйте к модулям asterisk вручную;
- убедитесь в том, что в каталог конфигурации asterisk скопирован файл dongle.conf. По умолчанию каталог конфигурации asterisk находится здесь: /etc/asterisk . Если там этого файла нет, скопируйте его из папки с исходными кодами chan_dongle (подпапка etc) вручную.
2. Настройка и тестирование chan_dongle
2.1 Настройки 3G модема в режиме "только модем"
Для того, чтобы мы могли настроить chan_dongle, нам сначала необходимо перевести 3G модем в режим "только модем". Кроме того, весьма желательно узнать такие параметры модема как IMEI и IMSI. И значительно сэкономит Ваши усилия информация о том, какое из устройств за какую функцию 3G модема отвечает, например:
/dev/ttyUSB1 - прием/передача голоса
/dev/ttyUSB2 - передача управляющих команд
Вы можете и не знать этих параметров, однако в этом случае Вам придется их определять (некоторые - экспериментально, путем перебора вариантов).
2.2 Настройки в dongle.conf
Для настройки chan_dongle отредактируйте файл dongle.conf в каталоге конфигурации asterisk (по умолчанию это каталог /etc/asterisk ).
В разделе defaults в первую очередь имеет смысл отредактировать следующие параметры:
Имя параметра |
Описание |
Рекомендуемое значение по умолчанию |
context |
имя контекста для входящих звонков |
incoming
(а не default, как указано в настройках)
разумеется, контекст incoming должен существовать в Вашем диалплане. |
resetdongle |
при инициализации устройства производить сброс модема |
yes |
u2diag |
Послать команду AT^U2DIAG на устройство |
-1
(не посылать никаких команд) |
exten |
exten для входящих звонков |
+1234567890
в контексте для входящих звонков должен быть экстен с таким названием. Т.е. в контексте incoming должна быть такая строка:
exten => +1234567890,1,... |
В разделе dongleX (где X - цифра: dongle0, dongle1, ...) в первую очередь необходимо отредактировать следующие параметры:
Имя параметра |
Описание |
Рекомендуемое значение по умолчанию |
audio |
имя устройства для приема/передачи звука |
/dev/ttyUSB2
или
/dev/ttyUSB_utps_modem
(разумеется, эти устройства должны уже быть в Вашей системе) |
data |
имя устройства для управления модемом |
/dev/ttyUSB1
или
/dev/ttyUSB_utps_pcui
(разумеется, эти устройства должны уже быть в Вашей системе) |
imei |
IMEI устройства |
можно закомментировать (будет взято из модема)
а можно определить с помощью AT команды (см. Приложение 1 "AT команды для 3g модемов") |
imsi |
IMSI устройства |
можно закомментировать (будет взято из модема)
а можно определить с помощью AT команды (см. Приложение 1 "AT команды для 3g модемов") |
Вы спросите: а как определить, какой из ttyUSB указывать в параметре data, а какой - в audio? На данный момент это не принципиально (на момент загрузки модуля), однако при первом же звонке станет ясно, указали ли Вы параметры правильно (в случае ошибки их следует поменять местами, например: ttyUSB1 - audio, ttyUSB2 - data, затем ttyUSB2 - audio, ttyUSB3 - data, затем ttyUSB2 - audio, ttyUSB1 - data, и так далее. Если номер даже не набирается, то в первую очередь надо менять параметр data. Если же номер набирается, но нет звука - то параметр audio.
После [каждой] настройки всех параметров подключитесь к asterisk и выгрузите (если загружен), а потом загрузите модуль chan_dongle.
2.3 Загрузка модуля в астериск и проверка связи с 3G модемом
Для этого сначала из командной строки Linux запустите asterisk:
asterisk -rvvv
А затем в командной строке asterisk (asterisk CLI) выполните (сделав паузу в несколько секунд между командами):
module unload chan_dongle.so
module load chan_dongle.so
После выполнения команды загрузки модуля у Вас должно появиться сообщение подобного вида:
Loaded chan_dongle.so => (Huawei 3G Dongle Channel Driver)
... Dongle initialized and ready
Если при этом в течение нескольких (1-2) минут никаких других сообщений об ошибках не появится, то это означает, что всё загрузилось и работает. Однако, скорее всего, у Вас с первого раза ничего не заработает.
2.4 настройка диалплана для исходящих звонков и тестовый исходящий звонок, проверка наличия голоса
Для того, чтобы настроить исходящую связь, сначала должен быть настроен (и протестирован) файл dongle.conf. После этого можно заняться настройкой диалплана.
Для настройки диалплана в файле extensions.conf добавьте следующие строки (эти строки должны быть добавлены в соответствующий контекст диалплана, для исходящей связи.
В данном примере настроены звонки на мобильные телефоны (начинающиеся на +79...) через 3G модем (через устройство dongle0, прописанное в файле dongle.conf).
2.5 настройка диалплана для входящих звонков, тестовый входящий звонок
Для того, чтобы настроить входящую связь, сначала должен быть настроен (и протестирован) файл dongle.conf. После этого можно заняться настройкой диалплана. Обратите внимание: в файле dongle.conf, в секции defaults, указан параметр exten. Этот параметр отвечает за тот экстен, который будет описан у Вас в контексте для входящих звонков, и именно на этот экстен будут приходить все входящие звонки через 3G модем.
Для настройки диалплана в файле extensions.conf добавьте следующие строки (эти строки должны быть добавлены в соответствующий контекст диалплана, для входящией связи.
В данном примере настроен автоматический ответ на все входящие звонки, приходящие от 3G модема (в соответствии с настройками в dongle.conf по умолчанию, все входящие звонки приходят на экстен +1234567890). После поднятия трубки астериск произнесет звонящему абоненту цифры от 1 до 9 включительно (на том языке, который указан в настройках астериска), после чего повесит трубку.
2.6 окончательная настройка диалплана
Теперь Вам необходимо протестировать связь, и убедиться, что обе стороны слышат друг друга. Для этого нужно подключить какого-либо клиента к астериску, чтобы он совершил пробный звонок другому абоненту на мобильный номер (через dongle) и если они друг друга слышат - всё отлично. Однако, у абонентов могут возникать проблемы:
- Абонент (клиент asterisk) не может набрать номер телефона. В этом случае вернитесь к настройкам dongle.conf и поменяйте значение у параметра data.
- Если же абоненты друг друга не слышат, то вернитесь к настройке dongle.conf и поменяйте значения у параметра audio.
После выполнения указанных выше действий снова протестируйте связь между абонентами.
3. Ошибки / проблемы с chan_dongle
3.1 Основная проблема
Основной проблемой модуля chan_dongle является то, что на данный момент это альфа версия, поэтому корректная работа с любыми моделями модемов не гарантируется. Кроме того, на данный момент модуль поддерживает работу с очень ограниченным числом моделей 3G модемов, часть из которых уже устарела и не продается в магазинах.
3.2 Ошибки при компиляции / сборке
При возникновении ошибок с компиляцией или сборкой пакета chan_dongle сделайте следующее:
- убедитесь, что Вы прочитали и выполнили все пункты в файле INSTALL, находящемся в папке с исходными кодами chan_dongle (см. инструкцию в начале статьи);
- убедитесь, что версия chan_dongle предназначена для той версии asterisk, в которую Вы пытаетесь его интегрировать
3.3 Ошибки связи с 3G модемом
Самая частая ошибка - это отсутствие голоса при звонках или (например) у Вас всё подключено и настроено, Вы звоните на номер - asterisk "не берет трубку". В этом случае убедитесь, что у Вас указаны правильные устройства в параметрах dongle.conf для data и для audio: /dev/ttyUSB0, /dev/ttyUSB1 и /dev/ttyUSB2. Параметров два, а устройств - 3. Поэтому в некоторых случаях оказывается, что два устройкства "откликаются" на AT команды. Попробуйте сначала одно, а потом - другое.
3.5 Отсутствие голоса при звонках
Тут вариантов много, начиная от заблокированного голоса в настройках самого 3G модема, либо голос может быть не предактивирован (см. первую часть статьи про 3G модемы), и заканчивая опять же, неправильным указанием устройства /dev/ttyUSB* в параметрах файла dongle.conf.
3.6 Диагностика chan_dongle
Диагностических команд chan_dongle достаточно много. Например, описание таких команд можно посмотреть здесь: http://wiki.e1550.mobi/doku.php?id=usage
3.7 Переполнение памяти SMS
При загрузке модуля chan_dongle может выдаваться следующее сообщение:
ERROR[15627]: at_response.c:1420 at_response_smmemfull: [dongle0] SMS storage is full
Это означает, что память SMS заполнена, и нужно ее освободить. Существует 2 вида памяти SMS: на SIM карте и в самом 3G модеме.
Для очистки памяти SIM применяем в консоли астериска последовательно команды:
dongle cmd <dongle_name> AT+CPMS=\"SM\",\"SM\",\"SM\"
dongle cmd <dongle_name> AT+CMGD=1,4
Для очистки памяти модема применяем в консоли астериска последовательно команды:
dongle cmd <dongle_name> AT+CPMS=\"ME\",\"ME\",\"ME\"
dongle cmd <dongle_name> AT+CMGD=1,4
В консоли asterisk (CLI) должно появиться сообщение вида:
[dongle_name] 'AT+CMGD=1,4'
Command queued for execute
[dongle_name] Got Response for user's command:'OK'
...NOTICE[15627]: at_response.c:1714 at_response: [dongle_name] Got Response for user's command:'OK'
Всё. Память SMS очищена.
Вы читаете статью "3G модем + asterisk", состоящую из нескольких частей:
- 3G модем + asterisk. Часть 1: Подключение модема к компьютеру и перевод из режима "составное устройство" в режим "только модем".
- 3G модем + asterisk. Часть 2: Настройка chan_dongle и asterisk.
- 3G модем + asterisk. Часть 3: Настройки chan_dongle - проблемы и решения.
- 3G модем + asterisk. Приложение 1: AT команды для 3G модемов.
- 3G модем + asterisk. Приложение 2: Работа с 3G модемами в Windows.
- 3G модем + asterisk. Приложение 3: Работа с 3G модемами в Linux.
|