Huawey E220 E1550 3G modem (Русский)

From ArchWiki
Redirect page
Jump to: navigation, search

Введение

В этой статье описывается, как настроить 3G модем Huawey E1550. Этот модем - стандартный, но есть две особености:

  • вам нужно переключить его в режим модема
  • вам нужно использовать правильный драйвер (usbserial)

Подготовка устройства

Переключение в режим модема

По-умолчанию ядро распознаёт модем как usb-устройство хранения данных (SCSI CD-ROM). Это правильно, потому что в модеме есть карт-ридер и встроенная flash-память.

Чтобы включить модем, вам нужно запустить команду:

/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd

Кстати, обратите внимание на пакет usb_modeswitch, который может понадобиться вам в будущем, в связи с изменениями modem-modeswitch и его переименованием в (см. [1]). Этот пакет не требует никаких изменений, просто установите его.

Кроме этого, вы может создать файл конфигурации udev: /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"

После этого, USB ID модема изменятся на 12d1:1003, а в /proc/bus/usb/devices будут отображены новые endpoints (точки?) USB.

Загрузка драйвера

usbserial будет подходящим драйвером для этого модема, но может получиться так, что драйвер не сможет правильно распознать модем, и вам придётся вручную передать USB ID. Это можно сделать так:

modprobe usbserial vendor=0x12d1 product=0x1003

или же дописать необходимые настройки в /etc/modprobe.d/modprobe.conf:

options usbserial vendor=0x12d1 product=0x1003

(не забудьте выполнить rmmod usbserial, если он уже был загружен)

Необязательно: именование модема

Вы можете переименовать порт ttyUSB, использовав следующие правила udev:

SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", NAME="ttyUSB_utps_modem"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", NAME="ttyUSB_utps_diag"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", NAME="ttyUSB_utps_pcui"

SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1003*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", NAME="ttyUSB_utps_modem"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1003*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", NAME="ttyUSB_utps_pcui"

Подключение к Интернету

Теперь у вас есть 2 или 3 устройства /dev/ttyUSB*. Скорее всего, первое из них (ttyUSB0, если у вас не было подобных нашему модему устройств) и есть PPP-совместимый модем. Вы можете использовать его как обычно, с pppd, kppp, gnome-ppp, network-manager и т.д.

Команды AT

Вот несколько полезных команд:

  • AT^U2DIAG=0 - установить режим "модем"
  • AT^U2DIAG=1 - установить режим "модем + CD-ROM"
  • AT^U2DIAG=255 - установить режим "модем + CD-ROM + Card Reader"
  • AT^U2DIAG=256 - установить режим "модем + Card Reader"
  • AT+CPIN=<PIN-код> - отправить PIN-код
  • AT+CUSD=1,<закодированный-в-PDU-код-USSD>,15 - отправить запрос USSD, результат (наверное) можно получить в /dev/ttyUSB2.

Кодирование "*100#" в формат PDU:

 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"'

Декодирование "AA180C3602" из формата PDU:

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

Декодирование ответа (в этом примере - ответ о состоянии баланса: 151.25):

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

Некоторые операторы возвращают результаты USSD-запросов в формате PDU, поэтому вам нужно подбирать правильный метод декодирования ответа.

  • AT+CSQ - получить качество сигнала (AT+CSQ=?)
  • AT+GMI - получить производителя устройства
  • AT+GMM - получить модель устройства
  • AT+GMR - получить версию программного обеспечения
  • AT+GMN - получить IMEI
  • AT+COPS? - получить информацию об операторе
  • AT^CARDLOCK="NCK-код" - разблокировать модем. NCK-код можно вычислить по IMEI. После этого модем может работать с любым GSM-провайдером (оператором).

Отправка SMS

Для этого вы можете использовать gammu.

Подредактируйте ~/.gammurc:

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

Команда:

gammu sendsms TEXT <номер телефона: +7..........> -text <текст сообщения>

Запросы USSD

Используйте пакет huawei-ussdAUR.

Ссылки