Пост

Настройка точки доступа Wi-Fi - Hotspot, на Raspberry Pi Zero W с выходом в интернет через LTE-модем Air780E

Данное руководство описывает процесс подключения и настройки LTE-модема Air780E (на чипе BYD EigenComm) к Raspberry Pi Zero W через интерфейс pogo-pin с последующим созданием Wi-Fi точки доступа для раздачи мобильного интернета. Модем подключается через USB-порт OTG и работает в режиме хоста по умолчанию. Инструкция включает идентификацию устройства, работу с AT-командами, настройку APN для различных операторов, автоматизацию подключения и создание точки доступа через hostapd и dnsmasq.

Настройка точки доступа Wi-Fi - Hotspot, на Raspberry Pi Zero W с выходом в интернет через LTE-модем Air780E

Настройка точки доступа Wi-Fi (Hotspot) на Raspberry Pi Zero W с выходом в интернет через LTE-модем Air780E

Описание/Введение

Данное руководство описывает процесс подключения и настройки LTE-модема Air780E (на чипе BYD EigenComm) к Raspberry Pi Zero W через интерфейс pogo-pin с последующим созданием Wi-Fi точки доступа для раздачи мобильного интернета. Модем подключается через USB-порт OTG и работает в режиме хоста по умолчанию. Инструкция основана на практическом опыте и включает только проверенные команды. Для автозапуска используется rc.local — самый надежный способ, избегающий сложностей с systemd.

spotpear Расширительная плата для Raspberry Pi Zero LTE

Рекомендации

Перед началом настройки убедитесь, что используете блок питания мощностью не менее 2.5A, так как LTE-модем и Raspberry Pi Zero вместе потребляют значительный ток. SIM-карта должна быть активна, иметь положительный баланс и отключенный запрос PIN-кода. Все команды выполняются от пользователя с правами sudo.

Аппаратное подключение

Raspberry Pi Zero имеет два Micro-USB порта: порт PWR IN предназначен только для питания, порт USB (OTG) по умолчанию работает в режиме хоста и используется для подключения модема. Вставьте SIM-карту в слот модема чипом вверх (ориентация может отличаться в зависимости от конкретной платы), подключите модем через pogo-pin к порту USB, при наличии подключите внешнюю антенну и подайте питание на Raspberry Pi.

spotpear Расширительная плата для Raspberry Pi Zero LTE

Проверка обнаружения модема

После загрузки системы выполните команду для просмотра USB-устройств:

1
lsusb

В выводе должна появиться строка с идентификатором 19d1:0001 BYD EigenComm Compo. Затем проверьте созданные последовательные порты:

1
ls -la /dev/ttyA*

Модем должен создать порты /dev/ttyACM0 (основной AT-порт) и /dev/ttyACM2 (дополнительный).

spotpear Расширительная плата для Raspberry Pi Zero LTE

Фиксация имени интерфейса модема (важно для стабильности)

При подключении нескольких сетевых устройств (например, внешней USB-сетевой карты) имена eth0 и eth1 могут меняться при каждой перезагрузке. Чтобы модем всегда имел одно и то же имя интерфейса, создадим правило udev, которое присвоит ему имя lte0 на основе idVendor и idProduct.

Идентификаторы для модема Air780E — 19d1:0001. Создайте правило:

1
2
3
sudo tee /etc/udev/rules.d/99-lte-modem.rules <<'EOF'
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="19d1", ATTRS{idProduct}=="0001", NAME="lte0"
EOF

Перезагрузите правила udev и примените их:

1
2
sudo udevadm control --reload-rules
sudo udevadm trigger

После этого перезагрузите Raspberry Pi:

1
sudo reboot

После перезагрузки интерфейс модема будет всегда доступен как lte0:

1
ip a show lte0

Установка необходимых пакетов

1
2
sudo apt update
sudo apt install hostapd dnsmasq nftables screen -y

Настройка APN для различных операторов

Для каждого оператора используется свой APN. В данной инструкции используется Tele2, но вы можете заменить APN в скриптах:

Оператор APN
Tele2 internet.tele2.ru
МТС internet.mts.ru
Билайн internet.beeline.ru
МегаФон internet
Yota internet.yota

Ручная проверка работы модема (диагностика)

