Firmware for ExpressLRS compatible backpacks

Overview

What is a "TX Backpack"?

Some of the ExpressLRS TX modules include an additional ESP8285 chip, which lets us communicate wirelessly with other ESP8285 enabled devices using a protocol called espnow. We call this chip the "TX-Backpack". The aim of the TX-Backpack is to allow wireless communication between ExpressLRS, and other FPV related devices for command and control, or for querying config.

Sounds interesting... What type of FPV devices can it talk to?

A prime use case is your video receiver module (or VRX). Currently there aren't many VRX modules that have an ESP8285 built in to allow them to communicate with ExpressLRS, so in most cases you need to add your own. A small ESP based receiver can be "piggybacked" onto your VRX module, which allows ExpressLRS to control the band and channel that your goggles are set to. We call this device the "VRX-Backpack".

Wow cool, so I'll be able to control the module via ELRS!? Which VRX modules does it work with?

The list of supported modules can be found on the wiki: https://github.com/ExpressLRS/Backpack/wiki

Great! I use one of the supported modules. How do I get a VRX-Backpack?

There are a few different options for both DIY or compatible off the shelf backpacks... check the wiki for the current list: https://github.com/ExpressLRS/Backpack/wiki

Issues
  • Firmware for HappyModel EP82 VRX-Backpack module

    Firmware for HappyModel EP82 VRX-Backpack module

    Hi, which firmware should I flash into HappyModel EP82 VRX-Backpack module? http://www.happymodel.cn/index.php/2021/11/10/ep82-vrx-backpack-module-for-control-rapidfire-vrx-with-elrs-tx-module/

    opened by L1cardo 10
  • Port the device framework from ELRS firmware

    Port the device framework from ELRS firmware

    Port the button, LED and WiFi code from main ELRS code base.

    I have only converted the VRx backpack over to the device framework, but I will continue on and do the Tx backpack too. Also, I think we should shift to the config code from the main ELRS repo as well as we get better control over the flash writes that way.

    Just looking for feedback as to whether you all think this a good idea 😉

    opened by pkendall64 9
  • Create HappyModel EP82 VRX Target

    Create HappyModel EP82 VRX Target

    This is a source of continuing confusion for users trying to flash a VRX backpack. It makes some sense to use the HappyModel EP target for an EP82, but in fact, those pins will result in the module not booting. This creates a new target for clarity when flashing these devices.

    opened by FrankPetrilli 7
  • Don't init the VRX until the first VRX command

    Don't init the VRX until the first VRX command

    This makes the module stay on the last know channel if the radio is off instead of changing to R8 (rapidfire)

    If the radio is on or a lua command is sent it works as before.

    This closes #42

    Edit: thinking about it this may not work well for other vrx modules. I only have the rapid fire to test with. Is it worth moving this into rapidfire.cpp?

    opened by Aaronsss 6
  • TBS Fusion VRX integration

    TBS Fusion VRX integration

    The TBS Fusion VRX module can connect to the WiFi of a TBS Crossfire/Tracer module, which enables these features:

    • automatic VTX/VRX frequency sync
    • dynamic VTX power
    • telemetry OSD inserted on the VRX side

    See page 24 onwards at: https://www.team-blacksheep.com/tbs-fusion-manual.pdf

    It would be great, if someone could figure what kind of data/protocol the TBS Fusion needs for this connection. So that it will be possible to connect a TBS Fusion to an ExpressLRS TX with an ESP backpack and use these features.

    @JyeSmith has already got the frequency sync working with a DIY VRX module: https://github.com/ExpressLRS/ExpressLRS/wiki/VRx-Backpack

    In an earlier issue it is mentioned, that apparently TBS Fusion integration is already being worked on.

    opened by microraptor 4
  • Ability to disable backpack / channel change on start up

    Ability to disable backpack / channel change on start up

    Not all of my models run on ELRS so it is annoying that it will change the channel to R8 when you turn the goggles on. Not to mention my TX won't be on if I am spotting someone at a race.

    Is it possible to add a feature that prevents this channel change if the bound ELRS module is not available?

    opened by Aaronsss 3
  • Namimno backpack target

    Namimno backpack target

    Problem Statement:

    The Namimno STM32 TX modules work slightly different to the HM TX's in terms of the ESP8285 backpack, and it's responsibilities. For the HM modules, wifi firmware updates are handled by the ESP32, and the backpack (ESP8285) has been sitting dormant for some time, providing no additional functionality. For the Namimno however, the backpack (ESP8285) is providing a wifi capable method of flashing the STM32 (via the STK500 protocol), which runs the program code. The Namimno backpack code that gets flashed from factory is completely different to the new backpack code in this repo. This means that the existing backpack FW on Namimno cannot interface with VRX-Backpacks.

    Proposed solution in this PR

    This PR merges the STK500 code from the "other" backpack repo, and displays an additional set of tools on the wifi updater page that allows users to update their STM32, as well as the backpack FW. This means that both the VRX-Backpack integration, plus the TX updating functionality are contained in one place, and work in harmony.

    How to use this PR

    • A new target has been added called Namimno_Tx_Backpack
    • Building the target above will produce a backpack.bin file. This needs to be named as such to pass the existing checks on the Namimno wifi updater page.
    • On the Namimno module, power it up, and connect to you wifi network, then navigate to the wifi update page as per normal.
    • Under the backpack flashing section, select and flash the backpack.bin file
    • Operate the backpack integration as per the other TX's (i.e. LUA should work at this point)

    Reverting this PR

    • Build the original namimno TX backpack code from the ExpressLRS repo
    • In LUA, under Wifi, enable the hotspot for the TX backpack
    • Connect to the hotspot, open 10.0.0.1, and under the TX backpack section, select the the old backpack.bin FW and flash
    opened by wvarty 3
  • force EnableSPIMode() on boot

    force EnableSPIMode() on boot

    This PR reverts PR https://github.com/ExpressLRS/Backpack/pull/44

    @Aaronsss Im forcing SPI Mode on boot again. If the tx decides to send a command to the VRx mid flight after a tlm lost/recovered moment, then SPI Mode can be activated. With RF this flashes up the OSD menu :expressionless:

    Example DVR https://streamable.com/egdng8

    opened by JyeSmith 2
  • Add ESP12F target

    Add ESP12F target

    This adds the ESP12F modules as a VRX backpack target as well as fix the LED inversion code as this module uses a inverted built-in LED. ESP12F Wiring Diagram

    This module will also require a 5V to 3v3 regulator to work.

    opened by FOG-Yamato 2
  • RX5808 ESP-01f  Backpack Targets

    RX5808 ESP-01f Backpack Targets

    Add new targets for RX5808 modules

    1. Add targets for RX5808_ESP01F_Backpack_via_UART and RX5808_ESP01F_Backpack_via_WIFI which allow the ESP-01F to be used as a backpack on RX5808 modules
    2. Add targets for RX5808_ESP01F_Diversity_Backpack_via_UART and RX5808_ESP01F_Diversity_Backpack_via_WIFI which adds an extra CS pin that can be connected to the CS line on a second RX5808 module. The extra CS pin is needed to control the second RX5808 module on goggles like the EV800D, tying the CS lines on the two modules together does not work, I was only able to get the backpack to control both modules with the use of a second CS pin going to the second module.

    IO13 -> RX5808 #1 Ch1 (MOSI) IO14 -> RX5808 #1 Ch3 (CLK) IO15 -> RX5808 #1 Ch2 (CS) IO5 -> RX5808 #2 Ch2 (CS)

    ESP-01F wired into the EV800D goggles PXL_20220117_180810473 NIGHT

    opened by justinlampley 2
  • Add telemetry forward to another esp

    Add telemetry forward to another esp

    Matching the expresslrs pr: https://github.com/ExpressLRS/ExpressLRS/pull/1107

    Tested and works with HM ES24TX and another esp32 dev board that receives the telemetry. I haven't test it with another vrx. I'm not sure if using the same bound mac address is a problem. I will try it later.

    opened by MingchenZhang 2
  • Orqa FPV.Connect support

    Orqa FPV.Connect support

    Adds the option to use an ESP based receiver in place of the Ghost Atto as a backpack on the FPV.Connect module. Configure the Goggles as if the Ghost integration is used (enable SPI mode for RapidFire, Enable Ghost Integration, Bridge solder pads on the back of FPV.Connect etc.).

    The Pinout doesn't match and the Rx might need 5V to function. I will upload pictures and some documentation on how to connect the Rx correctly. I didn't want to include a SoftwareSerial dependency for something that needs soldering anyways.

    Special thanks to @Igor-Misic for the captures of the original Ghost integration!

    opened by jonas-koeritz 14
  • wrong link?

    wrong link?

    Hi to all, https://github.com/ExpressLRS/Backpack/wiki/Wiring-Guides#generic-rx5808-module Here is the link that leads to the creation of a new page. "https://github.com/ExpressLRS/Backpack/wiki/RX5808-Backpack-using-an-ELRS-receiver" I don't know if it's a mistake or waiting for someone to take on the role of guide. I was just looking for some information I found elsewhere and came across this. Tribute to your amazing work.

    opened by psicho100pro 1
  • Namimno Flash OLED TX backpack firmware

    Namimno Flash OLED TX backpack firmware

    So, Namimno Flash OLED TX uses HappyModel backpack firmware? Even if the target and the code are exactly the same, can we make it more clear when naming or displaying? That would be more easy for users and not making them think something is wrong with their module.

    image image
    opened by L1cardo 1
  • Feature Request: flashing firmware over uart using ELRS backpack as bridge possible?

    Feature Request: flashing firmware over uart using ELRS backpack as bridge possible?

    Hi :)

    idk weather this is possible, but i saw that the happymodel backpack module has full spi functionality (clk, mi, mo, cs) and i was wondering if it would be possible to flash devices connected to that spi via backpack? I thought you could load precompiled firmware for any uart device onto your radios sd card, pass it to the backpack tx and send it to a backpack rx connected to the respective device. this would allow you to flash pretty much anything with a uart over the backpack system.

    how i imaginge the implementation:

    • [ ] since backpack is based on transmitting small messages via esp now which is limited to 250-byte payloads and precompiled firmware would be a lot larger, you would need to implement another two way protocol layer within this payload to handle correct transmission (and retransmission if nessessary) of the firmware.

    • [ ] you would also need some software on the rx side to stitch the packages back together and translate them to spi (i guess the latter part exists already?)

    • [ ] you could choose if you wanted the spi communication functionality integrated into the transmitted package (then you have to translate the precompiled software to spi commands before loading it on the radio -- maybe integrate non elrs firmware compilation into elrs configurator to get it to the correct format) or if the backpack rx knows how to do that (maybe it does it already, i have no knowledge of spi communication or flashing firmware over it -- hardware compatibility issues?).

    it would be really cool if that would work, but there are probably hardware or software limits i don't know of. if so, please tell me, i would appreciate a bit of insight into the workings of elrs backpack :)

    thank you for reading and thinking this through :)

    greetings

    opened by pfreundl 1
  • Headtracker/trainer backpack

    Headtracker/trainer backpack

    Hi, I am currently experimenting with developing a headtracker using an off the shelf m5stack atom matrix board (just because of the included MPU), which connects to my remote using FrSky proprietary BLE trainer link. I wonder whether instead of using BLE and only being compatible to higher end FrSky radios, we can integrate this usecase into the ExpressLRS backpack ecosystem?

    As headtrackers are traditionally implemented using the trainer port on radios, I wonder whether ExpressLRS in general has a vision for trainer functionality, which could be used by either real trainer links as well as headtrackers? Or did I miss something? Is the "trainer" concept relevant at all for the FPV target group? IMO at least headtrackers are, even if kinda limited in their resolution because of ExpressLRS aux channel resolution limitations.

    Thanks for your time and efforts!

    opened by froqstar 1
  • [Feature Request] add lilygo T-Watch-2020

    [Feature Request] add lilygo T-Watch-2020

    I don't know, who did it first, but there was a communication "proof of concept" with the lilygo T-Watch-2020. Maybe the backpack could communicate with the T-Watch to send telemetry data, and the module can be configured via the watch?

    opened by nightflasher 2
