Использование FC_Patcher на примере DJI Mavic Platinum

По мотивам документации в официальном репозитории.
Автор рекомендует (почему-то:) ) использовать для работы сразу две ОС.
В принципе, всё можно сделать (проще) только в Linux, либо же только в Windows (но дольше).
Пишу для пользователей Windows, т.к., действия в Linux у автора патча уже описаны.


Требования:

— Квадрик — DJI Mavic Pro Platinum.
Версия прошивки — 01.04.0300 (для других квадрокоптеров и прошивок — действия будут немного отличаться)
 — До патча прошивки необходимо активировать ADB у квадрокоптера и получить рут-доступ. Сделать это можно с помощью DUMLRacer, либо DUMLDore.
Для Windows предпочтительней будет DUMLdore, т.к., кнопочки 🙂
— Установленные драйверы ADB и утилита ADB. Можно всё одним инсталлятором скачать отсюда.

Также потребуется установка Cygwin (32-битной).
Скачиваю, запускаю setup-x86.exe
«Далее» — (выбираю Install from Internet) — «Далее» — (оставляю путь установки C:\cygwin по-умолчанию) — «Далее» — «Далее» — «Далее» — (выбираю любое зеркало) — «Далее».
Отобразился список установленных (и устанавливаемых) пакетов.
В выпадающем списке View выбрать «Full».
И теперь по-порядку необходимо выбрать пакеты для установки.
Чтобы не искать по всему списку, рекомендую использовать поиск, вводя названия пакетов в поле Search.

Необходимо выбрать для установки:

  • libcrypt-devel
  • python2
  • python3
  • python27-pip
  • python36-pip
  • python2-devel
  • python3-devel
  • gcc-core
  • git
  • wget

Ну и далее до завершения установки кликаю «Далее», в самом конце выбрав «Create icon on desktop»
По завершении на рабочем столе должен появиться ярлык «Cygwin Terminal». Открываю. Работаем с командной строкой.
Вводимые в терминале команды будут (здесь, в тексте) начинаться с $. При вводе команд $ вводить не нужно 🙂

Для некоторых утилит необходим модуль pycrypto, которого в пакетах нет. Необходимо его установить с помощью pip (для 3 и 2 версии пайтона).

Результатом вывода обеих команд будет «Successfully installed pycrypto». Если нет, — возможно, не был установлен пакет python*-devel, gcc-core, либо libcrypt-devel.
Находясь в домашней директории, создаю директорию mavic, со вложенной директорией sw, в которую клонирую репозитории нужных для работы скриптов, перехожу в нее:

Клонирую репозитории:

Скачиваю файл оригинальной прошивки V01.04.0300_Mavic_dji_system.bin:

Проверяю что действительно скачал tar-архив 🙂 Вывод будет содержать список файлов с расширением .pro.fw.sig

Распаковываю архив:

Из всех извлеченных файлов необходимы только три: wm220.cfg.sigwm220_0305_v34.04.00.24_20170726.pro.fw.sigwm220_0306_v03.02.44.07_20171116.pro.fw.sig
Копирую их в директорию workdir (созданную ранее):

Перехожу в директорию workdir:

Убирается подпись с wm220.cfg.sig:

В результате должен получиться файл wm220.cfg_0000.bin (это — обычный xml-файл, уже без подписи)
Переименовываю  wm220.cfg_0000.bin в wm220.cfg.ori:

Включаю квадрик, подключаю по USB.
В терминале cygwin:

— убеждаюсь что подключен квадрик 🙂
Если всё, — продолжаю.

Должно появиться приветствие командной оболочки самого квадрика. В моем случае выглядит вот так: [email protected]_dz_ap0002_v1:/ #
Перемонтирую /vendor в режиме чтение+запись

Создаю директорию /vendor/bin. Если появится сообщение об ошибке «File exists» — ничего страшного.

Выхожу из терминала квадрика. Квадрик пока не выключать!

