JHEMCU GSF405A - a 3.3g 1-2S F405 AIO FC w/5A ESCs, BMP280, BB, and 2.4G ELRS!

I found a post about this issue in intoFPV

V-22 has mentioned
“2. To flash ELRS via Passthrough, you may need to put the receiver into bootloader mode. For some reason, this requires holding down both buttons on the FC when you plug in USB. A pair of alligator clips comes in handy. After you do that, the correct target to flash is DIY_2400_RX_ESP8285_SX1280_via_BetaflightPassthrough.”

I think i maybe go into this mode unintentionally

You can read through the thread to have the whole picture of the story


1 Like

holding 2 buttons when plugging in USB is not right since FC will be in DFU mode thus no COM port will be available for elrs flashing

It is showing you the error, you don’t have SerialRX set to CRSF. Also you want to use the DIY 2400 RX ESP8285 SX1280 target as cyrilhl mentioned below.

Refer to the ExpressLRS website for full instructions on wiring, FC configuration, and flashing: Configuring FC - ExpressLRS

It looks like you are trying to build a very old version of the target. Due to platformio updates, most of the old targets won’t build anymore. You should be selecting 2.5.1 or 3.0.0-RC2. Also, you almost certainly do not want NO SYNC ON ARM enabled.

You would think so, but for some reason the ESP32 seems to win. I have several of these boards now, and their behavior is all slightly different (to be expected with JHEMCU). One board could only be flashed via WiFi when it was sitting on top of my WiFi AP, on another board the WiFi is completely dead. One board I was able to put into bootloader mode just by holding down the ELRS RX button, on another board I needed to hold down both buttons to put the receiver into bootloader mode to be able to successfully flash via WiFi. And some boards do not have loading caps near the crystal and seem to be within spec, while other boards have loading caps that must be removed for the receiver to connect at all (see: Crystal Oscillator (XO) Frequency Error · ExpressLRS/ExpressLRS Wiki · GitHub).

Also, @marco3dr recently discovered a way to flash ELRS via passthrough on Ardupilot:

I do not remember where I had read it in the wiki but to flash a rx R9 Mini with Ardupilot in passthrough it was necessary to set the SERIAL_PROTOCOL to -1 of the UART related to the rx.
After trying a billion times without ever being able to flash the rx in that way I found out how it always works.
Leave the serial protocol at 23 (CRFS) and the receiver must be binded and connected to the tx module.
Then carry out the passthrough using the appropriate parameter in Ardupilot and the rx will flash without any problem.
If the rx is not connected to the tx module the procedure will not work, it cannot find the rx bootloader, don’t ask me why.
but so it always works here.
Tested with Matek H743-Slim and Pixhaek 2.4.8.

Link to join the ELRS Discord if you do not have access to the above:

This was also mentioned early on in the thread here: JHEMCU GSF405A - a 3.3g 1-2S F405 AIO FC w/5A ESCs, BMP280, BB, and 2.4G ELRS! - #17 by CrashTestPilot

To flash the rx via Ardupilot passthrough follow this steps:

  1. set the SERIAL_PASSTIMO parameter to 0 so you don’t have any timeout and reboot the board
  2. set the SERIAL_PASS2 on the serial where the rx is connected
  3. don’t change the serial protocol on that port, leave it at 23
  4. imperative: keep the receiver connected to the module, it must be gone and connected or the procedure will not work, so if it is the first time that the rx receives the firmware it will not work, in that case it uses a USB-TTL board.

Pay attention to this problem, which is present and verified by me several times.
The R9 Mini with the ELRS V3-RC2 occasionally crashes, randomly.
With other receivers based on ESP8285 I don’t have this problem so pay attention to the rx based on STM32 MCU.
It is not yet understood if it is a problem in the code but surely with the FrSky firmware it is stable, so something that haunts the receiver is in the ELRS firmware.

1 Like

I finally figured it out. To flash firmware on this board using ELRS configurator via uart is to connect the USB-TTL TX to the TX1, USB-TTL RX to RX1 to the board (this is because the silkscreen for TX1 and RX1 shows the FC side UART which is the opposite to the receiver side, since we want to talk to the receiver, we need to wire it accordingly.) Of course, we will need the USB-TTL ground to the FC ground and USB-TTL 5V to the FC 5v.

Hold down ONLY the receiver boot button and plug in the USB-TTL and you can select the correct port in the ELRS configurator and start the firmware flashing.

According to JHEMCU, the board with the BMI imu should support WiFi firmware flashing. The one I am working with is the MPU imu version so unfortunately it will not support that.

you can try my suggested method by flashing through UART :slight_smile:

Hi, thank you for your information!
I’ll get a USB-TTL and try it again :smiling_face_with_three_hearts:

Also, must make sure that when holding down the receiver boot button and plug in the USB. the receiver LED needs to be solid green which indicates that it is in boot mode. If it is still slowling blinking and then fast blinking, this means it did not enter boot mode successfully. It is likely that you did not press down the button correctly or the boot button is spoiled. If it is the latter case, you can use a tweezer to bridge both sides (4 pads).

So I also was just wrestling with this, my solution turned out a little weird:

  1. Set serial to -1
  2. Reboot normally
  3. Connect ftdi to onboard pads
  4. Open betaflight and select the serial ftdi and not connect.
  5. Use the ELRS configurator to flash using “betaflight pass through”
  6. Profit.