Releases(1.1.0)
  • 1.1.0(May 23, 2022)

    Backpack Documentation

    Demo video: https://youtu.be/hu_Xt1rrgfo

    Enhancements

    • Passthrough flashing of backpack for S.PORT modules #66

    Bug fixes

    • Fix broken Namimno STM32 backpack firmware upload #64
    • Re-enable SPI Mode on boot for Rapidfire #65
    • Fix dependency issue that was causing builds to fail #67
    • Fix failing builds caused by a breaking change in PlatformIO (src_filter to build_src_filter) #69

    A note on versioning

    The versioning scheme chosen by the ExpressLRS devs is based on the semantic versioning scheme. Where a version is defined as “major.minor.patch” major = major new feature and/or incompatible changes minor = minor features or enhancements and/or new targets patch = bug-fixes

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Mar 8, 2022)

    Backpack Documentation

    Demo video: https://youtu.be/hu_Xt1rrgfo

    Enhancements

    The first major release version for backpack! Lots of new VRX targets, and a swag of other features and bugfixes...

    The ExpressLRS team would like to thank Divimath / HDZero for their support and collaboration on an integration between ExpressLRS, and the HDZero Video Receiver (VRX).

    What does the ELRS + HDZero integration provide? Currently, the high level feature set allows a user to:

    1. Change the band (R-band, F-band) and channel (1 to 8) that the VRX is receiving on from the VTX Administrator menu within the ELRS LUA,
    2. At the same time, change the band and channel that a HDZero VTX is transmitting on, assuming it has been configured to use Smartaudio control, and is connected to a Betaflight FC,
    3. Start and stop the DVR recording on a HDZero VRX based on the state of an AUX channel,
    4. Delay the start or stop of DVR recording by a configurable timespan, when using the AUX control described in item 3 above.
    5. There may be more features introduced in future to further extend this integration.

    For more information, see the Manual for the HDZero Backpack here: https://docs.google.com/document/d/1L4U4uEqYhuwCww_RxSpavNetltbHMvLAknhM0HjRnwE/edit?usp=sharing

    • Web U.I improvements #31 #35 #61
    • Passthrough flashing of backpack via EdgeTX #47

    Bug fixes

    • WiFi SSID/Password character escaping #54
    • Don't init SPI on Rapidfire & 5808 until the first VRX command #44 #52
    • Drop renaming of firmware.bin for Gen1 Namimno TX Backpack #59

    New Hardware Targets

    TX Backpack

    • RadioMaster Zorro
    • Namimno FLASH OLED
    • BETAFPV Module

    VRX Backpack

    • HDZero RX5.1
    • Happy Model EP82 (for rapidfire)
    • TBS Fusion
    • RX5808 Diversity ESP01F
    • ESP12F

    For a full list of compatible hardware targets, see: https://www.expresslrs.org/2.0/hardware/backpack/esp-backpack/#supported-tx-backpack-targets

    A note on versioning

    The versioning scheme chosen by the ExpressLRS devs is based on the semantic versioning scheme. Where a version is defined as “major.minor.patch” major = major new feature and/or incompatible changes minor = minor features or enhancements and/or new targets patch = bug-fixes

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Dec 21, 2021)

    This release includes new targets for Axisflying, NamimnoRC, and the Steadyview VRx module.

    Flashing can be done through the ExpressLRS Configurator, or by starting the Backpack WiFi and uploading a precompiled binary found below.

    Be sure to checkout the wiki for information about the Backpack communication system, flashing, building, and setup. There is also a section on how to bind your Backpacks which will be required when using these precompiled binary releases... Dont worry, its painless :smiley:

    https://github.com/ExpressLRS/Backpack/wiki https://github.com/ExpressLRS/Backpack/wiki#binding

    VTx Administrator Demo - https://youtu.be/nlhu4gW8kkw

    Rapidfire Backpack Demo - https://www.youtube.com/watch?v=Qh3Ifj95WCI

    RX5808 Backpack Demo - https://youtu.be/IEEZkeIJ1OU

    Source code(tar.gz)
    Source code(zip)
    AXIS_THOR_Tx_Backpack.bin(359.81 KB)
    FrSky_TX_Backpack.bin(393.37 KB)
    HappyModel_TX_Backpack.bin(359.81 KB)
    NamimnoRC_TX_Backpack.bin(393.51 KB)
    Rapidfire_ESP01F_Backpack.bin(360.46 KB)
    Rapidfire_ESP_RX_Backpack.bin(359.93 KB)
    RX5808_ESP_RX_Backpack.bin(360.00 KB)
    SteadyView_ESP_RX_Backpack.bin(360.17 KB)
  • v0.1.0(Oct 24, 2021)

    Welcome to the first release of ExpressLRS Backpacks!

    This initial release includes firmware for...

    • Tx Backpacks found on all Happymodel modules (except ES915TX) and DIY builds.
    • Rapidfire control through an ELRS ESP based Rx or DIY ESP01F Backpack.
    • Direct RX5808 module control.

    Be sure to checkout the wiki for information about the Backpack communication system, flashing, building, and setup. There is also a section on how to bind your Backpacks which we be required when using these precompiled binary releases... Dont worry, its painless :smiley:

    https://github.com/ExpressLRS/Backpack/wiki https://github.com/ExpressLRS/Backpack/wiki#binding

    ExpressLRS V2 - VTx Administrator Demo - https://youtu.be/nlhu4gW8kkw

    ExpressLRS V2 - RX5808 Backpack Demo - https://youtu.be/IEEZkeIJ1OU

    Source code(tar.gz)
    Source code(zip)
    Rapidfire_ESP01F_Backpack.bin(356.26 KB)
    Rapidfire_ESP_RX_Backpack.bin(356.15 KB)
    RX5808_ESP_RX_Backpack.bin(356.21 KB)
    Tx_Backpack.bin(355.32 KB)
