Switch to English Version

Hoverboard Firmware Hack - How to

November 2017

Related Pages

Sie fasst alles zusammen, was ich in diesem Bereich weiß. Bei tiefergehenden Problemen kann ich nur bedingt helfen. Bitte auch bedenken, dass es nicht unwarscheinlich ist das Board hiermit zu zerstören.

Die aktuelle Firmware ist hier zu finden: github.com/NiklasFauth/hoverboard-firmware-hack

Seit Dezember 2019 nutze ich einen Fork von Emanuel Feru, welcher FOC (Field Oriented Control) unterstüzt: github.com/EmanuelFeru/hoverboard-firmware-hack-FOC

Ich gehe hier von einem Linux als Betriebssystem aus, genauer gesagt irgendwas auf Ubuntu basierendes.

Als Programmer verwende ich einen günstigen ST-Link V2.

Firmware kompilieren

Um die Firmware zu kompilieren wird der gcc-arm kompiler benätigt.

Entweder unter developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads runterladen und den Ordner “gcc-arm-none-eabi-…” entpacken. Oder einfacher:

sudo apt-get install gcc-arm-none-eabi

Nachtrag: Es ist möglich, dass manche Versionen zu Problemen füren. Mit gcc-arm-none-eabi-7-2018-q2-update hatte ich keine Probleme.

Danach die Firmware von Github klonen:

git clone https://github.com/NiklasFauth/hoverboard-firmware-hack.git

oder

git clone https://github.com/EmanuelFeru/hoverboard-firmware-hack-FOC.git

Dann in den Ordner wechseln und kompilieren.

Warscheinlich muss im Makefile noch der “PREFIX” mit dem korrekten Pfad zur gcc-arm Toolchain gefüllt werden. Ich habe die gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 im home Verzeichnis entpackt, die entsprechenden Zeile im Makefile sieht demnach wie folgt aus:

PREFIX = ~/gcc-arm-none-eabi-7-2018-q2-update/bin/arm-none-eabi-

Danach kompilieren mit:

cd hoverboard-firmware-hack

make

Wenn in die Datei build/hover.bin existiert hat das kompilieren funktioniert.

Nun sollten die eigenen Anpassungen gemacht werden. Hauptsächlich muss in der Inc/config.h ein und auskommentiert werden, welche Art der Steuerung benutzt wird.

Dazu z.B. #define CONTROL_NUNCUCK auskommentieren: //#define CONTROL_NUNCUCK

und die gewünschte Methode einkommentieren z.B. zur Steuerung über einen Poti oder Hallsensor: #define CONTROL_ADC

(Teilweise muss die Gasstellung noch ausgerechnet und in der src/main.c angepasst werden. Dazu nach #ifdef CONTROL_ADC suchen und in der oder den Zeilen danach die Gaswege anpassen.

Nach den gespeicherten Änderungen neu kompilieren:

make clean
make

STM32 Toolchain

sudo apt-get install openocd libusb-1.0-0-dev cmake build-essential
git clone https://github.com/texane/stlink
cd stlink

make release
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
cd Release
sudo make install
sudo ldconfig

Hoverboard anschließen:

st-info --probe

STM Unlocken

Bei einem “frischen” Board muss der STM geunlockt werden um ihn beschreiben zu können.

openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c init -c "stm32f1x unlock 0"

Das ist eine Zeile!

openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c init -c "reset halt" -c "mww 0x40022004 0x45670123" -c "mww 0x40022004 0xCDEF89AB" -c "mww 0x40022008 0x45670123" -c "mww 0x40022008 0xCDEF89AB" -c targets -c "halt" -c "stm32f1x unlock 0"

Firmware flashen

st-flash write build/hover.bin 0x08000000

Testen

Das Board wird nun per Knopfdruck eingeschaltet. -> Komische Pieptöne

Langsam Gas geben. Es kann hier auch mit nur einem angeschlossenen Motor getestet werden.

Es ist zu empfehlen hier noch ein Labornetzteil mit 40V und Strombegrenzung (0.5A) zu verwenden. Bei Verwendung eines Labornetzteils sollte jedoch nicht zu stark gebremst/gas weggenommen werden.

Dreht sich der Motor nicht obwohl eine signifikante menge Strom fließt oder ruckelt er sollten zunächst alle möglichen Motor-Controller Kabelkonfigurationen durchgetestet werden.

Viel Erfolg!