среда, 5 сентября 2018 г.

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

  В наличие есть 3G USB модем Novatel MC935D, карточка оператора Life, персоналка с операционной системой Debian 8.xx.
  Задача: линукс сам должен поднять модем и подключиться к мобильному оператору.

Настройка 3G модема

  Далее VID:PID устройства можно посмотреть командой lsusb
  Когда 3G USB модем всовывают в компьютер он виден как CD-диск и не виден как модем. В Windows с этого диска запускается программа, которая переводит его в режим модема. В Линуксе для этого используется пакет usb-modeswitch. Эта программа должна посылать на устройство строку, которая меняет режим устройства.
  Например для нашего модема в режиме CDROMa VID:PID равен 1410:5020 Надо настроить usb-modeswitch так, чтобы он был в режиме модема и имел VID:PID 1410:6000 или 1410:7001
  Вставить модем. Он в режиме CDROMa.
  С помощью команды lsusb выяснить текущий VID:PID устройства. Для нашего модема в режиме CDROMa 1410:5020.
  Переходим в папку /etc/usb_modeswitch.d В этой папке должен лежать файл с именем 1410:5020 содержащий настройки для перевода устройства в режим модема. Иногда такой файл уже лежит там. В нашем случае это оказалось не так. Тогда в Google искать что-то типа “usb modeswitch 1410:5120”. В нашем случае содержимое файла такое:
# Novatel MC990D
DefaultVendor=0x1410
DefaultProduct=0x5020
TargetVendor=0x1410
TargetProductList="6000,7001"
StandardEject=1
  Для проверки запустить команду “/usr/sbin/usb_modeswitch -c /etc/usb_modeswitch.d/1410:5020”. После чего командой lsusb проверить, что VID:PID изменился на 1410:7001. Если не изменился, гуглим дальше.
  Теперь мы нашли как менять режим модема. Но не будем же мы при каждом включении вручную вводить эту команду. Нам поможет UDEV. Как я понял эта штука ловит в ядре определенные события и при их наступлении запускает нужные команды. Для настройки UDEV в папке /etc/udev/rules.d/ создать файл 41-usb.rules здесь число 41 как-то связано с приоритетом события, поэтому его может понадобиться изменить. Содержимое файла одна строка:
ACTION=="add",SUBSYSTEM=="usb",ATTRS{idVendor}=="1410",ATTRS{idProduct}=="5020",RUN+="/usr/sbin/usb_modeswitch -c /etc/usb_modeswitch.d/1410:5020"
  Теперь при перезагрузке системы или всовывании - высовывании модема его режим будет автоматически переключаться.

Настройка ppp соединения с провайдером интернета

Настройка wvdial

  Здесь нужен пакет wvdial. После его установки запускаем wvdialconf Это полностью автоматическая программа ищет модем и настройки для него кидает в /etc/wvdial.conf в секцию [Dialer Default]. Потом в /etc/wvdial.conf я вручную создал секцию [Dialer Life] и записал в него настройки для нашего соединения с мобильным оператором Life. Файл /etc/wvdial.conf получился таким:
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
ISDN = 0
Modem = /dev/ttyUSB0
Baud = 9600

[Dialer Life]
Init3 = AT+CGDCONT=1,"IP","internet"
Username = 1
Password = 2
Phone = *99#
  Здесь в строке Init3 слово “internet” это APN мобильного оператора, для других мобильных операторов эта строка может отличаться. Например для Vodafone  это "internet", а для абонентов до 2006г это "www.umc.ua". Киевстар имеет точку "www.kyivstar.net"
 У мобильного оператора написано, что параметры Username и Password должны быть пустыми, но wvdial отказывался работать, поэтому я взял с потолка.
  Для проверки запускаем “wvdial Life” и смотрим вывод. Должно установиться соединение.

Настройка pppd

  Для следующего шага нам понадобится пакет pppd.
  В папке /etc/ppp/peers создаем файл life с содержимым:
connect '/usr/bin/wvdial Life'
noauth
persist
usepeerdns
  Здесь параметр “/usr/bin/wvdial Life“ указывает запустить секцию "[Dialer Life]" файла wvdial.conf.
  Для проверки запустить pppd life.  После командой ifconfig смотрим появился ли у нас интерфейс ppp. Если появился, то связь с мобильным оператором работает.
  Для того, чтобы ppp соединение запускалось автоматически в файл /etc/network/interfaces добавить строки
auto ppp0
iface ppp0 inet wvdial
  provider life
  Здесь “life” это имя файла из /etc/ppp/peers. Теперь при включении - выключении системы интерфейс ppp0 будет запускаться автоматически. Вручную это делается командами “ifup ppp0” - поднять интерфейс, “ifdown ppp0” - опустить интерфейс, “/etc/init.d/networking restart” - перегрузить все сетевые интерфейсы.