Меню Рубрики

Zero cd 3g usb modem linux

Установка и настройка модемов 3G USB

Содержание

Общее [ править ]

Есть несколько путей:

  1. использовать штатные средства NetworkManager
  2. настраивать дозвон через wvdial , kppp или что вам нравится самостоятельно
  3. использовать программу, поставляемую Мегафоном со своими модемами. Использование этого пути позволяет избежать ненужных телодвижений для проверки баланса счета. Решение тестировалось на Simply Linux. Внимание! Установочный скрипт программы MobilePartner добавляет строку “ALL ALL=(ALL) NOPASSWD:/usr/local/MegaFon Internet/MobilePartner.sh” в /etc/sudoers и изменяет некоторые другие файлы /etc/.
  4. использовать /etc/net

В большинстве случаев ничего настраивать не надо — достаточно установить пакет usb-modeswitch и зависимые от него (например, usb-modeswitch-data ), в некоторых дистрибутивах также udev-extras .

Чаще всего и их устанавливать не надо, т.к. всё необходимое уже установлено и работает из коробки. Достаточно настроить работу модема через NetworkManager.

В данной статье описаны примеры настройки на случай, если что-то не работает — или если требуется более тонкая настройка/автоматизация при помощи etcnet .

Megafon M150-1 (он же Huawei E3276) [ править ]

Данный модем является 4g модемом со встроенной сетевой картой. Но данная сетевая карта хоть и видится в системе, но не живёт. После подключения модема в системе определяется как Bus 002 Device 006: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard

При этом появляется интерфейс wwp0s29u1u2i1

Но попытка сделать его up ни к чему не приводит – после ip link set up dev wwp0s29u1u2i1 он всё равно остаётся wwp0s29u1u2i1: mtu 1500 qdisc pfifo_fast state DOWN qlen 1000

Помогает в режиме сетевой карты внести

При необходимости можно от отключить в нём сетевую карту и включить режим обычного модема:

Вернуть всё обратно:

Huawei E1550 [ править ]

Для Пятой платформы нам потребуется установить два пакета (оба присутствуют в репозитариях Пятой платформы):

После установки пакетов в Пятой платформе смотрим файл /etc/usb_modeswitch.conf . Добавляем, если ещё нет:

Здесь DefaultVendor= 0x12d1 и DefaultProduct= 0x1446 должны соответствовать выдаваемым командой lsusb

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

Добавляем правило udev, создавая файл /etc/udev/rules.d/45-huawei-e1550.rules с таким содержимым:

После этого модем определяется lsusb как:

Для Шестой и выше платформы, ваш модем должен присутствовать в файле /lib/udev/rules.d/40-modeswitch.rules

Важно! В строке определения должно быть именно 1001 — это код собственно модема, а не виртуального CD с софтом под Win&Mac OS

Huawei E1750 [ править ]

  1. создаем файл 45-huawei-e1750.rules
  2. добавляем в него:
  3. добавляем данные в файл /etc/usb_modeswitch.conf :

ZTE MF-180 [ править ]

Применительно к модему ZTE mf-180 от Билайн: прежде всего надо отучить устройство представляться как CD-ROM — например, с помощью minicom (от имени root):

  • minicom -s
  • выбираем из списка: Настройка последовательного порта, далее жмём A и прописываем /dev/ttyUSB0 (может быть на USB1, USB2)
  • модем должен инициализироваться, затем командой at+zcdrun=8 выключаем сидиром
  • если нужно вернуть всё как было, то at+zcdrun=9 включает сидиром

Ну а после можно воспользоваться kppp для подключения собственно модема.

  • имя: beeline
  • номер: _*99#_
  • ip: динамический
  • шлюз: по умолчанию
  • DNS-серверы: автоматически
  • имя модема: zte
  • устройство модема: скорее всего будет /dev/ttyUSB2
  • управление потоком: аппаратное
  • окончание строки: CR/LF
  • команды модема: в строке инициализации 1 пишем AT+CGDCONT=1,"ip","internet.beeline.ru"

Примечание: возможно, так же будет работать ZTE mf-170.

Также для разных модемов от ZTE могут использоваться AT-команды (не проверено):

  • AT^U2DIAG=0 (девайс в режиме только модем)
  • AT^U2DIAG=1 (девайс в режиме модем + CD-ROM)
  • AT^U2DIAG=255 (девайс в режиме модем + CD-ROM + Card Reader)
  • AT^U2DIAG=256 (девайс в режиме модем + Card Reader, можно использывать как обычную флешку, отказавшись от установки драйверов модема)

ZTE MF-112 [ править ]

Это модем от МТС, возможно у других компаний тоже есть эта модель Особенности – бывают двух видов: определяющиеся как

  1. 19d2:0103
  2. 19d2:2000 (19d2:2003 – это картридер)

Первый – спокойно обрабатывается modeswitch и спокойно работает Второй – приходится отключать CD и картридер После отключения CD и кард-ридера определяется как 19d2:0016

Вот некоторые команды, первые 4 проверены на 19d2:2000. Первые 4 и 10-я команда также работают на 19d2:0016

  • ATE1 # просмотр статуса выполненных команд
  • AT+ZCDRUN=8 # отключаем автозагрузку USB CD-ROM
  • AT+ZCDRUN=9 # включит автозагрузку USB CD-ROM
  • AT+ZCDRUN=E # только модем, отключить картридер и автозагрузку USB CD-ROM
  • AT+ZCDRUN=F # модем + кардридер + USB CD-ROM
  • AT+cfun=0 # выключить модем
  • AT+cfun=1 # включить
  • AT+CSQ # уровень сигнала сети
  • AT+CGMR # версия ПО
  • AT+CGSN # IMEI
  • AT+CNUM # ваш номер сим
  • AT+zsnt? # текущий режим поиска сети
  • AT+zsnt=0,0,0 # установить режим поиска сети «автоматически, GSM+WCDMA»
  • AT+zsnt=0,0,1 # установить «автоматически, GSM+WCDMA, предпочтительно GSM»
  • AT+zsnt=0,0,2 # установить «автоматически, GSM+WCDMA, предпочтительно WCDMA»
  • AT+zsnt=1,0,0 # установить «автоматически, только GSM»
  • AT+zsnt=2,0,0 # установить «автоматически, только WCDMA»
  • AT+zsnt=0,1,0 # установить «вручную, GSM+WCDMA»
  • AT+zsnt=1,1,0 # установить «вручную. только GSM»
  • AT+zsnt=2,1,0 # установить «вручную, только WCDMA»
  • AT+COPS=? # сканируется сеть и выводит список операторов связи
  • AT+CPIN? # узнаём, требуется ли вводить пин-код для разблокировки доступа к мобильной сети.
  • AT+CPIN=0000 # пример, ввод PIN кода

Настройки для etcnet [ править ]

в каталоге /etc/net/ifaces/ppp1/ : (цифра может меняться в зависимостри от номера интерфейса):

Источник

Использование 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-модема по уже созданной по инструкции из предыдущего топика вайфай-сети.

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 на несколько страниц… Прежде всего, посмотрю, что в нём надо бы изменить под мои нужды:

Найденный скрипт
Задачи:
  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”.

Источник


Adblock
detector