Difference between revisions of "Huawei E1550 3G modem"
Line 18: | Line 18: | ||
To switch modem on you shoud run | To switch modem on you shoud run | ||
/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd | /lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd | ||
− | command. (See also [http://aur.archlinux.org/packages.php?K=usb_modeswitch usb_modeswitch] package in AUR) | + | command. (See also [http://aur.archlinux.org/packages.php?K=usb_modeswitch usb_modeswitch] package in AUR, which you may need in future since in udev-157 modem-modeswitch has been renamed and changed as described in the |
+ | [http://git.kernel.org/?p=linux/hotplug/udev.git;a=commit;h=4dd9b291354e76f34b0d6d7b5c3b28d03a624418 commit] | ||
+ | ). | ||
Also you can create udev's config: /etc/udev/rules.d/15-huawei-e1550.rules | Also you can create udev's config: /etc/udev/rules.d/15-huawei-e1550.rules |
Revision as of 08:58, 8 June 2010
Contents
Introduction
This article describes how to configure Huawey E1550 3G modems.
This modem is generic modem device, but there are two kludges:
- you need to switch it into modem mode
- you need to load proper driver (usbserial)
Prepare device
Switch into modem mode
By default kernel recongnizes it as usb-storage device (SCSI CD-ROM). It is true, because of this modem contains MicroSD card reader and internal flash.
To switch modem on you shoud run
/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd
command. (See also usb_modeswitch package in AUR, which you may need in future since in udev-157 modem-modeswitch has been renamed and changed as described in the commit ).
Also you can create udev's config: /etc/udev/rules.d/15-huawei-e1550.rules
SUBSYSTEM=="usb", SYSFS{idProduct}=="1446", SYSFS{idVendor}=="12d1", RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd"
After that, modem changes its USB IDs to 12d1:1003 and /proc/bus/usb/devices shows new USB endpoints.
Driver loading
usbserial is proper driver for this modem, but probably it does not recognize it, so you shold force it, passing USB IDs.
modprobe usbserial vendor=0x12d1 product=0x1003
or put options into /etc/modprobe.d/modprobe.conf
options usbserial vendor=0x12d1 product=0x1003
(do not forget to 'rmmod usbserial' if it is already loaded before)
Connecting internet
Now you have new 2 or 3 /dev/ttyUSB* devices.Most likely first of them (ttyUSB0 if you had not such devices before) is PPP compatible modem. Use it as usual with pppd, kppp, gnome-ppp, network-manager, etc.
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 "*100#" to PDU format:
perl -e '@a=split(//,unpack("b*","*100#")); for ($i=7; $i < $#a; $i+=8) { $a[$i]="" } print uc(unpack("H*", pack("b*", join("", @a))))."\n"'
Decode "AA180C3602" 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+GMI - get manufacturer
- AT+GMM - get model
- AT+GMR - get revision
- AT+GMN - get IMEI
- AT+COPS? - get operator info
- AT^CARDLOCK="NCK-code" - unlock modem. NCK-code should be calculated by IMEI. After that modem can work with any GSM-provider.