Huawei 1550 + Asterisk = дешевый GSM шлюз

Автор | 09.07.2011

Очередной пост в интернете на тему создания дешевого GSM-шлюза на основе 3G модема от Huawei и IP PBX Asterisk.
Мануалов по настройке данной связки в интернете предостаточно, поэтому дання заметка больше для себя, нежели для других.

Что мы имеем:
3g модем от Киевстара на базе Huawei 1550 разлоченый под все, что только можно (MMC+ голос + видео+ любой оператор …) и купленый на aukro.ua
– сервер на базе Gentoo x64, kernel 2.6.38
Asterisk 1.8.4.1

Для корректной работы модема требуется ядро выше 2.6.33. В моем случае запаса хватает
В самом ядре необходимо отметить такие пункты

Device Drivers ->
    USB support  --->
        <*> OHCI HCD support
        <*> USB Serial Converter support  --->
            [*] USB Generic Serial Driver
            <*> USB driver for GSM and CDMA modems

Теперь заставим наш udev находить наше устройство, для этого пересоберем его с USE-флагом extras

cat /etc/portage/package.use
sys-fs/udev extras
emerge -1 sys-fs/udev

Устанавливаем пакет sys-apps/usb_modeswitch для смены режима модема с флешки на модем:

emerge sys-apps/usb_modeswitch

* usb_modeswitch можно поставить через emerge либо собрать руками (см.ниже)
Теперь наш модем после присоединения определяется как Huawei 1550:

gentoo-voip ~$ lsusb
Bus 001 Device 005: ID 12d1:140c Huawei Technologies Co., Ltd.

Вывод dmesg

