C-Fly Faith/JJRC X12/EX4 Changing parameters and/or connecting Mission Planner, etc

Hi all. The Eachine EX4 is apparently a rebranded C-Fly Faith/JJRC X12. This uses the same C-Fly Android app as the JJRC X9/C-Fly Dream (loaded with ArduCopter parameters). The JJRC X12/EX4 is apparently very similar to the Dream/X9 but with a 3axis gimbal and longer battery life.

I’ve been asked if there’s a way to connect Mission Planner/QGroundControl to alter parameters, etc. on this unit. However, this unit does not have an easily accessible standard USB port. It does have a four pin connector hidden under the label in the battery compartment, a very tiny Molex. Even with the matching male connector it’s very difficult to work with given the extremely small size of the pins, and cannot be accessed with the battery in place.

Supposedly (based on discussions I’ve seen elsewhere) it is a USB port. And preliminary tests (difficult again due to the small size of the connector) suggest that it indeed may be a USB port given the interpin values measured. However, even if the connector was easier to deal with, I wouldn’t want to risk hooking up USB and blowing it out unless I was 100% sure it’s a USB port. It may be easier to access internally, but the unit hasn’t been disassembled at this time.

Since the Wi-Fi interface on the unit is not using encryption (!) it is possible to connect directly to the Wi-Fi AP on the unit and nmap it, but it may be using nonstandard MAVLink functions. I don’t know if Mission Planner access or other ways to change parameters are practical through this route. The unit seems to routinely power itself down after some number of minutes sitting idle.

Anyway, the bottom line is that any suggestions on how to alter the unit’s parameters and/or ideally connect to Mission Planner, etc. would be greatly appreciated. If I absolutely have to disassemble it I’m sure the owner will permit it, but I’d prefer to avoid this if possible. Thanks very much!

Updating that I’ve made considerable progress with the Faith/EX4/X12 – with a major proviso. That connector indeed turned out to be USB, and I’ve successfully attached it to several systems. On Linux it identifies correctly in the system logs as a PX4, and the appropriate /dev/ttyACM0 port is created. Other systems also recognize the device when plugged in. That’s the good news.

That bad news is that I’ve so far been unable to actually communicate from Mission Planner or QGC, despite trying every trick I know. The port will connect, but there’s apparently no heartbeat being detected and everything eventually times out. So that’s the current status. As before, all ideas appreciated! Thanks.

Success! Worked on this some more and now have the Faith/X12/EX4 connecting successfully with both Mission Planner and QGroundControl. Let me know if you want any details. Thanks.

Hi TT300,
I also tried the same thing, but only succeeded with the video part on my Eachine EX4 with Qground control: rtsp://hy_syma:ls155633@

How did you connect with MAVlink?

I’m connected through an internal port. I have plenty of photos. I’ll write this up in some detail after I finish installing an external connector, which I may be able to install today.

I am trying to connect trough wifi, the video transmission works with the link posted previously. The Mavlink does not, but I hope, that with your findings and settings we can find the solution.

I’m not incredibly optimistic about Mavlink access via Wi-Fi – my test results are like other folks – video only. The “standard” ports do not seem to behave in “standard ways” or simply are not present. There are other ports open whose behavior is unknown. We shall see. However, it appears that wired connections will do fine. Just determined that while the unit normally powers down automatically after something like 7 minutes of idle, when connected by USB to a PC it doesn’t self-power down. You can do most Mavlink functions with the unit turned off and no battery, but for some Mavlink functions the battery needs to be in and the unit fully powered on. By the way, the base version of the (presumably heavily modified) ArduCopter firmware appears to be 3.4.0dev.

Of course it may be technically possible to change parameters on the PX4 to enable Wi-Fi Mavlink access (though care would need to be taken to avoid messing up the unit’s core functionality, remote relay functions, etc.) But I’m not optimistic that this kind of Wi-Fi access is possible without first having the USB wired access to change those parameters. Again though, it’s really too early to know.

What I made so far, is to install a packet capture software on my android phone and listen to the conversation with the C-Fly app. It was easy to identify the video link rtsp on tcp port 19200.

1.) On udp port 10005, I was able to read a message which contained words like “FS_BATT_VOLTAGE” and “TWO_BATT_VOLTAGE”.