Перед автоматизацией убедитесь, что модем работает. Подключитесь к AT-порту:

1
sudo screen /dev/ttyACM0 115200

Проблема: Вводимые команды не отображаются на экране. Решение: Нажмите Ctrl+A, затем E для включения локального эха. Для выхода из screen нажмите Ctrl+A, затем K, затем y.

Выполните команды:

1
2
3
4
5
6
7
AT
AT+CPIN?
AT+CSQ
AT+CREG?
AT+CGDCONT=1,"IP","internet.tele2.ru"
AT+CIICR
AT+CGPADDR=1

Если AT+CGPADDR=1 вернул IP-адрес (например, 10.150.4.137), модем работает. Выйдите из screen.

Настройка точки доступа Wi-Fi

Остановка и отключение стандартных сервисов

1
2
sudo systemctl stop hostapd dnsmasq
sudo systemctl disable hostapd dnsmasq

Отключение конфликтующих сервисов

Для стабильной работы точки доступа необходимо отключить сервисы, которые могут конфликтовать с hostapd:

1
2
3
sudo systemctl stop wpa_supplicant
sudo systemctl disable wpa_supplicant
sudo systemctl mask wpa_supplicant

Также рекомендуется добавить опции драйвера для стабильной работы Wi-Fi в режиме точки доступа:

1
2
3
sudo tee /etc/modprobe.d/brcmfmac.conf <<'EOF'
options brcmfmac roamoff=1 feature_disable=0x82000
EOF

Настройка hostapd (конфигурация точки доступа)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo tee /etc/hostapd/hostapd.conf <<'EOF'
interface=wlan0
driver=nl80211
ssid=pi-cookbook
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=pi-cookbook
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
EOF

echo 'DAEMON_CONF="/etc/hostapd/hostapd.conf"' | sudo tee /etc/default/hostapd

Настройка dnsmasq (DHCP сервер)

1
2
3
4
5
6
7
8
9
sudo tee /etc/dnsmasq.conf <<'EOF'
interface=wlan0
bind-interfaces
listen-address=192.168.50.1
dhcp-range=192.168.50.10,192.168.50.100,255.255.255.0,24h
dhcp-option=3,192.168.50.1
dhcp-option=6,8.8.8.8
log-dhcp
EOF

Создание скрипта для подключения LTE-модема

Важно: В этом скрипте используется фиксированное имя интерфейса lte0.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
sudo tee /usr/local/bin/lte-auto.sh <<'EOF'
#!/bin/bash
PORT="/dev/ttyACM0"
APN="internet.tele2.ru"
INTERFACE="lte0"

# Отправка AT-команд для активации сети
{
    sleep 2
    echo "AT+CGATT=1"
    sleep 2
    echo "AT+CGDCONT=1,\"IP\",\"$APN\""
    sleep 2
    echo "AT+CIICR"
    sleep 8
} > $PORT

# Получение IP через DHCP
sleep 3
dhclient $INTERFACE

# Включение IP-форвардинга
sysctl -w net.ipv4.ip_forward=1

# Сохранение форвардинга после перезагрузки
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-ipforward.conf

# Настройка NAT через nftables
nft add table ip nat 2>/dev/null
nft 'add chain ip nat postrouting { type nat hook postrouting priority 100; }' 2>/dev/null
nft add rule ip nat postrouting oifname "$INTERFACE" masquerade 2>/dev/null
nft list ruleset | tee /etc/nftables.conf > /dev/null

echo "LTE подключен"
EOF

sudo chmod +x /usr/local/bin/lte-auto.sh

Настройка автозапуска через rc.local

Создайте файл rc.local, который будет выполняться при загрузке. Важно: Команда назначения IP-адреса использует подавление ошибок (2>/dev/null || true), чтобы избежать появления сообщения Address already assigned в логах, которое возникает при повторном назначении уже существующего адреса, но не влияет на работу.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
sudo tee /etc/rc.local <<'EOF'
#!/bin/sh -e
sleep 10

# Запуск LTE-модема
/usr/local/bin/lte-auto.sh &

# Разблокировка Wi-Fi
rfkill unblock wifi

# Настройка интерфейса wlan0
ip link set wlan0 down
ip addr flush dev wlan0 2>/dev/null
ip link set wlan0 up

