USB модем в linux – Нихрена не работает!

df cab XS Новости

Настройка usb модема zte mf180 для работы в системах на основе ubuntu

В этой публикации хочу рассказать о том, как настроить модем ZTE mf180/190 для корректной работы в системах, основанных на Linux Ubuntu.

Недавно, перейдя на Lunux Mint 16, я столкнулся с проблемой выхода в интернет через свой 3g usb-модем. Постоянные обрывы связи заставили искать решение. Доблестный Google целиком ничего не подсказал, пришлось собирать частями.

Начнем по-порядку.

Нам понадобится Minicom — программа для использования последовательного порта в UNIX-подобных операционных системах. Она находится в репозиториях большинства дистрибутивов, поэтом её установка не должна вызвать каких-либо затруднений.

Открываем терминал и вводим:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install minicomhttps://habrahabr.ru/sandbox/edit/93467/#
sudo minicom -s

В терминале появится меню программы.

Выбираем пункт настроек «Настройка последовательного порта»

И нажимаем клавишу A и приводим к виду:

/dev/ttyUSB1

Затем нажимаем Enter. После сохранения настроек выбираем обязательно пункт «Выход», чтобы попасть в консоль minicom, и вводим:

ati0

Результат должен быть примерно таким:

Manufacturer: ZTE CORPORATED
Model: MF190
Revision: BD_BLNKZMF190V1.0.0B01 
IMEI: 12345678901234
 GCAP:  CGSM, DS, ES 

OK

Копируем команду, обязательно в консоль minicom:

echo -e «AT ZCDRUN=Ern» > /dev/ttyUSB1

Ответ будет таким:

Enter download mode result(0:FAIL 1:SUCCESS):1

Нажимаем CTRL A, затем Q, выбираем «Да».

Настройка модема при помощи minicom закончена.

