USB 3G Modem (Русский)

From ArchWiki
Jump to: navigation, search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Tango-view-fullscreen.pngЭта статья или раздел нуждается в расширенииTango-view-fullscreen.png

Причина: пожалуйста, используйте первый аргумент шаблона для указания причины. (обсуждение: Talk:USB 3G Modem (Русский)#)

Сегодня многие операторы сотовой связи во всём мире предлагают своим абонентам небольшие USB модемы для доступа к Интернету по технологиям UMTS, GSM или EDGE. В этой статье описывается, как подключить и произвести первичную настройку такого модема в Arch Linux.

Идентификация модема

Tip: Если вы являетесь обладателем модема ZTE MF626 или MF 636, обратите внимание на эту статью.

Если вам нужно, установите 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 модем может работать в двух режимах: виртуального диска и собственно модема. К тому же, некоторые модели модемов имеют встроенный ридер карт памяти.

Примечание: Первый режим нужен для установки драйвера и сервисной программы модема на компьютер. Затем, сервисная программа, при подключении к Интернету, переводит модем во второй режим. Однако, если версия такой программы Linux вас по каким-либо причинам не устраивает, необходимо помнить, что переключение модема в "режим модема" придётся настраивать вручную.

Для переключения модема в нужный режим можно воспользоваться утилитой /lib/udev/modem-modeswitch, поставляемой вместе с udev. Кстати, в udev 157 modem-modeswitch была переименована в mobile-action-modeswitch и используется только для переключения Mobile Action Cables.

Примечание:

Вы также можете воспользоваться утилитой usb_modeswitch для переключения режимов модема.

pacman -S usb_modeswitch

Примечательно то, что usb_modeswtich при установке создаёт правила udev для ряда моделей устройств. Подробнее вы можете почитать на официальном сайте программы, или же загляните в сами правила, /lib/udev/rules.d/40-usb_modeswitch.rules.

Правила 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 - число.

Примечание: Если у вас не появилось устройства с именем ttyUSBn, обратите внимание на устройства ttyACMn. Некоторые устройства "прописываются" под такими именами.

Права на доступ к модему

Для использования модема через Network Manager необходимо, чтобы пользователь входил в группы network и networkmanager. Группа networkmanager по умолчанию в Arch Linux не создается. Её нужно добавить вручную.

Дополнительные возможности

Информация о настройках провайдеров

Для возможности выбора предустановленных настроек доступа для вашего провайдера установите пакет mobile-broadband-provider-info.

Некоторые команды AT

Tip: Для работы с командами AT в Windows можно использовать HyperTerminal, а в Linux - minicom
Важно: Возможно, для вашего модема, команды задания режима будут другими.
  1. AT^U2DIAG=0 - установить режим "модем"
  2. AT^U2DIAG=1 - установить режим "модем + CD-ROM"
  3. AT^U2DIAG=255 - установить режим "модем + CD-ROM + Card Reader"
  4. AT^U2DIAG=256 - установить режим "модем + Card Reader"
  5. AT+CPIN=<PIN-код> - отправить PIN-код
  6. AT+CUSD=1,<закодированный-в-PDU-код-USSD>,15 - отправить запрос USSD, результат (наверное) можно получить в /dev/ttyUSB2

USSD

Huawei

Если вы являетесь обладателем модема Huawei, возможно, вас заинтересует пакет huawei-ussdAUR[ссылка недействительна: сохранено в aur-mirror]. Он позволит Вам отправлять запросы USSD с помощью модема (и, конечно же, получать ответы от оператора). Также можете взглянуть на аналогичную утилиту ussd.php.

Ручной способ

Примечание: При отправке запросов USSD используется кодировка PDU

Чтобы закодировать запрос 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:

Важно: Приведенные правила справедливы для модемов Huawei. Вам следует заменить idVendor и idProduct на свои:
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:vidVendorpidProduct*" …
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, он подробно описан в этой статье.

Ссылки