tinyFISH FC – initial setup & flashing tutorial II/II

Disclosure: This post may contain affiliate links, meaning I get a commission if you decide to make a purchase through my links, at no cost to you.

By | January 18, 2017

In the previous tutorial we flashed the betaflight firmware into the STM32 of our flightcontroller, this time we will flash the tinyFISH FC receiver firmware. We are going to use the frsky compatible OpenSky firmware. You can now decide to download the latest version of OpenSky here and build the tinyfish target yourself (make TARGET=TINYFISH). Or you can download the latest release hex file from the release download page (download opensky_tinyfish_full.hex).

In order to flash this hex file into the receiver you will need a cc debugger or an arduino/rapsberry set up with special software. In this tutorial I am going to use the TI CC Debugger. Before we can start flashing we will have to connect the cc debugger to the CC2510 ISP port:

Please use the following connection scheme:


Once connected make sure to power the FC by connecting 4V to the IN- and IN+ connection tabs. Press reset on the CC debugger, the CC debugger led should turn green. The following commands will download, build, and flash the latest OpenSky firmware for your tinyFISH FC:

git clone https://github.com/fishpepper/OpenSky.git
cd OpenSky
make clean
make flash

In case you downloaded the pre-compiled hex file you can flash it using the TI cc debugger application or by executing

cc-tool -f -e -w opensky_tinyfish_full.hex

Both ways should give you a similar output as this:

Programmer: CC Debugger
Target: CC2510
Erasing flash...
Writing flash (13 KB)...
Completed (1.45 s.)

Done! Your FC is flashed! Now disconnect the programmer and press the bind button (or short the pads on rev 0.1) while unplugging and reconnecting the power supply. Put your TX in bind mode. The red and green leds on the bottom of the fc should do some blinking and stop with a regular pattern. Power-cycle the FC again and switch your fc into normal mode, you should now see a steady pulsing green light (or red if you accidently swapped the leds on assembly 😉 ).


29 thoughts on “tinyFISH FC – initial setup & flashing tutorial II/II

  1. Tyler k

    Is there any video on how to set up this tinyfish tower with the frsky receiver? A few friends and i are interested but the needing a debugger and there being little to no instruction on how to use is a little intimidating. i have read all the pages here and the part about the debugger and how to hook up/ flash is very vague. Any help is appreciated thank you

  2. Michael Schmitz

    I’m not able to bind it to my Taranis QX7.
    Is it possible to bind with the LBT Version of the Taranis?
    Does the Receiver support Mode D16 with an output of 8 or 16 Channels?

    1. fishpepper Post author

      You will need to flash the transmitter to international D8 mode.

  3. Cross

    Your work is excellent.
    Recently, I got a tinyFISH 0.2 from the market. I found the voltage and current telemetry not work.
    On my X9D+, i can see other data updating, but the voltage and current value don’t change. I used two 1s lipo with different voltage for testing. But voltage value doesn’t change from telemetry.
    When i open Betaflight configuration tool, i can see the voltage is correct and change after changed the battery.
    Could you provide some suggestions about this issue?
    Thank you.!

      1. Cross

        I found it caused by the bat_detect_thresh setting from FC side. Originally ‘set bat_detect_thresh = 55’, 1s Lipo power supply cannot reach the threshold. So after set bat_detect_thresh = 25, the issue is solved.

  4. 24367dfa

    Short update:
    flashing worked out, i just failed to solder the LEDs correctly (they are on backwards). Everything works, transmitter is bound, just no optical feedback. Feel free to delete the last comment 😉

    Best regards,

  5. 24367dfa

    Hi Simon,

    i managed to successfully flash the cc2510 using a raspberryPi and jimmyw’s fork of CCLib [1]. The problem is, that the LEDs of the receiver part of the FC don’t turn on and binding with my transmitter does not work either. The main MCU works fine and is currently flashed with betaflight. Do you have an idea what the problem could be or how i would go about verifying that the cc2510 is working correctly?


    [1] https://github.com/jimmyw/CC2510Lib

    1. fishpepper Post author

      Did the flashing/verify suceed? Check the crystal and the capacitors (maybe you swapped them with the wrong value?). Could be a problem that the crystal is not starting up -> the code will not run. If i remember correctly the cc2510 uses an internal osc for flashing.

      1. 24367dfa

        It all worked out, i just goofed up the direction of the LEDs. So no optical feedback for me 😉

  6. Sam

    Trying to flash the CC2510 on Linux through an arduino (nano).

    Wired up according to this:

    When I run anything it detects the arduino, and the lights on the CC2510 go off momentarily, but it returns this:
    ERROR: ord() expected a charecter, but string length 0 found

    Any ideas?

    1. Teemu Kulma

      I’m also trying to flash the CC2510 with Arduino Mega (Windows) and facing the same error: “ERROR: ord() expected a charecter, but string length 0 found”.

      @Sam, did you solve this problem?

    1. fishpepper Post author

      No, both are only compatible to Frsky D8 mode.

  7. He Zhongrui

    Hi Simon,
    I have found a new problem,the fc board is easy to restart.

    1. fishpepper Post author

      You mean it resets in flight? This should not be the case. Together with some friends we have finished and flown six different pepperF1SH without any problems. You can actually fly until the Lipo is dangerously deep discharged without noticing…
      Did you use the correct voltage regulator?

  8. He Zhongrui

    Hi Simon,
    I want to install firmware upgrades for the RX from within betaflight,what shout I do?I have short the rx boot pads,but I don’t know what to do next.

    1. fishpepper Post author

      Did you do the initial flashing with a cc debugger? You need to do that first to install the bootloader. Once Opensky was initially flashed you can use the bootloader to update.

      1. He Zhongrui

        yes,I have done the initial flashing with a cc debugger first,now I want to install firmware upgrades for the RX from within betaflight,but I don’t know what to do ?In betaflight I don’t find a interface to load
        upgrades.hex file.Could you mindly to write a document to introduce how to upgrade?

  9. He Zhongrui

    Hi!I have compiled 3 files.What is the use of the opensky_tinyfish_update.hex and bootloader.hex?

    1. fishpepper Post author

      1) opensky_tinyfish_full.hex = bootloader + opensky_tinyfish_update.hex
      2) opensky_tinyfish_update.hex = only opensky fw

      You will flash #1 when you do the initial flashing with the cc debugger. Aftzer that you can use betaflight to update the opensky fw using the bootloader. When you do this you will need to flash opensky_tinyfish_update.hex which does not include the bootloader. The bootloader can not overwrite itself during update 😉

  10. Sevim Halibryam

    Hi Simon,
    it will be very helpful if you have the time and explain to us how to flash the cc2510 using a regular arduino because not all of us have cc debugers 🙁 and also on rev0.1 board there is a boot pads also next to bind ones , what are they for ?

    1. fishpepper Post author

      I might do this in the future.
      When you short the rx boot pads on v0.1 (or press the button on 0.2) during power up, OpenSky will enter a special bootloader mode. This way you can install firmware upgrades for the RX from within betaflight (!) I will write a tutorial on that soon.
      However thihs does not help you with the initial flashing, the bootloader is flashed together with your initial Opensky flashing.

      1. PHM

        Hi Simon,
        I download the latest release hex file from the release download page (download opensky_tinyfish_full.hex)
        flash the tinyFISH FC rev 0.2 receiver firmware. Unable BIND.can You publish a REV0.2 receiver firmware?



        1. fishpepper Post author

          Try to bind by shorting CC_CLOCK to GND. Does this work? The hex file should support both options.


Leave a Reply

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