RC Flight

From WTFwiki
Jump to navigation Jump to search


Transmitter (TX)

Radiomaster TX16s

Solid choice for a traditional TX style radio. Is on the large/bulky side, but with good grip and usable for either thumb controls (default sticks are a bit long with sharp ends, but M4 threaded and replaceable) or "pinchers". Widely compatible multi-protocol radio, bit complex to setup (see Multi-Module doc link, below). Relatively inexpensive, very available from many sources. Seems very widely supported by simulators. Gimbals replaceable, and at purchase time can choose nicer Hall-Effect type for long-life and better feel. Multiple "Mode" choices available, including most common "Mode 2" for quad-copter pilots. Open firmware choices are first-class: shipped with OpenTX for stability, supported by EdgeTX for newer features (like touchscreen).



Flight Controllers




Happymodel Mobula6

DSM2/DSMX (Spektrum) version

Two versions of this RX model available: older bolt-on serial type, newer built-in SPI type. All notes below are for newer built-in unless specified.

Quad ships without telemetry enabled in Betaflight; head to configurator->Configuration->Other Features and toggle TELEMETRY on to get VBAT/TRSS sensor access on TX.

Note: DSM2/DSMX (Spektrum) version does not send proper RSSI (RX side signal strength). Whether this is a protocol limit or simply software implementation problem is unclear; instead TX radio may expose (computed) TRSS, based only on telemetry signal strength. This is not the same thing, and is even presented on a different scale, roughly (RSSI / 3).

Quad uses 0802 motors (19000KV or 25000KV) with 1.0mm shafts and 31mm Gemfan 1219-3 3-blade props.


Two ELRS versions available: 2.4GHz and 900MHz; all notes below are for 2.4GHz unless specified, but may apply to both.

Quad uses 0702 motors (26000KV) with 1.0mm shafts and 31mm 2-blade props. Unknown brand/specs.

