Jjrc X9 PX4 FMU v4

One thing that I really like of this copter is that it uses only one 802.11ac link for all communication purposes: RC, FPV video and telemetry. I would like to have the same thing on my DIY copters instead of 433MHz for telemetry + 2.4GHz for RC + 5.8GHz for video.

It could be an interesting DIY project to replicate the same comms stuff of this c-fly dream for DIY copters.

1 Like

Hi. Has anyone figured out how to flash the c-fly the easy way? I am interested in the subject since I have a c-fly and was hoping to update the firmware.

1 Like

Hello, I also would be interested, because I have a c-fly who dont boot up again. But I think the answer for the easy way is already given in post 19, meaning there is no real “easy way”

I’ve ordered one twice through aliexpress and each time the order hasn’t arrived. Do you have a good link?

I didn’t try but I see that banggood and gearbest sell the c-fly and jjrc x9

Thanks: just a bit wary after two failed attempts. I was hoping someone could share a proven place to purchase.



4th attempt, but it arrived. (Gearbest got through). I can have a look at the innards now :slight_smile:

1 Like

Hi james is one year that my X9 is stuck… now i have the ST-link v2 , please can you tell me the procedure to connect the X9 MB, the program to use the ST-Link… Thanks

I didn’t use st-link, just USB.
Uploading firmware “works”, but haven’t managed to get a running firmware build. Spent a fair bit of time trying to reverse engineer/guess a hwdef for it, but no success yet. I won’t be able to look at it for at least another two weeks as I’m traveling.

I’ve been playing a bit with the JJRC X9 here. I built and loaded ArduPilot master on it successfully, but haven’t yet got it to find the baro or IMU.
I added some code to put patterns of pulses on the likely pins between the main MCU and the IMU connector then probed the IMU connector with my Saleae. I didn’t find the pins yet, which makes me wonder if the IMU may be connected to the F103 (that would be quite strange, but possible).
I’ll expand my pin probe list to try and find any pins on the IMU connector.
I’ve also added a script to make it easy to create an apj firmware file from the bin files that others have added above:

Using that I tried loading those firmwares, and while they load and boot none of them bring up the IMU. So I think there is an IMU difference between the JJRC and the C-Dream.
Cheers, Tridge

1 Like

I now have IMU and baro working. It is a DPS280 baro and ICM20689 IMU, both on SPI2.
I’ve started a branch here with a hwdef.dat:

next step is IMU orientation, then start on motors, mag etc


I’ve found a mag (an IST8310 on I2C) and GPS (u-blox M8)
I’ve updated the branch above

1 Like

A bit more progress. I now have definitely working:

  • GPS
  • MAG
  • IMU

I’ve also found the SST25VF010A 1MBit serial flash on SPI1 (CS is on PA8). We’ll need a new driver for that one for param storage.
I think I’ve mapped out the motor PWM pins, but I can’t confirm as I can’t find the battery to power the motors.
I also think PB10/PB11 may be I2C2 for LED control.
Current pinout is here:

In case anyone wants to flash it to their copter, a build is here:

Key remaining items:

  • driver for serial flash
  • find uart (presumably) to talk to the atheros wifi board
  • confirm motor control
  • work out RC method (presumably UDP over WiFi?)
  • find gimbal (maybe UART to F103?)
1 Like

Awesome work @tridge
Can you please tell us your impression about quality and reliability of X9 components and parts?

I haven’t flown it, but James and I were pleasantly surprised at the quality of the construction. It has a good choice of sensors and the IMU has what looks to be a sensibly designed isolation system. They have clearly put quite a lot of effort into the design.
The one I’m hacking on is the one James bought. I’ve ordered another one as well so I can try flying one which hasn’t been torn to pieces.


oh, there is one really puzzling thing about the IMU. When we opened up the IMU sub-board we could clearly see a chip labelled 6050, which we assumed meant a Invensense 6050, which is an older I2C only IMU. That disappointed us as it would mean low sample rates.
Now it turns out it has a ICM20689 IMU on SPI which is a much more recent sensor and as it is on SPI it can be sampled at high rates. So what was that 6050 chip we saw? Are there in fact two IMUs on the sub-board? Or is the etching wrong on the IMU?
If it is two IMUs then the 6050 couldn’t be connected, as it is I2C only (unlike the 6000 which can do both SPI and I2C), and there aren’t enough pins unaccounted for on the ribbon cable to the IMU sub-board to have an I2C bus. So it would mean they populated an IMU which isn’t used.
James, I think you took a photo of the 6050 when we had it under the magnifying lamp. Can you post that photo?

1 Like

Maybe 2nd IMU for the gimbal?

1 Like

it would need to be on the gimbal, and it would also need to be connected to the MCU …

I said so thinking at storm32 that has an IMU on the camera and an IMU on the board fixed to the frame

But If It Is not connected to MCU …

1 Like