uSKY — the world’s smallest & lightest FrSky compatible full telemetry receiver

uSKY prototypeA year ago i started to write my own opensource firmware for the VD5M receiver from FrSky. The stock firmware had no failsafe handling and I wanted to learn something about the 8051 CPU architecture. Since then i ported the code to the D4R-ii and added a lot of features. My code can output CPPM or SBUS and supports hub telemetry forwarding and much more. Please note that i am not affiliated with FrSky, this is just my personal hobby project and I do it for learning and for fun.

When i started to build my TinyWhoop there was no lightweight FrSky compatible RX on the market. This is why i started to build uSKY. My version of the world’s smallest FrSky compatible RX weights only 0.37g and measures 11.2mm x 8.51mm (the exact weight will be updated once i receive the 0.8mm PCBs). Nevertheless this RX has full analog and hub telemetry support and digital SBUS output. Of course it runs my opensource firmware and can be used with all your FrSky gear.

uSKY - assembled lot of 4


usky_pcb_layoutThe PCB was designed to be as small as possible and can be soldered by hand. However the tightly packed 0402 sized components require some experience with soldering SMD components. All you need for soldering is a small tip soldering iron, lots of flux and a steady hand. There is no need for a reflow oven, the ground pad of the cc2510 transceiver will be soldered from the bottom through a big via. This is not meant for mass production, it’s a hack to make it solder able by the experienced hobbyist.

Once i finished my testing of the current prototype i will post a link to my project on OSH-Park here. Make sure to order the boards in 0.8mm thickness to save some weight! The kicad design files will be released under an open hardware license soon. I just need further testing to make sure there is no design error on the hardware side.

The parts

Please refer to this google sheet for a list of the components I used for building the uSKY receiver. It includes some example part numbers for farnell and mouser. Please make sure to use high-Q high frequency parts where noted int this list.

The Design files

The design files are released under the CERN open hardware license v1.2. Before using the design files for commercial projects please make sure that you read and understand this license! You can use the files for your projects, just make sure to give proper credit (by e.g. linking to this page) and release all modifications you do to this design or work derivated from this under the same license.

You can find the design in the kicad file format on my github repository here. If you want to skip the hassle of rendering the gerber board files on your own you can simply skip this step and checkout and order the part from OSHPark:

OSHPark offers a really great quality for a ridiculous low price (it is 0,70$ for three copies!). Make sure to order the 0.8mm version in order to save some weight.

Component placement

Please refer to the following to pictures for component placing for soldering:


The ground pad of the CC2510 has to be soldered through the big via. Apply lots of flux and use the soldering iron to solder it from the other side. This is a hack to make this board solderable by the average hobbyist and this is NOT recommended for any serious designs πŸ˜‰


The uSKY RX runs my opensource OpenSky firmware. The master branch has support for building for this target (set TARGET=USKY).

Building & Flashing

I will add a tutorial the next days. For now stick to the guide how to flash the vd5m. Use TARGET=USKY for building the source and connect the CLK, DATA, RESET, GND, and VCC lines in the same way as on the vd5m.


Please refer to my disclaimer that applies to all projects presented on this blog. Make sure that you do not violate any transmission laws in your country.