# Назначаем IP (подавление ошибки Address already assigned)
ip addr add 192.168.50.1/24 dev wlan0 2>/dev/null || true

# Запуск сервисов точки доступа
systemctl unmask hostapd 2>/dev/null
systemctl start hostapd
systemctl start dnsmasq

exit 0
EOF

sudo chmod +x /etc/rc.local

Включение rc.local (если отключен)

1
2
sudo systemctl enable rc-local
sudo systemctl start rc-local

Ручной запуск (для первой настройки)

Если вы не хотите перезагружаться, выполните команды вручную:

1
2
3
4
5
6
7
8
9
10
# Запуск LTE
sudo /usr/local/bin/lte-auto.sh

# Настройка точки доступа
sudo rfkill unblock wifi
sudo ip link set wlan0 up
sudo ip addr add 192.168.50.1/24 dev wlan0
sudo systemctl unmask hostapd
sudo systemctl start hostapd
sudo systemctl start dnsmasq

Проверка работоспособности

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Проверка LTE (интерфейс lte0)
ip addr show lte0

# Проверка IP на точке доступа
ip addr show wlan0 | grep 192.168.50.1

# Проверка точки доступа
iw dev wlan0 info

# Проверка сервисов
sudo systemctl status hostapd dnsmasq

# Просмотр выданных DHCP-адресов
sudo journalctl -u dnsmasq | grep DHCPACK

На планшете или телефоне должна появиться Wi-Fi сеть pi-cookbook. Подключитесь к ней с паролем pi-cookbook и откройте любой сайт.

Типичные проблемы и решения

Проблема Решение
После перезагрузки точка доступа не появляется Проверьте, что rc.local выполнился: sudo journalctl -u rc-local | tail -20. Убедитесь, что скрипт имеет права на выполнение: sudo chmod +x /etc/rc.local
Ошибка hostapd.service is masked Выполните sudo systemctl unmask hostapd и добавьте эту команду в rc.local перед запуском hostapd
Wi-Fi заблокирован (RF-kill) Выполните sudo rfkill unblock wifi и добавьте эту команду в rc.local
Модем не получает IP Проверьте, что SIM-карта активна и на ней положительный баланс. Выполните диагностику через screen: sudo screen /dev/ttyACM0 115200 и проверьте AT+CPIN?, AT+CSQ, AT+CREG?
Планшет подключается к Wi-Fi, но интернета нет Проверьте, что IP-форвардинг включен: sysctl net.ipv4.ip_forward должно быть 1. Проверьте NAT: sudo nft list ruleset. Проверьте, что LTE подключен: ip addr show lte0 должен показывать IP
Wi-Fi периодически отключается и сеть пропадает 1. Отключите wpa_supplicant: sudo systemctl mask wpa_supplicant. 2. Добавьте опции драйвера в /etc/modprobe.d/brcmfmac.conf. 3. Проверьте питание (нужно не менее 2.5A)
Ошибка Error: ipv4: Address already assigned в логах Эта ошибка не влияет на работу. Для подавления используйте 2>/dev/null || true после команды ip addr add, как показано в скрипте rc.local
Имена eth0/eth1 меняются после подключения внешней сетевой карты Используйте фиксированное имя lte0 через udev (см. раздел «Фиксация имени интерфейса модема»)

Заключение

После выполнения всех шагов ваш Raspberry Pi Zero W превратится в полноценный портативный Wi-Fi роутер с выходом в интернет через 4G. Использование rc.local для автозапуска — самый надежный способ, так как он обходит сложности с systemd, зависимостями и порядком запуска сервисов.

Фиксация имени интерфейса модема через udev гарантирует стабильную работу даже при подключении дополнительных сетевых устройств. Отключение конфликтующих сервисов (wpa_supplicant) и настройка опций драйвера обеспечивают стабильную работу Wi-Fi точки доступа без периодических отключений.

Все команды в этой инструкции проверены на практике и гарантированно работают на Raspberry Pi OS Bookworm с модемом Air780E и SIM-картой Tele2. Для других операторов достаточно заменить APN в скрипте /usr/local/bin/lte-auto.sh.

Авторский пост защищен лицензией CC BY 4.0 .

© evdokimoff. Некоторые права защищены.

Использует тему Chirpy для Jekyll