— вернулся в сеанс cygwin.
Записываю в директорию /vendor/bin квадрика файл wm220_0306_v03.02.44.07_20171116.pro.fw.sig

И снова подключаюсь к консольке квадрика:

Перехожу в /vendor/bin/:

Проверяю наличие файла wm220_0306_v03.02.44.07_20171116.pro.fw.sig:

Расшифровываю файл wm220_0306_v03.02.44.07_20171116.pro.fw.sig с помощью dji_verify на квадрике. Выходной файл — 0306.unsig:

Выхожу из консольки квадрика. Скачиваю файл /vendor/bin/0306.unsig на компьютер:

Снова подключаюсь к квадрику:

Перехожу в /vendor/bin, удаляю ненужны6 0306.unsig, *fw.sig, сбрасываю кеш записи, и монтирую /vendor в режиме «только чтение» (как и было изначально):

Теперь последовательное выполнение нескольких скриптов:

В результате их выполнения должен получиться файл (в формате JSON) с именем flyc_param_infos с полетными параметрами.
Можно редактировать любым текстовым редактором.
Странички с описанием параметров:
https://dji.retroroms.info/howto/parameterhacks
https://www.rcgroups.com/forums/showthread.php?2916078-DJI-Dashboard-How-To-tips-and-tricks-*MAVIC*
https://dji.retroroms.info/howto/parameterindex
https://www.rcgroups.com/forums/showthread.php?3058818-Rooting-Mavic-Pro-in-Latest-firmware-with-Force-FCC-and-Boost-and-No-NFZ

После внесения всех необходимых изменений необходимо пересобрать модуль 0306 с внесенными изменениями:
Создаю (в текущей директории) директорию build:

Копирую в неё необходимые файлы:

Перехожу в директорию build. В ней, после описанных выше манипуляций, должно быть 9 файлов.

Устанавливаю переменную окружения PATH_TO_TOOLS (видать, используется одним из скриптов) :

Делаю исполняемым скрипт FC_patch_sequence_for_dummy_verify.sh:

И запускаю его. Версия 03.02.44.08 должна быть выше текущей версии полетного контроллера. После каждого редактирования параметров рекомендуют увеличивать её.

Если всё прошло успешно, — получаю сообщение:

В результате получится файл dji_system_wm220_0306_03.02.44.10_dummy_verify.bin, который, собствено, можно прошивать.
Содержимое файла (tar-архив):

— т.е., внутри должно быть 3 файла.
Файл dji_system_wm220_0306_03.02.44.10_dummy_verify.bin переименовываю в dji_system_wm220_0306_03.02.44.10_dummy_verify.tar

Подключаюсь к квадрику:

Монтирую /vendor/bin в режиме чтение+запись, выхожу:

Копирую с компьютера файл dummy_verify.sh и опять подключаюсь к консольке квадрика:

Выключаю квадрик.  Включаю. Жду немного загрузки, подключаюсь к нему обратно:

Теперь запускаю DUMLdoreV3.
Жму «Load Firmware». Выбираю файл прошивки dji_system_wm220_0306_03.02.44.10_dummy_verify.tar (C:\cygwin\home\Имя_пользователя\mavic\workdir\build)
Жму «Flash Firmware».
Пойдет процесс прошивки, квадрик перезагружается.
Через DJI Assistant можно проверить, изменились ли необходимые параметры (из flyc_param_infos)

 

 

Использование FC_Patcher на примере DJI Mavic Platinum: 3 комментария

  1. А спутники galileo по этой инструкции активируются? Если да, то на каком шаге? Если нет, то как активировать?

    1. Активируются.
      GPS патчится скриптом(ами) patch_wmххх_0306.py, который, собсно, из FC_patch_sequence_for_dummy_verify.sh запускается.
      Но для приема со спутников Galileo, этого не достаточно 🙁 Необходима также патченая версия DJI GO.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *