Gsm модем для линукс

Использование USB-3G-модемов

Содержание

Общий алгоритм настройки подключения к 3G-сети

Скриншоты

Начиная с версии Ubuntu 9.10 большинство USB-модемов определяются и работают нормально независимо от оператора сотовой связи.

Перед началом настройки необходимо установить пакеты usb-modeswitch и usb-modeswitch-data , которые позволяют корректно работать с устройствами, совмещающими функции модема, CD-ROMа и картридера (коими являются большинство 3G-USB-модемов).

После этого, при подсоединении USB-модема, стандартный апплет NetworkManager позволит создать «Новое широкополосное соединение», где мастер поможет выбрать регион, оператора и тариф.

Инструкция в картинках (Ubuntu 10.10)

1. Щёлкните правой кнопкой мыши на апплете NetworkManager и откройте «Изменить соединения».

2. Перейдите во вкладку «Мобильные» и добавьте новое соединение.

3. Выберите устройство, для которого вы настраиваете соединение. Можно выбрать «Любое».

4. Выберите страну.

5. Выберите оператора. Если нужного нет или полно фантазии, можно самому написать название.

6. Выберите или напишите точку доступа (APN). Список для некоторых операторов представлен ниже в этой статье.

7. Почти всё. Нажмите «Применить».

8. Появится окно, в котором можно написать имя пользователя и пароль, изменить точку доступа и т. д.

9. На другой вкладке можно включить или отключить шифрование и сжатие. После настроек нажмите «Применить».

10. Щёлкнув по значку апплета и выбрав созданное подключение, вы сможете подключиться.

11. Изменение готового соединения аналогично, только вместо «Добавить» на шаге 2 нужно выбрать нужное соединение и нажать «Изменить», тем самым вы перейдёте к шагу 8.

Возможные проблемы и решения

Для надёжной работы также рекомендуется перевести устройство в режим «только модем». Это можно сделать с использованием терминальной программы cutecom , соединившись на порт /dev/ttyUSB0 и послав соответствующую конкретной модели устройства команду.

В случае проблем с установлением связи попробуйте в PPP параметрах подключения отключить компрессию Deflate, BSD или обе сразу.

Не забудьте проверять ваш баланс. При недостатке средств соединение может устанавливаться, но доступа к сетевым ресурсам не будет!

Модели модемов, AT-команды и заметки

Huawei E1550

AT-команды для переключения режима работы устройства:

Источник

Использование 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» следующего содержания:

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

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

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

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

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

Источник

Настройка gsm модема в debian

Подскажите, не видит модема в системе как /dev/ttyUSB0 *1 *2.

Dmesg здорового линукс:

Dmesg курящего линукс:

По гугляжу говорят, что нужен модуль usb-serial. На данный момент не установлено ни одного модуля (папка /lib/modules/$ пуста). Вопрос нужен ли он мне и как его установить?

какое-то нестандартное самосборное ядро, возможно статическое без модулей

Так его пытаются к андроиду прикрутить. А там с модулями бяда.

Подскажите как его собрать и установить?

1. Что у тебя за девайс?
2. Можешь ли ты сам собрать ядро?

1 Микрокомпьютер MB77.07 2 Пересобрать могла бы и только по хорошей инструкции)).

2 Пересобрать могла бы и только по хорошей инструкции)).

До этого дело может и не дойти.
Рассказывай, какой модем цепляешь.

# lsusb Bus 001 Device 005: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem

Попробовала на всякий случай проверить миникомом /dev/ttyS0, тож не идет.

Сейчас ядро в штатных прошивках идет с минимальным набором драйверов, без модулей в корневой ФС. Будет в ближайшее время исправлено, как только дойдут руки до обновления образов. Соответственно надо включить поддержку для модема и пересобрать ядро. Потребуется хост на x86_64 и пакеты build-essential, git, uboot-mkimage

Берем свежий тулчейн отсюда: http://www.module.ru/mb7707/toolchains/x86_64/. Для ядра нам без разницы armel/armhf.

Распаковвываем, например в