Owner
ExpressLRS
ExpressLRS
ESP32 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps

EMS-ESP is an open-source firmware for the Espressif ESP8266 and ESP32 microcontroller that communicates with EMS (Energy Management System) based equipment from manufacturers like Bosch, Buderus, Nefit, Junkers, Worcester and Sieger.

EMS-ESP 163 Aug 3, 2022
Flashrom/serprog compatible firmware for the Raspberry Pi Pico

pico-serprog This is a very basic flashrom/serprog compatible SPI flash reader/writer for the Raspberry Pi Pico. It does not require a custom version

stacksmashing 26 Aug 10, 2022
Arduino/ESP32 firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

Arduino/ESP32 firmware for DIY haptic gloves. Officially compatible with LucidVR gloves.

null 1.4k Aug 8, 2022
Single-header, ranges-compatible generator type built on C++20 coroutines

generator Single-header, ranges-compatible generator type built with C++20 coroutines. A generator allows implementing sequence producers which are te

Sy Brand 28 Jul 23, 2022
This is the Arduino® compatible port of the AIfES machine learning framework, developed and maintained by Fraunhofer Institute for Microelectronic Circuits and Systems.

AIfES for Arduino® AIfES (Artificial Intelligence for Embedded Systems) is a platform-independent and standalone AI software framework optimized for e

null 143 Aug 6, 2022
ESP32 S2 C++ host library compatible with arduino, esp-idf.

Info I would like to announce USB host library for esp32 S2 compatible with arduino, esp-idf and PIO (when pio will be updated to most recent esp-idf)

null 15 Jun 2, 2022
Arduino-compatible development platform whose primary function is a clock

MakeTime Arduino-compatible development platform whose primary function is a clock Description MakeTime is a clock that uses a ring of 24 RGB LEDs to

null 3 Oct 11, 2021
Adafruit GFX compatible arduino library for using cat thermal printers with the ESP32

CatGFX This library offers a Adafruit GFX "driver" for ESP32 and the cheap cat (or rabbit?) BLE thermal printers like this one: For usage information

Claus Näveke 2 Jul 15, 2022
A simple example for 'Arduino' compatible boards to interface with I2C to the MPU-6050, a 6-axis micro-electromechanical IC

Arduino-MPU-6050 A simple example for 'Arduino' compatible boards to interface with I2C to the MPU-6050, a 6-axis micro-electromechanical IC ==About==

Ivan 1 Oct 19, 2021
Header-only ECMAScript (JavaScript) compatible regular expression engine

SRELL (std::regex-like library) is a regular expression template library for C++ and has native support for UTF-8, UTF-16, and UTF-32. This is up-to-d

