brainstate

timofey-maykov/be7000-openwrt · source

Snapshot 0 · 2026-11-04T12:47:28Z · JavaScript ·

Content fingerprint7cfba09a60b50dcc8dc1fd0a8e0a02f1a78ce20e18e7e8e68d399afc583497d0

GitHub description at capture

Native OpenWrt (Linux 6.18) for Xiaomi BE7000 / IPQ9554, no kexec. Two-slot install, rollback to stock, own package feed, fixes for Ethernet on QCA8084

README at capture

<img src="docs/img/beam-wrt-logo.svg" alt="" width="72" height="72" align="left">

# Beam WRT

Прошивка для Xiaomi BE7000 на базе OpenWrt.
<br clear="left">

[English](README.en.md) · [中文](README.zh.md) · <a href="#поддержать-проект"><img alt="Поддержать проект" src="https://img.shields.io/badge/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82-Boosty%20%C2%B7%20crypto-F15F2C?style=flat-square"></a>

Beam WRT это свежий OpenWrt из main для Xiaomi BE7000 (плата RC06, процессор IPQ9554), ядро 6.18, без kexec. До версии 1.3.1 сборка называлась просто be7000-openwrt, по имени репозитория. Система грузится прямо с флеша, сток остаётся в соседнем слоте, вернуться на него можно в любой момент.

**Что умеет прошивка, что нового в 1.4 и чем она отличается от других, собрано на странице [features.md](docs/features.md).**

С версии 1.4.0 основа это OpenWrt main (коммит d958caf, 29 сентября 2026) и порт kravasuper поверх него, серией патчей в patches/port. До 1.4.0 сборка стояла на ветке kravasuper xiaomi_be7000, коммит 790d036a. К нему добавлены исправления в драйвер Ethernet, без которых на моей плате система не доходила до сети ([patches.md](docs/patches.md)), и набор служб, которые делают жизнь в двух слотах с заводским загрузчиком предсказуемой.