/x-tools/, добавляем путь к каталогу с тулчейном в PATH. Например добавив в .bashrc следующее:

Читайте также:  Если под линуксом вирусы

Кто хочет приключений могут собрать тулчейн и самостоятельно при помощи crosstool-ng, все конфиги лежат на гитхабе.

Теперь забираем ядро с github.

Текущий стабильный бранч: k1879-3.10.28. Остальные бранчи экспериментальные — на свой страх и риск. Осенью будет след. стабильный 4.х порт.

Результат сборки — arch/arm/boot/uImage и arch/arm/boot/module-mb7707.dtb

dtb менять сейчас не потребуется, только uImage.

Это можно сделать двумя вариантами. Первый, традиционный, как в u-boot — через tftp.

На локальной машине поднимаем tftpd, копируем uImage в /tftpboot на локальной машине.

В консоли mboot настраиваем сеть.

И обновляем раздел kernel

Второй вариант. Берем всю «кухню» от прошивки, которую мы до этого прошивали и открываем скрипт eupgrade.edcl и немного меняем своим любимым редактором. Перепрошивать загрузчик и корневую фс мы не будем, нам надо только обновить ядро. Вот пример, как оно будет выглядеть в первом приближении:

Сохраняем, и прошиваем точно так же, как прошивали прошивку. (Ну или просто тупо подменяем uImage в архиве прошивки на свой и прошиваемся)

ncrmnt Всё замечательно тебе расписал, за что ему огромное спасибо.
В конфиг тебе (при помощи команды make menuconfig) скорее всего надо добавить следующее: USB_NET_HUAWEI_CDC_NCM и CONFIG_USB_SERIAL_OPTION. Возможно, что еще что-то. Для понимания я советую тебе смотреть dmesg-выхлоп на нормальном компе и на платке. Сравнение логов даст тебе идеи о том, чего не хватает.
Кроме того, требуется перевести эту штуковину в режим модема, для этого тебе надо будет уже в rootfs добавить и настроить usb_modeswitch.

Там raspbian/debian так что последнее просто через apt-get install usbmodeswitch делается.

У меня был модем от связного типа тоже Huawei.
Чтобы он начал откликаться в каталог /etc надо было положить файлик usb_modeswitch.conf с содержимым:

Ещё раз спасибо за подробную инструкцию! Ядро пересобралось успешно. Единственное, что для пересборки потребовался ещё пакет lzop и файл оказался в директории arch/arm/boot/dts/module-mb7707.dtb

После сборки и прошивки микрокомпьютер правда ругался на то, что не может найти modprobe, доустановила.

— не нашла ничего с хуавеем.

емнип NCM не только у хуавея, символ по другому может называться.

И нужен еще usbmodeswitch, без него порты модем не покажет.

Ни NCM, ни USB_NET grep не нашёл). Из выгугленного и на вид подходящего нашла: USB_USBNET, USB_TEST. Завтра попробую собрать как время будет.

Modprobe также ругается (лог в шапке). Это нормально?

usbmodeswitch в первую очередь + libusb-dev, libusb-0.1. Мои настройки для него.

Reading config file: /etc/usb_modeswitch.conf

* usb_modeswitch: handle USB devices with multiple modes * Version 1.2.3 (C) Josua Dietze 2012 * Based on libusb0 (0.1.12 and above)

! PLEASE REPORT NEW CONFIGURATIONS !

DefaultVendor= 0x12d1 DefaultProduct= 0x1446 TargetVendor= 0x12d1 TargetProduct= 0x1001 TargetClass= not set TargetProductList=«»

DetachStorageOnly=0 HuaweiMode=1 SierraMode=0 SonyMode=0 QisdaMode=0 GCTMode=0 KobilMode=0 SequansMode=0 MobileActionMode=0 CiscoMode=0 MessageEndpoint=0x01 MessageContent=«55534243000000000000000000000011060000000000000000000000000000» NeedResponse=0 ResponseEndpoint=0x01

InquireDevice enabled (default) Success check enabled, max. wait time 40 seconds System integration mode disabled

