Raspberry Pi. Установка и настройка комплекта MTC Коннект 4 (модем Huawei E171) на Raspbian

Соответственно одной коммерческой задаче мне придется использовать 3G-модем вместе с Raspberry Pi. В качестве 3G-дейвайса был выбран комплект МТС Коннект 4 с модемом Huawei E171 (дело было в г. Обнинск, выбирать особо не пришлось). Цель — поднять соединение с авто подключением и реконнектом при дропе.

Исходная точка:

  1. Raspberry Pi (версия не важна);
  2. Raspbian Debian Wheezy Version: January 2014 Release date: 2014-01-07 (у вас может быть версия новее);
  3. Плата питается от блока питания 5V 1A. Не следует запитывать RPi от USB в данном конкретном случае (USB отдает всего 500 мА максимум). При питании от USB Raspberry Pi может постоянно перезагружаться из-за просадки напряжения;
  4. Подключение к интернету.

ПЕРВЫМ ДЕЛОМ

Первым делом я подцепил модем к моноблоку с Windows на борту, поставил Коннект-менеджер с модема и подключился к интернету, дабы удостовериться, что модем к интернету подключается и есть пинг.

ДЕЛАЕМ МОДЕМ МОДЕМОМ

После подключения модема к Raspberry Pi он определяется как диск. Для переключения его в режим модема необходимо установить usb-modeswitch. Заодно подтянем и все необходимое, а после совершим reboot:

sudo apt-get update
sudo apt-get install usb-modeswitch minicom ppp
sudo reboot

После перезагрузки проверяем, что теперь у нас из себя представляет модем и доступны ли его порты:

$ lsusb
...
Bus 001 Device 005: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard
...
$ ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2

Можно начинать работать. под ttyUSB2 у меня клавиатура. Для начала, подключимся к модему через терминал minicom и узнаем его модель посредством AT-команды ati0. Делается это просто — набираем команду и нажимаем Enter:

$ sudo minicom -D /dev/ttyUSB0
< ati0
Manufacturer:
Model: E171
Revision: 21.157.00.01.143
IMEI: ************* [естественно, что там цифры, но свой IMEI я не покажу]
+GCAP: +CGSM, +DS, +ES

Для выхода из minicom следует нажать Ctrl + A затем Q и подтвердить выход. На данном этапе мы приблизились к первой проблеме — если мы сейчас выключим и включим Raspberry Pi, то при вводе команды lsusb мы увидим следующее:

$ sudo shutdown -h now
[передергиваем питание и ждем пока загрузится RPi]
$ lsusb
Bus 001 Device 005: ID 12d1:155b Huawei Technologies Co., Ltd.

Наш модем снова стал накопителем, сменился ID устройства (с 12d1:1506 на 12d1:155b, где 12d1 — ID вендора) и снова превратился в cdrom. И так будет всегда, если RPi будет включаться с уже вставленным модемом, т.е. до подачи питания. На данном этапе это лечится передергиванием модема (вынул-всунул), но такое поведение ОС критично в моей ситуации. Для решения данной проблемы необходимо создать файл /etc/udev/rules.d/41-usb_modeswitch.rules:

$ sudo nano /etc/udev/rules.d/41-usb_modeswitch.rules

и пишем в него следующую строчку (если у вас другой модем, не забудьте вставить туда свои ID производителя и устройства):

ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="155b", RUN+="usb_modeswitch '%b/%k'"

Важно задать правило для udev именно для ID, по которому у нас определяется модем как накопитель, а не наоборот!!! Т.е. 12d1 155b — это накопитель, 12d1 1506 — это модем. В файл rules вписываем ID накопителя 12d1 155b

Выключаем RPi:

$ sudo shutdown -h now

Для надежности и достоверности теста можно передернуть питание. Включаем RPi и сразу смотрим на вывод lsusb. Если определился как модем — то все отлично, если нет — то вам в список полезных ссылок=))

