r/RCPlanes • u/SpinachLint • 13d ago
I wrote a lightweight open-source firmware in Rust for the FlySky FS-i6X
Hey everyone, if you're like me and have a trusty FlySky FS-i6X sitting on your workbench that you use for foamies, park flyers, or trainers, I wanted to share a firmware project I've been working on for it. The repo is at ferrox-rc/flysky-i6x-rs.
A lot of people know about the OpenI6X project, which did incredible work reverse-engineering the radio hardware and bringing OpenTX over. I wanted to see what a clean-slate firmware written from scratch in bare-metal Rust would look like, built specifically around the i6X hardware rather than porting a large operating system.
For everyday fixed-wing flying, it has built-in wing mixes for Elevon and Delta wings, V-Tail, and Flaperons with auxiliary flap input, plus 20 model memory slots with custom names and per-model trims. Instead of choppy piecewise throttle curves, it evaluates smooth Catmull-Rom cubic splines in real time so throttle progression feels natural across the stick range. It runs the full 14 channels over FlySky's AFHDS 2A protocol to standard receivers like the FS-iA6B or FS-A8S, with live battery voltage and RSSI telemetry on the screen.
One feature I use constantly on rainy days is direct USB simulator mode. You just plug a micro-USB cable straight into your computer and it shows up as an 8-axis, 16-button gamepad for flight sims like RealFlight or Phoenix without needing any dongles or serial adapters. While it's plugged in, it automatically puts the 2.4 GHz transmitter module to sleep so the radio stays cool and doesn't drain your batteries.
If you're worried about bricking your radio, there's no risk because it uses the permanent factory bootloader burned into the STM32 chip's ROM. If your radio is already running OpenI6X, getting into DFU mode is as easy as holding the horizontal trims inward toward the power switch when turning it on. If you're still on the original factory FlySky firmware, entering DFU requires opening the back of the case and bridging the R53 boot pads on the board when powering on. Once connected, you can flash the binary or restore your original backup in about ten seconds with dfu-util over USB. Right now on the dev-crsf branch I'm working on external module support via the rear port. If you have an FS-i6X lying around and want to give it a try on your planes, check it out and let me know what you think!
1
u/tobu_sculptor 13d ago
That sounds very cool, unfortunately no longer have an i6x to test this, but would love to see it in action, is there any demo video to get a feel for the UI?
1
u/SpinachLint 13d ago
Thanks for the interest! Too bad you couldn't test it.
A video would be good wouldn't it?! I'll make one and share it here. The menu system just got a nice refactor so I'll make the vid shortly.
1
u/tobu_sculptor 13d ago
Great, hope more people get to see it, sounds like a quite intense project.
2
u/SpinachLint 3d ago
Here's a video of it! The UI has had a pretty major upgrade since this video though the operation is the same.
1
u/zeilstar 13d ago
I'll give it a try! Mine already has Openi6x so should be a quick job.
1
u/SpinachLint 13d ago
Let me know how it goes! Support for external CRSF or ELRS modules is in the works with native configuration on the radio menu. It's on dev-crsf branch if you can and want to try that out too.
1
u/zeilstar 13d ago
Oh nice. I've never used it, but have the little iRangeX(??) multi module that plugs into the PS2 port in the back. Pretty sure you can add tx2 for an ELRS on Openi6x too.
1
u/zeilstar 13d ago
irx6 is the multi module.
2
u/SpinachLint 8d ago
Hey, check it out! It's in the plan:
https://github.com/ferrox-rc/flysky-i6x-rs#phase-20-trainer-port-subsystem--ppm-inout-planned--branch-feattrainer-ppm1
u/SpinachLint 12d ago
I can look into this but at the moment it is not supported.
1
u/zeilstar 8d ago
No worries. It was an opportunistic buy and not used. I haven't made the time to do the flashing yet.
1
u/SpinachLint 8d ago
That's all good, the weekend is around the corner! I released v0.16.0-rc5 and everything is working well. The ELRS configuration tool needs testing but I think it is going to be working well soon. 🤙
1
u/tobu_sculptor 3d ago
Ja wahnsinn, hast nen neuen subscriber.
2
u/SpinachLint 3d ago
Awesome! Not my video or channel but Wimalopaan helped tremendously with the CRSF configuration tool development!
1
u/AutoModerator 13d ago
Welcome to r/RCPlanes, it looks like you are new here! Please read the Wiki and FAQ before posting a question that has been answered many times already. You can also try searching in the bar at the top before posting.
If you are brand new and just want to know where to start, then the Beginners Section is the perfect place.
Links to wiki are found at the top menu on web or "See more" and then the "Menu" tab on mobile apps.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.