[EN] FlySky i6 IBus: 14 channels! (part1)

I’m a student (in electronic engineering), and I’m broken as… a student! Yet I am like a child who wants a toy: a quadcopter! My quest to have such a thing has been quite easy, until I had to choose a Transmitter. Finaly a nice box containing a FlySky FS-i6 arrived at my door. It is a 2.4GHz 6 channels transmitter, which can also do telemetry. It has 6 channels… 6 channels is good, but 14 is better!

Theory

A servomotor has 3 wires: ground, +5V and a signal wire. The signal is a PWM and its pulse width (in µseconds) is the transmitted value. It gos typically from 1000 to 2000 with 1500 as a middle, default, point. In the case of a quadcopter, these commands are given to a flight controler (FC) wich translates them to motor commands.

IMG_1212

IBus Transmission

The FS-i6 has an IBus interface. It means that it can communicate the servocommands to the flight controller by some kind of serial communication. It has the advantages to limit the number of wires between Rx and FC, but also to use a pure digital transmission.

IMG_1207

I was curious about what was happening on this serial interface, between the Rx and the FC. So I grabbed my logic analyzer and sniffed this servo port. I’m using Saleae software but I only have a chinese dongle. Again, money is not my friend 😉

image2 - ibus servo port

So we see that a frame is sent approximately every 7.7ms. We expect to find our 6 channels in this frame. During sniffing, the command was in the default state, so we should find 1500 for the pitch, the yaw and the roll, 1000 for the thrust and 2000 for the 2 auxiliary channels. In hexadecimal, 1500 equals 0x05DC. Here we have a zoom on one of the frame, decoded by the software. (Serial 115200 bauds, 8n1)

image3 - ibus servo port zoom

Bingo, the 3rd and 4th byte equals 0x05DC (they are sent in reverse) and the 5th and 6th equals 0X05DB.

We take all the frame and group the bytes by 2:

x20x40   = Header
xDCx05  = 1500 ch 1
xDBx05  = 1499 ch 2
xEFx03  = 1007 ch 3
xDDx05  = 1501 ch 4
xD0x07  = 2000 ch 5
xD0x07  = 2000 ch 6
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
xDCx05  = 1500
x54xF3   = Footer, peut-être un checksum?

We recognize a header of 2 bytes, then 12 bytes for our 6 channels and at the end 2 bytes of footer, maybe a checksum (?). Between the end and the 6 channels, suprise!, we see 8 more channels, fixed at 1500! This could bring the numer of channels to 14!

But before we celebrate, we must check that these are not « false channels ». They need to really be sent by the Tx and not created by the Rx to meet the IBus specs. To do this, it’s time to open the emitter! My favorite activity! But I’ll explain it in another post 😉

Thom

PS: Help me to buy a new oscilloscope: Donate on PayPal !
Any help is really appreciated 😉

Advertisements

3 réflexions au sujet de « [EN] FlySky i6 IBus: 14 channels! (part1) »

  1. I¡¦ve been exploring for a little bit for any high-quality articles or blog posts in this sort of house . Exploring in Yahoo I finally stumbled upon this web site. Reading this info So i am happy to convey that I’ve an incredibly good uncanny feeling I came upon exactly what I needed. I most indisputably will make sure to don¡¦t disregard this site and give it a look on a continuing basis.

    J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s