Binding Notes
  • Update TX to latest available ELRS (2.2.0 at this time), don't forget to update lua script. See appropriate section here for TX update notes.
  • Make sure to take a diff all from BetaFlight CLI before proceeding. Firmware upgrades often wipe out your settings, you'll need to restore them from this.
  • Update RX to latest available BetaFlight (4.3.0-RC2 at this time), 2.4GHz model is CRAZYBEEF4SX1280
  • Set PID loop frequency to 4kHz: this appears to be critical at this time, otherwise controls appear chaotic in .
  • The documentation (here: https://www.expresslrs.org/2.0/hardware/spi-receivers/#rf-mode-adjustment ) says the default RF Rate Index/Packet Rate is 500Hz, but my attempt didn't agree. I had to manually sync this between BetaFlight CLI (`set expresslrs_rate_index = X` (where X=0 for 500Hz, 1 for 250Hz, 2 for 150Hz, 3 for 50Hz) and the setting in my TX lua script. I chose 250Hz, but may try something else later. This was also critical.
  • Binding seemed overly tricky, but eventually after matching everything carefully (more than once), it just worked without any attempts at traditional or button binding. The phrase method did its job and the red LED on the quad went solid and stayed that way.

Other notes

"Mobula X7-ELRS"

This is not a production quad, but instead something I pieced together (built?) from off the shelf Happymodel parts.

As of Feb 2022, I could not find a 75mm ELRS Mobula quad, but had a Mobula6-ELRS-24 that wasn't very fun to fly (0702 motors, extremely zippy but with very short runtime of ~90-120sec). I stole the camera/canopy/flight controller from this quad and combined it with a Mobula7 V4 frame and some 0802 16000KV motors. Still unclear which props work best with this combination, but have tried both 2 and 3 blade gemfans with good luck. Early in the experiment, hopefully will update with an ideal combo later.

While I have not tried hard to minimize weight (and therefor have not weighed!) the quad, I expect it to come in sub-30g without battery.

Initial testing has shown gentle indoor flight times of >4mins on 380mAh 1S packs, and >8mins on 650mAh packs.

TODO: add parts list with links



  • placeholder: summarize relationship of stator volume to torque, torque reserve, tall/narrow(hot) vs short/wide(cool)


Decoding a prop identifying number: XXYY (ie. 5051), XX = diameter(50mm), YY = pitch(51)

Prefer lower pitch (ie. 5043, 5040, 5037, or 5031) when flying freestyle (maximum control in propwash/reverse flow conditions), is less efficient (low angle of attack) and obtaining high-end thrust requires higher RPM: use low pitch props with high KV motors


ExpressLRS (ELRS)


Long-range capable, low latency, multi-frequency open protocol gaining adopters quickly. Supports 2.4GHz and 900MHz, but using different hardware at this time.

Happymodel ES24TX-Pro


Look at official Quick Start docs, they're pretty great: https://www.expresslrs.org/2.0/quick-start/getting-started/

Then, something like this:

  • Install ExpressLRS configurator, see here: https://www.expresslrs.org/2.0/quick-start/installing-configurator/
  • Using "Official Releases" tab, select latest available (2.2.0)
  • Select correct Target: (Device category: Happymodel 2.4GHz) (Device: HM ES24TX Pro Series 2400 TX)
  • If your TX shipped with ELRS 2.0+ firmware on it, select WIFI Flashing Method. See WIFI Bootstrap section for more info.
  • Set a reasonable binding phrase (it isn't a password! just for collision avoidance)
  • Make sure your HOME_WIFI_SSID and HOME_WIFI_PASSWORD are set correctly (again)
  • If you followed the WIFI Bootstrap section, your TX module probably was automatically selected under "WIFI Devices" at the bottom. If not, select it or go manual.
  • Click Build & Flash, good luck. This step builds a firmware image and embeds the above settings into it, then flashes it to your TX module. Neat.
  • After this succeeds, you should head to Logs and dig into the log from this session, search for "UID bytes" and note the 6 or so integer comma-separated list somewhere, you'll need it to set your bind phrase in BetaFlight, which does not use the string representation, but this numeric array. If you can't find it, don't want to look, etc, check here to convert from a string: https://www.expresslrs.org/2.0/hardware/spi-receivers/#uid-byte-generator

WIFI Bootstrap

To initially setup WIFI flashing, you'll need to power on your TX and from the ExpressLRS lua script "Enable WIFI". Wait about 60sec after doing that and it'll start broadcasting its own ExpressLRS network, the password is expresslrs. If you do this from a phone, it will probably pop a browser up immediately and place you at the fairly bare config screen. Set a convenient WIFI SSID/Passphrase there and save it. After doing so, you should disable/enable WIFI from the lua script again (and maybe power cycle the TX, unclear.) It should connect to your stated WIFI network, and if that's the same LAN that your desktop running the ExpressLRS configurator is on, it should autodiscover the TX module. If not, you may have to do some digging with dhcp logs or similar.

Battery Info





Fedora Core 35

On FC35, Velocidrone 1.17.0 ("redhat build") fails to run for various reasons. The specific version involved here matches this detail:

 $ sha256sum velocidrone.zip 
 b9bec7fa6105481e247ec1577dceddae2ef7eaba8f32e4f840d65952e5f2cd36  velocidrone.zip
Missing compat-openssl10 libs

Probably because openssl 1.0.x needs to die, the fine folks at the fedoraproject no longer bundle these ancient things. Hopefully the velocidrone maintainers will do a new build against openssl 1.1.x soon. Until then (for now?), we can steal this package from AlmaLinux:

 $ wget https://repo.almalinux.org/almalinux/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm
 $ sudo dnf localinstall compat-openssl10-1.0.2o-3.el8.x86_64.rpm

You can verify this to be a problem using "ldd Launcher", which will show "not found" for libssl.so.10 and libcrypto.so.10 before the compat-openssl10 package, and then re-running afterward will show the library locations.

Missing gtk2.0 libs

After getting the Launcher to run, you may see this in stdout from the terminal you launched from:

 Preloaded 'libgetdiskspace.so'
 Preloaded 'librsync.so'
 Unable to preload the following plugins:
 Display 0 'XWAYLAND0 14"': 1920x1080 (primary device).

The problem here is that patcher/patcher_Data/Plugins/x86_64/ScreenSelector.so depends on libgtk-x11-2.0.so.0, which is not installed by default on FC35.

Easy enough:

 $ sudo dnf install gtk2
Assumptions about ca-certificates in libcurl

For whatever reason, something changed about the contents of the ca-certificates package along the way. The bundled libcurl inside velocidrone's patcher/launcher/etc is looking for /etc/ssl/certs/ca-certificates.crt ----but it has a new name, these days?

The error shows up as something like "Please check your internet connection", with a retry button that leads to a soft-lock condition (says it's trying, isn't trying, never does).

The launcher/patcher logs to $HOME/.config/unity3d/UpSoft/launcher/Player.log by default, and if you dig sufficiently deep (or grep..) in there, you might find something like this:

 Curl error 77: Error reading ca cert file from /etc/ssl/certs/ca-certificates.crt
 Failed to send event patcher_failed (0):
 Unknown Error

The easy fix is to first confirm you have the "ca-certificates" package installed with "sudo dnf install ca-certificates", but you probably do by default these days.

If so, try this:

 $ cd /etc/ssl/certs/
 $ ls -l
 total 8
 lrwxrwxrwx. 1 root root 49 Dec 13 12:55 ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
 lrwxrwxrwx. 1 root root 55 Dec 13 12:55 ca-bundle.trust.crt -> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
 $ sudo ln -s /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ca-certificates.crt

See Also

Flight Skill Building