Stupid House

Интернет подключение Raspberry Pi при помощи GSM модема


Для удаленного мониторинга устройств умного дома необходимо стабильное подключение к домашней сети. Однако, если этот дом находится в месте где нет проводного интернета, требуется альтернативный способ соединения. В данном случае был собран комплект на базе Raspberry Pi 3 B+ и перепрошитого, отвязанного от оператора 3G-модема MegaFon M21-4 (он же Huawei E3531) с использованием сим карты  сотового оператора MegaFon. Подключение к интернету реализовано через PPP (Point-to-Point Protocol) с помощью программы wvdial.

 

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

Модем должен быть прошит Stick прошивкой, когда устройство ведет себя как классический USB-модем, имеется командный AT-порт, через который можно установить соединение посредством PPP-протокола. Проверяем что модем определился в системе с помощью команды:

# lsusb

Результат будет примерно следующим:

Bus 001 Device 005: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard

Если модем работает в режиме HiLink, его необходимо  перепрошить соответствующей прошивкой.

После подключения модема определяем, на каком порту он распознался:

# dmesg | grep tty

Обычно модем определяется как /dev/ttyUSB0 или /dev/ttyUSB1.

 

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

# minicom -D /dev/ttyUSB0

AT
OK
AT+CPIN?
+CPIN: READY
AT^U2DIAG?
0
OK

0 (ноль) после команды AT^U2DIAG?, что устройство находится в режиме модема, если это не так, то здесь же меняем командой AT^U2DIAG=0.

Для выхода из minicom нажимаем Ctrl+A, затем Q.

Если minicom не установлен, то устанавливаем:

# apt update && apt install -y minicom

 

Установка и настройка wvdial

Для работы с модемом установим wvdial, который поможет автоматизировать подключение.

# apt update && apt install -y wvdial usb-modeswitch

Создадим конфигурационный файл /etc/wvdial.conf, настройки для оператора Мегафон будут следующие:

[Dialer Defaults]
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","internet"
Modem Type = Analog Modem
Modem = /dev/ttyUSB0
ISDN = 0
Phone = *99#
Password = " "
Username = " "
Stupid Mode = 1
Auto Reconnect = on

Обычно в настройках MegaFon используются логин/пароль: gdata/gdata или megafon/megafon, но у меня взлетело и с указанием пустых данных.

 

Подключение к сети интернет

Запустим подключение вручную:

# wvdial

Если соединение успешно установлено, появятся строки с IP-адресами.

CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Wed Feb 26 12:51:16 2025
--> Pid of pppd: 1684
--> Using interface ppp0
--> local  IP address 10.116.150.227
--> remote IP address 10.64.64.64
--> primary   DNS address 10.153.3.252
--> secondary DNS address 10.153.3.228

Для выхода нажимаем Ctrl-C.

Для автоматического подключения создадим сервис wvdial в systemd.

Создаем файл /etc/systemd/system/wvdial.service и добавляем в него следующее содержимое

[Unit]
Description=wvdial

[Service]
ExecStart=/usr/bin/wvdial
Restart=on-failure
RestartSec=5

В конец файла /etc/udev/rules.d/99-com.rules добавляем строку:

SUBSYSTEM=="tty", KERNEL=="ttyUSB0", TAG+="systemd", ENV{SYSTEMD_WANTS}="wvdial.service"

Эта строка запускает wvdial.service при загрузке USB-модема.

 

Проверка подключения

После запуска wvdial можно проверить соединение командой:

# ifconfig ppp0

Если интерфейс ppp0 активен, значит, интернет подключен.

 

Конфигурация wvdial для T2 (Tele2)

[Dialer Defaults]
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","internet.tele2.ru"
Modem Type = Analog Modem
;Baud = 460800
Modem = /dev/ttyUSB0
ISDN = 0
Phone = *99#
Password = " "
Username = " "
Stupid Mode = 1
Auto Reconnect = on

 

Tags:
Автор: muxa, 24.02.2025
Войдите или зарегистрируйтесь, чтобы иметь возможность оставлять комментарии