usb_set_debug: Setting debugging level to 15 (on) usb_os_find_busses: Found 001 usb_os_find_devices: Found 003 on 001 usb_os_find_devices: Found 002 on 001 usb_os_find_devices: Found 001 on 001 error obtaining child information: Inappropriate ioctl for device Looking for target devices . searching devices, found USB ID 12d1:1001 found matching vendor ID found matching product ID adding device searching devices, found USB ID 1a40:0101 searching devices, found USB ID 1d6b:0002 Found devices in target mode or class (1) Looking for default devices . searching devices, found USB ID 12d1:1001 found matching vendor ID searching devices, found USB ID 1a40:0101 searching devices, found USB ID 1d6b:0002 No devices in default mode found. Nothing to do. Bye.

Заходим в menuconfig:

Device Drivers -> USB Support.

Чтобы не мучаться с модулями компилим в ядро сразу ( ), а не модулем ( ), так проще и быстрее будет (если модулем, то втыкать либо insmod’ом, либо упаковвывать модули в deb и накатывать пакетов вместе с ядром, чтобы depmod отработал. Иначе modprobe работать не будет). Выбираем:

USB Serial converter support

Внутри меню выбираем то, что требуется

Теперь нужен сетевой интефейс. Это qmi_wwan или cdc_ncm скорее всего. Идем:

Device Drivers -> Network Device Support -> USB Network Adapters

Ну и по вкусу. Скорее всего какой-то из этих двух.

Источник

Раздача интернета с 3G модема в локальную сеть в Linux

Эта статья — продолжение статьи Беспроводная точка доступа, используя Linux. Тут я опишу, что же необходимо сделать для того, чтобы раздавать интернет с 3G-модема по уже созданной по инструкции из предыдущего топика вайфай-сети.

1) Прежде всего, научить Linux работать с модемом
2) Создать NAT для раздачи интернета
3) Запихнуть всё это дело в автозагрузку
Итак, bash, wvdial и iptables под мышку — и поехали!

Подключение USB 3G-модема

Бывает и так, что в некоторых странах есть свои провайдеры 3G-интернета, которые не предоставляют настроек для подключения, используя Linux, что, в общем-то, и понятно — ‘популярность’ как провайдера, так и Linux даёт о себе знать. Не все конфиги есть ещё на сайтах, тем более — для отдельных программ. Итак, в Латвии, где я и проживаю. есть два провайдера — LMT и Bite. Оба они предоставляют беспроводной интернет через модемы Huawei, залоченные, естественно, на них, ну да не в этом дело. Ну так вот — необходимо обеспечить интернет всюду, где есть 3G, используя модем и сервер. Что же делать?

Читайте также:  Background eraser для windows

Прежде всего, воткнуть модем в ноут. USB-модемы определяются в Linux как устройства под адресом /dev/ttyUSB*, где * — порядковый номер устройства, обычно адрес выглядит как /dev/ttyUSB0.
Ой. Что-то он не определяется. А проблема вот такая (обмусоленная уже тысячу раз): модем — это устройство типа “два в одном”. Почему? Он совмещает в одной флешке как собственно модем, так и встроенный накопитель с драйверами модема под Windows (я уже молчу про кардридер). В Linux по умолчанию включается режим диска, а не модема Для того, чтобы включить ещё и режим модема, нужно установить пакет usb-modeswitch. После этого нужно перезагрузить udev (service udev restart) и опять подключить модем, подождать секунд 10 и опять выполнить команду на вывод списка устройств модема:

Когда вывод походит на этот, всё отлично и можно двигаться дальше. У нас есть три устройства. Нам необходимо лишь одно — под номером 0, остальные 2 мы не используем — они не для наших целей. Насколько мне известно, одно из них, скорее всего, используется для отсылки СМС, а второе — для просмотра уровня сигнала сети и прочего.

