Настройка точки доступа 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
Описание/Введение
Данное руководство описывает процесс подключения и настройки LTE-модема Air780E (на чипе BYD EigenComm) к Raspberry Pi Zero W через интерфейс pogo-pin с последующим созданием Wi-Fi точки доступа для раздачи мобильного интернета. Модем подключается через USB-порт OTG и работает в режиме хоста по умолчанию. Инструкция основана на практическом опыте и включает только проверенные команды. Для автозапуска используется rc.local — самый надежный способ, избегающий сложностей с systemd.
Рекомендации
Перед началом настройки убедитесь, что используете блок питания мощностью не менее 2.5A, так как LTE-модем и Raspberry Pi Zero вместе потребляют значительный ток. SIM-карта должна быть активна, иметь положительный баланс и отключенный запрос PIN-кода. Все команды выполняются от пользователя с правами sudo.
Аппаратное подключение
Raspberry Pi Zero имеет два Micro-USB порта: порт PWR IN предназначен только для питания, порт USB (OTG) по умолчанию работает в режиме хоста и используется для подключения модема. Вставьте SIM-карту в слот модема чипом вверх (ориентация может отличаться в зависимости от конкретной платы), подключите модем через pogo-pin к порту USB, при наличии подключите внешнюю антенну и подайте питание на Raspberry Pi.
Проверка обнаружения модема
После загрузки системы выполните команду для просмотра USB-устройств:
1
lsusb
В выводе должна появиться строка с идентификатором 19d1:0001 BYD EigenComm Compo. Затем проверьте созданные последовательные порты:
1
ls -la /dev/ttyA*
Модем должен создать порты /dev/ttyACM0 (основной AT-порт) и /dev/ttyACM2 (дополнительный).
Фиксация имени интерфейса модема (важно для стабильности)
При подключении нескольких сетевых устройств (например, внешней 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.


