Raspberry подключение usb модема
Мне всегда было интересно, а можно ли к миникомпьютеру Raspberry Pi 3 Model B подключить имеющийся у меня модем (USB модем LTE USB Modem ZTE MF823D) от Beeline который я проапгрейдил/отучил от SIM карты изначального заточенного под него поведения, а оператора TELE 2. Т.к. текущий тарифы куда выгоднее, к примеру за 400р целых 12Gb интернета. А в моих проектах это как нельзя кстати. Так вот ниже все что потребовалось, чтобы мой миникомпьютер научился ходить в интернет без привязки к проводному домашнему интернету.
Подключаю модем в любой свободный порт на Raspberry Pi 3, открываю консоль и вижу всю информацию по нему как опознала его система:
pi@raspberrypi:~ $ dmesg -T
[Sun Apr 9 14:16:29 2017] usb 1-1.2: new high-speed USB device number 4 using dwc_otg
[Sun Apr 9 14:16:29 2017] usb 1-1.2: New USB device found, idVendor=19d2, idProduct=1403
[Sun Apr 9 14:16:29 2017] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Sun Apr 9 14:16:29 2017] usb 1-1.2: Product: ZTE Technologies MSM
[Sun Apr 9 14:16:29 2017] usb 1-1.2: Manufacturer: ZTE,Incorporated
[Sun Apr 9 14:16:29 2017] usb 1-1.2: SerialNumber: MF825C0ZTED00000CP&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0
[Sun Apr 9 14:16:29 2017] usb-storage 1-1.2:1.2: USB Mass Storage device detected
[Sun Apr 9 14:16:29 2017] scsi host0: usb-storage 1-1.2:1.2
[Sun Apr 9 14:16:30 2017] scsi 0:0:0:0: CD-ROM CWID USB SCSI CD-ROM 2.31 PQ: 0 ANSI: 2
[Sun Apr 9 14:16:30 2017] sr 0:0:0:0: [sr0] scsi-1 drive
[Sun Apr 9 14:16:30 2017] cdrom: Uniform CD-ROM driver Revision: 3.20
[Sun Apr 9 14:16:30 2017] sr 0:0:0:0: Attached scsi CD-ROM sr0
[Sun Apr 9 14:16:30 2017] sr 0:0:0:0: Attached scsi generic sg0 type 5
Смотрю какое устройство сейчас в системе:
pi@raspberrypi:~ $ lsusb | grep ZTE
Bus 001 Device 004: ID 19d2:1403 ZTE WCDMA Technologies MSM
USB модем поднимает в системе устройство с присвоенным IP адрес от DHCP— сервиса (по умолчанию: 192.168.0.1) на самом модеме:
pi@raspberrypi:~ $ ifconfig usb0
usb0 Link encap:Ethernet HWaddr 36:4b:50:b7:ef:2d
inet addr:192.168.0.182 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:60 errors:0 dropped:0 overruns:0 frame:0
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:13257 (12.9 KiB) TX bytes:7378 (7.2 KiB)
Так отлично, модем видит интернет от SIM карты оператора Tele2, теперь на системе Raspbian смотрю, как настроены маршруты для выхода в интернет:
pi@raspberrypi:~ $ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default router 0.0.0.0 UG 202 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 204 0 0 usb0
192.168.0.0 * 255.255.255.0 U 204 0 0 usb0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
- сеть 192.168.0.0/24 → от DHCP-сервиса модема
- сеть 192.168.1.0/24 → от DHCP-сервиса моего Mikrotik“а
Проверяю, а есть ли интернет через интерфейс USB модема:
Да есть но вот время отклика меня как-то смущает.
Проверяю, а есть ли интернет через интерфейс eth0 самой платы:
Из данного вывода видно, что доступ в сеть интернет наиболее стабильно будет вести при использовании интернет локальной сети чем USB модема, но это и так изначально было понятно. Просто я хотел рассмотреть и альтернативную возможность, так сказать резервный интернет. Что очень хорошо, что система Raspbian самостоятельно определила USB-модем и его ни как не пришлось настраивать, за исключением что нужно настроить на максимальную безопасность фаервола (либо через ufw, либо через iptables) и сервис удаленного подключения из вне, а лучше соединение c ним вести через VPN сеть.
Итак, что я имею сейчас, интернет через USB модем от миникомпьютера возможен. Пока на этой ноте я прощаюсь, я уже задумал следующие заметки:
- Это настройка фаервола
- Это настройка VPN клиента для безопасного подключения к миникомпьютеру Raspberry Pi 3 Model B удаленно.
А пока я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.
Добрый день всем. В этой статье я хотел бы рассказать о своем опыте использования 3G-модема SIM7600X, который можно подключать к Raspberry Pi. Статья может оказаться полезной тем из вас, кому необходимо использовать Raspberry автономно, в условиях отсутствия WIFI-сети.
Параметры системы
Raspberry Pi 3B+
OS: Raspbian GNU/Linux 10 (buster)
Модем SIM7600E 4G HAT, версия прошивки LE11B08SIM7600M22
Переключение в режим модема
Многие 3G-модемы при подключении выглядят как диск для того, чтобы предварительно установить необходимые драйверы, и требуют переключения в режим модема. Модем E1550 — из их числа и изначально недоступен как терминал…
Посмотрим на описание USB-устройств:
Зато он виден как диск:
Для того чтобы переключить его в режим модема, потребуется установить дополнительную программу и перезагрузиться (другим модемам могут понадобиться другие настройки):
Посмотрим на описание USB-устройства еще раз:
Видно, что у модема изменился Device ID, и теперь нам стали доступны его порты:
Приветствие баша в PwnPi
Подключение модема к Raspberry
Модем SIM7600E 4G HAT на сегодняшний день стоит около $80. Заказать его можно здесь.
Модем имеет 40-пиновый слот, с помощью которого он подключается к Raspberry. На обратной стороне платы модема имеется слот для SIM-карты. Я использовал SIM-карту Мегафон.
Обратите внимание, что при включении питания на модеме должно загореться два LED-индикатора: PWR и NET.
В документации сказано, что АТ-команды для управления модемом следует передавать через его USB-порт. Поэтому нам понадобится отдельным проводом соединить этот порт с USB-портом Raspberry.
Теперь попробуем подключиться к модему с помощью minicom. При этом можно использовать файлы устройств /dev/ttyUSB2 или /dev/ttyS3.
Убедимся, что модем адекватно отвечает на AT-команды. Например, с помощью команды AT+CPIN? можно проверить, видит ли модем SIM-карту.
Автоматическое сохранение данных в Evernote
Укажем свои данные для входа в Evernote (необходимо сделать только один раз, если пользователь не изменяется). Создадим новую записную книжку и добавим тестовую запись:
Geeknote поддерживает автоматическую синхронизацию текстовых файлов в указанном каталоге с помощью входящей в пакет утилиты gnsync. Для синхронизации ее необходимо запустить со следующими ключами (синхронизируется каталог
/root):
▍Быстрая проверка возможности отправки SMS
Ясно, что вам надо будет, как минимум, подставить сюда свой номер телефона.
Заглянем в телефон.
SMS успешно получено
Кто следит за следящим
В современных микроконтроллерах может применяться ряд средств, повышающих надежность работы встраиваемых устройств в необслуживаемом режиме. Один из механизмов, предназначенных для этого, — аппаратный watchdog-таймер, позволяющий перезагрузить устройство в случае его зависания. Программа, работоспособность которой должна быть проконтролирована, периодически должна сбрасывать этот таймер. Если она прекратит это делать, таймер превысит пороговое значение, и на на процессор будет подан сигнал сброса. В Linux программное обеспечение поддержки watchdog состоит из двух частей: драйвера watchdog-таймера и watchdog-демонов, контролирующих работоспособность системы в целом.
Проверка
Наиболее простой способ проверить работоспособность настройки watchdog — ввести в командной строке так называемую fork bomb:
Система очень быстро перестанет откликаться и, если все настроено правильно, через несколько секунд уйдет в перезагрузку.
Шаг 1: подготовка Raspberry Pi
Я исхожу из предположения о том, что у вас уже имеется работающий одноплатный компьютер Raspberry Pi, на котором вы можете выполнять команды — либо по ssh, либо подключив к нему мышь, клавиатуру и монитор.
Нам понадобятся некоторые пакеты.
Вот команда для их установки в Apline Linux:
Вот — команда для Raspbian:
Большинство USB-модемов при подключении к компьютеру, по умолчанию, работают в режиме устройства хранения данных (storage mode), а нам нужен режим модема (modem mode). Для того чтобы понять, в каком именно режиме работает ваш модем — подключите его к настольному компьютеру. Если система монтирует его в виде USB-диска (обычно содержащего установщики разных программ и драйверов) — вам надо переключить его в режим модема.
Переключение режима устройства в различных модемах выполняется немного по-разному (тут, опять же — Google вам в помощь). В моём случае всё чудесным образом переключилось с помощью такой команды:
Команда lsusb возвращает Bus 001 Device 005: ID 12d1:1c05 HUAWEI HUAWEI Mobile . 12d1 — это код поставщика для Huawei, а строка, идущая за этим кодом (в моём случае — 1c05 ) — это ID продукта. Мы используем данные, полученные с помощью lsusb , при вызове usb_modeswitch .
Вы, чтобы изменить режим работы своего модема, можете обратиться к Arch Wiki или к Ubuntuusers Wiki. Там должно быть всё необходимое.
Если система, после подключения модема, создаст /dev/ttyUSB0 , это значит, что всё сделано правильно.
После этого аппаратная часть нашего проекта — Raspberry Pi и модем — готова к дальнейшей работе.
Вопросы и ответы
Подключение модема к Raspberry
Модем SIM7600E 4G HAT на сегодняшний день стоит около $80. Заказать его можно здесь.
Модем имеет 40-пиновый слот, с помощью которого он подключается к Raspberry. На обратной стороне платы модема имеется слот для SIM-карты. Я использовал SIM-карту Мегафон.
Обратите внимание, что при включении питания на модеме должно загореться два LED-индикатора: PWR и NET.
В документации сказано, что АТ-команды для управления модемом следует передавать через его USB-порт. Поэтому нам понадобится отдельным проводом соединить этот порт с USB-портом Raspberry.
Теперь попробуем подключиться к модему с помощью minicom. При этом можно использовать файлы устройств /dev/ttyUSB2 или /dev/ttyS3.
Убедимся, что модем адекватно отвечает на AT-команды. Например, с помощью команды AT+CPIN? можно проверить, видит ли модем SIM-карту.
Доступ к модему с помощью minicom
Для проверки работоспособности можно попробовать «достучаться» до него, как до обычного модема, с помощью minicom:
Запросим информацию о производителе модема с помощью AT-команды
▍Получение SMS с помощью API
Шаг 2: установка Gammu
Что такое Gammu? Процитирую разработчиков проекта:
Утилита командной строки Gammu — это средство, дающее доступ к широкому набору телефонных возможностей.
Для того чтобы узнать о том, видит ли утилита модем, можно выполнить команду gammu identify . Если всё нормально — в ответ вы получите примерно следующее:
Пока всё нормально. Создадим теперь конфигурационный файл со следующим содержимым и сохраним его в папке /etc/gammurc :
Если для работы с вашей SIM-картой нужен PIN-код — его можно задать в соответствующем поле раздела [smsd] .
Watchdog-драйвер
Загрузка модуля драйвера:
Добавление в список автозагружаемых модулей:
Watchdog-таймер стартует при открытии устройства. Сброс его осуществляется отправкой любого символа. Символ V отключает таймер. Убедиться в работоспособности можно так:
Теперь от перезагрузки систему отделяет только ввод строк с клавиатуры (команда cat передает набираемый текст построчно). Ввод символа V с последующим остановит обратный отсчет.
▍3G/4G USB-модем
USB-модем Huawei E303
В моём проекте используется USB-модем Huawei E303. Не все USB-модемы подойдут для подобных проектов, но практически все модемы Huawei этой серии недороги и их легко достать. Если у вас уже есть USB-модем, можно заранее поискать в интернете сведения о том, работает ли он с Raspberry Pi, чтобы не оказалось так, что он вам не подойдёт.
Управление через SMS
К сожалению, работа 3G у нас не отличается стабильностью. Так что в качестве дополнения можно реализовать передачу команд (например, перезагрузки) и уведомлений с помощью SMS с использованием пакета Gammu.
В меню установим порт /dev/ttyUSB1 (для 3G был настроен /dev/ttyUSB0). Запросим описание устройства:
Для русского языка (юникодная локаль в PwnPi по умолчанию не выставлена) можно использовать ключ -unicode.
Опции Gammu
▍Можно ли работать с MMS?
Большой темой майского номера «Хакера» стал Raspberry Pi. Мы пообщались с создателем «малинки», Эбеном Аптоном и узнали, каковы итоги первого года проекта, и что ждет маленький компьютер в следующем. Также мы описали два концепта на основе Raspberry: незаметную закладку, которая в виду размеров может незаметно собирать данные из сети (принимая команды по SMS и скидывая логи в Evernote), а также систему видеонаблюдения, интегрированную с Google Drive. Один из этих концептов мы предлагаем вашему вниманию.
Идея дропбокса проста: если миниатюрный компьютер снабдить батареей и 3G-модемом, то можно получить шпионскую коробочку, которая незаметно подключается к исследуемой сети и передает собранные данные. Этот концепт вполне реализуем на Raspberry Pi.
Забегая вперед, скажу: из-за высокого энергопотребления наш дропбокс хорошо подойдет скорее для работы в собственных сетях. Для чужих ему просто не хватит батареи, но концепт все равно выглядит заманчиво. Все это мы будем делать на базе дистрибутива PwnPi. В нем мы настроим работу с модемом, научимся принимать команды по SMS и отсылать логи в Evernote. В моем распоряжении был 3G-модем Huawei E1550 («Мегафон E1550»).
Reverse SSH
Для удаленного подключения к PwnPi через 3G настроим поднятие Reverse SSH туннеля (для этого нужен сервер с публичным IP).
Чтобы PwnPi подключался к серверу в автоматическом режиме, без ввода пароля, на PwnPi cгенерируем приватный/публичный ключи и скопируем публичный ключ на сервер:
На сервере (если это Debian) добавим публичный ключ в список авторизованных:
Попробуем подключиться к серверу с PwnPi:
Подключение должно произойти без запроса пароля. В случае если пароль все равно запрашивается и подключение с использованием ключей настраивается в первый раз, необходимо задать права доступа к этому файлу (и папке в целом):
Теперь установим туннель с перенаправлением портов. Со стороны PwnPi:
Со стороны сервера теперь порт 1221 ждет подключений, но только на интерфейсе 127.0.0.1:
Со стороны сервера проверим подключение через Reverse SSH, подключившись к локальному порту:
Если все правильно, после ввода пароля пользователя root системы PwnPi мы должны получить доступ к PwnPi. Со стороны сервера разрешим перенаправления портов для всех интерфейсов:
Теперь необходимо, чтобы sshd перечитал конфигурационный файл. Посмотрим, какой у него PID:
И пошлем ему сигнал HUP:
Теперь после установления соединения с PwnPi увидим, что процесс ожидает подключение на всех интерфейсах:
Создадим сценарий для автоматического запуска и дадим ему права на выполнение:
Добавим строку с указанием запускать каждую минуту в crontab:
▍Утилита gammu-smsd
На вопрос о том, что такое gammu-smsd , как и прежде, лучше всего способны ответить разработчики проекта:
Так как в вышеприведённом конфигурационном файле для Gammu уже содержится всё, что нужно для gammu-smsd , нам осталось лишь создать папки, где gammu будет хранить данные:
Запустим gammu-smsd в режиме демона (то есть — позволим программе выполняться в фоновом режиме) и скажем ей о том, где находится созданный нами ранее конфигурационный файл:
Заглянем в телефон.
Привет от демона получен
Для того чтобы они функционировали, нужен работающий демон gammu-smsd .
В директории, где лежат соответствующие .php-файлы ( send.php и get.php ) нужно выполнить команду php -S 0.0.0.0:8080 . Благодаря этому обратиться к ним из сети сможет любая нуждающаяся в них сущность.
Watchdog-демон
Пакет watchdog состоит из двух демонов: упрощенного — wd_keepalive и основного — watchdog, предоставляющего более широкие возможности. С его помощью можно контролировать не только загрузку системы, но и такие параметры, как объем доступной памяти, доступ к отдельным файлам, доступность узлов по команде ping и ряд других.
Для настройки в файле /etc/watchdog.conf необходимо раскомментировать несколько строк:
Запуск в ручном режиме
Автономное питание
Raspberry Pi с подключенными и активными адаптерами Wi-Fi (D-Link DWA-140 B2) и 3G (Huawei E1550) потребляет порядка 700―800 мА. Емкость доступных на сегодняшний день достаточно компактных внешних литиевых аккумуляторов достигает 20 ампер-часов, что может обеспечить срок автономной работы до суток. Если рассматривать RPi в качестве просто многофункционального устройства, это очень и очень неплохо; однако ее скрытая установка на более длительное время потребует подключения к внешнему питанию, которым может быть порт USB или электросеть.
При своей кажущейся несерьезности Raspberry Pi может стать опасным инструментом, хотя высокое энергопотребление ограничивает возможность работы в автономном режиме. Впрочем, ближайшие по функционалу аналоги на сегодняшний день, коммерческие инструменты penetration-тестирования компании PWNIE Express, находятся в совершенно другой ценовой категории.
Соответственно одной коммерческой задаче мне придется использовать 3G-модем вместе с Raspberry. В качестве 3G-дейвайса был выбран комплект МТС Коннект 4 (дело было в г.Обнинск, выбирать особо не пришлось). Цель — поднять соединение с авто подключением и реконнектом при дропе.
Исходная точка:
1. Raspberry Pi (версия не важна).
2. Raspbian Debian Wheezy Version: January 2014 Release date: 2014-01-07.
3. Плата питается от блока питания 5V 1A. Не пытайтесь запустить RPi от USB (USB отдает всего 500 мА максимум). При питании от USB RPi будет постоянно перезагружаться из-за нехватки питания.
4. Подключение к интернету.
ПЕРВЫМ ДЕЛОМ
Первым делом я подцепил модем к моноблоку с Windows на борту, поставил Коннект-менеджер с модема и подключился к интернету, дабы удостовериться, что соединение есть и все любые последующие проблемы будут только из-за того, что у меня кривые руки. Коннект есть, трафик считается, гугл открывается, можно работать уже на Raspberry.
ДЕЛАЕМ МОДЕМ МОДЕМОМ
Как ни странно, но после подключения модема к USB он определяется как диск. Для переключения его в режим модема необходимо установить usb-modeswitch. Заодно подтянем и все необходимое, а после совершим reboot:
После перезагрузки проверяем, что теперь у нас из себя представляет модем и доступны ли его порты:
Вот и отлично. Можно начинать работать. под ttyUSB2 у меня клавиатура. Для начала, подключимся к модему через терминал minicom и узнаем его модель посредством AT-команды ati0. Делается это просто — набираем команду и нажимаем Enter:
Для выхода из minicom следует нажать Ctrl + A затем Q и подтвердить выход. Теперь мы точно удостоверились в модели модема на случай, если придется прыгать с бубном.
Кстати, мы приблизились к первой проблеме — если мы сейчас выключим и включим Raspberry, то при вводе команды lsusb мы увидим следующее:
Наш модем снова стал накопителем, сменился ID устройства (с 12d1:1506 на 12d1:155b, где 12d1 — ID вендора) и снова превратился в cdrom. И так будет всегда, если RPi будет включаться с уже вставленным модемом, т.е. до подачи питания. На данном этапе это лечится передергиванием модема (вынул-всунул) и в принципе, может и не критично. Конкретно в моей ситуации, такое поведение ОС меня не устраивает, поэтому буду добиваться однозначного определения модема при включении.
и пишем в него следующую строчку (если у вас другой модем, не забудьте вставить туда свои ID производителя и устройства):
Важно задать правило для udev именно для ID, по которому у нас определяется модем как накопитель, а не наоборот. Т.е. 12d1 155b — это накопитель, 12d1 1506 — это модем. В файл rules вписываем ID накопителя
Для надежности и достоверности теста можно передернуть питание. Включаем RPi и сразу смотрим на вывод
. Если определился как модем — то все отлично, если нет — то вам в список полезных ссылок=))
ПОДКЛЮЧЕНИЕ К 3G
Есть два пути — ручная настройка или использование сторонних разработок. Для простоты выберем второй вариант.
Создадим папку, скачаем в нее Sakis3G, разархивируем и дадим права на выполнение данной утилиты
Далее, запустим Sakis3G в интерактивном режиме для установления соединения:
sakis3g имеет графическое меню. В принципе, оно должно быть понятно. Для установления соединения будем выбирать следующие пункты
Можно не заморачиваться и выбрать первый пункт. Параметры будут указаны автоматически.
Указанные мною параметры APN — для Калининградской области. Для другого региона узнайте их у своего оператора, как это и советует программа.
Если просмотреть все пункты в во всех меню sakis3g, то нигде нельзя будет найти опции — авто реконнект при потере соединения. К сожалению нужна еще одна утилита.
РЕКОННЕКТ ПРИ ДРОПЕ
Скачаем утилиту umtskeeper, разархивируем в каталог ~/3g:
ВАЖНО! umts_keeper уже идет вместе с sakis3g. Поэтому можно качать только umts_keeper и не делать предыдущий шаг.
Для автоматического подключения и реконнекта при дропе необходимо запустить umtskeeper с соответствующими параметрами (в моем случае с МТС и ID модема 12d1:1506):
После этого ждем, пока не загорится диод на модеме, сообщающий, что все хорошо и интернет есть. Завершить работу umtskeeper можно нажатием Ctrl+C.
Действие данной утилиты с данными параметрами происходит безмолвно, поэтому смотрим лог:
АВТОЗАГРУЗКА
Для авто подключения при запуске RPi воспользуемся одним из вариантов, а именно — редактированием /etc/rc.local:
куда внесем запуск umtskeeper (не забудьте указать путь, специфичный вашей Raspberry). Не забываем в конце поставить & для запуска в фоне:
Перезагружаемся и проверяем.
РЕЗЮМЕ И КРИТИКА
Критика, как всегда одна — высокоуровневые утилиты, настройка не через файлы конфигов, что понижает прозрачность и надежность. Я думаю, это тема для отдельной статьи.
Получение GPS-координат.
Модем SIM7600 оборудован GPS-приемником. Чтобы использовать его, сначала подключим внешнюю GPS-антенну в гнездышко GNSS. После этого выведем антенну в зону уверенного приема GPS-сигнала (т.е. хотя бы кинем ее за окошко, т.к. в бетонных зданиях GPS не ловится).
Для включения GPS-приемника выполним команду:
Проверим, что приемник стартовал:
Попытаемся получить GPS-координаты:
Возможно, последнюю команду придется повторить несколько раз, пока приемник не «поймает спутники»:
Компоненты
▍Отправка SMS с помощью API
▍Raspberry Pi
Одноплатные компьютеры Raspberry Pi
На самом деле — неважно, какой именно одноплатник Raspberry Pi выбрать. Можно даже использовать самый первый — тот, что появился в 2007 году.
Если говорить об операционной системе, то тут подойдёт и Raspbian, и Alpine Linux (да и, в общем-то, любая ОС, в которой, без особых сложностей, можно установить необходимые нам пакеты). Я выбрал Alpine из-за того, что она работает с RAM-диска, то есть, внезапное отключение питания не повредит данные на SD-карте. Но я тут приведу и инструкции по настройке Raspbian.
Прием SMS
Для получения SMS необходимо установить
И указать тот же порт 3G-модема в конфигурации:
Запустим как сервис и посмотрим журнал:
Перегружаем систему и проверяем работоспособность нашей конфигурации.
▍Почему тут используются PHP-скрипты собственной разработки, а не gammu-python?
Мне хотелось, чтобы код, обеспечивающий работу API, занимал бы как можно меньше места и потреблял бы как можно меньше ресурсов. Я попробовал несколько Python-реализаций подобного механизма, и ни один из них не выглядел достаточно компактным и простым. Для их использования нужно было компилировать код с множеством подпакетов. Кроме того, моему Raspberry Pi не хватало памяти на компиляцию некоторых из этих пакетов. Да и оказалось, что быстрее написать небольшой PHP-скрипт, чем заниматься оптимизацией Python-пакетов.
Подключение модема к GSM-сети и 3G-сети.
Для выхода в сеть удобно использовать не так давно вышедшую утилиту qmcli. Большое спасибо человеку с ником mkrzysztofowicz, за подробное описание этого способа. (До этого приходилось пользоваться утилитами sakis3g и umtskeeper, что было не вполне надежно и не слишком удобно.) Для начала, установим необходимые пакеты:
Радио-модуль модема SIM7600 по умолчанию выключен. Включим его:
Индикатор NET на модеме должен начать мигать. Это значит, что модем перешел в режим поиска и подключения к GSM-сети. Проверим, что сеть найдена, и уровень сигнала не слишком низкий:
Драйвер qmi-wwan, увидев подключение модема SIM7600 к Raspberry, создает сетевой интерфейс wwan0. По умолчанию, в качестве протокола на этом интерфейсе установлен 802-3, однако нужный нам протокол — это, по-видимому, raw-ip. Сделаем это изменение:
Теперь соединяемся с 3G-сетью. Параметры для APN вы можете узнать на странице вашего GSM-провайдера.
Например, в случае Мегафон:
И наконец, получим IP-адрес:
С помощью команды ifconfig можно увидеть, что теперь интерфейсу wwan0 назначен определенный IP-адрес. Если это так, то поздравляю, все получилось!
Но в большинстве вышеописанных сценариев использования SMS нельзя положиться на внешние SMS-шлюзы или API, так как система отправки уведомлений должна работать даже тогда, когда пропадает доступ в интернет. Особенно это важно для охранных систем, которые должны функционировать независимо от внешних источников питания.
Очевидное решение всех этих проблем заключается в поддержке собственного SMS-шлюза.
Как, с минимальными затратами, самостоятельно сделать такой шлюз?
Если в двух словах описать решение этой задачи, то оно заключается в использовании пакета gammu-smsd и кода API с GitHub. А подробный ответ на этот вопрос приведён ниже.
Sakis и UMTSkeeper
Доустановим поддержку PPP
Попробуем установить соединение в интерактивном режиме, указывая необходимые данные.
Выберем первую опцию, «Connect with 3G», в ответ на следующий запрос выберем «11. Custom APN. ». Укажем (данные для Мегафон-Москва):
Если соединение было установлено успешно, выйдем из меню и проверим доступ к интернету:
Следующая программа, UMTSkeeper (zool33.uni-graz.at/petz/umtskeeper), необходима для автоматического подключения при разрыве связи. Загрузим, разархивируем и разрешим выполнение:
Проверим UMTSkeeper, подставив свои значения в параметры USBMODEM (Vendor ID:Device ID, который виден при вводе команды lsusb) и CUSTOM_APN, APN_USER, APN_PASS, SIM_PIN (данные для подключения к 3G-сети):
Проконтролируем работы, открыв журнал в другом окне:
Теперь отредактируем /etc/rc.local для запуска при загрузке системы:
И проверим после перезагрузки.
Интерфейс Sakis3G
Читайте также: