Linux + Huawei E1550

Для перевода железки в режим модема используем usb_modeswitch (пакет usb-modeswitch, там под него всё настроено, нужно просто установить пакет и перезагрузить компьютер - вносятся изменения к правилам devfsd)

Подключение minicom с указанием порта модема:

root@pro57t:/tmp# minicom -D /dev/ttyUSB0

Перевод в различные режимы AT-командами:

AT^U2DIAG=0 (режим "только модем")
AT^U2DIAG=1 ( ... "модем + CD-ROM")
AT^U2DIAG=255 ( ... "модем + CD-ROM + Card reader")
AT^U2DIAG=256 ( ... "модем + Card reader")

at+cpin="xxxx"
AT+CLCK="SC",2 (to check the current state: return value "1" indicates that a correct pin is required by the sim, "0" that it is not)
AT+CLCK="SC",0,"XXXX" (disables the pin check (XXXX is the pin))
AT+CLCK="SC",1,"XXXX" (enables it again)

ATI (кое-что, кучкой.)
AT+CGMR (версия прошивки)
AT+CGSN (IMEI модема)
Команда по активации голоса:
AT^CVOICE=? (проверка состояния)
AT^CVOICE=0 (включено)
AT^CVOICE=1 (отключено)

AT commands
There are some usefull commands:

  • AT^U2DIAG=0 - the device is only Modem
  • AT^U2DIAG=1 - device is in modem mode + CD ROM
  • AT^U2DIAG=255 - the device in modem mode + CD ROM + Card Reader
  • AT^U2DIAG=256 - the device in modem mode + Card Reader
  • AT+CPIN=<PIN-CODE> - enter PIN-code
  • AT+CUSD=1,<PDU-encoded-USSD-code>,15 - USSD request, result can be found (probably) in /dev/ttyUSB2.

Encode "*111#" to PDU format:

perl -e '@a=split(//,unpack("b*","*111#")); for ($i=7; $i < $#a; $i+=8) { $a[$i]="" } print uc(unpack("H*", pack("b*", join("", @a))))."\n"'

набор номера
atd 067xxxxxxx;
atd 0038067xxxxxxx;
atd+380676837008;
, причем знак ; обязателен

Decode "AA582C3602" from PDU format:

perl -e '@a=split(//,unpack("b*", pack("H*","AA180C3602"))); for ($i=6; $i < $#a; $i+=7) {$a[$i].="0" } print pack("b*", join("", @a)).""'

Answer decoding (this example is balance response: 151.25):

perl -e 'print pack("H*", "003100350031002C003200350020044004430431002E0020");'

Some operators return USSD result in PDU encoding, so you should check proper decoding method.

  • AT+CSQ - get signal quality (AT+CSQ=?)
  • AT+CMGF=1 # Puts the mode in text mode
  • AT+GMI - get manufacturer
  • AT+GMM - get model
  • AT+GMR - get revision
  • AT+GSN - get IMEI (AT+GMN say ERROR)
  • AT+COPS? - get operator info
  • AT+COPS=? - список досиупных операторов, http://theapplegeek.ru/blog/2010/08/18/vybor-seti-v-modeme-gprshsdpa-che...
  • AT^CARDLOCK="NCK-code" - unlock modem. NCK-code should be calculated by IMEI. After that modem can work with any GSM-provider.
  • AT^SYSCFG=mode, order, band, roaming, domain - System Config

Mode:

  • 2 Automatic search
  • 13 2G ONLY
  • 14 3G ONLY
  • 16 No change

Order:

  • 0 Automatic search
  • 1 2G first, then 3G
  • 2 3G first, then 2G
  • 3 No change

Band:

  • 80 GSM DCS systems
  • 100 Extended GSM 900
  • 200 Primary GSM 900
  • 200000 GSM PCS
  • 400000 WCDMA IMT 2000
  • 3FFFFFFF Any band
  • 40000000 No change of band

Roaming:

  • 0 Not supported
  • 1 Roaming is supported
  • 2 No change

Domain:

  • 0 CS_ONLY
  • 1 PS_ONLY
  • 2 CS_PS
  • 3 ANY
  • 4 No change

You might try to use this command
AT^CURC? Current setting of periodic status messages
AT^CURC=? See what you possible values are
AT^CURC=0 turn off periodic status messages

This should control the output of
^BOOT
^RSSI
^MODE
^DSFLOWRPT
^CONN
^CEND
^CONF
^ORIG

** Your device may or may not have some messages and may depend on the
connection mode.

You can still retrieve RSSI using
AT+CSQ
There is also Singnal to Noise Ratio
AT^CSNR?

Just for completeness
'GPRSONLY' : 'AT^SYSCFG=13,1,3FFFFFFF,2,4',
'3GONLY' : 'AT^SYSCFG=14,2,3FFFFFFF,2,4',
'GPRSPREF' : 'AT^SYSCFG=2,1,3FFFFFFF,2,4',
'3GPREF' : 'AT^SYSCFG=2,2,3FFFFFFF,2,4',

This relates to SYSCONFIG
SYSMODE / ^MODE messages
'0,0' : notifications.NO_SIGNAL,
'3,2' : notifications.GPRS_SIGNAL,
'3,3' : notifications.GPRS_SIGNAL,
'5,4' : notifications.UMTS_SIGNAL,
'5,5' : notifications.HSDPA_SIGNAL,
'5,6' : notifications.HSUPA_SIGNAL,
'5,7' : notifications.HSPA_SIGNAL,

AT^SYSINFO

Sending SMS
You can use gammu.
Edit ~/.gammurc

[gammu]
port=/dev/ttyUSB0
connection=at
name=huawei e1550
model=

The run command:

gammu sendsms TEXT +7123456789 -text qwe
echo 'Обыкновенное тестовое сообщение!' | gammu sendsms TEXT +380676837008 -unicode

USSD Requests
Use huawei-ussd package.

Ссылки
Как "приручить" МТС-модем Huawei E1550
http://rus-linux.net/nlib.php?name=/MyLDP/internet/modem-ru.html

Как научить МТС-модем Huawei E1550 работать с любой SIM-картой
http://rus-linux.net/nlib.php?name=/MyLDP/internet/unlock-ru.html

http://helwanengineers.blogspot.com/2010/10/etisalat-or-mobinil-usb-mode...

http://designbuildtestrepeat.wordpress.com/2008/04/29/huawei-e220-on-lin...

http://kuix.de/umts/vodafone/

http://itnet.com.ua/gsm-asterisk-under-construction.html

https://wiki.archlinux.org/index.php/Huawei_E1550_3G_modem

По блокировке - http://www.alexcellular.narod.ru/connect2.html

По отправке SMS - http://www.developershome.com/sms/

http://blog.bevice.ru/2011/04/asterisk-huawei-e1550-voip-gsm-gate/

http://callrecord.ru/content/voip-sip-gsm-gateway-%D0%BD%D0%B0-%D0%B1%D0...

http://asteriskforum.ru/wiki/index.php/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0...

( categories: )