Теперь — дело за программой, которая подключит нас. Я буду использовать программу wvdial, дополнительно к ней нужно установить пакет ppp, если он ещё не установлен.Многие советуют использовать программу wvdialconf для настройки подключения, но в данном случае она нам не поможет. После установки нам нужно отредактировать файл /etc/wvdial.conf. Стираем из него всё содержание, затем разбираемся в формате файла. Я предоставлю рабочие конфиги для провайдера LMT с тарифом OKarte Internets datorā и модемом Huawei E173 и Bite с неизвестным тарифом и модемом Huawei E1550.

Вкратце — файл разделён на секции. Каждая из секций отвечает за одну комбинацию модем-провайдер. Начало секции обозначается меткой [Dialer xxx], где ххх — это название метки, по которой мы будем указывать, какие именно настройки нужны для подключения. Если нам потребуются настройки LMT, мы наберём команду wvdial lmt, и будут использоваться настройки из секции [Dialer lmt] — суть понятна. Из этих настроек нам нужно обратить внимание на следующие:

— AT-команды после InitX — те команды, которые wvdial отсылает модему перед тем, как поднять подключение.

— Эта настройка, если убрать # в начале, будет посылать модему команду ввода пин-кода. Если честно, желательно её отключить — у меня эта команда по непонятным причинам не работала корректно. Легче просто подключить модем один раз к компьютеру с Windows и отключить ввод пин-кода при подключении, используя программу, поставляемую с модемом.

— Здесь прописывается адрес APN, который предоставляет провайдер. Нужно обратить внимание на две последних отделённых кавычками части. Первая — IP — указывает IP-адрес для подключения, если настройки провайдера подразумевают то, что используется IP-адрес APN. Если же используется буквенный адрес вида “internet” или “internet.lmt.lv”, в первой части нужно оставить “IP”, а во второй — прописать буквенный адрес, как это сделано в примере.

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

Имя пользователя и пароль для подключения к интернету. Если их нужно оставить пустыми, оставьте там скобочки вида < >. Если нет — просто поставьте там имя и пароль, без скобочек.

Имя устройства, которое нам нужно использовать. В 99% случаев оно будет именно таким.

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

Ещё раз расскажу о том, как правильно запускать подключение вручную. Достаточно одной команды — wvdial xxx, где ххх — это название провайдера из конфигурационного файла (для меня это либо lmt, либо bite.) Однако — при запуске wvdial ”занимает собой” всю консоль, не давая возможности запустить что-либо ещё. Кроме того — если вы запустите wvdial в окне SSH и тут же разорвёте сессию, то и wvdial завершится. Нужно либо постоянно держать сессию открытой, либо использовать screen, который в данном случае решает сразу две проблемы довольно эффективно — что и советую.
Что в идеале нужно? Также научиться просто и легко запускать эти программы. В использовании мной описанной схемы есть свои нюансы:

1) Соединение нужно каждый раз запускать вручную.
— Достаточно немного изменить конфигурационные файлы системы, а именно — тот же /etc/network/interfaces:

Для меня этот способ не подходит — он рассчитан на то, что провайдер не меняется, но большая вероятность, что это понадобится кому-то ещё. Да и не особо-то надёжно это работает, по моему опыту, лучше настроить udev. Для себя же я не нашёл подходящих решений — для этого надо было бы определять принадлежность вставленной сим-карты тому или иному провайдеру, а решение с использованием этого становится очень сложным.
Ну а если всё же надо быть постоянно подключённым, даже если что-то глючит и модем отключается от сети? Ну тогда поможет следующий скрипт. Он смотрит, есть ли wvdial в списке процессов, а если нет, то делает ifup ppp0, что в совокупности с вышеупомянутыми настройками в interfaces должно вызывать wvdial заново:

2) При включении ноутбука, если модем был подключен во время загрузки системы, иной раз случаются зависания, которые выражаются в следующем — при попытке подключения, используя wvdial, выходят строчки вида
, и подключиться не удаётся. Лечится на один раз просто — нужно лишь вынуть и воткнуть модем, а затем запустить соединение вручную, но вы же понимаете, что при отсутствии физического доступа к компьютеру эта задача усложняется до невозможности.
— Пока что я не могу предоставить нормального решения, поскольку сам ещё не занялся этим. Предполагают, что это из-за того, что программа usb-modeswitch не отрабатывает корректно, если модем вставлен в компьютер при запуске системы. Видимо, нужно покопаться с udev или указать какие-либо особые параметры для usb-modeswitch.

