Откат с прошивки v1.5.1 на самокате Xiaomi Mijia M365

Подготовка

Данный способ описывает перепрошивку затронутых модулей — контроллера самоката и головного модуля (BLE, плата в руле) с помощью программатора ST-Link V2. Возможны другие способы отката, если Вам про них известно - пишите по контактным адресам, указанным на главной странице. Исходные требования:

  1. Самокат Xiaomi M365 с оригинальной головной платой (не клон)
  2. Программатор ST-Link v2, не перешитый в J-Link (работа с ним также возможна, однако конфигурационные файлы придётся выбирать другие)
  3. OpenOCD под Вашу ОС (в статье рассматривается версия под Windows, в Linux с ядром 3.2 и новее всё будет ровно так же)
  4. Чистая прошивка BLE-модуля без шифрования канала
  5. Желаемая прошивка основного модуля (1.4.0 DownG, например)

Прошивка BLE-модуля головы

Подключение выполняется по следующей схеме:

GND SWCLK SWIO connection

Ниже приведён пример соединения (впаян разъём 0.1", четвёртый пин соединён с шиной +5).

Connected BLE board GND SWCLK SWIO connection

На время прошивки необходимо убрать (отпаять) резистор R1 на плате BLE-модуля и конденсатор C16 на основной плате, в противном случае контроллер невозможно программно перезагрузить и начать прошивку по SWD, OpenOCD будет выдавать Error: init mode failed.

Подключенный ST-Link должен определиться в Windows в диспетчере устройств, при этом все четыре светодиода на панели будут гореть белым/зелёным, при подключении будет короткий писк. Распакуте чистую прошивку BLE-модуля в подкаталог share/openocd/scripts в том месте, куда Вы распаковали OpenOCD. В каталоге с распакованным OpenOCD перейдите в share/openocd/scripts и выполните команду для прошивки ..\..\..\bin\openocd.exe -f interface\stlink.cfg -f target\nrf51.cfg -c init -c "reset halt" -c "nrf51 mass_erase 0" -c "flash write_image CODE 0" -c "flash write_image UICR 0x10001000" -c reset -c exit Если все действия ранее выполнены корректно, Вы получите следующий вывод:

OpenOCD trace

После этого можно отсоединить ST-Link и подключить голову к самокату. В случае успеха при включении голова будет издавать короткий писк, а тормозной габаритный огонь мигать. При попытке подключения по Bluetooth сторонние приложения снова будут видеть самокат:

M365 Battery shows the state

Можно приступать к понижению версии прошивки основного модуля, в том числе по Bluetooth. Для этого есть отличная инструкция.

Основная работа по расковыриванию была выполнена nickkee / r1kaomsk. Сердечное спасибо!