DIY-Multiprotocol-TX-Module icon indicating copy to clipboard operation
DIY-Multiprotocol-TX-Module copied to clipboard

Add protocol for FMS A 18 "mini" 540mm

Open Zebble opened this issue 3 years ago • 28 comments

Just snagged this nice little model: https://www.aliexpress.com/item/1005003567728014.html

It's listed as FMS and seems to be a smaller version of their PA 18 1700mm.

I couldn't find a protocol that works so I did an XN297 sniff/dump. Seems similar to the MT99xx protocol so I tried all subprotocols in MT99xx and can't get it to bind. Also didn't see anything different in what should have been the bind process, it just starts spitting out the same channel data.

The board/brick doesn't look similar to anything else I can find, and there are no model numbers on the board. The controller looks identical to the Dragon Mini Wing except the wording on the front says "EAZ RC, ERC-1 2.4GHz".

I've attached the dump and here's a summary of the data:

byte[0]: Throttle - low=E1, high=00 byte[1]: Rudder - left=E1, right=00 byte[2]: Aileron - right=E1, left=00 byte[3]: Elevator - forward=E1, back=00 byte[4]: Elevator trim byte[5]: Aileron trim added with Mode switch (beginner = 00, mid=20, expert=60) byte[6]: 08 = RTH (stays for 2 seconds/80 packets after press), 80 = button press (aerobatics) - instantaneous, single packet, even if held down. Only works in beginner and mid modes. byte[7]: Rudder trim plus seems to alternate adding 00/40 between packets. byte[8]: CRC/Checksum?

Anything else I can help with to get this protocol added, just ask!

Thanks xn297-fms-pa18-540mm.zip

