FrSky CPPM firmware update with Arduino

I have an FrSky D8R-II Plus receiver on my “SG Adventure” quad. I read on the DIY Drones site, that it is possible to update this receiver with the firmware for the FrSky D8R-XP, so I could use with CPPM signal. With CPPM you only use one wire for all the channels and not separate wires for every channel.

You can easily buy this FrSky Update Cable or you can save a bit money and time by updating/flashing the receiver with Arduino, which has an FTDI chip on board. I have an Arduino Uno, but my revision of the board doesn’t have an FTDI chip. So I decided to simply use my actual flight controller – the Multiwii Megapirate AIO board. You can use any Arduino based board with FTDI chip.


First you need to download the 27ms CPPM firmware from the FrSky website. This firmware is actually for the D8R-XP receiver as mentioned, but it works with the D8R-II Plus too. Please keep in mind, that is officially not supported for the D8R-II Plus and I am not responsible for any damages on your hardware by doing this too. If you agree keep reading 🙂

Download the official FTDI Prog.  – EEPROM Programming Utility and install it on your computer.

There is a jumper on the side of your receiver. Take it out and place the jumper on the signal pins for channel 7 and 8, so these are bridged. This will then take the receiver into update mode.

Then connect the TX, RX and GND pins from your Arduino board to the TX, RX and GND pins on the side of your D8R-II Plus receiver. Important: Do not reverse the TX and RX as usual by Arduino. Connect TX to TX and RX to RX. To power your receiver: you can use a 5V battery or connect it as usual to the flight controller.


To use the Arduino board for this we only need the FTDI chip, so we will suppress the Atmega chip by a constant press on the reset button. After the reset button is pressed, connect your board to the USB port of your computer. It could possibly install some drivers, so give it some time. Keep pressing the reset button 🙂

Open the FTDI Prog. Scan for FTDI Devices. Then invert the TX and RX as shown on the screenshots below and click on the flash icon. In the new opened window click “Program”. (Tipp: Remember to undone this procedure after flashing your receiver.)


Keep pressing the reset button 🙂 Now go to the folder, where you downloaded the firmware file from the FrSky website, extract it and start the .exe file.


Chose the right COM port in the dropdown menu, chose the firmware file from the same folder by clicking on “File”. If everything is fine, you should see the UID number in the bottom of window. If so, just click “Download” to upload the firmware. (For more info about these last steps, there is a pdf-manual in the folder, where the .exe file is. At the end you should have a working CPPM FrSky D8R-II Plus receiver. Now you can release the reset button of your Arduino or Multiwii Megapirate AIO board. I hope I have helped you, save some time and money with this method.

p.s. To use your receiver in CPPM mode after flashing, place the jumper on signal pins CH3 and CH4, so these are bridged. The CPPM signal will be on CH1 pin.

Update 12.08.2014: I updated the same way my new FrSky D4R-II receiver. It is smaller than the D8R-II Plus, weights only 5 gram and with the CPPM 27ms firmware has 8 Channels and the exact same functionality as the D8R-II Plus. Check how my SG Adventure carbon frame look now with the Pixhawk and the D4R-II receiver here.

Leave a comment ?


  1. Sergey Kolpakov

    thank you for the idea, it helps me a lot. now my d4r-ii is successfully flashed.

    maybe it’s useful to ensure that existing program in this “ftdi” arduino makes no accidental writes to serial port pins.

    and yes, d4r-ii is really great for multicopter in cppm mode.

  2. Sergey Kolpakov

    ah sorry. i did not noticed that “keep pressing the reset button” ))

    instead i wrote dummy sketch with pinMode(0,INPUT); pinMode(1, INPUT); and disconnect auto-reset jumper on my arduino (of course, your way is more simple)

  3. PPM-сигнал в приёмниках FRSky | Not A Snowflake - pingback on September 12, 2014 at 14:22
  4. Do you have an idea what the sketch is? I want to try the software way, because I am getting some problem with “constant press reset” way. After I successfully invert the signal using ft_prog. I can’t read the UID of my d4r-ii.

    • No, I don’t know what the sketch is. But I think on an Arduino Nano you don’t need to invert the signal in ft_prog. As said connect the “Reset-Pin” and “Ground-Pin” on the board with jumper or cable and so the Atmega is bypassed.

  5. Do you think without inverting the tx/rx signal using ft_prog can still read the UID of the d4r-ii? If that’s the case the FTDI on my arduino nano is just a normal ftdi. I think the frsky protocols uses rs232 as stated by sandro benigno of diydrones.

    Just now, I’ve tried not to invert the tx/rx and put a jumper wire on pin RST and GND. But still frsky updater can’t read the UID.

    • Try to connect the cables for TX and RX on your Arduino to the FrSky inverted. Im not really sure how I did it with the Nano and I cant try it at moment, maybe in few days. As said, all seems to be fine. Just try connecting the cables TX to RX, Rx to TX now.

      • I will do it now since this flashing dr4-ii without stand alone FTDI gives me a lot of headache.

        I successfully read the UID on my very first attempt, the downloading of the firmware to the d4r-ii went okay but it stops around 95%. So I’ve waited around 5 mins if it will still progress but nothings happened. So I remove the d4r-ii from the Arduino and tried to insert normal (signal)(+)(-) from naze32. And after that, I can’t no longer see any led light activity on my d4r-II. 🙁 If I only know I shouldn’t have update it since 17ms was okay to me before. Right now, my frsky receiver is not working anymore.

  6. Well, if you connected it and read the UID and started the falshing it was all the right way! Stopping at 95% could be caused by faulty connection, if one of the cables was shaky. Ooh yeah by connecting it to the Naze32: is the Naze32 connected to a battery or only to the PC with USB-cable?

  7. I have an Arduino Nano, but it doesn’t have an FTDI chip… it has the ch340 chip. Can I still use this to flash a D4R-II? I actually want to go back from the 27ms FW to 18s, for the better resolution for only 6 channels.


Trackbacks and Pingbacks: