Настройка 3G-модема в Linux •

df cab XS Обзоры

Как подключить 3g usb модем (мегафон, мтс, билайн) в ubuntu linux 12.04

В этой статье будет рассмотрена настройка и подключение 3G USB модема
(МТС, Мегафон) в Ubuntu 12.04. Это предельно
простая инструкция как подключить сотовый 3G модем в графической среде
Unity, с использованием интерфейса
Network Manager. Инструкция применима не только к
Ubuntu установленной на жесткий диск, но и к
Live варианту запускаемому с
USB флешки или с лазерного диска.

В Linux, в графических оболочках
Gnome, KDE, XFCE, Unity в качестве графического
интерфейса для настройки сетевых подключений используется программа Network Manager. Точнее Network
Manager обеспечивает plug and play работу с
физическими сетевыми устройствами, а графический интерфейс этой программы
называется Network Manager
Applet (nm-applet). Network Manager
Applet отображается в виде значка в системном трее
и если на этом значке кликнуть мышью откроется меню с функциями программы:

Настройка 3G-модема в Linux •

Для подключения 3G USB модема нужно воткнуть модем в USB разъем
компьютера и через 1-2 минуты (необходимо некоторое время на то, чтобы модем
был опознан системой и подключен) кликнуть на значке “Сеть” в трее и выбрать
пункт меню “Edit connections” (иллюстрация
выше). В результате откроется окно, в котором
нужно выбрать вкладку “Mobile broadband”
и там нажать кнопку “Add”:

Настройка 3G-модема в Linux •

Запустится мастер настройки соединения, в первом окне нажать кнопку
“Continue”:

Настройка 3G-модема в Linux •

Примечание.

Если вкладка “Широкополосный доступ (Mobile
broadband)” недоступна или в первом окне
настройки не определена модель модема, тогда:

нужно добавить новую строку в файле /lib/udev/rules.d/40-usb_modeswitch.rules
в которой прописать vid и pid вашего модема. Эти данные вы можете
узнать через консоль командой lsusb.

Во втором окне выбрать страну и нажать кнопку
“Continue”:

Настройка 3G-модема в Linux •

В следующем окне выбрать оператора и нажать кнопку
“Continue”:

Настройка 3G-модема в Linux •

В следующем окне нажать кнопку “Continue”:

Настройка 3G-модема в Linux •

В следующем окне нажать кнопку “Apply”:

Настройка 3G-модема в Linux •

В следующем окне нажать кнопку “Save”:

Настройка 3G-модема в Linux •

В этом окне можно отключить опцию “Allow roaming …”
(роуминг) и включить опцию “Connect automatically”.

Готово. Теперь, для того чтобы подключиться к Интернет достаточно
кликнуть на значке “Сеть” и в меню выбрать название созданного соединения:

Настройка 3G-модема в Linux •

И через несколько секунд соединение будет установлено:

Настройка 3G-модема в Linux •

Можно сделать так, чтобы соединение устанавливалось автоматически, как
только модем будет воткнут в USB разъем. Для этого
необходимо открыть окно соединений, выбрать вкладку “Mobile
broadband” и там нажать кнопку “Edit”
затем отметить опцию “Connect automatically”
и нажать кнопку “Save”:

Настройка 3G-модема в Linux •

P.S.

По моим длительным наблюдениям в Ubuntu
“сотовый” Интернет работает немного быстрее чем в Windows.
Бывает даже и такое, что в Windows соединения
вообще нет (оно устанавливается но не работает), а в
Ubuntu все нормально.

Если у вас возникли проблемы с подключением читайте другую статью –
установка и настройка 3G USB модема на Ubuntu
Linux
, в ней более подробно описан процесс установки и настройки.

Иван Сухов, 2021 г.

Мегафон

Получалось подключаться на любых настройках. А вообще точка доступа зависит от тарифа, по умолчанию – internet; имя пользователя megafon, пароль megafon. (Более не актуально, точка доступа для всех тарифов -internet, имя пользователя,пароль не требуются.)

Про umts/lte-модемы и linux. практика.

Настройка 3G-модема в Linux •Продолжение. Начало здесь.

Для тех, кто недавно присоединился к радиоканалу “Боян-FM” читателям моей уютненькой™, напомню, что затеял всё это ради того, чтобы построить достаточно скоростной IPSec-канал через “Йоту”. А для этого, в свою очередь, необходимо получить прямой “честный” IP с SIM-карты на каком-либо сетевом интерфейсе, притом минуя PPP.

Конкретно я использую модем iRZ TL21, построенный на базе модуля Sierra (он же AirPrime) MC7710, в составе которого находится чип Qualcomm MDM9200. Система – стабильный дистрибутив Debian (в данном случае Wheezy).

Сразу оговорюсь, что в какой-нибудь свежей Ubuntu данный модем заработает прям “из коробки”: его хорошо понимает NetworkManager. Но мы ж реальные пацаны, у нас реальный сервак, GUI на нём нетути. Да и подниматься линк должен сам по себе при старте системы. Поэтому пойти по простому пути не получится, придётся никакой механизма всё вручную.

Итак, суём модем в USB-порт, заправшиваем “lsusb” и видим…

Bus 006 Device 002: ID 03f0:1027 Hewlett-Packard Virtual keyboard and mouse
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 1199:68a2 Sierra Wireless, Inc. MC7710 Modem
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Ага, третья строчка – вот оно как раз самое. Выделенные жирным шрифтом цифирки нам потом ещё пригодятся. Ну что-ж, вроде как всё хорошо. Смотрим “ls /dev/ttyUSB*” и видим… а ничего мы не видим. Как говорится, “***в панама”. Нету псевдотерминалов.

Иногда затык может заключаться в том, что некоторые модемы “тянут” за собой виртуальный CD-ROM, на котором типа лежат типа драйвера для этого модема. И пока не пнёшь этот модем правильной AT-командой, собственно в модем он не превратится. А будет и дальше себе с настойчивостью кретина прикидываться CD-приводом. Ну это лечится элементарной установкой пакета “usb-modeswitch”: “apt-get install usb-modeswitch“.

Ладно, установили. Но псевдотерминалы всё равно не появились. Чешем репу. И вспоминаем, что в Debian-е по умолчанию идёт довольно боянистый софт, и нужных драйверов “из коробки” нет. Чтобы не париться уж слишком сильно, можно тупо поставить свежее ядрышко из backports. На момент написания этого псто оно было версии 3.16:

Перезагрузились. Смотрим “modinfo qmi_wwan” и “modinfo sierra_net“. Если выделенные жирным циферки из выхлопа lsusb (см. выше) оказались в одном из двух списков, то всё пучком. Можем продолжать. Если же нет, увы. Идем искать драйвера к нашему “мопеду”. Хорошо если найдём. А если не найдем – значит “упс”. В моём случае всё ништяк:

Внезапно, и псевдотерминалы появились в большом количестве:

Дальше тыкаем каким-нибудь minicom-ом в каждый терминал по очереди (“minicom -D /dev/ttyUSB0“, “minicom -D /dev/ttyUSB1” и т.п.) и смотрим который из них откликнется на какой нибудь “AT!GSTATUS?“, тот и есть нужный нам. Заодно проверим, что модем сцепился с сотовой сетью.

Вроде работает. Тут наступает небольшая засада. В дальнейшем нам придётся из различных скриптов ссылаться на найденный псевдотерминал. Но никто не может гарантировать нам, что после очередной перезагрузки сервера имя устройства останется таким же. Поэтому придётся помучать udev для того чтобы создать символическую ссылку (symlink), дабы увековечить нашу бесценную находку. Для начала смотрим к каким атрибутам мы могли бы привязаться.

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

Смотрим к каким атрибутам оборудования мы можем “привязаться”. Однозначно придётся использовать критерий SUBSYSTEM==”tty” из первой секции, иначе получится ерунда. Но этого мало. Нужно что-то ещё. Большой соблазн взять ATTRS{product}==”MC7710″, чтобы однозначно идентифицировать устройство, но… тогда мы не сможем указать номер интерфейса. Ибо udev позволяет брать параметры устройства и только одного родителя. Поэтому придётся довольствоваться ATTRS{bInterfaceNumber}==”03″ и DRIVERS==”qcserial” из третьей секции. Итоговое правило будет выглядеть так:

Записываем его куда-нибудь в “/etc/udev/rules.d/80-LTE.rules”, после чего заклинаем “udevadm control –reload-rules“, “udevadm trigger“. Первое нужно, чтобы udev перечитал список правил, второе – чтобы не топать ногами в серверную и не “перевтыкать” руками модем.

Итак, у нас появилась символическая ссылка “/dev/LTE-control”. Что же с ней делать дальше? А дальше надо указать модему APN и логин-пароль, если есть. Но каждый раз мы это делать руками, понятно, не будем. Поэтому имеет смысл либо написать скрипт, либо запихнуть вызов соответствующих команд прямо в “/etc/network/interfaces”. У меня получилось что-то типа того.

