DIY-Multiprotocol-TX-Module
DIY-Multiprotocol-TX-Module copied to clipboard
Add protocol for FMS A 18 "mini" 540mm
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
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.
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.
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 !
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.
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...
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?
"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.
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...
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.
"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
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.
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.
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.
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.
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.
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?
If you have a second radio that could help.
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.
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.
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.
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.
I have a friend with the same plane. Going to see if I can borrow his TX...
Can you try v1.3.3.10?
Still no bind. I'll work on getting the 2nd radio.
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...
Thanks Pascal. Still no bind with 1.3.3.11. Take your time. This is all just fun stuff. Family always comes first.
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 .
Sorry I dropped the ball... Are you still interrested?