[Из песочницы] Raspberry Pi и модем SIM7600E 4G HAT
Добрый день всем. В этой статье я хотел бы рассказать о своем опыте использования 3G-модема SIM7600X, который можно подключать к Raspberry Pi. Статья может оказаться полезной тем из вас, кому необходимо использовать Raspberry автономно, в условиях отсутствия WIFI-сети.
Параметры системы
Raspberry Pi 3B+
OS: Raspbian GNU/Linux 10 (buster)
Модем SIM7600E 4G HAT, версия прошивки LE11B08SIM7600M22
Подключение модема к Raspberry
Модем SIM7600E 4G HAT на сегодняшний день стоит около $80. Заказать его можно здесь.
Модем имеет 40-пиновый слот, с помощью которого он подключается к Raspberry. На обратной стороне платы модема имеется слот для SIM-карты. Я использовал SIM-карту Мегафон.
Обратите внимание, что при включении питания на модеме должно загореться два LED-индикатора: PWR и NET.
В документации сказано, что АТ-команды для управления модемом следует передавать через его USB-порт. Поэтому нам понадобится отдельным проводом соединить этот порт с USB-портом Raspberry.
Теперь попробуем подключиться к модему с помощью 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 не ловится).
Для включения 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
Вот и все! Желаю всем успехов в нашем нелегком деле.