В директиве “pre-up” описываем действия до поднятия интерфейса: указать название APN, немного подождать, запустить пакетный драйвер QMI (или как он там правильно называется). То есть софтинку, которая разбирает-собирает поток данных и контрольный канал. С этого момента всё должно заработать. Если не взлетит, то вдумчиво раскуривать мануалы по модему, искать там диагностические AT-команды и пытаться разобраться что же пошло не так. После опускания интерфейса останавливаем QMI-драйвер.

Вроде бы на этом можно и успокоиться. Но я же ж извращенец, мне этого мало. Я хочу не просто подключить модем к серваку, а стать владычицей морскою “закинуть” его вовнутрь QEMU/KVM-виртуалки. В принципе, можно потанцевать с бубном и попробовать сделать это “прям щас”. Но мой модем помимо режима QMI умеет ещё Direct IP, при котором не надо запускать никакого QMI-драйвера. Поэтому я пошёл дальше.

Сперва попросил уважаемого Настройка 3G-модема в Linux •rustedowl разобраться как именно переключить модем в другой режим. Сложность там в том, что у данного устройства есть два разных набора AT-команд. Один лоховский универсальный, который является стандартным для любых UMTS-устройств. А второй – пацанский расширенный, для того чтобы можно было трогать модем за яйца крутить всякие хитрые инженерные параметры. Спустя какое-то время поспели вот такие заклинания:

Где набор символов “A710” является… паролем. Дабы всякие ничтоже сумнящиеся не совали свои шаловливые ручки куда не просят. И что сцуко характерно, энтот пароль в официальной документации к хитропопому прибору напрочь отсутствует. Он был найден на бескрайних просторах интернета и подходит к большинству модемов от данного производителя (Sierra Wireless). Параметр второй команды – собственно режим. “68A2” – это QMI, “68A3” – Direct IP. Данные значения актуальны только для данной модели (MC7710). Но в любом случае будет очень кстати лишний раз свериться с документацией чтобы не напортачить, поскольку операция смены PID является весьма щекотливой и может привести к самым разным последствиям. Третья команда перезагружает мопед.

После перезагрузки супостат перекрашивается яки киллер из GTA2. Он теперь в lsusb виден как “Bus 004 Device 003: ID 1199:68a3 Sierra Wireless, Inc. MC8700 Modem”. Обратите внимание, что поменялся ID оборудования и даже название модели. Раньше он представлялся как MC7710, а теперь внезапно стал MC8700. И драйвер теперь к нему подключился другой:

Также увеличилось количество псевдотерминалов ажно до пяти штук. И несколько изменился набор допустимых AT-команд.

Дальше всё “как обычно”. Находим среди этой пачки “телетайпов” контрольный канал, фиксируем его udev-ом. Точно так же, как и в предыдущем случае, указываем точку доступа (“AT CGDCONT=1,”IP”,”yota.ru””). А вот процесс “дозвона” намного проще: “at!scact=1,1”. Где последняя циферка является номером профиля, указанного в “CGDCONT”. То есть, внутри модема можно создать несколько разных профилей с разными точками доступа и переключаться между ними. Теоретически это может пригодиться если нужно время от времени использовать то “честный” IP от оператора, то “серый”, которые раздаются разными APN. Практически я не знаю случаев, когда такое может реально понадобиться.

Проверить, что “всё хорошо” можно командой “at!scpaddr=1”, где цифра означает номер пресловутого “профиля”. В ответ модем должен откликнуться полученным от оператора IP-адресом.

Но самой главной “плюшкой” режима Direct IP является то, что конкретно Sierr-овские модемы можно настроить на “автодозвон”. Для этого нужно установить профиль по умолчанию: “at!scdftprof=1” и включить автодозвон в этом профиле: “at!scprof=1,””,1,0,0,0“. Теперь после перезагрузки сервера либо отключения-включения питания модема он будет устанавливать линк автоматически. Аллилуйя!

IP-шник на системный интерфейс прилетает как обычно, по DHCP. Однако wwan0 – это всё-таки не ethernet. Попытки объединить его в bridge с другими системными интерфейсами (“brctl addif br0 wwan0“) не увенчались успехом. Для того, чтобы получить беспроводной LTE-линк с честным IP-адресом внутри виртуальной машины, пришлось ещё немного поизгаляться. Как – напишу в третьей части, если когда-нибудь дойдут руки.

Какой вывод можно сделать из вышеописанных половых сношений с модемом умозаключений? Sierra Wireless делает вполне годные железки, которые довольно неплохо поддерживаются Linux-ом. Даже таким консервативным, как Debian. Собратьям по несчастью разуму могу порекомендовать брать устройства, которые понимает драйвер “sierra_net”, ибо при прочих равных секса с ними будет меньше. К сожалению, таковых не так уж и много. Пока что их можно пересчитать по пальцам одной руки. Если кто будет выбирать, вот вам их VID-PID: “0f3d:68a3”, “0f3d:68aa”, “1199:68a3”, “1199:68aa”. Однако имейте в виду, что VID-PID также зависит и от режима работы и может изменяться в результате переключения последнего.

