На днях мне в руки попался 3Gмодем от Мегафона, открываем крышку и видим хорошее Китайский устройство под названием HuaweiE173u-1.
Почитав в интернете что данное устройство умеет кроме как подключаться к интернету мегафона и звонить, но еще и его можно отвязать от оператора и использовать как городской номер для Астериска.
Так как Астериск стоял и во всю работал осталось за малым все настроить.
Что имеем:
1. Модем HuaweiE173u-1 привязаный к Мегафону
2. Сервер ОС Ubuntu server 12.10
3. Asterisk 1.8.13
Задача:
1. Модем отвязать от оператора.
2. Подключить к Астериску как городская линия.
Отвязываем модем от оператора.
И так для того чтоб модем отвязать от оператора нам потребуется программы скачать…
Запускаем программу Huawei_Modem_Unlocker_v_1.1(Модем должен быть без SIMкарты) и нажимаем кнопку checklock. В окне лога смотрим состояние модема, если залочен то генерируем код разблокировки NCK. Для этого берем IMEIнашего модема и запускаем программу HuaweiCalculator который нам выдаст код. Ворачиваемся к программе Huawei_Modem_Unlocker_v_1.1 в водим наш код в поле unlock codeи нажимаем unlock. Все, модем разблокирован и работаем со всеми SIM картами.
Подключаем модем к Астериску.
Для определения вменяемого имени модема
apt-getinstall -tsqueeze-backportsusb-modeswitchusb-modeswitch-data
Вставляем модем и выполняем
dmesg | tail
Получаем вывод похожий на
[ 303.594149] usb 1-7: New USB device found, idVendor=12d1, idProduct=1001
[ 303.594155] usb 1-7: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[ 303.594158] usb 1-7: Product: HUAWEI Mobile
[ 303.594161] usb 1-7: Manufacturer: HUAWEI Technology
[ 303.596731] option 1-7:1.0: GSM modem(1-port) converter detected
[ 303.596968] usb 1-7: GSM modem (1-port) converter now attached to ttyUSB0
[ 303.597241] option 1-7:1.1: GSM modem (1-port) converter detected
[ 303.597373] usb 1-7: GSM modem (1-port) converter now attached to ttyUSB1
[ 303.597584] option 1-7:1.2: GSM modem (1-port) converter detected
[ 303.597716] usb 1-7: GSM modem (1-port) converter now attached to ttyUSB2
Проверяем в папке /etc/usb_modeswitch.d наличие файла 12d1:1446. У меня в папке не было не одного файла. Не беда создаем сами файл с таким названием и вставляем в него вот такие данные:
Huawei E270+ (HSPA+ modem)
DefaultVendor= 0x12d1
DefaultProduct=0x1446
TargetVendor= 0x12d1
TargetProductList="1001,1406,140c,14ac"
CheckSuccess=20 MessageContent="55534243123456780000000000000011060000000000000000000000000000"
Только когда создаем файл данные в поле DefaultVendor, DefaultProductберем те которые выдала команда dmesg | tail
Перезапускаем сервер, после чего модем имеет вменяемое имя, продолжаем связывать его с Asterisk.
wget https://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r14.tgz
tar xvzf chan_dongle-1.1.r14.tgz
cd chan_dongle-1.1.r14
./configure
make
make install
cp etc/dongle.conf /etc/asterisk
При установке у меня вышла ошибка.
configure: error: Can’tfind "asterisk.h"
Почитав оказывается не хватает одного пакета. astrisk-dev Устанавливаем его:
sudoapt-getinstallastrisk-dev
После чего chan-dongle встает на ура.
Копируем конфигурационный файл dongle.confв /etc/asterisk открываем и настраиваем
[000101]
context=from-gsm ; contextдля входящих звонков
audio=/dev/ttyUSB1 ; ttyпорт для аудио подключения
data=/dev/ttyUSB2 ; ttyпорт для управляющих ATкомманд модема
group=1 ; Группа вызова
rxgain=10 ; Изменение громкости динамика
txgain=-5 ; Изменение громкости микрофона
autodeletesms=yes ; autodeleteincomingsms
resetdatacard=yes ; resetdatacardduringinitializationu2diag=256 ; setU2DIAGparameter (256 = включить модем и кард ридер) usecallingpres=yes ; usethecallerIDpresentationornotcallingpres=allowed_passed_screen ; setcallerIDpresentation
Создаем контент в диалплане:
nano /etc/asterisk/extensions.conf
exten => s,1,Set(CALLERID(all)=${CALLERID(num):3})
exten => s,n,Dial(SIP/9999,60,KTt)
exten => s,n,Hangup()
Для звонков через данный модем, в контекст sip пользователя который имеет право совершать звонки через данный модем добавляем:
exten => _9X.,1,Dial(Dongle/Life-modem1/${EXTEN:1},120,KT)
exten => _9X.,n,Hangup(${HANGUPCAUSE})
Перезапускаем Астериск, Заходим в консоль и выполняем команду
dongle show devices
Видим наш модем.
Проверяем звонки. Все должно работать.