{"id":1159,"date":"2023-06-25T09:41:41","date_gmt":"2023-06-25T01:41:41","guid":{"rendered":"http:\/\/www.autouav.net.cn\/?p=1159"},"modified":"2023-06-25T09:48:43","modified_gmt":"2023-06-25T01:48:43","slug":"what-are-rc-protocols","status":"publish","type":"post","link":"https:\/\/www.autouav.net.cn\/?p=1159","title":{"rendered":"What are RC Protocols?"},"content":{"rendered":"<h2><span id=\"What-are-RC-Protocols\" class=\"penci-toc-section\">What are RC Protocols?<\/span><\/h2>\n<p>A protocol is like the language spoken between devices within an FPV drone.<\/p>\n<p>Different components use different protocols, so some components, like the receiver and the flight controller, have to be bilingual \u2013 they \u201clisten\u201d in one language (input) and \u201cspeak\u201d in another language (output).<\/p>\n<h2><span id=\"FPV-Drone-Communication-System-Overview\" class=\"penci-toc-section\">FPV Drone Communication System Overview<\/span><\/h2>\n<p>Protocols in FPV can be divided into 3 groups:<\/p>\n<ul>\n<li><strong>TX Protocols<\/strong>\u00a0\u2013 communication between radio transmitter (TX) and radio receiver (RX)<\/li>\n<li><strong>RX Protocols<\/strong>\u00a0\u2013 communication between radio receiver (RX) and flight controller (FC)<\/li>\n<li><strong>ESC Protocols<\/strong>\u00a0\u2013 communication between FC and ESC<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/rc-radio-transmitter-receiver-protocol-tx-rx-esc-fc-communication-signal.jpg\" width=\"1400\" height=\"483\" \/><\/p>\n<p>Each of these links has different requirements, which is why different protocols are used.<\/p>\n<h2><span id=\"TX-Protocols\" class=\"penci-toc-section\">TX Protocols<\/span><\/h2>\n<p>The communication between radio and receiver is wireless.<\/p>\n<p>Most radio manufacturers have their own proprietary TX protocols unless it\u2019s an open source radio system like\u00a0<a href=\"https:\/\/oscarliang.com\/setup-expresslrs-2-4ghz\/\" target=\"_blank\" rel=\"noopener\">ExpressLRS<\/a>.\u00a0Here is a list of common TX protocols:<\/p>\n<ul>\n<li>ACCST (Frsky)<\/li>\n<li>ACCESS (Frsky)<\/li>\n<li>DSM (Spektrum)<\/li>\n<li>DSM2 (Spektrum)<\/li>\n<li>DSMX\u00a0(Spektrum)<\/li>\n<li>AFHDS (Flysky)<\/li>\n<li>AFHDS 2A (Flysky)<\/li>\n<li>A-FHSS (Hitec)<\/li>\n<li>FASST (Futaba)<\/li>\n<li>Hi-Sky (Deviation \/ Devo)<\/li>\n<\/ul>\n<h3><span id=\"Frskys-TX-Protocols\" class=\"penci-toc-section\">Frsky\u2019s TX Protocols<\/span><\/h3>\n<p>Frsky has two TX protocols, ACCST and ACCESS. Note that for ACCST, there is the older V1 and the newer V2, and\u00a0<a href=\"https:\/\/oscarliang.com\/accst-2\/\" target=\"_blank\" rel=\"noopener\">the two are not compatible<\/a>.<\/p>\n<p>ACCST:<\/p>\n<ul>\n<li><strong>D16<\/strong>: for X-series receivers, e.g. X4R-SB, R-XSR, XM+<\/li>\n<li><strong>D8<\/strong>: for D- and V-series receivers, e.g. D4R-II, D8R-II+, V8FR-II, VD5M, etc<\/li>\n<li><strong>LR12<\/strong>: for the long range receiver L9R<\/li>\n<\/ul>\n<p>ACCESS: Frsky\u2019s latest air protocol,\u00a0<a href=\"https:\/\/oscarliang.com\/frsky-access-protocol\/\" target=\"_blank\" rel=\"noopener\">New Frsky Air Protocol &amp;#8211; ACCESS<\/a><\/p>\n<h3><span id=\"Spektrums-DSM2-and-DSMX\" class=\"penci-toc-section\">Spektrum\u2019s DSM2 and DSMX<\/span><\/h3>\n<p>DSM2 and DSMX are the two TX protocols used by Spektrum radios.<\/p>\n<p>DSM2 signal is known to be resistant to noise, interference and other transmitters transmitting on the same frequency. It also finds a backup frequency at start-up in case the primary frequency fails. This greatly lowers the chance of losing signal, however if both channels becomes unusable you may still lose the connection.<\/p>\n<p>DSMX was based on and improved from DSM2, which also uses the same encoding scheme. The difference is the DSMX signal is able to switch to a new frequency channel in case of cut out within a couple of milliseconds, so in theory you wouldn\u2019t even notice the glitch.<\/p>\n<p>DSM2 is still a popular technology, if you are away from sources of radio interference (such as WiFi, microwaves, and wireless security cameras), it should work just as well as DSMX, but DSMX for sure is more reliable.<\/p>\n<h2><span id=\"RX-Protocols\" class=\"penci-toc-section\">RX Protocols<\/span><\/h2>\n<p>Unlike the communication between TX and RX, the communication between RX and FC is a wired communication. It is desirable that the protocol have low latency. Latency is basically the time it takes the receiver to \u201ctranslate\u201d the signal from the transmitter into the signal that it is going to send to the flight controller. Less latency means your quadcopter will respond quicker to what you tell it to do.<\/p>\n<p>Some RX protocols are universal and used in receivers from different manufactures, but some can be exclusive to certain brands. Here is a list of common RX protocols:<\/p>\n<ul>\n<li>PWM (universal)<\/li>\n<li>PPM or CPPM (universal)<\/li>\n<li>SBUS\u00a0(Futaba, Frsky)<\/li>\n<li>IBUS (Flysky)<\/li>\n<li>XBUS (JR)<\/li>\n<li>MSP (Multiwii)<\/li>\n<li>CRSF (ExpressLRS, TBS Crossfire and Tracer)<\/li>\n<li>SPEKTRUM1024 (Spektrum DSM2)<\/li>\n<li>SPEKTRUM2048 (Spektrum DSMX)<\/li>\n<li>FPort (Frsky)<\/li>\n<li><a href=\"https:\/\/oscarliang.com\/spi-rx-receiver-protocol\/\" target=\"_blank\" rel=\"noopener noreferrer\">SPI_RX (universal) \u2013 More detail in this article<\/a><\/li>\n<li>GHST (<a href=\"https:\/\/oscarliang.com\/immersionrc-ghost\/\" target=\"_blank\" rel=\"noopener\">ImmersionRC Ghost<\/a>)<\/li>\n<\/ul>\n<h3><span id=\"PWM-Pulse-Width-Modulation\" class=\"penci-toc-section\">PWM \u2013 Pulse Width Modulation<\/span><\/h3>\n<p>PWM stands for pulse width modulation, the length of the pulse specifies the servo output or throttle position, and therefore it shares characteristics of both digital and analog signals. The length of the signal pulse normally varies between 1000\u00b5s and 2000\u00b5s (micro seconds), with 1000\u00b5s being the minimum &amp; 2000\u00b5s the maximum.<\/p>\n<p>This is the most common and basic radio control protocol. Back in the days when there was no flight controller, the receivers were used to control the servos and ESC directly with standard PWM signal.<\/p>\n<p>The downside of this is probably the wiring mess, as you have one servo cable for every channel. And so PPM and SBUS are often preferred over PWM when using an FC, which pass all the channels through a single wire and yet offer the same performance if not better.<\/p>\n<p><a href=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/pwm-receiver-flight-controller-connection.jpg\" data-rel=\"penci-gallery-image-content\"><img loading=\"lazy\" decoding=\"async\" class=\"penci-lazy alignnone wp-image-6360 size-large lazyloaded pcloaded\" src=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/pwm-receiver-flight-controller-connection-1024x696.jpg\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/pwm-receiver-flight-controller-connection.jpg 1024w, https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/1_pwm-receiver-flight-controller-connection-300x204.jpg 300w, https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/pwm-receiver-flight-controller-connection-600x408.jpg 600w\" alt=\"\" width=\"1024\" height=\"696\" data-src=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/pwm-receiver-flight-controller-connection-1024x696.jpg\" data-srcset=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/pwm-receiver-flight-controller-connection.jpg 1024w, https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/1_pwm-receiver-flight-controller-connection-300x204.jpg 300w, https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/pwm-receiver-flight-controller-connection-600x408.jpg 600w\" data-ll-status=\"loaded\" \/><\/a><\/p>\n<h3><span id=\"PPM-Pulse-Position-Modulation\" class=\"penci-toc-section\">PPM \u2013 Pulse Position Modulation<\/span><\/h3>\n<p>PPM is also known as CPPM or PPMSUM. A PPM signal is basically a series of PWM signals sent one after another on the same wire, and modulated differently.<\/p>\n<p>The advantage of PPM over PWM is that only one single wire is needed for several channels. So typically, you would only need to connect the ground, power and signal wires for up to 8 channels.<\/p>\n<p>As the channel values don\u2019t arrive at the same time, it\u2019s not as accurate or jitter-free as serial communications (which we will cover in a minute).<\/p>\n<p><a href=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/ppm-receiver-flight-controller-connection-one-wire.jpg\" data-rel=\"penci-gallery-image-content\"><img loading=\"lazy\" decoding=\"async\" class=\"penci-lazy alignnone size-full wp-image-6359 lazyloaded pcloaded\" src=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/ppm-receiver-flight-controller-connection-one-wire.jpg\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" srcset=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/ppm-receiver-flight-controller-connection-one-wire.jpg 756w, https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/1_ppm-receiver-flight-controller-connection-one-wire-300x225.jpg 300w, https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/ppm-receiver-flight-controller-connection-one-wire-600x451.jpg 600w\" alt=\"\" width=\"756\" height=\"568\" data-src=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/ppm-receiver-flight-controller-connection-one-wire.jpg\" data-srcset=\"https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/ppm-receiver-flight-controller-connection-one-wire.jpg 756w, https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/1_ppm-receiver-flight-controller-connection-one-wire-300x225.jpg 300w, https:\/\/www.autouav.net.cn\/wp-content\/uploads\/2023\/06\/ppm-receiver-flight-controller-connection-one-wire-600x451.jpg 600w\" data-ll-status=\"loaded\" \/><\/a><\/p>\n<h3><span id=\"Serial-Protocols\" class=\"penci-toc-section\">Serial Protocols<\/span><\/h3>\n<p>A serial protocol is a digital loss-less protocol that uses only 3 wires (signal, power, ground) for multiple channels. Unlike PPM which is a signal in time domain, serial protocols are completely digital which means they are made up of a bunch of one\u2019s and zero\u2019s.<\/p>\n<p>As the name suggests, serial protocols require a serial port on the flight controller (aka UART).<\/p>\n<h3><span id=\"SBUS\" class=\"penci-toc-section\"><strong>SBUS<\/strong><\/span><\/h3>\n<p>Aka S.BUS or Serial BUS, is commonly used by Futaba and FrSky. It supports up to 16 channels using only one signal wire.\u00a0SBUS signal should be connected to the RX pin of an UART.<\/p>\n<p>Note that the SBUS signal in Frsky\u2019s receivers is inverted, and therefore (normally) on F1 and F4 FC, there are dedicated SBUS input which indicates there is an inverter in place for the inverted SBUS signal. However for F3 and F7 FC\u2019s, the processor has built-in inverters on all of their UART\u2019s, and so you can connect SBUS to any UART you want.<\/p>\n<h3><span id=\"CRSF\" class=\"penci-toc-section\">CRSF<\/span><\/h3>\n<p>CRSF is developed by TBS for their Crossfire RC system. It\u2019s similar to SBUS or other digital RX to FC protocols.<\/p>\n<p>The main advantages include fast update rate and two-way communication capabilities, allowing features such as hassle free Telemetry to be injected into the radio link with no additional UART port required.<\/p>\n<h3><span id=\"IBUS\" class=\"penci-toc-section\">IBUS<\/span><\/h3>\n<p>IBUS is flysky\u2019s serial protocol. It\u2019s a two way communication which means it can send and receive data: one port for servo data output and one port for sensors.<\/p>\n<h3><span id=\"XBUS\" class=\"penci-toc-section\">XBUS<\/span><\/h3>\n<p>XBUS is used by JR, which supports up to 14 channels in one signal wire. One of the advantages is the tiny time delay between each channel.<\/p>\n<h3><span id=\"MSP\" class=\"penci-toc-section\">MSP<\/span><\/h3>\n<p>MSP (Multiwii Serial Protocol) was created as part of the multiwii software. Basically it allows you to use MSP commands as the RC input and it supports 8 channels in one signal cable.<\/p>\n<h3><span id=\"FPort\" class=\"penci-toc-section\">FPort<\/span><\/h3>\n<p>FPort is developed by Frsky and Betaflight developers. Normally, control signal and telemetry data requires separate connections, but FPort manages to combine them into one single bi-directional signal, which makes it more compact and easier to manage.<\/p>\n<p>Unlike Frsky\u2019s SBUS which is inverted, FPort is compatible with F4 flight controllers UART without additional inverters or hacks.<\/p>\n<p><a href=\"https:\/\/oscarliang.com\/setup-frsky-fport\/\" target=\"_blank\" rel=\"noopener\">You can learn more about FPort and how to setup here.<\/a><\/p>\n<h2><span id=\"ESC-Protocols\" class=\"penci-toc-section\">ESC Protocols<\/span><\/h2>\n<p>Communication between the FC and ESC\u2019s is wired as well. ESC protocols are basically the flight controller telling the ESC how fast they should drive the motors.<\/p>\n<p>The FC has to communicate to the ESC\u2019s at a much faster rate than the receiver has to communicate with the FC. That\u2019s because apart from taking commands from the pilot, the flight controller is also constantly getting lots of data from various sensors such as gyro and accelerometer at a much faster rate (e.g. 2 to 8 thousand times per second), ESC protocol speed must keep up with the PID loop frequency for optimal performance.<\/p>\n<p>Here is a list of the protocols for FC to ESC that you are likely to encounter in this hobby (this list is based off of what\u2019s available in Betaflight FC firmware).<\/p>\n<ul>\n<li>PWM<\/li>\n<li>Oneshot (Oneshot42, Oneshot125)<\/li>\n<li>Multishot<\/li>\n<li>Proshot<\/li>\n<li>Dshot (Dshot150, Dshot300, Dshot600)<\/li>\n<\/ul>\n<p>Note that DShot is a bi-directional protocol, not only the ESC gets commands from the FC, it also tells the FC how fast the motors are running (RPM), which is then used in\u00a0<a href=\"https:\/\/oscarliang.com\/rpm-filter\/\" target=\"_blank\" rel=\"noopener\">RPM filter in Betaflight<\/a>.<\/p>\n<h2><span id=\"How-to-Choose-the-Right-Protocol\" class=\"penci-toc-section\">How to Choose the Right Protocol?<\/span><\/h2>\n<p>The choice of TX and RX protocols is pretty much determined\/limited by your hardware, as most receiver only support certain TX and RX protocols.<\/p>\n<p>If you are buying a pre-built drone, then you don\u2019t have to worry about it at all. But if you are building from scratch, then your decision would affect what you should\/can buy. Just\u00a0<a href=\"https:\/\/oscarliang.com\/radio-transmitter\/\" target=\"_blank\" rel=\"noopener\">pick a radio transmitter you like<\/a>, and then find a compatible receiver, preferably support one of the serial protocols.<\/p>\n<p><a href=\"https:\/\/oscarliang.com\/my-tools-gear-quads\/\" target=\"_blank\" rel=\"noopener\">Take a look at what gear I use in this post<\/a>.<\/p>\n<h2><span id=\"Latency\" class=\"penci-toc-section\">Latency<\/span><\/h2>\n<p>We do not have the proper equipment to test TX and RX latency yet, but fortunately our friend Dronemesh on Youtube have been doing this type of testing for many different kind of TX and RX.<\/p>\n<p>In a radio control system, the latency happens in multiple places. There is latency between your sticks and the RF module on the TX (before it\u2019s transmitted through the air), between transmitter and receiver (signal travels at speed of light so almost negligible), and also there is latency between the receiver and your flight controller.<\/p>\n<p>This is the testing result captured from one of the testing video:<\/p>\n<ul>\n<li>Flysky i6X \u2013 13.7ms<\/li>\n<li>Turnigy Evolution \u2013 14.6ms<\/li>\n<li>Crossfire (on X10) \u2013 19.5ms<\/li>\n<li>Frsky Horus X10 \u2013 31.5ms<\/li>\n<li>Frsky QX7 \u2013 36.3ms<\/li>\n<li>Spektrum DX6i \u2013 41.5ms<\/li>\n<\/ul>\n<p>Of course, lower latency is better, but I don\u2019t think that\u2019s all the reason in choosing a radio. You should also consider the reliability of the RC connection, the features of the radio and ergonomics. But really, can 15ms extra latency affect someone\u2019s flying? Maybe, maybe not.<\/p>\n<p>And there is speculation that the latency of the Flysky system actually increases with range while that of Frsky is more consistent. Hopefully someone will test and confirm.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What are RC Protocols? A protocol is like the language spoken between devices within an FPV drone. D&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[],"class_list":["post-1159","post","type-post","status-publish","format-standard","hentry","category-25"],"_links":{"self":[{"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=\/wp\/v2\/posts\/1159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1159"}],"version-history":[{"count":3,"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=\/wp\/v2\/posts\/1159\/revisions"}],"predecessor-version":[{"id":1173,"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=\/wp\/v2\/posts\/1159\/revisions\/1173"}],"wp:attachment":[{"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.autouav.net.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}