[Из песочницы] Raspberry Pi и модем SIM7600E 4G HAT

Добрый день всем. В этой статье я хотел бы рассказать о своем опыте использования 3G-модема SIM7600X, который можно подключать к Raspberry Pi. Статья может оказаться полезной тем из вас, кому необходимо использовать Raspberry автономно, в условиях отсутствия WIFI-сети.

Параметры системы


Raspberry Pi 3B+
OS: Raspbian GNU/Linux 10 (buster)
Модем SIM7600E 4G HAT, версия прошивки LE11B08SIM7600M22

image


Подключение модема к Raspberry


Модем SIM7600E 4G HAT на сегодняшний день стоит около $80. Заказать его можно здесь.

Модем имеет 40-пиновый слот, с помощью которого он подключается к Raspberry. На обратной стороне платы модема имеется слот для SIM-карты. Я использовал SIM-карту Мегафон.

image

Обратите внимание, что при включении питания на модеме должно загореться два LED-индикатора: PWR и NET.

image

В документации сказано, что АТ-команды для управления модемом следует передавать через его USB-порт. Поэтому нам понадобится отдельным проводом соединить этот порт с USB-портом Raspberry.

image

Теперь попробуем подключиться к модему с помощью minicom. При этом можно использовать файлы устройств /dev/ttyUSB2 или /dev/ttyS3.

sudo apt-get install minicom
sudo minicom -D /dev/ttyUSB2


Убедимся, что модем адекватно отвечает на AT-команды. Например, с помощью команды AT+CPIN? можно проверить, видит ли модем SIM-карту.

AT
OK
AT+CPIN?
+CPIN: READY


Получение GPS-координат.


Модем SIM7600 оборудован GPS-приемником. Чтобы использовать его, сначала подключим внешнюю GPS-антенну в гнездышко GNSS. После этого выведем антенну в зону уверенного приема GPS-сигнала (т.е. хотя бы кинем ее за окошко, т.к. в бетонных зданиях GPS не ловится).

image

Для включения GPS-приемника выполним команду:

AT+CGPS=1
OK


Проверим, что приемник стартовал:

AT+CGPS?
+CGPS: 1,1


Попытаемся получить GPS-координаты:

AT+CGPSINFO                                                                     
+CGPSINFO: ,,,,,,,,


Возможно, последнюю команду придется повторить несколько раз, пока приемник не «поймает спутники»:

AT+CGPSINFO                                                                     
+CGPSINFO: ,,,,,,,,
AT+CGPSINFO                                                                     
+CGPSINFO: 
2232.43534,N,11404.325345,E,300618, 0855320.0,96.0,0.0,0.0


Подключение модема к GSM-сети и 3G-сети.


Для выхода в сеть удобно использовать не так давно вышедшую утилиту qmcli. Большое спасибо человеку с ником mkrzysztofowicz, за подробное описание этого способа. (До этого приходилось пользоваться утилитами sakis3g и umtskeeper, что было не вполне надежно и не слишком удобно.) Для начала, установим необходимые пакеты:

sudo apt-get update 
sudo apt-get install libqmi-utils udhcpc


Радио-модуль модема SIM7600 по умолчанию выключен. Включим его:

sudo qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode='online'


Индикатор NET на модеме должен начать мигать. Это значит, что модем перешел в режим поиска и подключения к GSM-сети. Проверим, что сеть найдена, и уровень сигнала не слишком низкий:

sudo qmicli -d /dev/cdc-wdm0 --dms-get-operating-mode
sudo qmicli -d /dev/cdc-wdm0 --nas-get-signal-strength
sudo qmicli -d /dev/cdc-wdm0 --nas-get-home-network


Драйвер qmi-wwan, увидев подключение модема SIM7600 к Raspberry, создает сетевой интерфейс wwan0. По умолчанию, в качестве протокола на этом интерфейсе установлен 802–3, однако нужный нам протокол — это, по-видимому, raw-ip. Сделаем это изменение:

sudo qmicli -d /dev/cdc-wdm0 -w	# проверим имя сетевого интерфейса, обычно это wwan0
sudo ip link set wwan0 down		
echo 'Y' | sudo tee /sys/class/net/wwan0/qmi/raw_ip 
sudo ip link set wwan0 up


Теперь соединяемся с 3G-сетью. Параметры для APN вы можете узнать на странице вашего GSM-провайдера.

sudo qmicli -p -d /dev/cdc-wdm0 --device-open-net='net-raw-ip|net-no-qos-header' --wds-start-network="apn='',username='',password='',ip-type=4" --client-no-release-cid


Например, в случае Мегафон:

apn='internet',username='gdata',password='gdata'


И наконец, получим IP-адрес:

sudo udhcpc -i wwan0


С помощью команды ifconfig можно увидеть, что теперь интерфейсу wwan0 назначен определенный IP-адрес. Если это так, то поздравляю, все получилось!

ifconfig

wwan0: flags=4305  mtu 1500
        inet 10.245.223.144 netmask 255.255.255.224  destination 10.245.223.144


Вот и все! Желаю всем успехов в нашем нелегком деле.

© Habrahabr.ru