USB 3G Modem (Русский)
Ссылки по теме
Сегодня многие операторы сотовой связи во всём мире предлагают своим абонентам небольшие USB модемы для доступа к Интернету по технологиям UMTS, GSM или EDGE. В этой статье описывается, как подключить и произвести первичную настройку такого модема в Arch Linux.
Contents
Идентификация модема
Если вам нужно, установите usbutils
pacman -S usbutils
А потом посмотрите результат работы lsusb
:
lsusb
[root@home elf]# lsusb Bus 002 Device 003: ID 12d1:1446 Huawei Technologies Co., Ltd. E1220 USB Modem Bus 002 Device 002: ID 046e:5540 Behavior Tech. Computer Corp. Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 003: ID 058f:6362 Alcor Micro Corp. Hi-Speed 21-in-1 Flash Card Reader/Writer (Internal/External) Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Первая строчка - это USB 3G модем Huawei. Вам нужно найти свой модем и запомнить номер производителя и номер изделия: это соответственно, два числа после ID
. У моего модема номер производителя получился 12d1, а номер изделия - 1446.
Переключение режима модема
Как правило, USB модем может работать в двух режимах: виртуального диска и собственно модема. К тому же, некоторые модели модемов имеют встроенный ридер карт памяти.
Для переключения модема в нужный режим можно воспользоваться утилитой /lib/udev/modem-modeswitch
, поставляемой вместе с udev. Кстати, в udev 157 modem-modeswitch
была переименована в mobile-action-modeswitch
и используется только для переключения Mobile Action Cables.
Правила udev находятся в /etc/udev/rules.d
. Например, для автоматического переключения Huawei E1220 в режим модема, нужно создать файл /etc/udev/rules.d/40-huawei-e1220.rules
с правилом:
SUBSYSTEM=="usb", SYSFS{idProduct}=="1446", SYSFS{idVendor}=="12d1", RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd"
Обратите внимание на 1446
и 12d1
в строке правила - это номер изделия и номер производителя. Вам нужно заменить эти значения на свои, которые вы определили с помощью команды lsusb
ранее.
Для проверки извлеките и заново подключите модем. Если вы выполните команду lsusb
, то может оказаться, что номер продукта или даже имя устройства могут поменяться (например, с 1446
на 1002
).
Если переключение модема прошло успешно, в /dev
появится новое устройство с именем вида ttyUSBn
, где n - число.
Права на доступ к модему
Для использования модема через Network Manager необходимо, чтобы пользователь входил в группы network и networkmanager. Группа networkmanager по умолчанию в Arch Linux не создается. Её нужно добавить вручную.
Дополнительные возможности
Информация о настройках провайдеров
Для возможности выбора предустановленных настроек доступа для вашего провайдера установите пакет mobile-broadband-provider-info.
Некоторые команды 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
USSD
Huawei
Если вы являетесь обладателем модема Huawei, возможно, вас заинтересует пакет huawei-ussdAUR[ссылка недействительна: сохранено в aur-mirror]. Он позволит Вам отправлять запросы USSD с помощью модема (и, конечно же, получать ответы от оператора). Также можете взглянуть на аналогичную утилиту ussd.php.
Ручной способ
Чтобы закодировать запрос USSD в PDU, используйте команду:
perl -e '@a=split(//,unpack("b*","Запрос USSD")); for ($i=7; $i < $#a; $i+=8) { $a[$i]="" } print uc(unpack("H*", pack("b*", join("", @a))))."\n"'
Чтобы раскодировать ответ на USSD-запрос, выполните:
perl -e 'print pack("H*", "Полученный ответ на запрос USSD");'
Некоторые операторы отправляют ответ в PDU. Чтобы извлечь текст ответа из такого сообщения, используйте команду:
perl -e '@a=split(//,unpack("b*", pack("H*","Ответ в USSD"))); for ($i=6; $i < $#a; $i+=7) {$a[$i].="0" } print pack("b*", join("", @a)).""'
Понятные имена в /dev
Возможно, вам будет приятнее работать не с ttyUSB0
, ttyUSB1
и т.д., а с более понятными ttyUSB_utps_modem
, ttyUSB_utps_diag
и ttyUSB_utps_pcui
. Для этого достаточно записать следующие правила 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
Отправка SMS
Для этого вы можете использовать gammu.
Подредактируйте ~/.gammurc
:
[gammu] port=/dev/ttyUSB0 connection=at name=huawei e1550 model=
Команда:
gammu sendsms TEXT <номер телефона: +7..........> -text <текст сообщения>
Что дальше?
После того, как ваш 3G модем подключён, настроен - а значит доступен в /dev
, его может использовать любая программа-звонилка. Выбор того или иного средства для подключения к Интернету зависит от ваших предпочтений: вы можете воспользоваться NetworkManager, wvdial, gnome-ppp[ссылка недействительна: package not found] или любым другим.
Возможно, вас заинтересует способ подключения к Интернету с помощью pppd, он подробно описан в этой статье.