Introducing the Issue and the solution:
We've talked about FRSky's CPPM signal on this other post that compares it with a standard PPM signal. The issue is that originally FRSky's CPPM runs at 18 milliseconds. That short period has no space enough for 8 channels plus a proper sync pulse.
After carrying that issue to FRSKY, Jani came up with two FRSky's beta firmwares running CPPM at a 27 milliseconds period. We did test it at the DIYDrones Dev Team and it seems to work pretty fine.
Some guys at that old post were expressing their worries about the 37Hz update speed from the new custom firmware. However, keep in mind that probably you will not see any difference. Mainly if you aren't a crazily fast acrobatic pilot. Furthermore, our focus here is on drones. A good example is the Mission Planner that uses only 20Hz for joystick control.
Well, now those beta firmwares became official: There are custom firmwares for the receivers D8R-XP and D4R-II on their BetaTestSection. The links are now on FRSKY's download area. (Thanks Vladmir for the heads up).
About the Updating process:
Inside of each update zip file there is a PDF explaining how to update your receiver. I'll not describe it here because it's pointless.
Reading their manual you'll see that an FRSky USB cable is necessary. That adapter is a TTL level "USB to RS232" one.
But what's the difference from that adapter and a common "USB to Serial TTL" one? There is just a single difference: the signal is inverted. FRSky's adapter uses the RS232 logic but not an usual RS232 high voltage level that would vary from -25V to +25V. Though the receiver's serial input has internally not just an inverter but also has a RS232-to-TTL voltage level shifter as shown on the diagram bellow (from FRSky's Two Way System Manual):
How to use an FTDI cable:
When I received the first beta firmware some improvisation was needed because I had no the required FRSky's adapter.
I've used my FTDI 3.3V cable with a little trick and it did work perfectly! All I did was configuring the cable to work with inverted input and output signals. ;)
Here goes how you can make that too (at your own risk):
First you need this powerful tool who did the magic: The "FT_PROG" from FTDI Utilities. It runs from a folder and doesn't need to be installed.
The first thing you'll gonna do is attach your FTDI cable and select "Scan and Parse" from "Devices" menu.
After finding the adapter the screen will be like this:
Now you'll navigate at the "Device Tree" selecting the "Hardware Specific" node for checking the proper options that will invert TXD and RXD (output and input of FTDI cable).
Now click on the "flash icon" as shown below:
On the programming screen click on the button "Program" and watch the status bar until it finish.
That's it! After the steps above you have a TTL inverted FTDI cable.
It's reversible, of course. You just need to follow the same steps but this time deselecting the inverting check-boxes.
You'll just need to use some jumper cables. The receiver can be powered by the 5V output from the FTDI cable.
Remember of crossing the connection between your FTDI cable and the receiver input:
FTDI_TXD (orange) goes on the Receiver_RXD.
FTDI_RXD (yellow) goes on the Receiver_TXD.
If you'll flash your receiver... good look! =)
Please, add comments telling us about your experience on it.
Comments
Thanks Guys. FYI. I used the Sparkfun FTDI - https://www.sparkfun.com/products/9115
This has both 5V and 3.3V, I saw Sandro's FTDI is 3.3V so tried the 3.3V setting. Without a 6V BEC it worked.
I was getting the UID # every time but perhaps the error had something to do with the fact that I was using 6V BEC instead of 3.3V or 5V BEC?
Great work Cameron.... sorry I wasn't helpful.
The interesting part is that the FRSKY's circuitry shown at the post is supposed to make it work even with more than 5V... Anyway that's I didn't ensure you about it. Probably there are differences between the receivers so that one isn't true for all them.
Hi Cameron, congratulations! I hope other guys who were having problems would get it working with your tip.
If it work with more people I'll add a note on the end of the post. Cheers! ;)
It Worked! My FTDI has both 5V and 3.3V for TX & RX signal(Via jumper solder pad). 3.3V Worked. Additionally I used Ground and 3.3V Power from the FTDI in lieu of an external BEC(Didn't work at first). Thanks!![3692644828?profile=original](https://storage.ning.com/topology/rest/1.0/file/get/3692644828?profile=original)
Hi Cameron & Sandro.
I can't comment on the voltage levels for the TX/RX pins, but it sounds like communication is working in both directions for you.
If the TX pin is disconnected you won't get the ID in the software. If you disconnect the RX pin only, you will get the ID but when you go to upload the firmware you won't get past 0%. Getting the UID and uploading to 2% seems to indicate that communication is working.
Hi Cameron.... I cannot ensure because I don't know the receiver circuitry. But I don't think that would be the problem.
If that were the problem so how the cable does communicate with the RX and bring up with that ID number?
Sandro, I was reading that your cable outputs 3.3V for TxO/RxI, and 5V for Power. Do you think the flash issue could be caused from an FTDI cable that outputs +5V for TxO/RxI?
I found the how-to instructions in the readme file: (i.e. For D4R-II it's required to jump Ch. 1 + 2 signal, and power to Ch. 3 or 4).
However I also cannot get past 2%. On the first try it would not go past 26%, 2% thereafter. Instead of using an external BEC I'm going to try wiring +5V and Ground solely from the FTDI converter.
Thanks Much. I wasn't sure if it was as simple as connecting the inverted TX/RX and Power(One way or the other).
I guess the "AD2" may be for other Telemetry stuff.
That makes sense. Thanks for the help.