Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SPRacingH7EXTREME/H7NANO/H7ZERO - Firmware #1

Open
hydra opened this issue Apr 15, 2019 · 0 comments
Open

SPRacingH7EXTREME/H7NANO/H7ZERO - Firmware #1

hydra opened this issue Apr 15, 2019 · 0 comments
Labels

Comments

@hydra
Copy link

hydra commented Apr 15, 2019

Firmware Upgrade

This document is intended for the following FCs.

  1. SPRacingH7EXTREME (Standard and PX4 Edition)
  2. SPRacingH7ZERO
  3. SPRacingH7NANO

The SPRacingH7ZERO and SPRacingH7EXTREME can be upgraded by USB or SD Card, The SPRacingH7NANO does not have an SD card socket.

The instructions below were initially written for the SPRacingH7EXTREME, if you have an H7ZERO or H7NANO update filenames as appropriate.

Do not flash SPRacingH7EXTREME firmware onto an H7NANO or H7ZERO, or vice versa.

Firmware upgrade procedure via configurator.

All new development builds of the betaflight configurator now include EXST flashing support.

An up-to-date configurator is required, grab the latest one from here:

https://github.com/spracing/betaflight-configurator/releases

Initial support was added in https://github.com/spracing/betaflight-configurator/releases/tag/spracing-20190816 and will be in the official release of 10.6.0 when available.

Note: Do not attempt to use any older BF configurator to flash an SP Racing H7 board, it will not work.

Note: The configurator does not support flashing the SPRacingH7EXTREME PX4 Edition, use DFU-UTIL, see below.

Via configurator with manual entry to SP Racing bootloader - use this method if you have erased firmware, bad firmware, etc

  • Enter SP Racing bootloader DFU mode (see below).
  • Ensure configurator shows DFU in top-right hand corner.
  • Disable "Full chip erase"
  • Enable "No reboot sequence"
  • Load the .hex file using "Load firmware local" button or via development build, see below.
  • Click "Flash Firmware" button.

Via configurator with automatic entry to SP Racing bootloader - use this method if you have firmware on the FC and the FC boots.

  • Disable "Full chip erase"
  • Disable "No reboot sequence"
  • Load the .hex file using "Load firmware local" button or via development build, see below.
  • Click "Flash Firmware" button, FC should reboot into SP Racing bootloader mode and flashing will be performed via DFU which should appear in top right-hand corner while flashing.

Firmware upgrade procedure via USB.

  • Enter SP Racing bootloader DFU mode (see below).
  • Computer should detect USB DFU device. Install DFU drivers as required, see Betaflight wiki/manual.
  • Upload firmware with DFU util (minimum version = v0.9) as follows:

BF 4.0:
dfu-util -D betaflight_4.0.0_SPRACINGH7EXTREME_EXST.exst -s 0x97CE0000:leave
dfu-util -D betaflight_4.0.0_SPRACINGH7NANO_EXST.exst -s 0x97CE0000:leave
dfu-util -D betaflight_4.0.0_SPRACINGH7ZERO_EXST.exst -s 0x97CE0000:leave

BF 4.1 onwards:
dfu-util -D betaflight_4.1.0_SPRACINGH7EXTREME.bin -s 0x97CE0000:leave
dfu-util -D betaflight_4.1.0_SPRACINGH7NANO.bin -s 0x97CE0000:leave
dfu-util -D betaflight_4.1.0_SPRACINGH7ZERO.bin -s 0x97CE0000:leave

PX4 edition:
dfu-util -D betaflight_4.2.3_SPRACINGH7EXTREME-W25Q128JV_75194ebefb.bin -s 0x90F90000:leave

  • FC should automatically reboot at the end of of flashing process.

Firmware upgrade procedure via SD card.

  • Enter SP Racing bootloader DFU mode (see below).
  • Place .exst (4.0) or .bin (4.1 onwards) on SD card as CFEXSTFW.BIN

BF 4.0
copy betaflight_4.0.0_SPRACINGH7EXTREME_EXST.exst U:\CFEXSTFW.BIN
copy betaflight_4.0.0_SPRACINGH7NANO_EXST.exst U:\CFEXSTFW.BIN
copy betaflight_4.0.0_SPRACINGH7ZERO_EXST.exst U:\CFEXSTFW.BIN

BF 4.1 onwards:
copy betaflight_4.1.0_SPRACINGH7EXTREME.bin U:\CFEXSTFW.BIN
copy betaflight_4.1.0_SPRACINGH7NANO.bin U:\CFEXSTFW.BIN
copy betaflight_4.1.0_SPRACINGH7ZERO.bin U:\CFEXSTFW.BIN

where U: is your SD card.

  • Press and HOLD BIND button.
  • LED flashes ON then OFF every two second. Release BIND the button after 7 flashes. Remove power to FC if you need to abort. WARNING: Releasing button after the 15th LED flash will erase the CPU requiring it to be sent back to the factory for re-programming at your expense!
  • FC will erase firmware on the external flash chip, it happens very quickly.
  • After erasing the led with flash quickly 10 times. Any other patterns indicates failure.
  • Wait till LED flashes slowly again.
  • Press and HOLD BIND button.
  • LED flashes ON then OFF every two second. Release BIND the button after 10 flashes. Remove power to FC if you need to abort. WARNING: Releasing button after the 15th LED flash will erase the CPU requiring it to be sent back to the factory for re-programming at your expense!
  • FC will load firmware from SD card and flash external flash chip with new firmware, it happens very quickly.
  • After flashing the led with flash quickly 10 times. Any other patterns indicates failure.

Running different firmware from SD card.

  • Place .exst (4.0) or .bin (4.1 onwards) on SD card as CFEXSTFW.BIN

BF 4.0
copy betaflight_4.0.0_SPRACINGH7EXTREME_EXST.exst U:\CFEXSTFW.BIN
copy betaflight_4.0.0_SPRACINGH7NANO_EXST.exst U:\CFEXSTFW.BIN
copy betaflight_4.0.0_SPRACINGH7ZERO_EXST.exst U:\CFEXSTFW.BIN

BF 4.1 onwards:
copy betaflight_4.1.0_SPRACINGH7EXTREME.bin U:\CFEXSTFW.BIN
copy betaflight_4.1.0_SPRACINGH7NANO.bin U:\CFEXSTFW.BIN
copy betaflight_4.1.0_SPRACINGH7ZERO.bin U:\CFEXSTFW.BIN

where U: is your SD card.

  • Power on FC.
  • Bootloader will attempt to load firmware from SD card before attempting to load firmware from external flash, bootloader will only do this if the SD card is detected.

You can have two different firmware revisions on your FC, one on the SD card, one on the External flash. However if the configuration format between the two firmware revisions is not IDENTICAL then the firmware that is loaded will reset the configuration and/or leave it in an invalid state. You may need to reset the config manually.

Note:

  • If no SD card is present, or the file is missing, the bootloader will will attempt to load firmware from the external flash immediately.
  • If the file cannot be read, the bootloader will display the LED pattern for 'SD read failed'.
  • If there is an error with the file, i.e. it can be read, but is not valid, then the bootloader will display the LED pattern for 'Firmware verification failed'.

It's also possible to compile betaflight so it stores it's config in a file on the SD card. This allows you to insert an SD card with firmware that loads it's config from the SD card and also have firmware on the external flash that loads its config from the external flash. See betaflight source code for this experimental feature and CONFIG_IN_SDCARD instead of CONFIG_IN_EXTERNAL_FLASH when compiling.

Entering SPRacing Bootloader DFU mode.

The SPRacingBootloader DFU mode can be used to perform firmware updates, it is not the same as CPU ROM DFU bootloader which is for developers only.

There are two methods:

  1. using BIND button (or BIND pads on SPRacingH7NANO)
  • Power off FC
  • Hold BIND button.
  • Power on FC with USB cable attached.
  • Wait for LED to flash rapidly.
  • Release BIND button to enter SP Racing Bootloader DFU mode. LED flashes slowly.
  1. using configurator CLI.

If you have BF 4.0 firmware.

  • Go to the CLI.
  • enter bl and press return.
  • FC reboots, LED flashes slowly.

If you have BF 4.1 firmware.

  • Go to the CLI.
  • enter bl flash and press return.
  • FC reboots, LED flashes slowly.

Note: the default bootloader was changed from FLASH to ROM between 4.0 and 4.1 by @mikeller in this PR - betaflight#8429

SPRacing bootloader functions

When holding the BIND button down in SP Racing Bbootloader mode, each LED flash indicates a different function:
1 Load firmware.
2 Launch loaded firmware in RAM (for developers).
3 Clear firmware in RAM.
4 Enter CPU ROM DFU bootloader.
5 Reboot.
6 Erase config on external flash.
7 Erase firmware on external flash.
8 Erase entire external flash.
10 Flash firmware from file on SD card.
15 Erase CPU bootloader (DO NOT DO THIS - You will have to return the FC to the factory for reprogramming).
16 Erase external flash reserved area.

Failure patterns.

When the bootloader can't do something, it will give a failure pattern. The patterns starts with a few quick flashes, then some slow flashes. Count the slow flashes and use the table below.

2 = Firmware verification failed. Corruption, hash mismatch.
3 = Firmware load failed. No valid firmware found.
4 = Firmware write failed (e.g. when flashing).
5 = External flash write failed.
6 = External flash read failed.
7 = SD write failed.
8 = SD read failed.

There are other codes, if you experience them contact SP Racing support with your symptoms.

Bin/Hex files

Both SD card and DFU flashing methods require BINARY format files. The BF build system generates .hex files only download here, however these can be converted to .bin files using hex2bin download

