First and foremost, I use a Chromebook for most everything these days, so it's not always a simple task for me getting these systems up and running. Despite that, every piece of software mentioned in this article can be used on a Chromebook so long as you are at least somewhat comfortable inside Linux. You'll need to enable it on your Chromebook if you go that route, otherwise, Rotorflight and Blackbox can be used on both Windows and Mac.
Helicopter --> Stock Goosky RS4
RX Unit --> SRXL2 DSMX Serial Micro Receiver
TX Unit --> Spektrum DX6e Transmitter
Flybarless Unit --> Nexus FBL
Laptop --> Asus 536e
Software --> Rotorflight Configurator 2.0.0, Rotorflight Blackbox
The very first hurdle you'll have to get through when setting up the Nexus with the selected hardware is getting your transmitter/ receiver to communicate with the software. After an evening of searching for answers I finally came across this video that described why I wasn't having any luck getting the transmitter to show up in the Rotorflight Configurator.
**Very useful information for setting up the radiomaster controller with a DSM receiver. https://www.multi-module.org/using-the-module/protocol-details/dsm#receiver-output-range
It turns out that the signal port of the Serial Micro Receiver that I chose to use does not work on an RX pin, but instead the signal port needs to be connected to a TX pin. The DSM port on the Nexus is arranged as RX, GND, and 3.3V. The Receiver will bind and appear to be working on this port, but no data will be transferred. Once I realized this I re-wired the receiver and connected it to the Nexus through the C-port, ignoring the RX pin. I then changed the configuration inside Rotorflight Configurator for the Serial Ports, leaving everything including DSM disabled, setting Port C to Serial RX and leaving it in AUTO. This allowed me to then connect to my transmitter with no issues. Also, it's worth mentioning that the DMSX receiver that was selected for this project can run on either 3.3V or 5V.
Getting the DX6e to work with Rotorflight was not easy, especially if you wanted to use a switch on the transmitter for profile (bank) selections. There just aren't enough channels available to make this work properly because the Rotorflight system requires an additional ARM switch on top of the throttle hold. This is difficult to accomplish, but not impossible.
To start, you'll need to set the Gear to 'B' switch in the Channel Input Configuration, then set the GEAR to Throttle in Rx Port Assignments. Flight Mode Setup needs to have Switch 1 set to Switch 'B', Hold can stay set as 'H'. Once this is done there are a couple more steps that need to be taken to finish.
Inside the Throttle Curve you need to add a 1 second delay to the hold button. This way, the system does not activate the ARM switch and disable hold at the same time (if that happens the system will not actually arm, it's a failsafe in rotorflight). After that you need to set the gyro to Inhibit so you can use your B switches for profile (mode) selection. I'm not sure if I did this or the it's a stock setting, but I also have the throttle cut set up on the transmitter with the hold switch. Make sure this is the same.
Once the transmitter is set, the last few things that need to be done are inside the Rotorflight Configurator.First check that the transmitter configuration was done properly. When switching the Hold button off and then cycling throught the B selector settings, the receiver dialog box should look similar to the following images and below video.
Notice that each time the 'B' selection is changed the throttle drops slightly and AUX1 increases slightly. These are both important things to note for the adjustments setting.
Navigate to the Modes Tab and adjust the ARM slider until the Hold switch is outside of the range when enabled and inside the range when disabled.
Hold Switch is Outside Slider Range
Hold Switch is Inside Slider Range, Arming the System
Move to the Adjustments Tab next. The configuration will have to be adjusted so that the Hold function is outside the enable and value channel when engaged, but inside the enable and value channel slider when turned off. It will also need to stay inside these channel sliders when the profile selection is adjusted.
The Value Channel selection slider will need to be kept as small (tight) as possible to read in the values properly to the Profile Selection slider. If the Value Selection slider is too wide it will not move the Profile Selection slider values as intended.
Once all these sliders are positioned correctly, you should end up with a 'B' button that operates the values like the below images.
After completing these steps, you should end up with a Spektrum DX6e Transmitter that can be used with the Rotorflight system to ARM, Throttle Hold, And Profile (bank) select using only 2 switches. Unfortunately, you will lose the ability to use your stability or a rescue mode, but that just makes things more exciting anyway.
In order to do any proper tuning inside the Rotorflight Configurator you will need another Rotorflight application called Blackbox. You can download the Blackbox application here. You can also find some very useful tips about tuning directly from Rotorflight's website. I'd also like to note that I ran the helicopter in passthrough mode to see what the stock ESC was doing to maintain headspeed and the answer is seemingly nothing. It just sets the motor to a set percentage and lets it go. It bogs down on hard pitch pumps, but only by a couple hundred RPM. I feel like any attempt at tuning the governor with the flight controller would be better than doing nothing at all.
Tuning the governor was my first dive into PID control loop tuning for anything, so I found it to be quite difficult. It's worth noting that before you attempt to do any tuning on your helicopter in Rotorflight, you should adjust your filter settings so they can properly filter out any noise generated by the motor and blades without being so aggressively filtered that it consumes processing power and slows things down. You can find more about this subject on Rotorflight's website and from this tutorial.
Initial Attempts at tuning the governor did not go particularly well. I kept having issues with the headspeed way overshooting and motor oscillating. I eventually figured out how to fix this, but it should be stated that the motor will never be tuned perfectly to keep the headspeed consistent (at least that's the conclusion I've come to on the stock Goosky RS4, which could be more related to the direct drive motor or ESC).
This is Bad
This is Worse
Eventually I discovered that by allowing the headspeed to drop and not overcompensating with the motor, the helicopter flew very well. The 100RPM drop in headspeed is barely noticeable audibly and the small kick in motor output makes the helicopter feel like it has more power during these pitch pumps and hard maneuvers.
By keeping my gain adjustments moderate, I found that I could prevent significant RPM overshoots which is what made the helicopter flight feel ugly. F-gain (Feedforward gain) was important in making sure that the motor spooled up quickly with the issued command, but was very easy to over-tune. By removing some of the Collective Precompensation I could increase the F-gain without introducing too many problems.
I also needed to make sure that the governor PID Master gain was turned down slightly. This is because all the ripples that were introduced in the system were massive with the gain set to 40 like it is from stock settings. The P-gain was easy to see in the graphs as it was causing the largest and most noticeable ripples in the system. I ended up having to keep this setting very low.I-gain was the most difficult for me to get right as its affects weren't as obvious. Ultimately I ran the numbers up as high as I could until ripples began to get large, then backed it off. The below image shows the numbers I finally settled on. D-gain had no affect on the helicopter or its performance, as stated in the Rotorflight manual - a helicopter below the 500 class likely will not have enough mass in the rotors to require any tuning of the D-gain.
Headspeed = 2600, PID Master gain = 30, P-gain = 7, I-gain = 15, F-gain = 20, Collective Precomp = 70
Update - 01/08/25
Recently I crashed the RS4 when my battery decided it didn't feel like staying in place and tore through the blades on the way out (actually, the Goosky training blades took it really well and hacked up the battery). This damaged the stock ESC, prompting me to order the upgraded RS4 ESC by Hobbywing. This gave me access to adjusting the ESC settings with the Hobbywing programmer. I was able to switch it from ELF Governor to External Governor which has definitely changed the way the helicopter is acting. I'm excited to revisit the Governor Tuning dialog with these changes. Even without making any adjustments to my current settings, I can see that the helicopter looks better in the air and the tail isn't kicking out on pitch pumps, which is great news because I have really been struggling to fix this issue. All future updates will be found below as I work on fine tuning.
About a year ago I was having intermittent power issues on the RS4. I thought I was losing the signal for a little while, but it turned out to be a loose connection on the BEC connector that had been shortened when I was building the kit. The ground pin was slipping back in the connector because I had crimped the pin down poorly. After discovering this issue I realized that I needed to get some kind of backup power supply to give me a chance at landing the helicopter in the event of a power loss.
I purchased a backup capacitor unit from Helidirect and was looking forward to getting it hooked up, but I was having trouble figuring out how to get it working on the Nexus. It only takes a few lines in Rotorflight's command prompt (CLI) to make this happen. Finding the right steps to take was exhausting. Eventually, I did figure it out, but I think this needs to be added to Rotorflight's tutorial pages; it would save a lot of people headaches.
Essentially what you want to do for this capacitor pack to work on a switch is to remap a pin on the Nexus SBUS that can be used like an output. Rotorflight has a tutorial that does just this for using an extra servo on the SBUS, but it is a complicated method done through an excel spreadsheet that recompiles all the information for flashing your Nexus unit with the analog pin re-configured. After a little more digging through Rotorflight's website I stumbled on a bit of information about remapping for F-Port. This provided a couple helpful commands hinting that everything I wanted to do could be done inside the CLI.
Two simple commands to remap a pin
You can use the command 'dump hardware' to view all the necessary information about the Nexus configuration. In the following image I've highlighted the variable names that we are looking to verify. You can see that they've made provisions for many more servos and serial ports. In the F-Port documentation Rotorflight states that the SBUS pin we need to remap is currently set to SERIAL_RX 2 and the analog pin it's mapped to is A03. Rotorflight also shows that changing this configuration is as simple as issuing a command to set SERIAL_RX 2 to none, then reassigning A03 to whatever variable you need it for. In our case this is going to be SERVO 5 because the backup capacitor needs a servo signal to turn it on and off.
Once the pin had been remapped the document for adding another servo showed that one last step would need to be completed to finish the process. According to the document, a custom mixer rule is needed. I haven't been able to find any information on what exactly this rule is doing, maybe just setting the resolution or possible stop points? I don't know exactly, but it seems to be necessary as I've seen it posted in their tuning examples for people that are using extra servos. Regardless, the command is as stated - 'mixer rule 2 set AUX3 S5 1000 0'. I think I ended up making this mixer rule 0 instead. I'm assuming they may have already had a 0 and 1 rule set during this example. It just so happened that AUX3 was exactly what I wanted the capacitor pack to be on since it was already my ARM switch, so I kept that designator the same. I think S5 is probably the shorthand assignment for the servo. 1000 0 is the command that I'm not sure about. If someone knows, send me a message about it, but it seems like endpoints or something similar.
Pin A03 had already been changed on this screenshot
It should be noted that the Rotorflight documentation takes special care to mention separation of the swash servos from the motor and also the tail servo, stating that servo 5 should be on a separate timer from all 3. For my purposes with a capacitor pack, I don't think that this is any kind of an issue, but it may be worth looking at if your intention is to add another servo. I can say that looking into my hardware dump, A03 was already set to Timer 9 and if I had to guess, I would say this can also be changed in the CLI. This, however, would need to be verified.
Document Showing the Timer selections for Motors and Servos
All together it took 4 lines inside the CLI to remap the SBUS for a capacitor pack:
resource SERIAL_RX 2 none
resource SERVO 5 A03
mixer rule 0 set AUX3 S5 1000 0
save
I've already verified that this procedure works as intended. The capacitor backup turns on and off with my ARM switch perfectly. One thing that I noticed was resource for PPM 1 also being assigned to A03. I'm not sure if this needs to be set to none as well, it doesn't seem to be affecting anything, but it's something to consider. I hope that this information proves useful to anyone else that is struggling with the additional servo or backup pack setup.
I was able to get the tail looking good on pirouettes and stops, but for some reason I kept having issues with it kicking out on pitch pumps and I just could not get it tuned out. This could be because I'm running it at a fairly low RPM for the RS4, but I still feel like I should be able to get it tuned better. While looking at the data I noticed that the PID curves were all lagging behind the collective command which led me to believe that I needed to increase the feed forward, but for some reason it didn't have the effect I was hoping for.
I need to figure out a way to increase pre-comp without blowing out the tail in the opposite direction. Maybe this is just a fine tuning issue, but I'm looking into it. Will post a solution here once I find it.
After quite a bit of searching, I think that I might have stumbled on the problem. It appears that I did not properly set the mechanical pre-comp on the helicopter because I set the servo center up incorrectly. This video helped me to realize what I was doing wrong. Looking at the "Servo" Tab inside Rotorflight Configurator I set the tail blades to their neutral position rather than setting the tail slider to its neutral position which would have given me a bit of mechanical advantage as it positions the tail blades to counteract the head. What I should have done was set the tail slider center in the "Servo" tab and adjusted the tail blades to 0° inside the "Mixer" tab under the tail rotor settings and "center trim for tail rotor" there instead. This, in theory, provides the necessary tail pre-comp to prevent the tail from kicking out on pitch pumps. The manual for the Goosky RS4 actually sets the pre-comp with an exact measurement for the tail push-rod, I just needed think a little harder about why the push-rod had to be set to an exact measurement in the first place. It's worth noting that you should always check your helicopters manual for information regarding your tail setup.
I've done some extensive testing since correcting the tail and I have to admit, though the tail holds better, it still kicks out a bit on pitch pumps. I'm starting to think that this may be more of a tail authority problem, perhaps the tail blades are a bit too small for the lower RPM to maintain the position on pitch pumps. I've looked hard at the data though and it just plain looks like the Nexus is just not working hard enough to hold heading. I'm not running out of room on the tail servo and I've tried just about every combination on the PID settings to iron out that little kick, but I am still having no luck. I'm not giving up though. I'll continue to search for an answer and post my results.
Further research has shown that the tail stop gains are affecting the P term directly. I wasn't sure how exactly it was affecting things until I started cranking up the settings and looking at the data. It seems that I had the CCW stop set a little too low and increasing this value did help a bit more with the tail blowout issue by allowing me to increase the tail's collective feed-forward (aka the tail pre-comp) without it pushing too far past the set-point. This did not fully stop the tail blowout, but it is definitely helping. The only thing now is that the P term oscillations are higher with the increased stop gains, requiring me to lower the master tail P gain. I'm going to keep fiddling with these settings because they seem more promising than anything else I've worked with up to this point.
Another thing that needs to be dealt with is the Rotorflight Governor. I'm having issues with it being unable to even closely maintain the head-speed and I've noticed that when I disable the RF governor and use the ESC, even though the head-speed sags, it does a much better job of controlling the tail on pitch pumps because it doesn't constantly overshoot the set-point. I'll keep fine tuning and see if making adjustments to these settings gets me any closer to a strong tail. If these changes don't correct the issue, I may consider looking into re-gearing the tail or increasing the tail blade length, but I feel like this shouldn't be necessary as the RS4 had fine tail-hold power out of the box. I must be missing something here. I'll continue to investigate.
It seems strange to me, but I think the stock governor has been causing tail issues. During testing I had a battery tray failure which ejected the battery during flight and went through the rotor. Upon ejection, the pins of the ESC were bent, prompting the purchase of an upgraded ESC. I went with the ESC designed for the Venom and this one came with access to the programming port. I was able to change the ESC from ELF Governor mode to External Governor and this made a huge difference in tail performance. Now I'm trying to figure out exactly why it improved the tail. It seems to bog down a little harder and I need to go back to the governor tuning and see if I can tune out the bog and still maintain tail performance. At this point it could just be a fluke, but maybe the ELF governor was interfering with the Nexus governor and causing some kind of issue that was rippling through the system and causing tail issues on pitch pumps. I'll need to investigate this further before I come to any conclusions here.
In the image below you can see the first row of graphs that the yaw gyro is holding pretty darn close during the collective pitch pumps, and this is without any changes made except for the adjustment to the governor setting. It's pretty interesting, but I need to tune the governor before I say that this is what solved my tail kick issues. I do have to say, it's looking promising.
As of December 2024, I've moved to a Radiomaster TX and I love it. Everything is so much easier to work with and I got a 16 channel transmitter for the same price as the 6 channel Spektrum unit. If you're considering trying Radiomaster, I would strongly suggest just doing it.
Rotorflight Tutorial - https://www.rotorflight.org/docs/Tutorial-Setup/Getting-Started
Jonas' Rotorflight Setup Tutorial - https://www.youtube.com/watch?v=YdfZgF5WKuQ&t=1s
Rotorflight Tuning - https://www.rotorflight.org/docs/Tuning/First-Flight-Filter-Tuning
Rotorflight Servo arrangement - https://www.rotorflight.org/docs/Tutorial-Setup/Servos
Rotorflight Configurator Github - https://github.com/rotorflight/rotorflight-configurator/releases
Rotorflight Profiles Setup (It's like the bank selection) - https://www.rotorflight.org/docs/Tutorial-Setup/Profiles
Single Switch Arm and Throttle Cut - https://www.youtube.com/watch?v=nRmw46E64XQ
Description of SRXL2 DSMX Receiver - https://www.youtube.com/watch?v=WAkDv9gzl98&t=2s
Nexus Pinout Guide - https://originhobbies.com/nexus-fbl-rotorflight-connection-guide/?srsltid=AfmBOopDBLvmOn8lMqo4ZHP-H9bgTA5Ill75xf4faPLARLpterC9QJft
DSM Setup on Radiomaster - https://www.multi-module.org/using-the-module/protocol-details/dsm#receiver-output-range