Затем заходим в настройки соединений, выбираем вкладку «мобильные» жмем кнопку «добавить». Откроется диалоговое окно, в нем жмем кнопку «вперед» выбираем страну (я выбирал Казахстан), затем выбираем оператора (в моем случае Beeline — и дальше приведу настройки именно для «Beeline KZ» При запросе тарифного плана я выбрал пункт «другой» и указал точку доступа internet.beeline.kz. Жмем кнопку «вперед», затем «применить». Затем нужно указать имя пользователя и пароль (у меня — internet.beeline и beeline), жмем «сохранить».

На этом у меня модем был полностью настроен и работоспособен, удачи в настройке.

At commands

There are some useful 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.
  • AT^SYSCFG=mode, order, band, roaming, domain – System Config

Mode:

  • 2 Automatic search
  • 13 2G ONLY
  • 14 3G ONLY
  • 16 No change

Order:

  • 0 Automatic search
  • 1 2G first, then 3G
  • 2 3G first, then 2G
  • 3 No change

Band:

  • 80 GSM DCS systems
  • 100 Extended GSM 900
  • 200 Primary GSM 900
  • 200000 GSM PCS
  • 400000 WCDMA IMT 2000
  • 3FFFFFFF Any band
  • 40000000 No change of band

Roaming:

  • 0 Not supported
  • 1 Roaming is supported
  • 2 No change

Domain:

  • 0 CS_ONLY
  • 1 PS_ONLY
  • 2 CS_PS
  • 3 ANY
  • 4 No change

With dedicated software

This was tested on a Huawei EM770W (GTM382E) 3g card integrated into an Acer Aspire AS3810TG laptop. Install gnokiiAUR, then:

$ mkdir -p $XDG_CONFIG_HOME/gnokii

Usually the configuration directory is ~/.config/gnokii.

$ cp /etc/gnokiirc ~/.config/gnokii/config

Edit ~/.config/gnokii/config as follows:

port = /dev/ttyUSB0

You may have to use a different port depending on your configuration, for example /dev/ttyUSB1 or something else:

model = AT
connection = serial

You need to be part of the uucpgroup to use /dev/ttyUSB0.

Then launch gnokii:

$ xgnokii

Click on the “SMS” icon button, a window opens up. Then click: “messages->activate sms reading”. Your messages will show up in the window.

Command line script:

A small command line script using gnokii to read SMS on your SIM card (not phone memory) without having to start a GUI:

$ gnokii --getsms SM 0 end 2>&1|grep Text -A1 -B3|grep -v Text

What it does:

gnokii # invoke gnokii
--getsms SM 0 end # read SMS from SM-memory location (=SIM card) starting at 0 and reading all occupied memory locations ("end")
2>&1 # connect STDERR to STDOUT to make sure the output from the --getsms command can be piped to grep
|grep Text # pipe output from gnokii to grep, anchoring at output containing "Text"
-A1 -B3 # print one line after the matched pattern and three lines before the matched pattern
|grep -v Text # grep result to another grep to exclude the "Text" line (-v for inverting the pattern)

Granted this does not work very well if your SMS contains the word “Text”, but you may adapt the script to your liking.

Another option is to use mmcli

#!/bin/sh
#get modem number
MODEMNO=$(mmcli -L | grep -o "Modem/[0-9]" | grep -o [0-9]$)
#list newest SMS
SMSNO=$(mmcli -m ${MODEMNO} --messaging-list-sms | awk '/received/{split($1, ar, ///); print ar[6]; exit}')
#read message
mmcli -m ${MODEMNO} -s /org/freedesktop/ModemManager1/SMS/${SMSNO}

Yellow leaf – статьи – использование 3g/4g-модема в linux без wvdial и network manager

Про использование GSM/3G/4G-модемов в Linux написано уже много, но почти все руководства предполагают использование утилит wvdial или network manager для подключения. Эти утилиты позволяют существенно упростить процесс подключения, однако при их использовании невозможно полностью управлять опциями pppd, хотя это бывает необходимо (например при подключении нескольких модемов и/или когда надо “привязывать” подключения к конкретному ppp-интерфейсу).

Далее будет показано как можно настроить подключение к интернету с использованием GSM/3G-модема в дистрибутивах Debian/Ubutnu без использования вспомогательных утилит.

Начальные условия: сервер под управлением Ubuntu 12.04, модем Huawei E171 с симкой оператора “Мегафон”, доступный в системе как “/dev/ttyUSB0”.

Задача: подключиться к интернету используя только pppd и привязать соединение к интерфейсу ppp100.

Переходим к решению задачи. Обычно для дозвона пишут свой chat-скрипт, и почему-то не многие знают что в поставке pppd уже есть chat-скрипт для GSM/3G-модемов, доступный в большинстве дистрибутивов Linux как “/etc/chatscripts/gprs”. Поэтому часть с написанием этого скрипта можно пропустить и сразу приступить к описанию подключения в pppd. Для этого создадим файл “/etc/ppp/peers/Megafon” следующего содержания:

# Используемое для подключения устройство
/dev/ttyUSB0

# chat-скрипт
# В параметре "-T" передаётся имя точки доступа
connect '/usr/sbin/chat -v -f /etc/chatscripts/gprs -T internet'

# Надо ли менять маршрут по умолчанию
# Закомментируйте если не надо
defaultroute

# Использовать ли DNS-сервера провайдера
# Закомментируйте если не надо
usepeerdns

# Номер ppp-интерфейса (в данном случае будет ppp100)
unit 100

# Подключаться в случае обрыва
persist

# Перепосылать пакеты авторизации каждые 60 секунд
# Позволяет избежать обрыва соединения при отсутствии трафика
chap-interval 60

# Идентификатор соединения, используемый для поиска паролей в соответствующих файлах,
# А так же передаваемый ip-up и ip-down-скриптам
ipparam Megafon

# Имя пользователя (пароль описывается в файле "/etc/ppp/chap-secrets")
user "gdata"

# Отключаем любое сжатие
nopcomp
novjccomp
nobsdcomp
nodeflate
noaccomp

# Правильная обработка обрывов соединения
lcp-echo-interval 2
lcp-echo-failure 3

# IP адрес мы будем получать от провайдера, а не назначать сами
noipdefault

Теперь вписываем в файл “/etc/ppp/chap-secrets” следующие строки

"gdata"         Megafon         "gdata"

И подключаемся командой:

pon Megafon

Соответственно отключиться можно командой:

poff Megafon

Чтобы соедиение устанавливалось автоматически при загрузке нужно добавить запись в файл “/etc/network/interfaces”. Согласно документации она должна выглядеть вот так:

auto Megafon
iface Megafon inet ppp
        provider Megafon

Однако в утилите ifup есть баг, который приводит к тому, что сразу после успешного подключения pppd получает SIGHUP и соединение рвётся. Ошибка эта очень древняя и судя по сообщениям на форумах и баг-трэкерам дистрибутивов надеяться на её исправление в ближайшем будущем не стоит. Поэтому используем небольшой хак: опишем интерфейс не как ppp, а как manual:

auto Megafon
iface Megafon inet manual
       pre-up /usr/bin/pon Megafon
       pre-down /usr/bin/poff Megafon

На этом всё. Приятной работы!

Автозагрузка

А теперь — автозагрузка, с ней посложнее. Я сразу опишу создание скрипта автозагрузки, в который можно будет запихнуть всё, что угодно. Он будет стартовать вместе с системой, нооо…

Нельзя просто так взять и создать файл автозагрузки. Есть одна проблема — Debian с какого-то времени пересмотрел свои требования к файлам автозагрузки. Файл мало просто создать, его нужно ещё по-особому отформатировать:

  1. Первая проблема — это LSB headers. Это заголовок файла автозагрузки. Нужен он потому, что компоненты автозагрузки должны выполняться в определённом порядке, поскольку часть из них зависят друг от друга. Предположим, у вас есть два скрипта в автозагрузке — один из них должен будет монтировать сетевую папку, а второй — делать в неё резервную копию файлов. Естественно, что сначала нужно выполнить первый, а потом — второй, поскольку второй зависит от первого. Для указания таких зависимостей и используются заголовки загрузочного файла. Впрочем, будет достаточно того заголовка, который я выложу в образце файла автозагрузки.
  2. Вторая проблема — любой скрипт в автозагрузке при запуске системы вызывается командой /etc/init.d/script start, а при выключении компьютера — командой /etc/init.d/script stop. Нужно добавить условия для обработки этих случаев.

Я сделал просто — взял за основу скрипт из имеющихся в /etc/init.d/ — уж они-то должны быть созданы по правилам, потом изучил этот скрипт и вырезал из него всё ненужное. Осталось два места, которые нужно изменить — место для команд, которые выполняются при запуске системы, и место для команд, которые выполняются при выключении компьютера. Впрочем, сейчас всё увидите:

Добавление поддержки протокола ppp в ядро ос

Устройство, на котором будет установлен дистрибутив, созданный в предыдущем разделе, уже сможет распознать LTE-модуль Quectel EC21-E, т.к. его драйвера есть в ядре Linux. Однако для подключения устройства к интернету нам необходимо добавить поддержку протокола PPP в ядро Linux, а также добавить в наш дистрибутив пакет ppp и написать для него файл расширения рецепта, который «расскажет» bitbake как и куда установить в нашем дистрибутиве необходимые файлы для pppd и chat, являющиеся частью пакета ppp.

Для конфигурирования ядра выполним команду:

~/habr-yocto-lte/build$ bitbake virtual/kernel -c menuconfig

Откроется стандартное окно menuconfig в котором надо выбрать:

Device drivers --->
    [*] Network device support --->
        <M> PPP (point-to-point protocol) support
            <M> PPP BSD-Compress compression
            <M> PPP Deflate compression
            <*> PPP filtering
            <M> PPP MPPE compression (encryption)
            <*> PPP multilink support
            <M> PPP over Ethernet
            <M> PPP support for async serial ports
            <M> PPP support for sync tty ports 

Сохраняем конфигурацию и выходим из menuconfig. Учтите, что эта конфигурация будет применяться только на том ПК, на каком она была сохранена. Для того что бы она применялась на любом ПК при клонировании проекта из репозитория, необходимо сохранить конфигурацию в файле defconfig и написать рецепт расширения для recipes-kernel.

Сохраним конфигурацию ядра в файле defconfig:

~/habr-yocto-lte/build$ bitbake virtual/kernel -c savedefconfig

Файл defconfig сохранится в каталоге ~/habr-yocto-lte/build/tmp/work/beaglebone-poky-linux-gnueabi/linux-ti-staging/4.19.94 gitAUTOINC 5a23bc00e0-r22a/build

Все рецепты расширения и рецепты, написанные нами, будем хранить в отдельном мета-слое. Создадим и назовем его meta-habr:

~/habr-yocto-lte/build$ bitbake-layers create-layer ~/habr-yocto-lte/meta-habr

В каталоге ~/habr-yocto-lte появится директория meta-habr – это и есть наш мета-слой. В этой директории будет пример рецепта recipes-example, он нам не нужен, удалим его, а затем добавим наш мета-слой в файл bblayers.conf:

~/habr-yocto-lte/build$ rm -r ~/ habr-yocto-lte/meta-habr/recipes-example/
~/habr-yocto-lte/build$ bitbake-layers add-layer ~/habr-yocto-lte/meta-habr

Пришло время сделать рецепт расширения для ядра Linux. Создаем необходимые каталоги и файлы:

~/habr-yocto-lte$  mkdir – p meta-habr/recipes-kernel/linux/linux-ti-staging/beaglebone
~/habr-yocto-lte$  touch meta-habr/recipes-kernel/linux/linux-ti-staging_%.bbappend

Копируем ранее созданный файл defconfig в каталог ~/habr-yocto-lte/meta-habr/recipes-kernel/linux/linux-ti-staging/beaglebone

~/habr-yocto-lte$ cp ~/habr-yocto-lte/build/tmp/work/beaglebone-poky-linux-gnueabi/linux-ti-staging/4.19.94 gitAUTOINC 5a23bc00e0-r22a/build/defconfig  meta-habr/recipes-kernel/linux/linux-ti-staging/beaglebone

и добавляем в файл linux-ti-staging_%.bbappend следующий код:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI  = "file://defconfig"

Теперь конфигурация ядра, определенная в файле defconfig будет применяться всегда при сборке дистрибутива. Соберём его и убедимся, что требуемые модули PPP установлены:

~/habr-yocto-lte/build$ bitbake –k core-image-base
~/habr-yocto-lte/build$ cat buildhistory/images/beaglebone/glibc/core-image-base/installed-packages.txt | grep "ppp"
--------------------------------------------------------
kernel-module-ppp-async-4.19.94-g5a23bc00e0_4.19.94 git0 5a23bc00e0-r22a_beaglebone.ipk
kernel-module-ppp-deflate-4.19.94-g5a23bc00e0_4.19.94 git0 5a23bc00e0-r22a_beaglebone.ipk
kernel-module-ppp-generic-4.19.94-g5a23bc00e0_4.19.94 git0 5a23bc00e0-r22a_beaglebone.ipk
kernel-module-ppp-mppe-4.19.94-g5a23bc00e0_4.19.94 git0 5a23bc00e0-r22a_beaglebone.ipk
kernel-module-pppoe-4.19.94-g5a23bc00e0_4.19.94 git0 5a23bc00e0-r22a_beaglebone.ipk
kernel-module-pppox-4.19.94-g5a23bc00e0_4.19.94 git0 5a23bc00e0-r22a_beaglebone.ipk
kernel-module-ppp-synctty-4.19.94-g5a23bc00e0_4.19.94 git0 5a23bc00e0-r22a_beaglebone.ipk

Как подключить 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 USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

Примечание.

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

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

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

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

Как подключить 3G USB модем (Мегафон, МТС, Билайн) в Ubuntu Linux 12.04

P.S.

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

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

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

Как подключить модем мтс в linux?

Сегодня у многих пользователей компьютеров большой популярностью пользуются USB 3G модемы от различных операторов. Если вы имеете на борту OS Windows и у вас устойчивый сигнал, (если сигнал слабый, читайте статью: как усилить сигнал 3G модема), то скорее всего вы не будете иметь  с модемом особых затруднений. Ведь все модемы обычно оснащаются программным обеспечением под OS Windows и просто вставив модем в USB порт, запуститься программа автозапуска, которая установит всё необходимое в 3 щелчка мышки.

Кстати, нет ничего обиднее, чем пЕрЕплАтИть при покупке 🤦🏻‍♂️ Поэтому ОЧЕНЬ рекомендую подписаться на канал в Телеграм 👉🏻Промокоды для Алиэкспресс👈🏻 Постоянно узнавая про новые акции 🔥 на разные товары, вы точно НИКОДА не переплатите 👌🏻

Но вот если у вас на борту OS Linux, вы наверняка столкнитесь с трудностями, так как подключить USB модем в Linux не так просто. На днях одна моя знакомая купила себе модем от МТС  – HUAWEI E171. Так как у на её старом ноутбуке стоит Росинка 9, то сразу возникла проблема:

Как подключить модем МТС в Linux

Дело в том, что модем никак не хотел определяться в Network Manager. После долгих поисков я на удивление себе нашёл программу для этого модема именно под Linux! Какой-то добрый человек на одном форуме выложил архив с двумя версиями программы: под Windows и Linux.

Очень жаль, что создание мобильных приложений под Linux так хромает, и такие находки воспринимаются почти как чудо. Выкладываю архив только с версией под Linux: Soft e171 huawei linux.

Скачав архив распакуйте его в свою домашнюю папку. У вас появятся вот такие файлы. Посмотрите, являются они исполняемыми, особенно файл “install”. После этого откройте терминал и выполните команду:

sudo bash ./install

Если вы всё сделали правильно, то программа начнёт устанавливаться:

Как подключить модем МТС

Если всё прошло без ошибок, а на Росинке 11 всё прошло гладко, у вас в меню появится значок программы с логотипом от МТС.

Как подключить модем в Linux

Как теперь подключить модем МТС в Linux? Запустите программу, предварительно вставив модем в USB порт. В трее должен появиться значок программы.

Щёлкнув по нему вы запустите Connect Manager MTS Linux, который внешне не отличается от версии Windows.

MTS Linux Connect Manager

Если у вас не установлена программа usb-modeswitch, то установите её обязательно.

sudo aptitude install usb-modeswitch
sudo rm /lib/udev/modem-modeswitch

Вот и всё, теперь вы знаете, как просто подключить модем МТС в Linux. Дело не сложное, особенно, когда есть нужный софт!

Удалить программу можно командой:

sudo /usr/local/Connect_Manager/UninstallMobilePartner

Настройка интернета мтс vpn-подключения на linux

Настройка интернета МТС на Linux1. На первом этапе для настройки домашнего итернета МТС необходимо совершить установку пакетов pptp-linux и ppp.

Все параметры настроек и файлов конфигурации соответствуют требованиям версий ppp-2.4.2-12 как и pptp-linux-1.7.1-1. Возможно, что версии имеют отличия, тогда необходимо обратиться к инструкции к имеющимся пакетам и отредактировать конфигурации.

2. Выяснить адреса маршрутизатора, прописанного по умолчанию. С этой целью нужно подключить сетевой кабель и включить модем, после чего, выполнить команду «netstat -rn». В появившихся командных строках обнаружить запись, в которой в графе «Destination» прописано выражение «0.0.0.0».

Графа «Gateway» содержит адрес маршрутизатора, прописанный по умолчанию, вида: «172.19.128.1» (это произвольные значения, приведенные в качестве примера, реальный адрес зависит от способа подключения и может быть различным). Значения, указанные в категории «Gateway» необходимо запомнить, чтобы заменять в примерных конфигурациях и командах.

3. Совершить прописание маршрута до сервера доступа. Для этого используем запрос «route add 172.19.0.1 gw GATEWAY». Чтобы система нормально функционировала и не требовалось прописывать эту команду после периодической загрузки системы, необходимо прописать эту строку в системных стартапных скриптах, типа /etc/rc.local.

Очистка таблицы от маршрутов по Default: «route del default». Далее произвести редактирование файла /etc/ppp/options. В поле «LOGIN» ввести свой логин, он должен содержать:

local

lock

nodetach

lcp-echo-interval 30

lcp-echo-failure 5

require-pap

require-chap

defaultroute

user LOGIN

noauth

Редактируем файл /etc/ppp/chap-secret. В него надо добавить строку (Разделитель слов– табуляция!):

LOGIN * PAROL *

«LOGIN» — заменить на свой логин

«PAROL» — свой пароль.

Подымаем VPN соединение: pptp 172.19.0.1

Для автоматизации поднятия VPN создаем скрипт для запуска и реконекта при обрыве, к примеру такой:

#touch /usr/local/bin/pptp-run

#chmod a x /usr/local/bin/pptp-run

в нём пишем:

#!/bin/bash

LOG=»/var/log/pptp-run.log»

while true; do

echo -e «n===========================n`date`» >> $LOG

/sbin/route del default

/usr/sbin/pptp 172.19.0.1 >> $LOG

/sbin/route add default gw GATEWAY

echo -e «press ctrl c from exit»

sleep 20;

done

Настройка домашнего проводного интернета МТС завершена.

Версия для Windows доступна по ссылке.

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

USB модем в 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-драйвера. Поэтому я пошёл дальше.

Сперва попросил уважаемого USB модем в 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 также зависит и от режима работы и может изменяться в результате переключения последнего.

Создание проекта и сборка дистрибутива

Создадим в домашней директории каталог, где у нас будет хранится репозитории Poky и мета-слои с рецептами. Назовем его habr-yocto-lte:

~$ mkdir habr-yocto-lte

Перейдем в директорию habr-yocto-lte и создадим пустой git репозиторий:

~$ cd habr-yocto-lte
~/habr-yocto-lte$ git init

Добавим в созданный git-репозиторий, в виде подмодулей, проект Poky и слой meta-ti:

~/habr-yocto-lte$ git submodule add -b thud git://git.yoctoproject.org/poky.git
~/habr-yocto-lte$ git submodule add -b thud git://git.yoctoproject.org/meta-ti

Poky это как раз тот самый инструмент, с помощью которого мы будем собирать наш дистрибутив, а meta-ti – это слой, который объединяет в себе наборы рецептов, классов и конфигурационных файлов для процессоров Texas Instruments.

Создадим файл oe-init-build-env и сделаем его исполняемым:

~/habr-yocto-lte$ touch oe-init-build-env
~/habr-yocto-lte$ chmod  x oe-init-build-env

Добавим в него следующий код:

#!/bin/sh
source $(pwd)/poky/oe-init-build-env build

Файл oe-init-build-env мы будем запускать всякий раз, при открытии нового окна терминала. Давайте запустим его командой:

~/habr-yocto-lte$ source ./oe-init-build-env

При первом выполнении скрипта в папке ~/habr-yocto-lte будет создана папка build, содержащая конфигурационные файлы и результаты сборки дистрибутива, а в окне терминала мы увидим нечто вроде этого:

### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'

В принципе, теперь у нас все готово для сборки дистрибутива, но мы сделаем еще несколько «штрихов»:

BBLAYERS ?= " 
        /home/alex/habr/poky/meta 
        /home/alex/habr/poky/meta-poky 
        /home/alex/habr/meta-ti 
        "
MACHINE = "beaglebone"
INHERIT  = "buildhistory"
BUILDHISTORY_COMMIT = "1"
PACKAGE_CLASSES = "package_ipk"
CORE_IMAGE_EXTRA_INSTALL  = " kernel-modules"
DISTRO_FEATURES_append = " systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED  = "sysvinit"
VIRTUAL-RUNTIME_init_manager = "systemd"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"

Запустим сборку дистрибутива:

~/habr-yocto-lte/build$ bitbake –k core-image-base

Пока собирается дистрибутив можете пойти вздремнуть, у вас есть на это часа 4 :). Потом будет собираться всё гораздо быстрее.

Дистрибутив сохранится в каталоге ~/habr-yocto-lte/build/tmp/deploy/images/beaglebone

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