e.g.

hex2bin.exe betaflight_4.1.0_SPRACINGH7EXTREME.hex
hex2bin.exe betaflight_4.1.0_SPRACINGH7NANO.hex
hex2bin.exe betaflight_4.1.0_SPRACINGH7ZERO.hex

Building from source

Once you have got the latest code and a working build environment, you can build the .bin file as follows.

make TARGET=SPRACINGH7EXTREME binary
make TARGET=SPRACINGH7NANO binary
make TARGET=SPRACINGH7ZERO binary

Firmware files

Latest Firmware:

Use latest,BF 4.1 release candidates.

Any recent development build or release candidate can be downloaded and installed using latest configurator*.
On the firmware flasher:

  • Enable "Show unstable releases"
  • Enable "Enable Expert Mode"
  • Choose "Development" from build type list.
  • Choose your board from the list of boards.
  • Choose a version from the list of available firmware.
  • Click "Load firmware [Online]"
    Follow remaining flashing procedure from the "Firmware upgrade procedure via configurator" section above.

Firmware for SPRacingH7EXTREME PX4 edition can be downloaded from here: https://github.com/spracing/betaflight/releases

Older experimental BF firmware:

betaflight_4.1.0_SPRACINGH7EXTREME-20190816.zip
betaflight_4.1.0_SPRACINGH7ZERO-20190816.zip

betaflight_4.1.0_SPRACINGH7ZERO-20190813.zip
betaflight_4.1.0_SPRACINGH7EXTREME-20190813.zip
betaflight_4.1.0_SPRACINGH7NANO-20190813.zip

betaflight_4.1.0_SPRACINGH7EXTREME-20190805.zip
betaflight_4.1.0_SPRACINGH7NANO-20190805.zip
betaflight_4.1.0_SPRACINGH7ZERO-20190805.zip

betaflight_4.1.0_SPRACINGH7EXTREME-20190718.zip

Factory Firmware:

BF 4.0
betaflight_4.0.0_SPRACINGH7EXTREME-20190421.zip
betaflight_4.0.0_SPRACINGH7NANO-20190421.zip
betaflight_4.0.0_SPRACINGH7ZERO-20190421.zip

BF 4.2
betaflight_4.2.0_SPRACINGH7EXTREME-20200616.zip
betaflight_4.2.0_SPRACINGH7NANO-20200616.zip
betaflight_4.2.0_SPRACINGH7ZERO-20200616.zip

SPRacingH7EXTREME PX4 Edition:

Known Issues

  • 20190421 only - Flip-over-after-crash feature causes arming issue. See Will not re-arm using DSHOT600 or 1200 #3, workaround: disable it, or use newer firmware (confirmed fixed).
  • 20190421 confirmed. On some ESCs the ESC startup motor tones are heard twice after booting up with battery connected. There is an issue causing the motor outputs to be suspended after they are first initialized, the root cause is currently unknown and requires investigation, however this issue does not affect flight.
  • 20190805 and older - Bi-Directional/DSHOT & RPM Filter not available in firmware. Initial RPM filter support added in 20190813 firmware. The feature was delayed, primarily due to ST Micros not releasing the LL drivers in HAL 1.3 library. HAL 1.4 library with LL support has now been merged into master, work is underway to update the DSHOT code to support bi-directional telemetry which is required for RPM filter. @joelucid the author of the RPM filter code has been provided with an H7EXTREME for development purposes. The H7 hardware itself fully supports and was designed for bi-directional DSHOT. Please provide feedback on RPM filter support issues here: [H7] LL-Dshot support betaflight/betaflight#8712 - Note you'll need new ESC firmware with DSHOT GCR support. e.g. https://jflight.net/
  • 20190718 and newer. SPRACINGH7EXTREME only. The custom gyro settings are overridden by the configurator when saving anything on the "Configuration" page. The issue is due to the current configurator not knowing how to handle the new CUSTOM setting required for the 45 degree gyro. A configurator update is available, PR Add support for custom gyro alignment. betaflight/betaflight-configurator#1580, recent development builds on the link above include this fix. To workaround this issue issue with an older configurator use the following commands after in the CLI.
set gyro_2_sensor_align=CUSTOM
save

NOTE: Now that the SPRacingH7 flight controller support is officially merged into Betaflight please report bugs with firmware or configurator on the Betaflight issue tracker where they will be seen by all the Betaflight developers.

@spracing spracing locked and limited conversation to collaborators Apr 15, 2019
@hydra hydra pinned this issue Apr 15, 2019
@hydra hydra changed the title Firmware SPRacingH7EXTREME - Firmware May 21, 2019
@hydra hydra added the pinned label Jul 27, 2019
@hydra hydra changed the title SPRacingH7EXTREME - Firmware SPRacingH7EXTREME/H7NANO/H7ZERO - Firmware Aug 5, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

1 participant