ПОДКЛЮЧЕНИЕ К 3G

Есть два пути — ручная настройка или использование сторонних разработок. Для простоты выберем второй вариант.

Создадим папку, скачаем в нее Sakis3G, разархивируем и дадим права на выполнение данной утилиты

$ mkdir ~/3g
$ cd 3g/
$ wget http://sourceforge.net/projects/vim-n4n0/files/sakis3g.tar.gz
$ tar -xzvf sakis3g.tar.gz
$ sudo chmod +x sakis3g

Далее, запустим Sakis3G в интерактивном режиме для установления соединения:

$ sudo ./sakis3g --interactive

sakis3g имеет графическое меню. В принципе, оно должно быть понятно. Для установления соединения будем выбирать следующие пункты:

Connect with 3G / USB device / Mobile Connect / Interface #0 /

В следуюющем окне под названием «Please select APN» просят выбрать из двух вариантов:

  1. (internet.mts.ru) — это настройки, я так понимаю, зашитые в модем;
  2. Custom APN…

Можно не заморачиваться и выбрать первый пункт. Параметры будут указаны автоматически.

При выборе второго пункта, придется в последующем вводить параметры APN:

  1. APN: internet.mts.ru
  2. APN_USER: mts
  3. APN_PASS: mts

и только после этого будет осуществляться попытка соединения.

Указанные мною параметры APN — для Калининградской области. Для другого региона узнайте их у своего оператора, как это и советует программа.

После подключения появится сообщение о том, что ваш модем подключен к сети. Жмем ОК и попадаем в главное меню. Можно выйти, получить информацию о соединении или отключиться от сети.

Если просмотреть все пункты в во всех меню sakis3g, то нигде нельзя будет найти опции — авто реконнект при потере соединения. К сожалению нужна еще одна утилита.

РЕКОННЕКТ ПРИ ДРОПЕ

ВАЖНО! umts_keeper уже идет вместе с sakis3g. Поэтому можно качать только umts_keeper и не делать предыдущий шаг.

Скачаем утилиту umtskeeper, разархивируем в каталог ~/3g:

$ mkdir ~/3g
$ cd ~/3g
$ wget http://zool33.uni-graz.at/petz/umtskeeper/src/umtskeeper.tar.gz
$ tar -xzvf umtskeeper.tar.gz
$ chmod +x umtskeeper

Для автоматического подключения и реконнекта при дропе необходимо запустить umtskeeper с соответствующими параметрами (в моем случае с МТС и ID модема 12d1:1506):

# ./umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1506' APN='CUSTOM_APN' CUSTOM_APN='internet.mts.ru' SIM_PIN='0000' APN_USER='mts' APN_PASS='mts'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --nat 'no'

После этого ждем, пока не загорится диод на модеме, сообщающий, что все хорошо и интернет есть. Завершить работу umtskeeper можно нажатием Ctrl+C.

Действие данной утилиты с данными параметрами происходит безмолвно, поэтому смотрим лог:

$ tail /var/log/umtskeeper.log -f

АВТОЗАГРУЗКА

Для авто подключения при запуске RPi воспользуемся одним из вариантов, а именно — редактированием /etc/rc.local:

$ sudo nano /etc/rc.local

куда внесем запуск umtskeeper (не забудьте указать путь, специфичный вашей Raspberry Pi). Не забываем в конце поставить & для запуска в фоне:

# /home/pi/3g/umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1506' APN='CUSTOM_APN' CUSTOM_APN='internet.mts.ru' SIM_PIN='0000' APN_USER='mts' APN_PASS='mts'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --nat 'no' &

Перезагружаемся и проверяем.

ПОЛЕЗНЫЕ ССЫЛКИ

Маленький британский шпион – закладка на Raspberry Pi
GPRS usb modem, Huawei E171
Huawei E1550 3G modem
Run a script on start up

Добавить комментарий