[  776.242262] hub 1-0:1.0: state 7 ports 6 chg 0000 evt 0004
[  776.242274] ehci_hcd 0000:00:12.2: GetStatus port:2 status 001803 0  ACK POWER sig=j CSC CONNECT
[  776.242284] hub 1-0:1.0: port 2, status 0501, change 0001, 480 Mb/s
[  776.347217] hub 1-0:1.0: debounce: port 2: total 100ms stable 100ms status 0x501
[  776.398252] ehci_hcd 0000:00:12.2: port 2 high speed
[  776.398258] ehci_hcd 0000:00:12.2: GetStatus port:2 status 001005 0  ACK POWER sig=se0 PE CONNECT
[  776.449205] usb 1-2: new high speed USB device using ehci_hcd and address 5
[  776.501200] ehci_hcd 0000:00:12.2: port 2 high speed
[  776.501205] ehci_hcd 0000:00:12.2: GetStatus port:2 status 001005 0  ACK POWER sig=se0 PE CONNECT
[  776.571184] usb 1-2: default language 0x0409
[  776.575184] usb 1-2: udev 5, busnum 1, minor = 4
[  776.575187] usb 1-2: New USB device found, idVendor=12d1, idProduct=140c
[  776.575190] usb 1-2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[  776.575193] usb 1-2: Product: HUAWEI Mobile
[  776.575195] usb 1-2: Manufacturer: HUAWEI Technology
[  776.575276] usb 1-2: usb_probe_device
[  776.575280] usb 1-2: configuration #1 chosen from 1 choice
[  776.580185] usb 1-2: adding 1-2:1.0 (config #1, interface 0)
[  776.580237] usbserial_generic 1-2:1.0: usb_probe_interface
[  776.580242] usbserial_generic 1-2:1.0: usb_probe_interface - got id
[  776.580293] option 1-2:1.0: usb_probe_interface
[  776.580296] option 1-2:1.0: usb_probe_interface - got id
[  776.580311] option 1-2:1.0: GSM modem (1-port) converter detected
[  776.580332] usb 1-2: link qh2-0001/ffff880028675800 start 1 [2/0 us]
[  776.580422] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[  776.580452] usb 1-2: adding 1-2:1.1 (config #1, interface 1)
[  776.580484] usbserial_generic 1-2:1.1: usb_probe_interface
[  776.580487] usbserial_generic 1-2:1.1: usb_probe_interface - got id
[  776.580513] option 1-2:1.1: usb_probe_interface
[  776.580516] option 1-2:1.1: usb_probe_interface - got id
[  776.580523] option 1-2:1.1: GSM modem (1-port) converter detected
[  776.580538] usb 1-2: link qh2-0001/ffff880028675c00 start 0 [2/0 us]
[  776.580592] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[  776.580625] usb 1-2: adding 1-2:1.2 (config #1, interface 2)
[  776.580654] usbserial_generic 1-2:1.2: usb_probe_interface
[  776.580657] usbserial_generic 1-2:1.2: usb_probe_interface - got id
[  776.580683] option 1-2:1.2: usb_probe_interface
[  776.580686] option 1-2:1.2: usb_probe_interface - got id
[  776.580693] option 1-2:1.2: GSM modem (1-port) converter detected
[  776.580752] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
[  776.580770] usb 1-2: adding 1-2:1.3 (config #1, interface 3)
[  776.580802] usbserial_generic 1-2:1.3: usb_probe_interface
[  776.580804] usbserial_generic 1-2:1.3: usb_probe_interface - got id
[  776.580830] option 1-2:1.3: usb_probe_interface
[  776.580833] option 1-2:1.3: usb_probe_interface - got id
[  776.580840] option 1-2:1.3: GSM modem (1-port) converter detected
[  776.580898] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB3
[  776.580916] usb 1-2: adding 1-2:1.4 (config #1, interface 4)
[  776.581175] usbserial_generic 1-2:1.4: usb_probe_interface
[  776.581175] usbserial_generic 1-2:1.4: usb_probe_interface - got id
[  776.581213] usbtest 1-2:1.4: usb_probe_interface
[  776.581216] usbtest 1-2:1.4: usb_probe_interface - got id
[  776.581234] usb 1-2: adding 1-2:1.5 (config #1, interface 5)
[  776.581264] usbserial_generic 1-2:1.5: usb_probe_interface
[  776.581266] usbserial_generic 1-2:1.5: usb_probe_interface - got id
[  776.581302] usbtest 1-2:1.5: usb_probe_interface
[  776.581305] usbtest 1-2:1.5: usb_probe_interface - got id
[  776.581349] drivers/usb/core/inode.c: creating file '005'

Ставим софт

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

Ниже описана сборка usb_modeswitch руцями если кому не понравилось то, что собралось штатными средствами Gentoo 🙂

wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-1.1.8.tar.bz2
tar -jxvf  usb-modeswitch-1.1.8.tar.bz2
cd usb-modeswitch-1.1.8
make install
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20110705.tar.bz2
tar -jxvf  usb-modeswitch-data-20110705.tar
cd usb-modeswitch-data-20110705
make install

Проверяем опознался ли наш модем:

ls /dev | grep USB
/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2
/dev/ttyUSB3

Настраиваем модем под Asterisk…. громко звучит …. я оставил дэфолный конфиг поменяв только номер устройства на /dev/ttyUSB2

cat datacard.conf
......
[E1550_t](!)
context=incoming-datacard	; context for incoming calls
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)


[datacard0](E1550_t)
audio=/dev/ttyUSB2		; tty for audio connection
data=/dev/ttyUSB3		; tty for AT commands
group=1				; calling group

Перезапускаемся

asterisk*CLI> core restart now

Смотрим, что было найдено Asterisk’ом

asterisk*CLI>datacard show devices
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number
datacard0    1     SMS        23   0    0       UTEL3G        E1550      11.608.14.11.174  35244504378****  25507104005****  +38091999*****

Пробуем совершить тестовый звонок и оправить смс:

cat extensions.conf
exten => 1006,1,Dial(Datacard/g1/063598****)
exten => 1006,n,Hangup()

exten => 1007,1,Answer
exten => 1007,n,DatacardSendSMS(datacard0,063598****,hello world)
exten => 1007,n,Playback(beep)
exten => 1007,n,Hangup()

Настраиваем получение SMS и ussd

[incoming-datacard]

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()

Вот собственно и все

1 коментар до “Huawei 1550 + Asterisk = дешевый GSM шлюз

  1. Сповіщення: chan_dongle + asterisk 10

Залишити відповідь