33 thoughts on “uSKY — the world’s smallest & lightest FrSky compatible full telemetry receiver

  1. Chris

    Hi Simon,

    Is it at all possible to use other variants of the CC2510 chip? Such as the CC2510F16RSPR or CC2510F32RSPR?

  2. Jakob Flodman

    Hi, First of all thanks you for the opportunity to test your design, great work.
    Have mounted 2st usky and programmed them. Seems to work, at least partly, but I’m now working on the bind procedure. From what I understand, I have to short the data to ground to enter binding mode.Is there other ways to do this and can I expect some response on LEDs? For now I have solid red (backside).
    Device information:

    Debug status:
    [ ] PCON_IDLE

    Debug config:
    [ ] TIMERS_OFF
    [ ] DMA_PAUSE

    pi@raspberrypi:/boot/Python/WiringPi-Python $ sudo python ../
    Hello from ccraspberry
    Using CCDebugger on port ccraspberry
    detected a cc2510f16

    Chip information:
    Chip ID : 0x8104
    Flash size : 16 Kb
    SRAM size : 2 Kb
    USB : No

    1. fishpepper Post author

      Do you get blinking LEDs on powerup with no shorted pads?

      1. Jakob

        Have two cards. One one sek. on green(toplayer), a shorter on red then short faster on green.
        The other the same but solid red after.
        Will try debugport to see if I can get some more info.

  3. ldr1

    I just opened kicad project, kicad_pcb file cannot be opened.
    Which version of kicad are you using?

  4. Cyril

    I have finished working on PCB soldering. When I connect the lines to cc-debugger(CLK-3, DATA-4, RESET-7, GND-1, 3.3-9) and ready to flash. I found that no matter how I press the REST button, the LED on the debugger are always red.I check the picture, I found 5k6 is not in the BOM. Is this the source of the problem?

  5. Pete

    Hi Simon,
    Love the boards, just built up 3 and about to program them. I would recommend that you remove the all over silkscreen from the top of the board…The boards I got from OSH there is a registration issue which makes the text look really cool and 3D, but also makes the pads much smaller and harder to solder without a lot of scraping.

  6. Vincent


    I am beginer, how to create the hex in windows ?
    Or can you post the hex file ?

    Best regards

  7. He Zhongrui

    When I open usky kicad project,kicad warn not found atmel.dcm,cannot find special.lib.what’s wrong?how can I solve it?

    1. fishpepper Post author

      Did you install the kicad libs? You can ignore those warnings, I do not use parts from special.lib and atmel.lib πŸ˜‰

  8. NIjaJP

    Hi Simon! Tem same problem about the placement diagram, where is the red LED and red LED place? Can you fix the picture?

    1. fishpepper Post author

      The one on the top layer (red layer) is D1 (green) with R6=330Ohm. The one on the green bottom layer is D2 (red) with R4=220Ohm.

  9. Cyril

    Hi Simon,
    I’ve got my PCB from OSHpark, When I compare the BOM and circuit board production figure, I found there is no placing for R4 & R6 on the figure. I wanna get ur help to figure out how to make a right application about the extra R4&R6.

    1. fishpepper Post author

      Sorry for that, the original placement diagram still lists the placeholder values (the 1k resistors in series with the LEDs). Use R4 as the in series resistor for the green LED and R6 for the RED one.

  10. Felix Bohmann

    how/where did you order the oscilator? mouser wants to sell 3000pcs only. πŸ™‚

  11. czchc

    Hi Simon,
    I just finished building this RX and find a problem when binding with my Taranis. I got some logs from the DEBUG port, it always printing like “———————————————————-BBBBB———————————————————————————————————————————————————————————————————————————————————–frsky: RXOVF”. What’s that for and how can i bind with my TX. Looking for your reply. Thanks..

    1. fishpepper Post author

      Looks like it at least detects some packets. How far away was the TX? Try to move the tx at least 1m away from the rx during bind and try again.

  12. Lucas

    Thanks Simon! Last question πŸ™‚ What would be the best way to make voltage monitoring using analog telemetry input? I want to monitor 1S lipo voltage, as it seems that my FC does not supply such function. Do I need a voltage divider here?

    1. fishpepper Post author

      Yes, use the pad labeled ADC0. Make sure to use a voltage divider to make sure the input does not exceed 3.3V.
      If you do not use hub telemetry you can change the config.h (change #define ADC1 7) and use the pads of the voltage divider resistors and ADC1 input.
      As i use telemetry i do no longer use those adc inputs.

      1. Vito

        I cannot get hub telemetry to work – which pad on the uSKY is supposed to receive the telemetry data from FC’s UART TX? (firmware compiled from source with no changes) I cannot find any mention in the code, there is something about shared SBUS pin, I tried connecting TX2 to ADC0, ADC1, and SBUS pad, none of them worked… Should the telemetry be inverted or not? Is SmartPort auto baud ok, or do I need to set it? SPort_halfduplex ON or OFF? (Although I’m assuming ON as setting it OFF breaks the communication with FC)

        I would really appreciate a little help here. Once I get it all working I’ll write some documentation on the uSKY and make a pull request on github for you to merge if you would like πŸ™‚

  13. Lucas

    Hi Simon! I’m building a usky RX for my TinyWhoop as well, currently waiting for shipping from OSHPark πŸ™‚ I will send you a few pictures of my soldered rx as well. Thank you for this great design!

    One question though – how do you enter bind mode?

    1. fishpepper Post author

      Just short the ISP data pin to ground when powering up the rx πŸ™‚

  14. mango

    Hello, I download the source code, in the UBUNTU environment, how to use the SDCC compiler HEX file

    1. fishpepper Post author

      Install sdcc and simply run make in the source folder πŸ™‚

  15. pakamon

    Hi Simon,

    Any chance to compile BOM for uSKY with link to farnell/whatever like you have done for pepperF1SH ? πŸ™‚

        1. fishpepper Post author

          They should do, they are rated at 30ppm (cc2510 requires < 40ppm).


Leave a Reply

Your email address will not be published. Required fields are marked *