- .04 – Как «поговорить» с USB-модемом в Linux?
- 3g-модем от билайн в виде флэшки
- Yellow leaf — статьи — использование 3g/4g-модема в linux без wvdial и network manager
- Yellow leaf – статьи – использование 3g/4g-модема в linux без wvdial и network manager – huawei devices
- Автозагрузка
- Возможные проблемы и решения
- Задачи:
- Как сделать загрузочную флэшку
- Как сделать модем универсальным?
- Мегафон
- Мегафонмодем в mandriva linux
- Найденный скрипт
- Настройка с помощью at-команд
- Общий алгоритм конфигурации
- Переключение режима usb модема из mаss storage в gsm modem в linux – huawei devices
- Переключение режимов модем/флэшка/модем кардридер
- Создание wi-fi сети из usb-модема
- Часть вторая — подключаемся
- Узнайте больше о Huawei
.04 – Как «поговорить» с USB-модемом в Linux?
Я верю ответу, который Вы ищете, здесь: Используя winmodem USB с драйвером Conexant в (K) (Сновещательной) Ubuntu 11.10.
Важный материал (извлеченный из сайта):
Когда я включил модем Conexant, я выполнился
lsusb
и это сказало:
[…]
Bus 006 Device 002: ID 0572:1300 Conexant Systems (Rockwell), Inc. SoftK56 Data Fax Voice CARP
[…]
таким образом, я знал, что модем HSF был распознан системой.
Поскольку у меня было предыдущее интернет-соединение, я обновил систему
sudo apt-get update && sudo apt-get dist-upgrade
Я проверил, что у меня не было предыдущих установленных драйверов Conexant. Например: Я выполнился
ls /usr/sbin/hsfconfig
и это сказало, что тот файл не существовал; если это существовало, я буду думать, что что-то было все еще установлено.
Я удостоверился, что у меня был “gcc”, и “сделайте” готовыми, выполнившись
sudo apt-get install gcc make
Затем я выполнил те шаги, сказанные там:
sudo -s
cd /lib/modules/$(uname -r)/build/include/linux
ln -s ../generated/utsrelease.h
ln -s ../generated/autoconf.h
exit
Я подготовил файлы к компиляции драйвера, выполнившись
mkdir ~/conexant_modem
cd ~/conexant_modem
и если у меня была 64-разрядная операционная система, я выполнился
wget http://linux.dell.com/files/ubuntu/hardy/modem-drivers/hsf/hsfmodem-7.68.00.09x86_64oem.tar.gz
tar xzf hsfmodem-7.68.00.09x86_64oem.tar.gz
wget http://www.bargweb.net/images/2009/november/hsfmodem-7.80.02.05-DiacoEdition.zip
unzip hsfmodem-7.80.02.05-DiacoEdition.zip
cp -a hsfmodem-7.80.02.05-DiacoEdition/modules/imported/include/framewrk.h hsfmodem-7.68.00.09x86_64oem/modules/imported/include/framewrk.h
cp -a hsfmodem-7.80.02.05-DiacoEdition/modules/imported/include/osservices.h hsfmodem-7.68.00.09x86_64oem/modules/imported/include/osservices.h
еще, если у меня была 32-разрядная операционная система, я выполнился
wget http://linux.dell.com/files/ubuntu/hardy/modem-drivers/hsf/hsfmodem-7.68.00.09oem.tar.gz
tar xzf hsfmodem-7.68.00.09oem.tar.gz
wget http://www.bargweb.net/images/2009/november/hsfmodem-7.80.02.05-DiacoEdition.zip
unzip hsfmodem-7.80.02.05-DiacoEdition.zip
cp -a hsfmodem-7.80.02.05-DiacoEdition/modules/imported/include/framewrk.h hsfmodem-7.68.00.09oem/modules/imported/include/framewrk.h
cp -a hsfmodem-7.80.02.05-DiacoEdition/modules/imported/include/osservices.h hsfmodem-7.68.00.09oem/modules/imported/include/osservices.h
A note for the curious ones: those "framewrk.h" and "osservices.h" files were the different ones between the directories "hsfmodem-7.68.00.09oem/modules/imported" and "hsfmodem-7.80.02.05-DiacoEdition/modules/imported".
Если у меня была 64-разрядная операционная система, я выполнился
wget http://www.linuxant.com/drivers/hsf/full/archive/hsfmodem-7.80.02.06x86_64full/hsfmodem-7.80.02.06x86_64full.tar.gz
еще, если у меня была 32-разрядная операционная система, я выполнился
wget http://www.linuxant.com/drivers/hsf/full/archive/hsfmodem-7.80.02.06full/hsfmodem-7.80.02.06full.tar.gz
Примечание для любопытных: тот файл был новейшим в http://www.linuxant.com/drivers/hsf/full/downloads.php
И затем, если у меня была 64-разрядная операционная система, я выполнился
tar xzf hsfmodem-7.80.02.06x86_64full.tar.gz
rm -r hsfmodem-7.80.02.06x86_64full/modules/imported
cp -R hsfmodem-7.68.00.09x86_64oem/modules/imported hsfmodem-7.80.02.06x86_64full/modules/
cp -R hsfmodem-7.68.00.09x86_64oem/modules/imported hsfmodem-7.80.02.06x86_64full/modules/
еще, если у меня была 32-разрядная операционная система, я выполнился
tar xzf hsfmodem-7.80.02.06full.tar.gz
rm -r hsfmodem-7.80.02.06full/modules/imported
cp -R hsfmodem-7.68.00.09oem/modules/imported hsfmodem-7.80.02.06full/modules/
cp -R hsfmodem-7.68.00.09oem/modules/imported hsfmodem-7.80.02.06full/modules/
Следующий шаг должен был убрать существующий каталог.
Если у меня была 64-разрядная операционная система, я выполнился
rm -rf hsfmodem-7.68.00.09x86_64oem
rm -rf hsfmodem-7.80.02.05-DiacoEdition
rm hsfmodem-7.68.00.09x86_64oem.tar.gz
rm hsfmodem-7.80.02.05-DiacoEdition.zip
rm hsfmodem-7.80.02.06x86_64full.tar.gz
еще, если у меня была 32-разрядная операционная система, я выполнился
rm -rf hsfmodem-7.68.00.09oem
rm -rf hsfmodem-7.80.02.05-DiacoEdition
rm hsfmodem-7.68.00.09oem.tar.gz
rm hsfmodem-7.80.02.05-DiacoEdition.zip
rm hsfmodem-7.80.02.06full.tar.gz
Затем я должен был изменить некоторые файлы для адаптации их для работы с 3.0.0 версиями ядра Linux. Если у меня была 64-разрядная операционная система, я выполнился
cd hsfmodem-7.80.02.06x86_64full
xdg-open modules/GPL/serial_cnxt.c
еще, если у меня была 32-разрядная операционная система, я выполнился
cd hsfmodem-7.80.02.06full
xdg-open modules/GPL/serial_cnxt.c
и затем текстовый редактор был запущен. Я искал строку
#ifndef FOUND_UART_REGISTER_PORT
и ниже я нашел строку
static DECLARE_MUTEX(cnxt_port_sem);
Я удалил ту последнюю строку и записал там
static DEFINE_SEMAPHORE(cnxt_port_sem);
и я сохранил и закрыл тот файл. Я выполнился
xdg-open modules/osdiag.c
и затем текстовый редактор был запущен. Я искал строку
THIS_MODULE,
и ниже я нашел строку
.ioctl = diag_ioctl,
Я удалил ту строку и записал там
.compat_ioctl = diag_ioctl,
и я сохранил и закрыл тот файл. Я выполнился
xdg-open modules/osnvm.c
и затем текстовый редактор был запущен. Я искал строку
static LIST_HEAD(nvm_newinst_list);
и ниже я нашел строку
static DECLARE_MUTEX(nvmelem_writelist_sem);
Я удалил ту последнюю строку и записал там
static DEFINE_SEMAPHORE(nvmelem_writelist_sem);
и я сохранил и закрыл тот файл.
Примечание для любопытных: источником тех изменений в тех файлах был http://www.openmamba.org/showfile.ht…l-2.6.37.patch
Пользователь по имени Chiaseth помог сообщению тех шагов, которые я выполнил, этот путь:
Я выполнился
xdg-открытый modules/osservices.c
и затем текстовый редактор был запущен. Я искал строку
#include <linux/smp_lock.h>
и я удалил ту строку и записал там
#include <linux/mutex.h>
DEFINE_MUTEX(os_mutex); // Define a mutex
В том файле я искал строки
unlock_kernel()
замена всех их с
mutex_unlock(&os_mutex)
Кроме того, в том файле я искал строки
lock_kernel()
замена всех их с
mutex_lock(&os_mutex)
и я сохранил и закрыл тот файл.
Я выполнился
xdg-открытый modules/osdcp.c
В том файле я искал строку
static spinlock_t dcp_lock = SPIN_LOCK_UNLOCKED;
замена его с
static DEFINE_SPINLOCK(dcp_lock);
и я сохранил и закрыл тот файл.
Я выполнился
xdg-открытый modules/osdiag.c
В том файле я искал строку
static spinlock_t diag_lock = SPIN_LOCK_UNLOCKED;
замена его с
static DEFINE_SPINLOCK(diag_lock);
и я сохранил и закрыл тот файл.
Я выполнился
xdg-открытый modules/osfloat.c
В том файле я искал строку
static spinlock_t fpstates_lock __attribute__((unused)) = SPIN_LOCK_UNLOCKED;
замена его с
static DEFINE_SPINLOCK(fpstates_lock);
и я сохранил и закрыл тот файл.
Я выполнился
xdg-открытый modules/osservices.c
В том файле я искал строку
static spinlock_t atomic_lock __attribute__((unused)) = SPIN_LOCK_UNLOCKED;
замена его с
static DEFINE_SPINLOCK(atomic_lock);
и я сохранил и закрыл тот файл.
Я выполнился
xdg-открытый modules/GPL/oscompat.h
В том файле я искал строку
static spinlock_t tqueue_lock __attribute__((unused)) = SPIN_LOCK_UNLOCKED;
замена его с
static DEFINE_SPINLOCK(tqueue_lock);
и я сохранил и закрыл тот файл.
Наконец… Если выполняется
sudo make install
sudo hsfconfig
Это спросило, “Где исходный каталог сборки Linux, который соответствует Вашему рабочему ядру?”, затем я просто нажал клавишу Return для принятия ответа по умолчанию. Я также принял ответ по умолчанию в других вопросах.
Наконец команда сообщила об этом
The /dev/modem alias (symlink) points to ttySHSF0
Я выполнился
dmesg
и в конце я видел
[59190.782005] hsfengine: module license 'see LICENSE file distributed with driver' taints kernel.
[59190.782022] Disabling lock debugging due to kernel taint
[59192.564398] ttySHSF0 at MMIO 0x0 (irq = 0) is a Conexant HSF softmodem (USB-0572:1300)
[59192.600274] usbcore: registered new interface driver hsfusbcd2
[59194.416241] usbcore: deregistering interface driver hsfusbcd2
[59194.600064] usb 6-1: reset full speed USB device using uhci_hcd and address 2
[59194.811746] cnxthsf_DcpDestroy: units still active, waiting..
[59194.811764] cnxthsf_DcpDestroy: units still active, waiting..
[59194.811778] cnxthsf_DcpDestroy: units still active, waiting..
[59196.967466] ttySHSF0 at MMIO 0x0 (irq = 0) is a Conexant HSF softmodem (USB-0572:1300)
[59196.994150] usbcore: registered new interface driver hsfusbcd2
который предназначенный, среди прочего, в котором был обнаружен USB-модем /dev/ttySHSF0
.
Примечание: поскольку они сказали в https://help.ubuntu.com/community/Di… Практическое руководство/Conexant: “не удаляйте или перемещайте исходное дерево [в наш случай: ~/conexant_modem] от Вашей системы после этих шагов, это потребуется, чтобы удалять и исправлять драйвер”.
Я запустился kppp
(например), и настроенный новое “соединение”, указывая, что модем был в /dev/ttySHSF0
. Вы могли также использовать программу как efax-gtk
отправить факсы через модем.
3g-модем от билайн в виде флэшки
В теории подобное возможно, если пользователь сможет создать новую прошивку для модема, но подобного ещё никто не делал.
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
На этом всё. Приятной работы!
Yellow leaf – статьи – использование 3g/4g-модема в linux без wvdial и network manager – huawei devices
Продолжение. Начало здесь.
Для тех, кто недавно присоединился к радиоканалу «Боян-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?«, тот и есть нужный нам. Заодно проверим, что модем сцепился с сотовой сетью.
RSSI (dBm): -75 Tx Power: 0
RSRP (dBm): -103 TAC: 26BD (9917)
RSRQ (dB): -9 Cell ID: 0F30DB00 (254860032)
SINR (dB): 7.2
OK
Вроде работает. Тут наступает небольшая засада. В дальнейшем нам придётся из различных скриптов ссылаться на найденный псевдотерминал. Но никто не может гарантировать нам, что после очередной перезагрузки сервера имя устройства останется таким же. Поэтому придётся помучать udev для того чтобы создать символическую ссылку (symlink), дабы увековечить нашу бесценную находку. Для начала смотрим к каким атрибутам мы могли бы привязаться.
Копипаста ниже была взята с другой конфигурации оборудования, поэтому некоторые буквы-цифры там будут расходиться с моим примером. Самые внимательные, наверное, даже найдут где именно. Но общий смысл от этого не меняется. Текстовое поле можно растянуть, чтобы было удобнее читать.
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device ‘/devices/pci0000:00/0000:00:1d.7/usb4/4-5/4-5:1.3/ttyUSB3/tty/ttyUSB3’:
KERNEL==»ttyUSB3″
SUBSYSTEM==»tty»
DRIVER==»»
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb4/4-5/4-5:1.3/ttyUSB3’:
KERNELS==»ttyUSB3″
SUBSYSTEMS==»usb-serial»
DRIVERS==»sierra»
ATTRS{port_number}==»0″
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb4/4-5/4-5:1.3’:
KERNELS==»4-5:1.3″
SUBSYSTEMS==»usb»
DRIVERS==»qcserial»
ATTRS{bInterfaceClass}==»ff»
ATTRS{bInterfaceSubClass}==»ff»
ATTRS{bInterfaceProtocol}==»ff»
ATTRS{bNumEndpoints}==»03″
ATTRS{supports_autosuspend}==»1″
ATTRS{bAlternateSetting}==» 0″
ATTRS{bInterfaceNumber}==»03″
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb4/4-5’:
KERNELS==»4-5″
SUBSYSTEMS==»usb»
DRIVERS==»usb»
ATTRS{bDeviceSubClass}==»00″
ATTRS{bDeviceProtocol}==»00″
ATTRS{devpath}==»5″
ATTRS{idVendor}==»1199″
ATTRS{speed}==»480″
ATTRS{bNumInterfaces}==» 6″
ATTRS{bConfigurationValue}==»1″
ATTRS{bMaxPacketSize0}==»64″
ATTRS{busnum}==»4″
ATTRS{devnum}==»3″
ATTRS{configuration}==»Sierra Configuration»
ATTRS{bMaxPower}==»0mA»
ATTRS{authorized}==»1″
ATTRS{bmAttributes}==»e0″
ATTRS{bNumConfigurations}==»1″
ATTRS{maxchild}==»0″
ATTRS{bcdDevice}==»0006″
ATTRS{avoid_reset_quirk}==»0″
ATTRS{quirks}==»0x0″
ATTRS{serial}==»358178041352404″
ATTRS{version}==» 2.00″
ATTRS{urbnum}==»895″
ATTRS{ltm_capable}==»no»
ATTRS{manufacturer}==»Sierra Wireless, Incorporated»
ATTRS{removable}==»unknown»
ATTRS{idProduct}==»68a3″
ATTRS{bDeviceClass}==»00″
ATTRS{product}==»MC7710″
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb4’:
KERNELS==»usb4″
SUBSYSTEMS==»usb»
DRIVERS==»usb»
ATTRS{bDeviceSubClass}==»00″
ATTRS{bDeviceProtocol}==»00″
ATTRS{devpath}==»0″
ATTRS{idVendor}==»1d6b»
ATTRS{speed}==»480″
ATTRS{bNumInterfaces}==» 1″
ATTRS{bConfigurationValue}==»1″
ATTRS{bMaxPacketSize0}==»64″
ATTRS{authorized_default}==»1″
ATTRS{busnum}==»4″
ATTRS{devnum}==»1″
ATTRS{configuration}==»»
ATTRS{bMaxPower}==»0mA»
ATTRS{authorized}==»1″
ATTRS{bmAttributes}==»e0″
ATTRS{bNumConfigurations}==»1″
ATTRS{maxchild}==»8″
ATTRS{bcdDevice}==»0316″
ATTRS{avoid_reset_quirk}==»0″
ATTRS{quirks}==»0x0″
ATTRS{serial}==»0000:00:1d.7″
ATTRS{version}==» 2.00″
ATTRS{urbnum}==»61″
ATTRS{ltm_capable}==»no»
ATTRS{manufacturer}==»Linux 3.16.0-0.bpo.4-amd64 ehci_hcd»
ATTRS{removable}==»unknown»
ATTRS{idProduct}==»0002″
ATTRS{bDeviceClass}==»09″
ATTRS{product}==»EHCI Host Controller»
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7’:
KERNELS==»0000:00:1d.7″
SUBSYSTEMS==»pci»
DRIVERS==»ehci-pci»
ATTRS{irq}==»16″
ATTRS{subsystem_vendor}==»0x103c»
ATTRS{broken_parity_status}==»0″
ATTRS{class}==»0x0c0320″
ATTRS{companion}==»»
ATTRS{driver_override}==»(null)»
ATTRS{consistent_dma_mask_bits}==»32″
ATTRS{dma_mask_bits}==»32″
ATTRS{local_cpus}==»00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f»
ATTRS{device}==»0x268c»
ATTRS{uframe_periodic_max}==»100″
ATTRS{enable}==»1″
ATTRS{msi_bus}==»»
ATTRS{local_cpulist}==»0-3″
ATTRS{vendor}==»0x8086″
ATTRS{subsystem_device}==»0x31fe»
ATTRS{numa_node}==»-1″
ATTRS{d3cold_allowed}==»1″
looking at parent device ‘/devices/pci0000:00’:
KERNELS==»pci0000:00″
SUBSYSTEMS==»»
DRIVERS==»»
Смотрим к каким атрибутам оборудования мы можем «привязаться». Однозначно придётся использовать критерий 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-драйвера. Поэтому я пошёл дальше.
Сперва попросил уважаемого 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 также зависит и от режима работы и может изменяться в результате переключения последнего.
Автозагрузка
А теперь — автозагрузка, с ней посложнее. Я сразу опишу создание скрипта автозагрузки, в который можно будет запихнуть всё, что угодно. Он будет стартовать вместе с системой, нооо…
Нельзя просто так взять и создать файл автозагрузки. Есть одна проблема — Debian с какого-то времени пересмотрел свои требования к файлам автозагрузки. Файл мало просто создать, его нужно ещё по-особому отформатировать:
- Первая проблема — это LSB headers. Это заголовок файла автозагрузки. Нужен он потому, что компоненты автозагрузки должны выполняться в определённом порядке, поскольку часть из них зависят друг от друга. Предположим, у вас есть два скрипта в автозагрузке — один из них должен будет монтировать сетевую папку, а второй — делать в неё резервную копию файлов. Естественно, что сначала нужно выполнить первый, а потом — второй, поскольку второй зависит от первого. Для указания таких зависимостей и используются заголовки загрузочного файла. Впрочем, будет достаточно того заголовка, который я выложу в образце файла автозагрузки.
- Вторая проблема — любой скрипт в автозагрузке при запуске системы вызывается командой /etc/init.d/script start, а при выключении компьютера — командой /etc/init.d/script stop. Нужно добавить условия для обработки этих случаев.
Я сделал просто — взял за основу скрипт из имеющихся в /etc/init.d/ — уж они-то должны быть созданы по правилам, потом изучил этот скрипт и вырезал из него всё ненужное. Осталось два места, которые нужно изменить — место для команд, которые выполняются при запуске системы, и место для команд, которые выполняются при выключении компьютера. Впрочем, сейчас всё увидите:
Возможные проблемы и решения
Для стабильной работы лучше назначить usb-устройству режим «только модем» с помощью программы cutecom, и перейти в порт /dev/ttyUSB0, где нужно вписать соответствующую команду. Если связь проблемно устанавливается, в PPP параметрах следует выключить Deflate, BSD. Чтобы работать без перебоев, нужно следить за оставшимся балансом.
Задачи:
- Принимать первый аргумент командной строки в качестве названия внешнего интерфейса, проверяя подлинность имени, используя команду ifconfig;
- Добавить сохранение выбранного интерфейса в какой-нибудь файл в /etc и сделать ключ выбора последнего интерфейса, а лучше — при отсутствии имени интерфейса как аргумента.
- Запихнуть это всё красиво в автозагрузку и в $PATH.
Как сделать загрузочную флэшку
Для того, чтобы операция прошла успешно, сначала нужно убедиться, что система поддерживает загрузку с юсб. Проверить это можно, зайдя в BIOS. После нужно записать образ на девайс с помощью UltraISO или другой программой, и запустить ПК не с жёсткого диска, а с загрузочной флэшки (тоже через BIOS).
Как сделать модем универсальным?
Операторы сотовой связи ставят блокировку на свои модемы, чтобы их нельзя было использовать с сим-картами чужих операторов. Чтобы активировать данную функцию, нужно прошить устройство с помощью программы Huawei Modem Unloker. Она требует от себя знание кода пришивки, который можно получить сторонними программами по IMEI.
Мегафон
Получалось подключаться на любых настройках. А вообще точка доступа зависит от тарифа, по умолчанию — internet; имя пользователя megafon, пароль megafon. (Более не актуально, точка доступа для всех тарифов -internet, имя пользователя,пароль не требуются.)
Мегафонмодем в mandriva linux
Неоднократно видел и читал как народ настраивает модемы, которые видны как флешка модем в Linux, видел страшные скрипты, куча пакетов, кто-то даже ядро пересобирал. Но вот я стал
счастливым
вынужденным обладателем EDGE модема Huawei e160g, который входит комплект Мегафон Модем Плюс.
Настраивалось на Mandriva Linux 2009.0, в других дистрибутивах будет иначе, так как не везде есть drakconnect.
Думал будет страшно, на деле оказалось максимально просто. Итак, инструкция (копипаст из личного блога):
- подготовка к настройке — следует заранее установить 2 пакета ppp и comgt (в режиме суперпользователя # urpmi comgt ppp)
- вставляем сам модем в USB порт, жмем правой кнопкой на сетевом апплете (рядом с часиками 2 монитора (синенькие квадратики) с зеленой галочкой или красным крестиком), выбираем «Настроить сеть» и понеслась (после каждого пункта надо нажимать кнопку Далее или Готово):
UPD (2009-07-02)
: час ночи (MSK) — поставил на закачку фильм 2.2 Гб, скорость колеблется в районе 20 КБ/с ( -4 КБ/c), прога обещает скачать фильм примерно за 1 день и 5 часов. Трафик нигде не учитывается (не снимаются деньги со счета, 100 халявных МБ тоже не убывают). В целом неплохо, если подводных камней не будет — для дачи/поездок/отсутствие выделенки — самое оно.
Найденный скрипт
Хм-хм. Этот скрипт уже староват — iptables ругается на одну из команд и не хочет выполнять, да и тот путь, которым в статье скрипт пытаются поместить в автозагрузку, тоже работает не всегда на моей практике. Более того, есть проблема — этот скрипт отлично подходит для ситуации, когда ничего не собирается меняться.
Если бы так и было, я бы поставил iptables-persistent и на этом закончил бы статью. А вот я собираюсь иногда получать интернет по интерфейсу ppp0, иногда — по eth0, а иногда — вообще по wlan1, причём менять интерфейс хочу одной консольной командой. Так, eth1 в примере — внешний интерфейс, а eth0 — внутренний.
Настройка с помощью at-команд
Для удобной конфигурации понадобится терминальная программа, или более подходящее решение в виде Huawei Modem Terminal. Подключившись к устройству, нужно проверить подключение командой AT. Если ответ положительный, можно дальше проводить настройку. Для того, чтобы узнать список всех доступных команд, нужно вписать: AT^CMDL.
Общий алгоритм конфигурации
Для подключения модемов МТС, Мегафон в среде Unity (Ubuntu 12.04 и другие) используется интерфейс Network Manager. Инструкция:
- Зайти в пункт для изменения соединений.
- Добавить во вкладке мобильной передачи новую сеть.
- Выбрать настраиваемое устройство.
- Определить оператора связи, страну.
Переключение режима usb модема из mаss storage в gsm modem в linux – huawei devices
Привет. В этот раз мы решили написать статью об антеннах, в контексте антенн для USB-модемов. Расскажем о том, какие они бывают, почему так выглядят, какие проблемы решает каждая из антенн.
Мы учли пожелания в комментариях к предыдущей публикации о том, чтобы писать «проще», в то же время мы не можем не использовать технические описания и терминологию. Надеемся, что у нас получился нужный баланс удобного и одновременно полезного содержания.
Периодически, на электронную почту завода приходят вопросы вроде: «Почему купленная мною 3G антенна не ловит LTE?», или «Вскрыл вашу антенну — одни железки/фольга, где же усилитель?» и много других вопросов.
Было решено написать статью в том числе для ответов и на такие вопросы. Цель материала — показать, как работают такие антенны на примере собственных изделий и помочь выбрать нужную антенну для приема интернет-сигнала именно в вашей ситуации.
Вступление
Антенны являются неотъемлемой частью любого устройства беспроводной связи. Из-за тренда к уменьшению габаритов устройств потребительской электроники, к антеннам, предъявляются жесткие требования. Под антенну на печатной плате выделяется небольшой участок (10% и менее от площади платы). Иногда и вовсе используются антенны на гибких печатных платах — FPCB, что позволяет компоновать устройство не только в плоскости, но и в объеме корпуса. Бывает, инженеры просто размещают «закорючку» на плате (например, PIFA-антенна), отвечающую за работу устройства в 2G, 3G, 4G сетях. Такая антенна — ненаправленная, с минимальным коэффициентом усиления, её эффективность мала.
Да, подобные технические решения ориентированы преимущественно на работу устройства в зонах уверенного приема сигнала. Но, иногда мы оказываемся в зонах с плохим покрытием, где встроенной антенны недостаточно. В таких случаях может выручить внешняя антенна.
В зависимости от используемого устройства (смартфон, планшет, модем), понадобится антенна, функционал которой реализован под конкретное устройство. О системах усиления интернет-сигнала Orange-900 и Orange-2600, улучшающих качество связи смартфона/планшета, мы говорили ранее. Теперь мы рассмотрим способы усиления сигнала мобильного интернета модема, на примере нескольких классических вариантов антенн.
Антенны-отражатели
Взгляните, как излучает (принимает сигнал) модем в 4G-диапазоне:
Рис. 1 — Компьютерная симуляция 3D диаграммы направленности 4G-модема (f=2.6GHz)
На Рис. 1 изображена 3D диаграмма направленности модема на рабочей частоте 2.6 GHz (сеть 4G). Давайте рассмотрим её подробнее. Как видим, встроенная антенна модема излучает вокруг на 360 градусов по горизонту с небольшим собственным усилением. Перекос излучения по горизонту обусловлен конструкцией антенны модема — за основу взята модель антенны одного из ранее популярных модемов, для наглядности помещенная в радиопрозрачный корпус.
К плюсам кругового излучения относится тот факт, что пользователю не надо искать направление на БС — модем сам выберет нужную ему БС. Однако, ведя прием со всех направлений, помимо полезного сигнала, такая антенна примет помехи и шумы других передатчиков, что ухудшит соотношение полезный сигнал/шум (S/N). Это соотношение влияет на «пинг» и скорость соединения: чем оно больше, тем меньше «пинг» и выше скорость обмена данными.
Для того, чтобы повысить соотношение S/N модема можно использовать усилитель интернет-сигнала Connect 3.0 — это двухэлементная антенна, состоящая из рефлектора и активного элемента (модема, который вставляется в специальный держатель). Самого усилителя (если под усилителем понимать активное устройство) здесь нет, как и в любой пассивной антенне, однако, говоря об усилении, в первую очередь мы говорим о направленных свойствах антенны, и чем ярче они выражены, тем больше подобного «усиления» придает антенна.
Для базовой настройки достаточно направить усилитель с модемом в сторону лучшего уровня сигнала в помещении (как правило это окно) и качество соединения улучшится. В компьютерной модели это происходит так.
Рис. 2 — Компьютерная симуляция 3D диаграммы направленности 4G-модема
в усилителе Connect 3.0 (f=2.6GHz)
На Рис. 2 излучение модема в направлении от Connect 3.0 теперь выражено сильнее, причем красный цвет (максимум излучения) стал ярче, что говорит о приобретенной направленности (усилении). Справа на картинке приведена цветовая шкала усиления, по которой можно представить в каком направлении излучение модема максимально.
С помощью рефлектора Connect 3.0, встроенная антенна модема приобрела направленные свойства, в результате чего возросло собственное усиление антенны 6.5 dBi (1 dBi — децибел относительно изотропного источника излучения), а вход модема стал менее подвержен шумам и наводкам, что повышает соотношение S/N и улучшает качество интернет-соединения.
Важно: у модемов разных моделей антенны совершенно по-разному размещены, их конструкции различны, поэтому эффект усиления может быть различным в количественной мере, однако, диаграмма направленности во всех случаях будет принимать схожий вид, что важно для улучшения соотношения S/N.
Такой отражатель вы можете собрать и настроить самостоятельно, например, из обычной пивной банки. Это любопытно для любителей DIY, и, да, она тоже будет работать в сторону усиления. Одно «но» — пивная банка не всегда эстетично и презентабельно смотрится дома, в офисе, в магазине.
Небольшой FAQ по антеннам-отражателям:
Вопрос: В технических характеристиках вы пишете что антенна поддерживает практически все стандарты связи — как возможно достигнуть такой широкополосности?»
Ответ: поскольку Connect 3.0 — это двухэлементная антенна, активным элементом которой является модем, все зависит от того — поддерживает ли модем нужный стандарт. Размеры и расположение рефлектора, скрытого в пластиковом корпусе Connect 3.0, позволяют антенне оказывать положительный эффект в таком широком диапазоне частот.
Вопрос: «Почему антенна стоит именно столько (подставьте здесь любую цену)? Продавать за такие деньги штампованный пластик и фольгу — обман»
Ответ: Несмотря на относительную простоту конструкции — антенна работает, выполняет заявленную функцию, что подтверждено сотнями тысяч выпущенных изделий и множеством положительных отзывов от наших клиентов. Мы считаем неправильным обсуждать вопрос экономики и расчета стоимости данного изделия, опираясь лишь на цены материалов, входящих в его стоимость. К сожалению, присутствует множество факторов конечного ценообразования, часто не зависящих от нас.
Антенны направленного действия.
Бывают ситуации, когда решения уровня «Connect 3.0» недостаточно, чтобы «дотянуться» модемом до сигнала БС на расстоянии в несколько километров. Здесь нам помогут направленные антенны типа «волновой канал» и панельные патч-антенны. Эти антенны имеют отличные приемные характеристики в рабочем диапазоне и помогут наладить стабильную связь в условиях слабого приема сигнала (конечно, если он есть вообще).
Современные сети 2-4 поколений используют широкий диапазон частот: от 800 до 2700 МГц, который перекрыть одной направленной антенной с одинаковыми параметрами во всей рабочей полосе очень сложно, но этого и не надо. Нужно лишь правильно выбрать антенну под свою ситуацию, понимая, что если у вас 3G-антенна, то она не поможет, если вы захотите поймать WiFi-сеть или, например, сеть LTE-2600.
Стоит уточнить: из-за специфики частотного распределения, в России есть участки диапазонов, в которых размещены сети разных поколений (принцип технологической нейтральности), как например GSM 1800 (2G) и LTE 1800 (4G), для которых подойдет одна и та же антенна на 1800 МГц, но таких примеров немного.
Рис. 3 — 3G/4G/WiFi панельная антенна «Flat Combi»
Когда нужнее панельная антенна, а когда необходима антенна типа ’’волновой канал’’? У панельной антенны (Пример на Рис.3) широкий рабочий диапазон частот и её проще настроить на базовую станцию. Антенна «Волновой канал» (Пример на Рис.4) более узкополосная — обычно они хорошо работают в одном диапазоне (2G, 3G, 4G), но имеют большее усиление. Панельные антенны менее подвержены механическим повреждениям и «атакам ворон» в виду своей обтекаемой формы. А «волновые каналы», благодаря своей узкополосности менее подвержены наводкам и помехам от других источников сигнала, что положительно сказывается на отношении S/N. Антенны комплектуются разъемами SMA, N или FME, поэтому чтобы подключить их к модему, надо использовать переходник на CRC-9 или TS-9 разъем, в зависимости от модема.
Теперь обсудим расположение наружных антенн. В сетях 3G используется вертикальная поляризация, антенны следует располагать элементами перпендикулярно земле. Об этом написано в паспорте продукта и на сайтах производителей, но не все читают инструкции, поэтому нередко устанавливают связные антенны, как традиционные телевизионные — горизонтально. Результат — антенна в таком положении или вовсе не работает, или почти не работает.
Стандарт 4G/LTE имеет другую поляризацию. Для лучшего приёма антенну стоит располагать под углом 45 градусов к горизонту.
Вопрос: Поддерживают ли подобные антенны технологию MiMo?
Ответ: Поддерживают. Для работы с технологией MiMo вам понадобятся 2 антенны. Например, для поддержки LTE MiMo рекомендуем использовать 2 волновых канала, расположенных под углами 45 и −45 градусов к горизонту.
Рис. 4 — Антенна «волновой канал» для 4G сетей «Рысь 4G»
Заключение.
Выбирая антенну, определитесь с тем, какой именно сигнал хотите усилить. Для наглядности мы приведем сводную таблицу с характеристиками рассматриваемых антенн:
Благодарим за внимание. До встречи в новых статьях и обзорах!
Переключение режимов модем/флэшка/модем кардридер
Если устройство изначально поддерживает функцию переключения, процесс происходит через AT-команду AT^U2DIAG=[значение]. С её помощью можно перевести устройство в режим «только модем» (0), использовать в виде флэшки (1), кардридера (256), или соединить всё вместе (255).
Создание wi-fi сети из usb-модема
Прежде всего нужно обзавестись роутером, который поддерживает подключения модемов. Если такой вариант отпадает, можно использовать старый маршрутизатор. Инструкция:
- Отключить модем, Интернет.
- Соединить сетевым кабелем роутер с компьютером.
- В сетевых настройках ПК нужно обратиться к свойствам телефонного подключения.
- Разрешить использовать его другим пользователям сети.
Так роутер будет распространять Интернет с компьютера через модем.
Часть вторая — подключаемся
Собственно, программ, которые позволяют заставить модем набрать номер и подключиться к провайдеру — предостаточно. Тот же Network Manager, например. Кстати, те, у кого до этого в Network Managere-е модем не находился, уже могут попробовать поискать его снова 😉 . Ну а мы, в данном случае, решили воевать в консоли. Потому, в консоли и продолжим…