[moved this report to github, as per hpnuts' request]

-zeb

Zebble avatar Jan 17 '22 17:01 Zebble

To answer your questions from rcgroups:

"The checksum is different. They've added 0x89 to it. I don't know where this value is coming from... Can you capture a bind packet? This might give a clue."

I can't seem to get it to go through the bind process. No matter what I do, it immediately connects and starts sending the same packets in XN297, unless I'm missing something?

"The byte[5] description looks a bit weird to me. Can you explain how the trim behave? Since on the other channels trim 20 means centered but for this one and only this one it is different?"

byte[5] seems to mathematically add 00, 20 or 60 to the value of the aileron trim, depending on the position of the mode switch (beginner, mid, expert, respectively). Does this make it clearer?

Not sure why they did this either, or the rudder trim having 00/40 added in alternating packets.

Zebble avatar Jan 17 '22 17:01 Zebble

To receive bind packets, set the sub protocol to 1Mb and the RF channel to 2. The module will try to receive packets from there. Then power on the TX only and don't touch anything on it. If you still get nothing try to move slowly the throttle up and then down.

pascallanger avatar Jan 17 '22 23:01 pascallanger

Very cool! I did what you've indicaated and do see something happen when the TX is turned on. I've attached the output. Note that I tried it 3 times during the session so have separated the 3 attempts in the txt file with "----------------------".

I didn't touch the throttle. It just started spitting stuff out.

I hope this helps fms-bind.zip !

Zebble avatar Jan 18 '22 02:01 Zebble

You haven't changed the RF channel to 2 (Channel=0,0x00) which is why there are so many bad readings. But anyway I have what I need. Let's see if I can figure it out now.

pascallanger avatar Jan 18 '22 07:01 pascallanger

The biggest problem I have at this stage is that all sub_protocols have been used for this protocol. I need to create a second entry...

pascallanger avatar Jan 18 '22 07:01 pascallanger

If you power on the TX first and do throttle up and down. Wait a minute then power the plane. Does the plane works right away or you need to power cycle the TX for it to work?

pascallanger avatar Jan 18 '22 07:01 pascallanger

"The byte[5] description looks a bit weird to me. Can you explain how the trim behave? Since on the other channels trim 20 means centered but for this one and only this one it is different?"

byte[5] seems to mathematically add 00, 20 or 60 to the value of the aileron trim, depending on the position of the mode switch (beginner, mid, expert, respectively). Does this make it clearer?

It does not. While dumping what values does the trim takes on Aileron when you go to min, mid, max? Do the test with the different modes and report.

pascallanger avatar Jan 18 '22 08:01 pascallanger

I've got a code nearly ready which is waiting for some of your answers from above. I've modified MT99xx so much that I'm crossing fingers that I haven't broken anything...

pascallanger avatar Jan 18 '22 08:01 pascallanger

If you power on the TX first and do throttle up and down. Wait a minute then power the plane. Does the plane works right away or you need to power cycle the TX for it to work?

It connects right away.

Gathering the aileron trim values now.

Zebble avatar Jan 18 '22 13:01 Zebble

"The byte[5] description looks a bit weird to me. Can you explain how the trim behave? Since on the other channels trim 20 means centered but for this one and only this one it is different?"

byte[5] seems to mathematically add 00, 20 or 60 to the value of the aileron trim, depending on the position of the mode switch (beginner, mid, expert, respectively). Does this make it clearer?

It does not. While dumping what values does the trim takes on Aileron when you go to min, mid, max? Do the test with the different modes and report.

Here are the values for aileron trim/mode switch combo:

byte[5] beginner mid expert

ail trim min (left) 3F 7F BF ail trim mid 20 60 A0 ail trim max (right) 01 41 81

Zebble avatar Jan 18 '22 14:01 Zebble

You haven't changed the RF channel to 2 (Channel=0,0x00) which is why there are so many bad readings. But anyway I have what I need. Let's see if I can figure it out now.

You have what you need but I'm wondering how to change channel? I thought I did that by changing the Receiver #. I'm using EdgeTX and don't see an "options" field.

Zebble avatar Jan 18 '22 14:01 Zebble

You haven't changed the RF channel to 2 (Channel=0,0x00) which is why there are so many bad readings. But anyway I have what I need. Let's see if I can figure it out now.

You have what you need but I'm wondering how to change channel? I thought I did that by changing the Receiver #. I'm using EdgeTX and don't see an "options" field.

It should display RF channel with a value of which you can change from -127 to +127. But not an issue I have everything I need. I'll create a build later today.

pascallanger avatar Jan 18 '22 14:01 pascallanger

Here are the values for aileron trim/mode switch combo:

byte[5] beginner mid expert

ail trim min (left) 3F 7F BF ail trim mid 20 60 A0 ail trim max (right) 01 41 81

I understand now.

pascallanger avatar Jan 18 '22 14:01 pascallanger

FYI, have opened an issue with EdgeTX to get the "RF Channel" option added. There's a lot of confusion around this XN297 dumping feature so I may document my experience in the Wiki at some point, in hopes it makes it easier to add future protocols.

Zebble avatar Jan 23 '22 15:01 Zebble

I haven't tested anything but you can try to install this firmware: https://downloads.multi-module.org/latest-test/ Then test with the protocol MT99xx2/PA18: https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/blob/master/Protocols_Details.md#MT99XX2---92 Please report.

pascallanger avatar Jan 23 '22 17:01 pascallanger

Thanks Pascal! Just did a quick test and doesn't seem to bind... I can do a XN297 dump from another radio if you need?

Zebble avatar Jan 23 '22 18:01 Zebble

If you have a second radio that could help.

pascallanger avatar Jan 23 '22 18:01 pascallanger

Yup, I'll get this test firmware installed on a Jumper T-lite and do the sniff from a TX16S with an external module. I'll do that later today.

Zebble avatar Jan 23 '22 18:01 Zebble

Oh I thought you had another original radio... Doing a dump from what I'm doing won't help me...

I've pushed 1.3.3.9, the build is ongoing, wait 5 minutes before redownloading the test vesion. If you can see if it works.

pascallanger avatar Jan 23 '22 18:01 pascallanger

I only have the 1 original controller. Was just going to sniff the bind channel with the original and compare it to what was coming out of your test version if that helps.

Tried 1.3.3.9 and still won't bind.

Zebble avatar Jan 23 '22 18:01 Zebble

If it helps, I just sniffed the original controller and your 1.3.3.9 version, with the plane off:

On the original controller, I get 138 packets like: RX: 8423us C=2 S=Y A= CC CC CC CC CC P(9)= 20 14 03 25 C9 02 13 89 55

On 1.3.3.9, I get 54 packets like: RX: 9280us C=2 S=Y A= CC CC CC CC CC P(9)= 20 14 03 25 4F 78 00 89 55

The multimodule only attempts this on first try. I can't BIND to try again - it beeps but nothing happens on channel 2. I have to turn off the radio and turn it back on to try again. Even then it's not consistent. Sometimes it tries to bind, sometimes it doesn't. If I change receiver number, sometimes it works again. Seems to be most consistent when Bind on Channel is enabled, but even then not 100% consistent.

Zebble avatar Jan 23 '22 20:01 Zebble

I have a friend with the same plane. Going to see if I can borrow his TX...

Zebble avatar Jan 23 '22 21:01 Zebble

Can you try v1.3.3.10?

pascallanger avatar Jan 24 '22 07:01 pascallanger

Still no bind. I'll work on getting the 2nd radio.

Zebble avatar Jan 24 '22 14:01 Zebble

Can you try v1.3.3.11? After if it still doesn't work, I'll debug it on my radio since I haven't took the time to do it yet.

Note: this is not my usual way to work but I do have familly and other issues to deal with which are taking my time away...

pascallanger avatar Jan 25 '22 14:01 pascallanger

Thanks Pascal. Still no bind with 1.3.3.11. Take your time. This is all just fun stuff. Family always comes first.

Zebble avatar Jan 25 '22 17:01 Zebble

I was able to grab a second controller (and plane) and have attached a captured XN297 dump and attached. I've noted the controller changes in the file. I tried:

controller 1 controller 2 controller 2 again controller 1

I turned the plane off and on between attempts, of course. Both controllers bound fine capture - 2 controllers - FMS.txt .

Zebble avatar Feb 03 '22 23:02 Zebble

Sorry I dropped the ball... Are you still interrested?

pascallanger avatar Jul 07 '22 08:07 pascallanger