четверг, 21 ноября 2013 г.

Набор AT-команд для модемов HUAWEI e173, e1550, e1750

На этой странице я буду собирать команды модемов Huawei e173, e1550, e1750 и может быть других.

ATI  (вывод информации о модеме)
AT+CFUN=1 (перезагрузка модема, с перерегистрацией в сети GSM без необходимости вытаскивания модема из порта usb

AT^CVOICE=? (проверка голосовых функций модема, если 0 голосовые функции включены)
AT^CVOICE=0 (включение голосовых функций модема)


AT^U2DIAG=0 (режим только модем)
AT^U2DIAG=1 (режим модем + CD-ROM)
AT^U2DIAG=255 (режим модем + CD-ROM + Card Reader)
AT^U2DIAG=256 (режим модем + Card Reader, можно использовать как обычную флешку, отказавшись от установки драйверов модема)

Команды разлочки модема
AT^CARDLOCK="NCK Code"  (Команда снятия блокировки модема к одному оператору, NCK Code - восьмизначное число)
AT^CARDLOCK? (Проверка состояния блокировки модема и количества попыток ввода кода NCK, ответ команды будет CARDLOCK: A,B,0 где A - это состояние блокировки, если A=1, модем заблокирован, если A=2, модем разблокирован. B - это количество оставшихся попыток ввода кода блокировки модема, по умолчанию должно быть 10.)

OS X Mountain Lion: Asterisk 11 и GSM-шлюз chan_dongle

В сети интернет очень много статей, про то как сделать сервер телефонии на базе Linux и Asterisk, но совсем мало как сделать то же самое в самой совершенной системе OS X. Все что будет описано ниже, было собрано и настроено на OS X Mountain Lion 10.8.5. Хочу обратить ваше внимание, на то, что я не пытаюсь досконально описать сам процесс, так как возможно вам придется собирать дополнительные библиотеки и программы или столкнуться с другими сложностями. Пишите о них в комментариях, я постараюсь вам помочь.

Итак, моя цель создать сервер IP-телефонии на базе Asterisk 11.2 (cert2, lts), модуля chan_dongle.so (для работы с USB-модемом HUAWEI-E173). Практический смысл задачи придумайте сами, мною просто движет любопытство.

Установка драйверов модема Huawei e173

Драйвера, от модема Huawei e173 для OS X находятся в установочных файлах штатного программного обеспечения модема (правой кнопкой мыши по установщику, выбираем Show Content и ищем файл MobileConnectDriver.pkg. Так же вы можете скачать этот пакет из Интернет. Если ваш модем huawei привязан к определенному оператору, его можно отвязать от него, и активировать голосовые функции, если они заблокированы. В сети полно статей про отвязку модема, поэтому я не буду повторяться, пользуйтесь гуглом.

После установки модема, он будет определяться в системе устройствами:
/dev/cu.HUAWEIMobile-Diag
/dev/cu.HUAWEIMobile-Modem
/dev/cu.HUAWEIMobile-Pcui

Итак, собираем Asterisk 11.2 cert2

# mkdir /usr/src
# cd /usr/src
# curl -OL http://downloads.asterisk.org/pub/telephony/certified-asterisk/certified-asterisk-11.2-current.tar.gz
# tar xzvf certified-asterisk-11.2-current.tar.gz
# cd certified-asterisk-11.2-cert2
# ./configure
# make menuselect

выбираем что компилировать, если ничего не хотите менять нажимаем клавишу Q (я отключал res_snmp), или просто не выполняем команду make menuselect

# make
# make install
# make samples

Последняя команда установит примеры конфигурационных файлов. На этом будем считать установку Asterisk 11 завершенной. Конфигурационные файлы должны лежать в папке /usr/local/etc/asterisk, лог-файлы в каталоге /Library/Logs/Asterisk, остальные файлы PBX Asterisk расположены в папке "/Library/Application Support/Asterisk", а сам исполняемый файл находиться по адресу /usr/local/sbin/asterisk. Я создал символическую ссылку на исполняемый файл, чтобы каждый раз не указывать путь (в принципе можно было бы добавить этот путь в переменную PATH, делайте так как считаете нужным)

# ln -s /usr/local/sbin/asterisk /usr/bin/asterisk

Для автоматической загрузки сервера Asterisk при старте OS X вам нужно будет создать plist для LaunchDaemons, разместить его в каталоге /Library/LaunchDaemons и загрузить с помощью команды launchctl. Любой маковод должен знать как это делается.

Собираем chan_dongle.so версии 1.1.r34

# cd /usr/src
# curl -OL https://github.com/jstasiak/asterisk-chan-dongle/archive/asterisk11.zip
# unzip asterisk11.zip
# cd asterisk-chan-dongle-asterisk11
# aclocal
# autoconf
# automake -a
# ./configure --with-asterisk=/usr/src/certified-asterisk-11.2-cert2/include

затем я отредактировал созданный Makefile, заменив -Xlinker 10.4 на -Xlinker 10.8 и продолжил компиляцию

# make

а вот саму установку я сделал руками (make install не сработал, а разбираться из-за чего было лениво)

# cp chan_dongle.so /Library/Application\ Support/Asterisk/Modules
# cp etc/dongle.conf /usr/local/etc/asterisk

После установки драйверов модема, Asterisk, модуля chan_dongle.so, остается только настроить dialplan и модуль chan_dongle. Настройку dialplan посмотрите в статье http://habrahabr.ru/post/160299/. А в /usr/local/etc/asterisk/dongle.conf внесите изменения в секции [dongle0].

[dongle0]
audio=/dev/cu.HUAWEIMobile-Diag
data=/dev/cu.HUAWEIMobile-Pcui
imei=ваш imei
imsi=ваш imsi
context=ваш входящий диалплан

imei и imsi можно посмотреть в самом Asterisk с помощью команды dongle show devices. В данном виде мой GSM-шлюз принимает входящие вызовы с sim карты без проблем, сохраняет sms в файл. Вызовов на sim-карту не очень много, поэтому мне сложно судить о производительности или надежности этой системы. Через некоторое время отпишусь по поводу надежности и качества работы системы.

UPDATE: довелось мне обновиться до версии Asterisk 11.6 cert2. И столкнулся с тем, что по SIP появилась односторонняя слышимость. Оказалось что в Asterisk 11.6 по умолчанию компилируются и загружаются модули res_timing_kqueue.so и res_timing_pthread.so. Так вот при загруженном модуле res_timing_kqueue.so и начинает это происходить. Поэтому просто выгрузите его и запретите загружаться.