Pristavkin/xiaomi-gateway-openwrt
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
This branch is not ahead of the upstream openlumi:master.
No new commits yet. Enjoy your day!
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Установка альтернативной прошивки OpenWrt на шлюзы DGNWG05LM и ZHWG11LM
Инструкция относится только к европейской версии шлюза от xiaomi mieu01, с европейской вилкой, а также к версии шлюза от Aqara ZHWG11LM с китайской или европейской вилкой. Для версии xiaomi gateway2 с китайской вилкой DGNWG02LM она не подойдёт, в нём установлены другие аппаратные комплектующие.
Данная инструкция подразумевает, что у вас уже есть доступ ssh к шлюзу. Если вы это не сделали, воспользуйтесь инструкцией
Сделайте резервную копию. Если вы решите вернуться на оригинальную прошивку, для восстановления вам потребуется tar.gz с архивом корневой файловой системы.
После того, как бэкап сделается, скачайте его на локальный компьютер
или с помощью программы WinScp в режиме scp (dropbear на шлюзе не поддерживает режим sftp)
Если у вас уже есть образ rootfs сделанный через dd, всё равно сделайте архив. На этапе загрузки образа dd обычно возникают ошибки nand flash или ubifs. Вариант с tar.gz лишён этих недостатков, потому что форматирует флеш перед загрузкой.
Прошивка по воздуху
Это наиболее простой метод, который можно использовать даже через ssh. Он не требует дополнительной пайки но работает только на оригинальной операционной системе.
Убедитесь, что у вас нет лишних архивов во временной папке /tmp, потребуется место для скачивания архивов. Также, шлюз должен быть подключён к интернету.
Данная команда завершит все процессы на шлюзе (если у вас оборвётся) сеанс ssh, это ожидаемое поведение. Прошивка занимает несколько минут. По окончанию прошивки, шлюз поднимет открытую сеть OpenWrt. Если это произошло, можно сразу переходить к разделу «Использование OpenWrt»
Если по каким-то причинам, у вас не сработал метод прошивки по воздуху, вы почти всегда можете вернуть к жизни шлюз припаяв usb и uart и прошить через mfgtools
Припаяйте usb + uart
Чтобы провести модификацию прошивки вам потребуется произвести аппаратные модификации, припаять 7 проводов к самому шлюзу
- 3 провода на usb2uart переходник (вы это делали на этапе получения рута)
- 4 провода на usb разъём или провод с usb штекером на конце. Достаточно припаять 4 провода, +5v, d+, d- и gnd. ID провод не задействуется Проверьте, что d+ и d- не перепутаны местами, иначе устройство не определится
Мы подготовили архив с программой mfgtools для загрузки прощивки на шлюз, а также саму прошивку. В архив включена программа для windows и консольное приложение под linux
Подключите шлюз к компьютеру
Нужно подключить шлюз двумя кабелями к компьютеру. UART и USB. USB на данном этапе не будет определяться в компьютере. Чтобы подключиться к консоли шлюза, для windows используйте программу PuTTY и используйте COM-порт, который появился для usb2uart. Для linux используйте любую терминальную программу, например picocom /dev/ttyUSB0 -b 115200
Перевод в режим загрузки через USB
Для того чтобы перевести в режим прошивки, нужно при старте шлюза в консоли на последовательном порту прервать загрузку uboot нажатием любой кнопки. У вас будет 1 секунда на это. Появится приглашение для команд
Далее в командной строке uboot вам надо ввести
И нажать enter. После этого шлюз перейдёт в режим загрузки по usb и mfgtools сможет обновить разделы в памяти шлюза.
В случае если у вас Windows, вам может потребоваться установить драйвера, из папки Drivers.
В случае windows, у вас откроется окно. Если всё припаяно правильно и драйвера установлены верно, то в строке в программе будет написано HID-compliant device
Нужно нажать кнопку Start для начала прошивки.
После окончания прошивки, когда полоска прогресса дойдёт до конца и станет зелёной, нужно нажать Stop. Если этого не сделать, спустя несколько минут программа начнёт прошивку повторно, и это приведёт к ошибке. Если такое случилось, перезагрузите шлюз и повторите процедуру, начиная перевода шлюза в bmode usb .
Перейдите в папку с прошивкой. Запустите консольную утилиту от суперпользователя
В псевдографическом интерфейсе будут отображаться этапы прошивки
При подключении шлюза и обнаружении hid устройства, программа сразу начнёт процесс прошивки. Если процесс не пошёл, проверьте, что устройство подключено и определилось в выводе команды dmesg
Следить за этапами прошивки можно также и в консоли вывода самого шлюза. По окончанию прошивки в консоли будет выведено
После этого можно перезагружать шлюз. Вытащите его из розетки и воткните обратно. Иногда, шлюз виснет на финальном этапе. Если в течение 5 минут ничего не происходит, то скорее всего прошивка прошла удачно и можно перезагрузить шлюз.
Не забудьте подключить антенны!
Иначе проблемы с подключением к сети обеспечены
После прошивки шлюз поднимает открытую wifi сеть с именем OpenWrt. Чтобы подключить его уже к своему роутеру, вам нужно подключиться к этой сети и зайти на адрес http://192.168.1.1/
По умолчанию вход на шлюз: логин root без пароля.
Перейдите в раздел Network -> Wireless
Нажмите кнопку Scan напротив первого интерфейса radio0 Через несколько секунд вы сможете увидеть список сетей. Найдите вашу сеть и нажмите Join Network
В появившемся окне отметьте галочку «Replace wireless configuration». Ниже укажите пароль от вашей сети
На следующем экране подтвердите параметры, нажмите кнопку Save.
Чтобы правильно применить изменения, нужно отключить точку доступа нажав кнопку «Disable» напротив подключения для второго интерфейса.
Шлюз отключит вас от точки доступа и применит изменения сети. После прошивки меняется mac адрес шлюза, потому ip адрес тоже скорее всего поменяется. Проверьте его в роутере или в самом шлюзе.
На шлюзе предустановлены:
- Графический интерфейс OpenWrt LuCi на 80 порту http
- командная утилита для прошивки zigbee модуля jn5169
Не включайте на шлюзе одновременно режимы WiFi AP + Station. Драйвер, который используется в системе не может работать в двух режимах одновременно. Если вы поменяли настройки LuCi и после этого шлюз перестал подключаться к сети, зажмите кнопку на шлюзе на 10 секунд. Он промигает жёлтым цветом 3 раза и перейдёт в режим начальной настройки сети, подняв точку доступа AP
Работа с Zigbee
Модуль Zigbee может работать только с одной из систем, потому вам нужно выбрать, какую из программ вы будете использовать. В то же время, можно использовать, например zigbee2mqtt для работы с zigbee и domoticz для других автоматизаций.
Сброс на заводские настройки
Чтобы сбросить все данные на прошивке OpenWrt и вернуться на этап начальной установки (как будто вы только что прошили шлюз), нужно зажать кнопку на 20 секунд. Шлюз промигает красным 3 раза и вернётся к начальной настройке с поднятием точки доступа. Будьте аккуратны со сбросом настроек, все программы и настройки будут стёрты. Используйте его в крайнем случае, когда сброс сети и дальнейшая настройка не помогает.
Возврат на стоковую прошивку
Для возврата на родную прошивку нужно прошить оригинальные ядро, dtb и файловую систему из резервной копии. Ядро и dtb одинаковые на все прошивки, а для работы оригинального приложения xiaomi вам потребуется бекап.
Положите свой бекап с именем lumi_stock.tar.gz в папку Profiles/Linux/OS Firmware/files поверх пустого файла lumi_stock.tar.gz
Дальше переведите шлюз в режим загрузки по usb и через mfgtools прошейте оригинальную прошивку.
благодаря @Clear_Highway и @lmahmutov
Номера GPIO в системе. номера контактов начинаются с нижнего на фото и продолжаются вверх. DOWN и UP значит куда подтяжка. Down к GND, UP — 3.3v
№ п/п | PULL | GPIO |
---|---|---|
2 | DOWN | 69 |
1 | DOWN | 70 |
14 | DOWN | 71 |
15 | DOWN | 72 |
16 | UP | 73 |
4 | DOWN | 74 |
3 | DOWN | 75 |
17 | UP | 76 |
6 | DOWN | 77 |
5 | DOWN | 78 |
18 | DOWN | 79 |
20 | UP | 80 |
19 | DOWN | 81 |
8 | DOWN | 82 |
7 | DOWN | 83 |
22 | DOWN | 84 |
21 | DOWN | 85 |
10 | DOWN | 86 |
9 | DOWN | 87 |
24 | DOWN | 88 |
23 | DOWN | 89 |
12 | DOWN | 90 |
11 | DOWN | 91 |
13 | DOWN | 92 |
- Статья, которая подробно описывает изменения технические модификации: Xiaomi Gateway (eu version — Lumi.gateway.mieu01 ) Hacked
- Сборник информации по аппаратному и програмному модингу Xiaomi Gateway https://github.com/T-REX-XP/XiaomiGatewayHack
- Телеграм канал с обсуждением модификаций https://t.me/xiaomi_gw_hack
About
OpenWrt for Xiaomi Zigbee gateway with imx6 SoC DGNWG05LM, ZHWG11LM
Xiaomi Gateway 3: Перепрошивка и добавление в HA
2 февраля, 2021 Изменена: 21 февраля, 2022 в 13:05
Не смотря на то, что практически все моменты касающиеся добавления этого шлюза в HA описаны на wiki компонента, в профильных телеграм-каналах регулярно возникают вопросы связанные с перепрошивкой и добавлением шлюза в HA.
Здесь я попробую собрать в кучку основную информацию по этому процессу.
Быстрый переход
Начать стоит с того, что здесь изложено исключительно мое видение вопроса и мой личный опыт, он может не совпадать с вашим мнением и вашими желаниями.
И помните, что ничего из изложенного ниже, было бы невозможно без энтузиастов — нашедших способ включения телнета на шлюзе, разработавших компонент для HA, собравших кастомные прошивки и написавших скрипты для их установки.
На все это нужно время и силы, если вы готовы их поддержать материально — сделайте это, всем будет приятно =)
Известные мне ссылки:
AlexxIT (автор компонента ХА): Coffee, YooMoney
Serrj_sv (обнаружил способ включения телнета и прочие очень полезные вещи): Coffee
icoderus (автор скрипта для прошивки шлюза под линукс и множества других вещей): Tinkoff
Так же огромная благодарность всем участникам канала @xiaomi_gw_v3_hack!
Внимание!
На текущий момент существует возможность включить telnet (и, соответственно, добавить шлюз в HA) на любой версии прошивки, полностью программно, без вскрытия шлюза.
О том как это сделать можно почитать здесь.
Общая информация
Шлюз Xiaomi Gateway 3 (lumi.gateway.mgl03), имеет на борту поддержку ZigBee 3, BLE, BT Mesh, WiFi, а так же HomeKit.
Основное «железо» шлюза представлено следующими чипами:
Имеет 2 антенны-липучки для WiFi и разведенные на платах антенны для Bluetooth и ZigBee.
Существует возможность припаять внешние антенны для ZigBee и WiFi, а так же Ethernet разъем.
Бывает 2х версий — ZNDMWG0 3 LM (для Китайского рынка) и ZNDMWG0 2 LM (для Европейского).
Единственное отличие между ними в наличии у Китайца блока питания с китайской вилкой, у Европейца в комплекте блока питания нет.
С т.з. регионов Mi Home, дочерних ZigBee или BT устройств, а так же возможности установки прошивок — разницы нет.
Поддержка со стороны Home Assistant’а обеспечивается кастомным компонентом XiaomiGateway3 и зависит от версии прошивки устройства.
Прошивки
Список известных на текущий момент (версию можно узнать после добавления шлюза в Mi Home):
Можно добавить в HA не вскрывая шлюз
1.4.4_0003
1.4.5_0012
1.4.5_0016
1.4.6_0012
1.4.6_0030
1.4.6_0043
1.4.7_0040
1.4.7_0063
1.4.7_0065
1.4.7_0115
1.4.7_0160
1.5.0_0026
1.5.0_0027 — использовать не рекомендуется!
1.5.0_0102 — рекомендована AlexxIT
1.5.1_0032 — не тестировалась.
1.5.4_0036 — использовать не рекомендуется!
1.5.4_0052 — использовать не рекомендуется!
Помимо официальных прошивок, устанавливаемых «с завода» и через Mi Home, есть и ряд модифицированных (кастомных) сборок созданных @Vtel.
В них присутствуют такие изменения, как включенный по умолчанию telnet, патч для BT позволяющий работать без интернета, патч для HomeKit’а позволяющий понижать версию прошивки и т.д.
Полный список изменений можно посмотреть на GitHub — для mgl03_1.5.0_0102_mod20210816.
Самый простой способ установить модифицированную прошивку описан здесь.
Важно!
На текущий момент для использования стоит рассматривать версию 1.5.0_0102 (официальная или кастом), поддержка прошивок старше 1.4.7_* прекращена начиная с версии компонента 1.6.
Добавление в HA
Благодаря автору интеграции, добавление шлюза максимально простой процесс. Все сводится к установке компонента (руками в папку custom_components или через HACS) и перезагрузке HA.
После этого в веб-интерфесе нужно добавить последовательно две интеграции «Xiaomi Gateway 3»:
Первая — для аккаунта Mi Cloud («Add Mi Cloud Account»).
Это нужно для того, что бы компонент мог сам получить miio-токен для шлюза и с его помощью включить на нем telnet.
Вторая — непосредственно для шлюза (выбрать нужный из выпадающего списка).
При добавлении второй интеграции (шлюза) важно правильно указать команду, которая откроет на нем telnet (строка «Команда для открытия Telnet»), без этого шлюз в HA работать не будет.
Если на шлюзе прошивка до 1.4.6_0030 включительно, можно ничего не менять и оставить значение по умолчанию.
Во всех остальных случаях необходимо заменить команду на следующую:
До 1.4.6_0030 (включительно):
После 1.4.6_0030:
После успешного добавления шлюза, не забудьте заблокировать обновление прошивки через Mi Home.
Без этого всегда есть шанс того, что шлюз обновит прошивку на новую, неподдерживаемую версию (автоматически или вы случайно согласитесь на обновление в приложении), в результате вы потеряете к нему доступ и потребуется вскрытие.
Прошивка через UART
Основная и самая подробная инструкция находится здесь (на английском языке).
У меня нет цели ее заменить, первоисточник всегда лучше =) я лишь хочу осветить основные моменты на великом и могучем, возможно это кому-то упростит жизнь.
Для начала шлюз необходимо открыть. На эту тему много инструкций, видео и фото, в т.ч. на wiki компонента.
Свой опыт я описал здесь.
После этого нужно подключить провода к диагностическим площадкам на плате шлюза.
Здесь есть разные варианты, как с пайкой, так и без.
Расположение и назначение контактов на плате (как основных, так и резервных) есть в оригинальной инструкции.
Для прошивки нужно использовать 3 контакта: Rx (прием), Tx (передача), Gnd (земля).
! Внимание!
Крайне осторожно отнеситесь к выбору USB-TTL (UART) адаптера, он должен работать в режиме 3.3V , т.е. напряжение между контактами Tx и Gnd адаптера должно равняться
3.3 Вольта.
Точно подойдут адаптеры с возможностью выбора рабочего напряжения перемычкой:
Если есть сомнения, лучше взять мультиметр и замерить напряжение перед подключением к шлюзу.
Вместо USB адаптера можно использовать Rspberry Pi, ESP* и прочие платы, имеющие на борту UART интерфейс c 3v3 логикой (напряжением 3.3V).
Т.к. у меня подобного железа нет, по вопросам их использования лучше всего обратиться к документации или на профильные ресурсы.
Подключите шлюз к USB адаптеру. При подключении обратите внимание на схему:
Rx адаптера — Tx шлюза
Tx адаптера — Rx шлюза
Gnd адаптера — Gnd шлюза
! Одна из самых распространенных ошибок — подключение Rx- Rx и Tx-Tx . Так делать НЕ нужно!
При наличии возможности, хорошей идеей будет проверить соединения «прозвонив» каждую линию тестером, от «ноги» адаптера до контактной площадки на плате шлюза.
Скачайте необходимые для прошивки файлы:
Bootloader (начните с 115200, при желании можно попробовать самый быстрый или медленный)
Выбор скорости зависит как от качества соединения шлюз-адаптер, так и от самого адаптера и его драйверов.
Firmware (1.4.6_0012_mod20210309 или 1.4.7_0160_mod20210309)
На мой взгляд нет ни малейшего смысла использовать оригинальные, поэтому ссылки даны на «кастом».
! Убедитесь что размер скачанных файлов соответствует размещенным на GitHub!
(bootloader