Читайте также:  Toolbox для minecraft windows 10 edition

3) В условиях плохого приёма соединение часто обрубается
— Всё довольно просто. Дело в том, что у портов ЮСБ есть ограничение на отдаваемый ток, при превышении которого, насколько я помню, порт отрубается. Видимо, в условиях плохого приёма сигнала сети модем пытается повысить мощность приёмника и передатчика, и случается так, что модем начинает потреблять больший ток, чем выдерживает порт — порт отключается, модем выключается, соединение отрубается насовсем. Посоветовать могу лишь, к примеру, просто-напросто взять USB-хаб с внешним питанием ну или же купить отдельный адаптер питания для модема и впаять его в кабель.

4) Возможность смены порта, по которому нужно обращаться к устройству.
Как я уже упомянул, обычно при настройке используется одно устройство — /dev/ttyUSB0. Но, как заметил freuser, есть ситуации, когда порт меняется. К примеру:

  • Использование двух модемов
  • Зависание одного порта, которое выражается в том, что порт остаётся в /dev, даже если модем уже отключен.
  • И тому подобные казусы, при которых внезапно назначается другой порт.

При дебаге неработающего подключения нельзя забыть про такую возможность. Если, к примеру. при запуске wvdial не стартует pppd, то это повод задуматься — а работает ли сам порт и тот ли это порт? Тогда придётся поэкспериментировать с номерами в конфиге, пока модем наконец не подключится.

После того, как интернет появился на нашем сервере, остаётся лишь настроить раздачу интернета с модема по Wi-Fi сети.

Если у компьютера есть два сетевых интерфейса, это ещё не означает, что из коробки можно спокойно раздавать интернет с одного на другой. Однако — не всё так сложно, чаще всего требуется всего пара настроек. Конечно, эти настройки сложно запомнить, не вникая в суть каждой строчки, но ведь для этого есть эта статья! Я нашёл наиболее подходящий для этой ситуации и безглючный скрипт, не могу не дать ссылку на него, поскольку найденный на нём скрипт самый короткий и ясный из тех, что я встречал — остальные умудряются растянуть пару правил iptables на несколько страниц… Прежде всего, посмотрю, что в нём надо бы изменить под мои нужды:

Найденный скрипт
Задачи:
  1. Принимать первый аргумент командной строки в качестве названия внешнего интерфейса, проверяя подлинность имени, используя команду ifconfig;
  2. Добавить сохранение выбранного интерфейса в какой-нибудь файл в /etc и сделать ключ выбора последнего интерфейса, а лучше — при отсутствии имени интерфейса как аргумента.
  3. Запихнуть это всё красиво в автозагрузку и в $PATH.

Что же вышло в итоге?
Комментарии писал на английском — так привычнее. Если будут просьбы — могу и перевести.

Ну и не забываем обязательную часть:Окей, скрипт у нас готов. Как можно понять, вариантов вызова четыре — firewall (используется последний интерфейс), firewall наш_интерфейс, firewall info (выводит текущий интерфейс, на котором настроен NAT) или firewall help. Осталась лишь автозагрузка и $PATH.

Для того, чтобы вызывать скрипт командой firewall, не указывая местоположение, нужно запихнуть его в одну из папок, указанных в PATH. Я предпочитаю /usr/local/bin по религиозным соображениям. Полный путь к скрипту будет /usr/local/bin/firewall, а вот вызвать из консоли его всегда можно будет просто командой firewall.

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

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

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

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

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

Опять же, дать права на исполнение:В файле автозагрузки лучше указывать полный путь к исполняемому файлу, поскольку иначе при загрузке иногда возникают проблемы вида “firewall: command not found”.

Источник

Оцените статью