Простой рецепт устойчивой работы 3g под linux

Используя 3G модем Huawei E160 (lsub пишет E620) под Linux столкнулся с проблемой неустойчивого подъема соединения после перезагрузки системы. В сообщениях wvdial проблема выглядела так:

--> Sending: ATDT*99#
--> Waiting for carrier.
--> Timed out while dialing.  Trying again.

С настройками wvdial по умолчанию — сообщения шли бесконечно. По всем симптомам — модем «зависал». Проблема решалась просто — ручным кратковременным вытаскиванием модема из USB разъема.

Но мне требовалось более надежное решение, независящее от моего присутствия. Сам рецепт подсказывал мне — надо научиться программно перезапускать модем.

Самый надежный и универсальный способ — управление питанием по шине USB. Выключить и включить питание модема и все — проблема будет решена.
К сожалению, USB-хабы, поддерживающие управление питанием весьма редки. А исследование устройства с точки зрения Linux указывало на отсутствие такой функции на шине USB модема. Поэтому, такой вариант пришлось исключить.

Второй вариант — попробовать AT командой поуправлять модемом. Хотя бы заставить переподключить к GSM/3G сети.
Пришлось заняться поиском документации по AT коммандам.
И они нашлись от первоисточника:
http://www.3gpp.org/ftp/Specs/html-info/27007.htm
Команда, решающая мою проблему выглядит так:

AT CFUN=1,1

Команда заставляет модем перегрузиться и снова перейти в рабочий режим.

Модем действительно перегрузился, даже находясь в режиме передачи данных — команда была послана через ttyUSB2.

В консоли команда отправляется так:

echo -e "AT CFUN=1,1rn" >/dev/ttyUSB0

Проблема теоретически решена. Осталось автоматизировать процесс.

В /etc/wvdial.conf добавил ограничение на количество попыток соединения:

Dial Attempts = 5

После пяти не успешных попыток дозвониться, wvdial завершит работу.

Теперь обертываю вызов wvdial в скрипт:

rm -f /var/log/3g.log
while true;
do
        echo "wvdial" >>/var/log/3g.log
        wvdial >&/var/log/wvdial.log
        echo "sleep 10" >>/var/log/3g.log
        sleep 10
        echo "reboot modem" >>/var/log/3g.log
        echo -e "AT CFUN=1,1rn" >/dev/ttyUSB0
        echo "sleep 30" >>/var/log/3g.log
        sleep 30
done

Вызов скрипта добавляю в скрипт загрузки системы.

/var/log/wvdial.log — будут писаться события wvdial

/var/log/3g.log — события скрипта

30 секунд оказалось вполне достаточно для перезагрузки модема.

Желаю устойчивого connect’a!

Способ 1: настройка через gnome-ppp

1) Устанавливаем программу:

sudo apt-get install gnome-ppp

2) Чтобы не писать каждый раз в терминале команду для запуска, я создала launcher

3) После запуска видим окошко, в котором нужно заполнить все поля

4) Далее необходим задать некоторые настройки, нажимаем кнопочку Setup

  • жмем Detect и автоматически определяется наш модем
  • обязательно убираем Wait For Dialtone

нажав на Init Strings, добавляем строку инициализации:

  • копируем, вставляем
  • чтобы сохранилась, нажимаем Enter
  • потом нажимаем Close

В примере строка для Киевстара и определенного тарифного плана! Вам нужно вставить свою строку инициализации: для своего оператора и своего тарифного плана!

  • переходим на вкладку Options

на вкладке ставим галочки, как показано на рисунке (обязательно убираем Abort connecting if no dialtone!). Можно еще отметить две первых галочки, но в Ubuntu 11.04 при сворачивании в трей окошки исчезают и развернуть их без лишних действий невозможно =)

Когда все настройки заданы, нажимаем Close и попадаем на уже знакомую вкладку

Нажимаем Connect и наслаждаем интернетом 🙂

Способ 2: настройка через networkmanager

1) Заходим в Network Connections → Mobile Broadband → Add (или Edit, если подключение автоматически добавилось)

2) Выбираем модем и нажимаем Forward

3) Выбираем страну и нажимаем Forward

4) Выбираем провайдера и нажимаем Forward

5) Указываем тарифный план и жмем Forward

6) Проверяем настройки и нажимаем Apply

Оцените статью
Huawei Devices
Добавить комментарий