Взлом Xiaomi Zigbee Gateway В этой статье я хочу поделиться с вами своим опытом и успехами, достигнутыми при разборке шлюза Xiaomi (версия с евровилкой от beru.ru).
Расскажу, как на него установить альтернативное ПО, как восстановить шлюз с устаревшим ПО и даже оживить шлюз с устаревшим u-boot. ---------МНОГО ИЗОБРАЖЕНИЙ------------
Первым делом расскажу как подключиться к плате шлюза и получить root.
Сначала несколько подробностей о шлюзе.
В данной статье рассматривается версия шлюза, построенного на процессоре.
imx6ull .
Некоторые технические характеристики платы:
Wifi RTL8723BS - почему-то драйвер для него загружается отдельно.Процессор IMX6ULL ОЗУ 256 МБ ПЗУ 256 Мб Модуль ZIgbee на базе JN5169. На плате имеются служебные пятаки P2 и P4. В идеале они подходят под погопины, но их легче припаивать.
P2 — это Uart 0 процессора, где отображается вся служебная информация, журнал загрузки uboot и управление системой, можно использовать любой переходник usb-uart. P4 — USB OTG, который используется для заливки прошивки в nand. (Поскольку ОТГ полноценный, мне не удалось его запустить до конца, при подключении устройство определяется, но видимо чего-то еще не хватает).
Китайская плата USB-адаптера идеально подходит для монет P4.
После того как все спаяно и подключено, в первую очередь необходимо получить root.
Я сделал это по этой инструкции (ссылка на мануал) но с небольшими уточнениями, после пункта 5 нужно набрать команду ботинок В противном случае система сидит и ждет команды, инструкции видимо писались с надеждой, что все понимают Linux.
Почему-то SSH-сервер тоже не включался по инструкции и включался только путем запуска его вручную, командой запуска /etc/init.d/dropbear начало
Следующим шагом после получения root я скопировал содержимое системы с помощью WinScp (при создании соединения выберите режим SCP).
Далее, как хорошо, нужно сделать бэкап всей системы, на случай, если эксперименты приведут к плачевным последствиям (как случилось со мной, но бэкап я не делал) Флэш-память шлюза разделена на 4 раздела.
Как оказалось, свободного места тоже не много, а в памяти много разных дубликатов файлов.
Поигравшись пару часов, я что-то поменял в софте и шлюз перестал загружаться :) Теперь разберемся, как оживить эту железку и наполнить ее чем угодно.
Выполняйте действия только если у вас есть кирпич! Процессор Imx6ULL содержит всю информацию в открытом виде, все паспорта и справочные руководства доступны на сайте производителя после регистрации.
U-boot у меня все еще загружался.
Но пока пытался восстановить, случайно скопировал лишнюю команду и стер весь нанд. А u-boot, как оказалось, был в Нанде.
И я получил кирпич.
Процессор поддерживает различные режимы загрузки.
Все они описаны в справочном руководстве.
Платы разработчика обычно имеют переключатели, но здесь ничего подобного нет. В даташите описано, что это за конкретно процессорные пятаки.
И тут китайцы тоже сделали очень приятный подарок.
Отвезли в очень удобное место и почти подписали) На плате рядом с процессором припаяны два резистора, куда подходят контакты режима загрузки.
Эти два резистора и являются переключателями режима загрузки; по умолчанию они установлены на nand, но сдвинув каждый из них в сторону, мы получим режим последовательной загрузки.
Я переключил свой шлюз в режим последовательной загрузки; в некотором смысле этот режим более удобен для тестирования различных прошивок.
Для заливки прошивки используется фирменная утилита mfgtools от NXP. Единственное в нем нужно подготовить профиль для процессора.
Скачать mfgtools .
В архиве находится подготовленная версия со всеми необходимыми настройками.
Подключаем шлюз через USB. В режиме последовательной загрузки шлюз попытается загрузить прошивку через интерфейс USB, и на компьютере появится новое HID-устройство.
Mfgtools в свою очередь сообщит, что видит новое устройство.
Иногда компьютер этого не видит, но я не могу сказать, что именно является причиной этого.
После того, как утилита его увидит, нажмите «Пуск», и начнется процесс загрузки прошивки.
Утилита отформатирует нанд, загрузит новый бут, ядро, dtb и rootfs. Рутфс, входящий в архив, собирал товарищ Александр Фаронов, он собирал чистую сборку линукса на Yocto. Разделы U-boot, Kernel и DTB были вынесены из родной прошивки шлюза.
В этой сборке линукса будет загружаться только чистая система, больше ничего там не будет( Зигби тоже пока не работает ).
После работы утилиты в моем случае шлюз ничего не будет делать и тоже будет загружаться, ведь как мы помним, процессор в сериале находится в режиме загрузки.
Поэтому ему нужно дать загрузочный образ U-boot. В архиве с mfgtools есть дополнительная утилита uuu, которая загружает U-boot в плату Рам, заходим в папку с ней.
Закройте mfgtools и снова подключите шлюз, HID-устройство должно снова обнаружиться, затем выполните команду.
Плата начнет загружаться, но так как у нее нет env, то после загрузки U-boot она остановится.uuu u-boot-small.imx
В консоли шлюза выполняем две команды, прописываем ENV для загрузки.
setenv bootargs 'console=ttymxc0,115200 ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs cma=96M mtdparts=gpmi-nand:3m(boot),7m(kernel),1m(dtb),-(rootfs)'
и начните загрузку ботинок Шлюз начнет загружаться из Нанды и из той прошивки, которую мы залили.
По большому счету, это все.
В mfgtools в папке \Profiles\Linux\OS Firmware\files находятся все файлы прошивки, заменив которые можно загрузить любую совместимую систему.
Я попробовал скачать openwrt.
Система загружается, но я так и не разобрался до конца, как вставить нужное ядро и где его взять.
Надеюсь совместными усилиями мы все-таки доведем этот шлюз до логического завершения) Резервное копирование каталогов шлюза .
Теги: #linux #Сделай сам или Сделай сам #Умный дом #zigbee #root #шлюз xiaomi
-
Торвальдс Теперь Отвечает За Linux.com.
19 Oct, 24 -
Упрощаем Составление Резюме Разработчика
19 Oct, 24 -
Спросите Итана №33: Полет Без Звезд
19 Oct, 24 -
Жизнь Фрилансера Глазами Программиста
19 Oct, 24 -
Анонс Конференции Linux Piter
19 Oct, 24 -
Сборщик Почты (Усложняем Простые Вещи)
19 Oct, 24 -
Плагин Проверки Jquery, Работающий Изнутри
19 Oct, 24