понедельник, 14 ноября 2011 г.

VoIP-GSM шлюз для Asterisk из 3G модема HUAWEI E1550

 Голосовой модуль по умолчанию активирован только в модемах МТС.  
Рекомендованное ядро Linux 2.6.33+ 
Asterisk 1.6.+ 
USB 2.0

Заведомо рабочие прошивки (firmware - не путать с dashboard): 
МТС 11.608.12.00.143 
11.608.14.15.311

Нерабочая firmware: 
Мегафон 11.608.12.10.209 -при активированном голосе из под винды звонит, из под Linux - нет.

Активировать голосовую функцию можно программой DC-UNLOCKER за 4 кредита - 4 евро.

набор утилит для активации голоса

Установка asterisk из исходников

# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.6.2-current.tar.gz
# tar zxvf asterisk-1.6.2-current.tar.gz
# cd asterisk-1.6.2-current.tar.gz
# apt-get install g++ libncurses-dev libxml2-dev subversion
# ./configure
# make install
# make config
# make samples

Установка модуля канала chan_datacard для Huawei

Файл datacard.conf из ~/chan_datacard/etc копируем в каталог /etc/asterisk

# svn co http://www.makhutov.org/svn/chan_datacard/trunk/ chan_datacard
# cd ~/chan_datacard/
# ./configure
# make install
# cp ~/chan_datacard/etc/datacard.conf /etc/asterisk

Установите usb-modeswitch

Пакет исходного кода: usb-modeswitch применяется в Unix системах для подключения устройств через USB интерфейс

#apt-get install libusb libusb-dev

# wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-1.1.4.tar.bz2
# tar -jxvf  usb-modeswitch-1.1.4.tar.bz2
# cd ~/usb-modeswitch-1.1.4
# make install

# wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20100826.tar.bz2
# tar -jxvf  usb-modeswitch-data-20100826.tar
# cd ~/usb-modeswitch-data-20100826
# make install

Убедимся что модем Huawei E1550 определился в системе

ls /dev | grep USB
ttyUSB0
ttyUSB1
ttyUSB2

Настройка модулей

Канальный модуль Huawei настраивается в datacard.conf.

[datacard0]
audio=/dev/ttyUSB1   ; tty for audio connection
data=/dev/ttyUSB2   ; tty for AT commands

context=datacard-incoming       ; context for incoming calls
group=1                         ; calling group

rxgain=3                        ; increase the incoming volume
txgain=3                        ; increase the outgoint volume



[datacard1]
context=datacard-incoming ; context for incoming calls
audio=/dev/ttyUSB4  ; tty port for audio connection
data=/dev/ttyUSB5  ; tty port for AT commands
group=2    ; calling group
rxgain=3   ; increase the incoming volume
txgain=3   ; increase the outgoint volume
autodeletesms=yes  ; auto delete incoming sms
resetdatacard=yes  ; reset datacard during initialization
u2diag=0   ; set U2DIAG parameter (0 = disable everything except modem function)
usecallingpres=yes  ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation


Проверим состояние модема из командной строки Asterisk (CLI). 
Перегрузить asterisk можно командой core restart now
а если система рабочая и идут вызовы, то core restart gracefully
Запущенные модули каналов просмотрим командой module show like chan_

asterisk*CLI> datacard show devices
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI       Number        
datacard1    2     Free       13   3    3       MTS RUS        E1550      11.608.12.00.143  352......        25....... Unknown       
datacard0    1     Free       15   3    3       TELE2          E1550      11.608.14.15.311  359......        25....... Unknown 

Для входящих вызовов, sms и ussd запросов настроим extensions.conf:

[datacard-incoming]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()

exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD}: ${USSD}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()

exten => s,1,Dial(SIP/100,,)
exten => s,n,Hangup()

Для исходящей связи

exten => _X.,1,Dial(Datacard/g1/${EXTEN})
или
exten => _X.,1,Dial(Datacard/datacard0/${EXTEN})

Отключение функций CD-ROM и card reader

Отключим ненужные функции.

# minicom -s

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Выбираем Serial port setup и жмем ENTER. Жмем 'А' Редактируем порт:

    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/ttyUSB0                              |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : Yes                                       |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------

Жмем ENTER 2 раза и выбираем Exit.

После подключения вводим команду:AT^U2DIAG=0

Welcome to minicom 2.4

OPTIONS: I18n                                                                
Compiled on Jan 25 2010, 06:49:09.                                           
Port /dev/ttyUSB0                                                            
                                                                             
Press CTRL-A Z for help on special keys                                      
                                                                             
AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0                                             
OK
AT^U2DIAG=0
OK                                                                           

Выходим Ctrl-A Q

AT^U2DIAG=0 (девайс в режиме только модем) 
AT^U2DIAG=1 (девайс в режиме модем + CD-ROM) 
AT^U2DIAG=255 (девайс в режиме модем + CD-ROM + Card Reader) 
AT^U2DIAG=256 (девайс в режиме модем + Card Reader) 
AT^CARDLOCK=«NCK-code» (разблокировка модема) 

Комментариев нет:

Отправить комментарий