- Использование USB-3G-модемов
- Содержание
- Общий алгоритм настройки подключения к 3G-сети
- Инструкция в картинках (Ubuntu 10.10)
- Возможные проблемы и решения
- Модели модемов, AT-команды и заметки
- Huawei E1550
- Использование 3G/4G-модема в Linux без wvdial и network manager
- Как подключить 3g модем в Linux?
- Раздача интернета с 3G модема в локальную сеть в Linux
- Подключение USB 3G-модема
- Автозагрузка
Использование 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:
Источник
Как подключить 3g модем в Linux?
За те годы, что я использовал Linux совместно с 3G модемом, не было ни одной родной программы от самой Ubuntu. У 3G модемов фирмы Huawei есть свой 3G менеджер под Linux, но работать с другими модемами (да и с некоторыми своими) он отказывается.
Но вот в Ubuntu 12.04 я совершенно случайно обнаружил в менеджере пакетов программу, созданную как раз для управления 3G модемами. Как подключить 3g модем в Linux при помощи этой программы?
Для начала давайте установим эту программу, чтобы подключить 3G модем. Вы можете найти её в менеджере пакетов Synaptic под именем modem-manager-gui
Вы также можете установить её из командной строки:
Если у вас нет нужного репозитория и программа не находится, то добавьте репозиторий .
Сделать это можно, открыв менеджер пакетов Synaptic — Настройки — Репозитории — Другое ПО — Добавить, и добавить так, как показано на снимке:
Теперь обновите сведения о пакетах и устанавливайте эту программу.
В самом менеджере пакетов есть небольшое описание того, что эта программа умеет:
Давайте попробуем запустить эту программу и на личном опыте оценить её полезность и функциональность. Я буду использовать разлоченный модем ZTE 100 с сим картой от Мегафон.
Заходим в «Приложения» — «Системные утилиты» — «modem-manager-gui» и запускаем приложение.
Как видите, программа определила мой модем. Нажимаю кнопку «Сети» и тут выскакивает рамочка:
Нажимаем «Активировать» конечно. Перед нами появляется вкладка сеть, где есть кнопка «Начать сканирование сетей». Сканируем:
Видим все доступные сети. Очень полезно, кстати, посмотреть, у каких операторов в данном месте есть 3G или UMTS. Видим, что есть у Мегафон и МТС. Так и есть на самом деле. Тперь
Теперь нам нужно подключить 3g модем в Linux. Но не тут то было, в программе нет кнопки «Подключить». Пришлось идти в сетевые подключения и подключать 3G модем обычным способом.
Но не будем это считать серьёзным недостатком, возможно так было задумано. После подключения 3G модема в менеджере сети, программа окончательно оживает. Посмотрим вкладку «Трафик».
Ну что же — не плохо. Особенно радует пункт «Остаток трафика» — найти бы как его настроить. Нажимаем»Установить ограничения», ставим галочку «Использовать ограничения трафика» и выставляем значение».
Судя по следующему полю, при достижении этого значения, программа оповестит о лимите. Можно поставить поменьше, и тогда можно узнать, что скоро трафик закончиться.
Теперь перейдём на вкладку «Статус».
Самое интересное тут: «Уровень сигнала». Его необходимо знать, если вы хотите усилить сигнал 3G модема. Так же через программу можно отправить смс:
Я не стал пробовать, оно мне не надо. Но вот попробовать отправку USSD запросов, чтобы проверить тот же баланс, думаю стоит:
У меня не получилось посмотреть баланс, программа не реагировала. А потом мне пришло SMS:
И нет даже слова о балансе. Ну да ладно, может дело в операторе?
Как вы видите, подключить 3G модем в линукс с помощью этой программы нельзя, но использовать её некоторые функции, например, подсчёт трафика, будет очень полезно.
Источник
Раздача интернета с 3G модема в локальную сеть в Linux
Эта статья — продолжение статьи Беспроводная точка доступа, используя Linux. Тут я опишу, что же необходимо сделать для того, чтобы раздавать интернет с 3G-модема по уже созданной по инструкции из предыдущего топика вайфай-сети.
1) Прежде всего, научить Linux работать с модемом
2) Создать NAT для раздачи интернета
3) Запихнуть всё это дело в автозагрузку
Итак, bash, wvdial и iptables под мышку — и поехали!
Подключение USB 3G-модема
Бывает и так, что в некоторых странах есть свои провайдеры 3G-интернета, которые не предоставляют настроек для подключения, используя Linux, что, в общем-то, и понятно — ‘популярность’ как провайдера, так и Linux даёт о себе знать. Не все конфиги есть ещё на сайтах, тем более — для отдельных программ. Итак, в Латвии, где я и проживаю. есть два провайдера — LMT и Bite. Оба они предоставляют беспроводной интернет через модемы Huawei, залоченные, естественно, на них, ну да не в этом дело. Ну так вот — необходимо обеспечить интернет всюду, где есть 3G, используя модем и сервер. Что же делать?
Прежде всего, воткнуть модем в ноут. 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.
3) В условиях плохого приёма соединение часто обрубается
— Всё довольно просто. Дело в том, что у портов ЮСБ есть ограничение на отдаваемый ток, при превышении которого, насколько я помню, порт отрубается. Видимо, в условиях плохого приёма сигнала сети модем пытается повысить мощность приёмника и передатчика, и случается так, что модем начинает потреблять больший ток, чем выдерживает порт — порт отключается, модем выключается, соединение отрубается насовсем. Посоветовать могу лишь, к примеру, просто-напросто взять USB-хаб с внешним питанием ну или же купить отдельный адаптер питания для модема и впаять его в кабель.
4) Возможность смены порта, по которому нужно обращаться к устройству.
Как я уже упомянул, обычно при настройке используется одно устройство — /dev/ttyUSB0. Но, как заметил freuser, есть ситуации, когда порт меняется. К примеру:
- Использование двух модемов
- Зависание одного порта, которое выражается в том, что порт остаётся в /dev, даже если модем уже отключен.
- И тому подобные казусы, при которых внезапно назначается другой порт.
При дебаге неработающего подключения нельзя забыть про такую возможность. Если, к примеру. при запуске wvdial не стартует pppd, то это повод задуматься — а работает ли сам порт и тот ли это порт? Тогда придётся поэкспериментировать с номерами в конфиге, пока модем наконец не подключится.
После того, как интернет появился на нашем сервере, остаётся лишь настроить раздачу интернета с модема по Wi-Fi сети.
Если у компьютера есть два сетевых интерфейса, это ещё не означает, что из коробки можно спокойно раздавать интернет с одного на другой. Однако — не всё так сложно, чаще всего требуется всего пара настроек. Конечно, эти настройки сложно запомнить, не вникая в суть каждой строчки, но ведь для этого есть эта статья! Я нашёл наиболее подходящий для этой ситуации и безглючный скрипт, не могу не дать ссылку на него, поскольку найденный на нём скрипт самый короткий и ясный из тех, что я встречал — остальные умудряются растянуть пару правил iptables на несколько страниц… Прежде всего, посмотрю, что в нём надо бы изменить под мои нужды:
Найденный скрипт
Задачи:
- Принимать первый аргумент командной строки в качестве названия внешнего интерфейса, проверяя подлинность имени, используя команду ifconfig;
- Добавить сохранение выбранного интерфейса в какой-нибудь файл в /etc и сделать ключ выбора последнего интерфейса, а лучше — при отсутствии имени интерфейса как аргумента.
- Запихнуть это всё красиво в автозагрузку и в $PATH.
Что же вышло в итоге?
Комментарии писал на английском — так привычнее. Если будут просьбы — могу и перевести.
Ну и не забываем обязательную часть:Окей, скрипт у нас готов. Как можно понять, вариантов вызова четыре — firewall (используется последний интерфейс), firewall наш_интерфейс, firewall info (выводит текущий интерфейс, на котором настроен NAT) или firewall help. Осталась лишь автозагрузка и $PATH.
Для того, чтобы вызывать скрипт командой firewall, не указывая местоположение, нужно запихнуть его в одну из папок, указанных в PATH. Я предпочитаю /usr/local/bin по религиозным соображениям. Полный путь к скрипту будет /usr/local/bin/firewall, а вот вызвать из консоли его всегда можно будет просто командой firewall.
Автозагрузка
А теперь — автозагрузка, с ней посложнее. Я сразу опишу создание скрипта автозагрузки, в который можно будет запихнуть всё, что угодно. Он будет стартовать вместе с системой, нооо…
Нельзя просто так взять и создать файл автозагрузки. Есть одна проблема — Debian с какого-то времени пересмотрел свои требования к файлам автозагрузки. Файл мало просто создать, его нужно ещё по-особому отформатировать:
- Первая проблема — это LSB headers. Это заголовок файла автозагрузки. Нужен он потому, что компоненты автозагрузки должны выполняться в определённом порядке, поскольку часть из них зависят друг от друга. Предположим, у вас есть два скрипта в автозагрузке — один из них должен будет монтировать сетевую папку, а второй — делать в неё резервную копию файлов. Естественно, что сначала нужно выполнить первый, а потом — второй, поскольку второй зависит от первого. Для указания таких зависимостей и используются заголовки загрузочного файла. Впрочем, будет достаточно того заголовка, который я выложу в образце файла автозагрузки.
- Вторая проблема — любой скрипт в автозагрузке при запуске системы вызывается командой /etc/init.d/script start, а при выключении компьютера — командой /etc/init.d/script stop. Нужно добавить условия для обработки этих случаев.
Я сделал просто — взял за основу скрипт из имеющихся в /etc/init.d/ — уж они-то должны быть созданы по правилам, потом изучил этот скрипт и вырезал из него всё ненужное. Осталось два места, которые нужно изменить — место для команд, которые выполняются при запуске системы, и место для команд, которые выполняются при выключении компьютера. Впрочем, сейчас всё увидите:
Опять же, дать права на исполнение:В файле автозагрузки лучше указывать полный путь к исполняемому файлу, поскольку иначе при загрузке иногда возникают проблемы вида “firewall: command not found”.
Источник