2.) On tcp port 4646 from the drone: { “CMD”: 0, “PARAM”: { “FirmWare”: “vA.7.19101201”, “platform”: “A7-4K-1463-2-16-1-2-00100009-1-101-1-18-106-1-2-1”, “pinp_X”: 60, “pinp_Y”: 6, “region”: -1, “cur_csi”: 0, “card_status”: 0, “freeSpace”: 0, “usedSpace”: 0, “totalSpace”: 0, “ssid”: “Drone-9a1327”, “band_status”: 0, “band_ip”: “NULL” }, “RESULT”: 0 }

3.) On tcp port 10002 and 10003 seems to be an TLS encrypted communication, but I am not sure.

What did you configure on MP and QG to communicate trough the USB port?

On Linux it’s a normal /dev/ttyACM0 port, and MP connects at the usual 115200. QGC connects automatically to that same port on startup. A few notes:

I haven’t checked yet to see if it’s possible to create DATAFLASH logs.

If a battery is installed when the USB is plugged in, the unit will power itself on automatically. If no battery is installed, there is still access to the PX4 in a typical matter. As I mentioned, when USB is plugged in and connected to MP, etc., the unit no longer automatically powers off after 6-7 minutes.

The Molex connector (which is under the label at the bottom of the battery compartment) is extremely small, low profile, and fragile. It’s a female housing with four tiny male pins. Molex considers this part to be obsolete, and while some sources will still claim to carry it and the matching male housing and pins, in practice it’s out of stock for most. It is not practical to repeatedly insert and remove the matching part without risking destroying the side attached to the PC board. The part is really designed for a “permanent” internal connection where it would typically only be plugged in once and left plugged in. There is also literally no room to install another connector inside that battery compartment, the tolerances are very tight. In fact, even extremely thin wires I used for initial testing made it difficult to insert and remove the battery and those wires could only be used once due to damage from the battery housing. The male housing pins themselves are also extremely tiny, and very fragile even when crimped correctly. I finally gave up on using them, and as you’ll see when I upload photos, chose to use thin solid conductor wires inserted directly through the male housing to contact the pins on the female side. Then the four conductors are brought directly out the side of the unit via a tiny channel that I cut and an appropriate hole. There turns out to be just barely enough room down there to do this without interfering with the battery. The conductors are held in place in that location using some CA glue.

Some photos!

Viewing the connector with the open end on the right as in the above photo, the signals are:

----- +5
----- DATA+
----- DATA-
----- GND

The connector you need to mate with the connector in the unit is designated: MOLEX 0511460400. As I mentioned this typically comes without the crimp pins (though there are exceptions to this). The crimp pins for this connector are designated: MOLEX 0506418141. However, also as mentioned above, I ultimately decided not to use them due to their fragility.

If you want to avoid obtaining the mating connector, an alternative would be to connect to the four solder points just to the left of the connector installed on the board. However, I did not consider this to be an appealing prospect for a variety of fairly obvious reasons.

And here’s how the external USB connector is set up for now. Yeah, I know it’s not pretty, but it’s functional, and doesn’t interfere with operations. Weight is only a few grams.

FYI, here’s the default parameter dump from the EX4.

params-ex4-org-3-14-20.param (8.1 KB)

Hi there i’m so happy to see these everything hardware things i have done with my JJRC X9 new motherboard but i was able to make it function only with the X9P firmeware coz thats the only one available in thenet. Im using the usb DFU and STlink for programming. Please share your firmware. Mine is / new board (FLIGHT-DF801-v3.9-2018.11.26�Boot-Dream-v%d.%d.%d�FLIGHT-DF801-v3.9-2018.11.26 (36ea946c)�PX4: c4dfb9bf NuttX: 258f2257�Frame: QUAD) https://www.mediafire.com/file/jr18jratec1lavi/RD_FR_STLINK_X1000000.bin/file https://www.mediafire.com/file/mggr4nwvadqbnnl/x12_2_full.param/file

Hope we can break this thing. Also this https://www.mediafire.com/file/lt0djc7ltt0v2o4/CFLY-UPDATE.zip/file helps me whenever i messed up big time it will restore RC control, etc.

I’m not altering the firmware at this time. It’s obviously a custom build and I don’t want to damage existing functionality. My primary interest has been the ability to alter ArduCopter parameters, etc. via Mission Planner/QGC.

Yes we are not doing that of course if we can be able to backup firmware it would be a good practice since it’s prone to be corrupted and there is no support we are all alone. Thanks!

Hi all does anyone able to backup there firmware already? I’m stocked to X9 which have entirely different hardwares. Please if any one can share’ thank you so much!