Dmitry Atamanov 4 Mar 11, 2022
MinIO C++ Client SDK for Amazon S3 Compatible Cloud Storage

The MinIO C++ Client SDK provides simple APIs to access any Amazon S3 compatible object storage.

Multi-Cloud Object Storage 30 Aug 9, 2022
ROS compatible tool to generate Allan Deviation plots

Allan Variance ROS ROS package which loads a rosbag of IMU data and computes Allan Variance parameters The purpose of this tool is to read a long sequ

Oxford Dynamic Robot Systems Group 139 Aug 4, 2022
Azure Key Vault and Managed HSM Engine, compatible with OpenSSL

Introduction The Azure Key Vault and Managed HSM Engine allows OpenSSL-based applications to use RSA/EC private keys protected by Azure Key Vault and

Microsoft 8 Jul 27, 2022
agent-less and lightweight communication library compatible with rclcpp for embedded devices

mros2 mros2 (formally mROS 2) realizes an agent-less and lightweight runtime environment compatible with ROS 2 for embedded devices. It consists of ba

null 99 Jul 26, 2022
🎨 A secure boot compatible in-memory UxTheme patcher

SecureUxTheme About SecureUxTheme is a software that removes signature verification of styles from Windows. Features No system file modifications No d

null 1.3k Aug 7, 2022
A free and open-source cross-platform application to control your Philips hue compatible lights💡

?? OpenHue ?? A cross platform application to control your Philips hue compatible lights. licensed under the gpl 3.0 license. Currently in super early

BOB450 3 Dec 19, 2021
Arnold-compatible implementation of Pixar's bump-to-roughness workflow

Arnold-compatible implementation of Pixar's bump-to-roughness workflow Read first https://rmanwiki.pixar.com/display/REN24/PxrBumpRoughness https://gr

Zeno Pelgrims 6 Jul 11, 2022
WIP / DIN-rail compatible WiFi security camera with additional features (doorbell detection, magnetic / reed switch door & PIR sensor...) that sends you alerts on Telegram if someone unauthorised breaks into your house.

WIP / DIN-rail compatible WiFi security camera with additional features (doorbell detection, magnetic / reed switch door & PIR sensor...) that sends you alerts on Telegram if someone unauthorised breaks into your house.

François Leparoux 2 Dec 18, 2021