Текущая версия **1.5.5**. Образы лежат в [Releases](../../releases), суммы в sha256sums.txt. Как поставить, в разделе [Установка, обновление, откат](#установка-обновление-откат).

## Содержание

- [Что проверено](#что-проверено)
- [Известные проблемы](#известные-проблемы)
- [Установка, обновление, откат](#установка-обновление-откат)
- [Что в образе](#что-в-образе)
- [Документация](#документация)
- [Тема оформления](#тема-оформления)
- [Лицензия](#лицензия)
- [Спасибо](#спасибо)
- [Поддержать проект](#поддержать-проект)

## Что проверено

Своя плата RC06, IPQ9554 rev 1.1, стоковая прошивка 1.1.38, 1 ГБ памяти.

- Система загружается за 25 секунд и доходит до LuCI и SSH.
- Гигабитный порт даёт около 940 Мбит/с в обе стороны по iperf3, ошибок CRC и потерь нет.
- Порты на 2.5 Гбит/с. У одного владельца линк 2500 Мбит/с работал, через порт прошло 72 ГБ в одну сторону и 30 в другую без ошибок. На своей плате я проверял только 100 и 1000.
- Wi-Fi 2.4 и 5 ГГц работают как Wi-Fi 6, калибровка из раздела ART подхватывается, правка TLMM6 и TLMM7 для 5 ГГц применена.
- Wi-Fi 7 (EHT80) в режиме точки доступа работает, проверено ноутбуком. macOS показывает PHY Mode 802.11be, канал 36 на 80 МГц, iperf3 945 Мбит/с. Автовыбор канала на 5 ГГц тоже работает.
- Со страной RU прошивка радиомодуля QCN9274 сама запрещает 802.11be (в `iw reg get` появляется NO-EHT), и точка работает как Wi-Fi 6. Это решение прошивки радио, а не драйвера. С 1.4.0 блок Режим 5 ГГц об этом предупреждает, а кнопка рядом ставит код US только для 5 ГГц.
- Режим MLO поднимается за несколько секунд, нижнее радио на 36 канале с шириной 160 МГц, верхнее на 149 с шириной 80 МГц. MLO проверен и работает. Ноутбук с Wi-Fi 7 подключается к такой сети одним звеном, сложение двух звеньев одним устройством не измеряли, провести такой тест нет возможности.
- PPPoE на живой линии, sysupgrade с переносом настроек и списка включённых служб, WireGuard и AmneziaWG (модуль и утилита awg собраны под это ядро).

## Известные проблемы

- **Ethernet на части плат до 1.3.0.** Порты поднимали линк, но роутер не принимал ни одного кадра. Причина оказалась в запросе ядра на регулятор l2 через RPM, в 1.3.0 это исправлено, подробности в [patches.md](docs/patches.md#приём-по-ethernet-на-части-плат). Если на вашей плате кабель всё ещё не работает, напишите в [issue #1](https://github.com/timofey-maykov/be7000-openwrt/issues/1) или в тему на 4PDA, заходить можно по Wi-Fi (сеть OpenWrt-BE7000, пароль be7000openwrt).
- В режимах двух радио и MLO каждое радио получает половину антенн, поэтому одно устройство работает медленнее, чем в режиме одного радио. Режим выбирается на странице Сеть, Беспроводная сеть или командой be7000-5g-split mode, подробности в [patches.md](docs/patches.md#два-радио-на-5-ггц).
- Места под /overlay около 20 МБ, для чего-то крупного лучше вынести его на USB командой be7000-extroot.
- Ядро использует мейнлайновый qcom-ppe, а не вендорный NSS. Аппаратная разгрузка NAT на PPE появилась в 1.4.0, проверена и работает, по умолчанию выключена. Клиентам Wi-Fi пакеты всё равно проходят через процессор один раз.
- Порт отстаёт от main OpenWrt, при обновлении базы могут понадобиться правки патчей.

## Установка, обновление, откат

Пошагово всё описано в [docs/instruction](docs/instruction), в архиве релиза лежат те же файлы.

- [установка со стока](docs/instruction/1-install.txt)
- [обновление](docs/instruction/2-update.txt), в том числе со страницы Система, Обновление сборки
- [откат на сток и если что-то пошло не так](docs/instruction/3-rollback-and-problems.txt)
- [возможности прошивки](docs/instruction/4-features.txt), пакеты, режимы 5 ГГц и MLO, перенос настроек из стока, слоты, разгрузка, накопитель на USB, Docker

Если обновляетесь на 1.4 с любой версии 1.x, сначала прочитайте первый раздел файла про обновление.

Загрузчик (0:APPSBL и 0:APPSBL_1) не трогайте ни при каких условиях, это единственное место, где плату можно убить насовсем.

## Что в образе

OpenWrt main r20260929-d958caf, ядро 6.18.52, драйверы Wi-Fi из backports 7.2, архитектура aarch64_cortex-a73, пакеты apk. Фиды зафиксированы на ту же дату (feeds-pins.txt). Точный список пакетов в файле manifest, конфиг сборки в config.buildinfo.

Из заметного в образе есть модуль qcom-ppe с ускорением PPE, firewall4 и nftables, PPPoE, dnsmasq-full, WireGuard и AmneziaWG, tc и ifb для шейпинга, драйверы ath11k (2.4 ГГц) и ath12k (5 ГГц) с прошивками, полный wpad, LuCI с https, русским и китайским языком, поддержка USB-накопителей, iperf3. Пакета kmod-ath11k-ahb в профиле порта не было, я его добавил, без него встроенный радиомодуль 2.4 ГГц остаётся без драйвера.

Службы, которых нет в обычном OpenWrt, лежат в overlay-files.

| Служба | Что делает |
|--------|-----------|
| be7000-bootconfirm | в конце загрузки подтверждает слот загрузчику и обнуляет счётчики попыток |
| bigoverlay | при первой загрузке переносит /overlay на раздел настроек стока, см. [storage.md](docs/storage.md) |
| be7000-wifi-defaults | при чистой установке включает оба радио с сетью OpenWrt-BE7000 |
| be7000-feeds | приводит путь к фиду модулей ядра к хешу ядра из ROM |
| be7000-romsync | после смены образа сбрасывает копию базы apk из overlay и переустанавливает пакеты пользователя |
| be7000-bootlog | пишет журнал загрузки во флеш (crash_syslog), см. [debugging.md](docs/debugging.md) |
| 79_be7000_stale_modules | в preinit откладывает модули ядра от прошлого образа, чтобы они не перекрывали модули из ROM |
| be7000-stock-import | при первой загрузке после установки со стока переносит оттуда Wi-Fi, интернет и адрес роутера |
| be7000-5g-split | режимы 5 ГГц: одно радио, два радио и MLO, готовит нужный режим до загрузки драйвера |
| be7000-extroot | перенос /overlay на USB-диск и его сохранение при обновлении |
| be7000-ppe | переносит выбор разгрузки моста на PPE в параметры модуля до его загрузки |
| be7000-slots | показывает содержимое слотов и переключает загрузку, страница Система, Слоты |
| be7000-docker | ставит Docker на диск и настраивает для контейнеров файрвол и DNS, команды setup, firewall, diag |
| be7000-update | проверяет и ставит новые версии, раз в сутки сообщает о выходе новой |
| be7000-leds | состояния для светодиодов, триггер Состояние (Beam WRT) на странице Индикаторы, и янтарный светодиод Wi-Fi 2,4 ГГц |

Пакеты ставятся из коробки. Официальное зеркало собирает qualcommbe под cortex-a53, а эта сборка идёт под cortex-a73, поэтому каталога aarch64_cortex-a73 на зеркале нет и все общие фиды отдают 404. В образ прописан свой фид, собранный из того же дерева и подписанный ключом, которому образ уже доверяет. После `apk update` доступно больше 600 пакетов, включая nano, htop, tcpdump, strace, tmux, rsync, jq, modemmanager с драйверами USB-модемов, ksmbd и ttyd. Модули ядра лежат в отдельном фиде, потому что на зеркале они собраны под другое ядро. Ещё один отдельный фид держит hybrid-failover, он сам пересобирается с каждым новым релизом.

## Документация

- [features.md](docs/features.md), что умеет прошивка и чем отличается от других
- [cookbook.md](docs/cookbook.md), рецепты, модем, телефон по USB, Docker, режимы 5 ГГц и MLO, перенос настроек со стока, слоты, обновление
- [benchmarks.md](docs/benchmarks.md), замеры и как их повторить
- [patches.md](docs/patches.md), что и зачем добавлено к порту, патчи в работе
- [bootloader.md](docs/bootloader.md), слоты флеша, как загрузчик выбирает слот, когда он поднимает сеть
- [storage.md](docs/storage.md), место под настройки и пакеты, общий том со стоком, перенос на USB
- [building.md](docs/building.md), как собирается прошивка в CI и как собрать самому
- [debugging.md](docs/debugging.md), как искать причину без UART, журнал загрузки во флеше
- [CHANGELOG.md](CHANGELOG.md), что менялось от версии к версии

## Тема оформления

Для LuCI сделал свою тему Nimbus. В ней меню слева, быстрый поиск по страницам, светлая и тёмная схема, и она нормально выглядит на телефоне. Исходники, скриншоты и инструкция по установке лежат в папке [luci-theme-nimbus](luci-theme-nimbus), готовый пакет есть в релизах. Тема не привязана к BE7000 и ставится на любой OpenWrt с LuCI 23.05 и новее. Интерфейс темы на русском, английском и китайском.

![Nimbus](luci-theme-nimbus/screenshots/overview-dark.png)

## Лицензия

Патчи в patches распространяются на условиях GPL-2.0-only, как ядро Linux. Скрипты и текст можно использовать как угодно. Образы собраны из исходников OpenWrt, порта kravasuper, этих патчей и пакетов из awg-feed, версии и конфиг указаны в config.buildinfo и feeds-pins.txt.

## Спасибо

Полный список с ссылками открывается в LuCI на странице Система, Благодарности, и его же видно в приветствии по SSH. Отдельно спасибо zerc00l за удалённый доступ к роутеру. Именно на этой плате нашлась причина мёртвого Ethernet, а на его новой плате с флешкой ESMT по UART нашлась ошибка, из-за которой такие роутеры иногда не загружались. И kravasuper за сам порт, на котором всё стоит. Спасибо всем, кто помогал в issues на GitHub, это BurmecianKnight, KaMaToZzz, zh8416, xiaoqi2020 и tera2null.

## Поддержать проект

Сборка делается в свободное время. Это отладка на чужих платах, десятки тестовых образов и CI. Если она вам пригодилась, можно поддержать работу. Спасибо!

<a href="https://boosty.to/itnitro"><img alt="Boosty" src="https://img.shields.io/badge/Boosty-itnitro-F15F2C?style=for-the-badge&logo=boosty&logoColor=white"></a>

| Способ | Реквизиты |
|------|-----------|
| <img alt="USDT TON" src="https://img.shields.io/badge/USDT-TON-26A17B?style=for-the-badge&logo=tether&logoColor=white"> | `UQBZhwBuZCgQOtrgRGMu4PKiiOcf9dTKxRpapZt1oDn0m3yH` |
| <img alt="USDT ETH ERC-20" src="https://img.shields.io/badge/USDT%20%2F%20ETH-ERC--20-627EEA?style=for-the-badge&logo=ethereum&logoColor=white"> | `0xeb05803030afB64C903C7BfB79d18957efD6bcCd` |
| <img alt="SOL" src="https://img.shields.io/badge/SOL-Solana-9945FF?style=for-the-badge&logo=solana&logoColor=white"> | `GcKxgUeSfKnsPL9iEaYKJArosfYKMtE4W5wVDdHrRVTu` |
| <img alt="BTC" src="https://img.shields.io/badge/BTC-Bitcoin-F7931A?style=for-the-badge&logo=bitcoin&logoColor=white"> | `bc1qcyd3kaa3y2cv2yn90rsa628y3ptz56zs05z2jq` |
| <img alt="WeChat" src="https://img.shields.io/badge/WeChat-itnitro-07C160?style=for-the-badge&logo=wechat&logoColor=white"> | `itnitro` |

<img src="docs/img/wechat-itnitro-qr.jpg" alt="WeChat itnitro" width="200">