- Posts: 36
Esky 150X, which protocol ?
- Käseknigger
-
- Offline
Less
More
17 Dec 2016 08:33 - 17 Dec 2016 13:15 #56909
by Käseknigger
Replied by Käseknigger on topic Esky 150X, which protocol ?
Ok, now did an analysis for the binding process.
As it seems the binding process is quite forward: The TX just sends a special packet on channel 1, with the base tx_addr 0x73,0x73,0x74,0x63, over and over again, as long as you hold the trim button.
If the RX is powered on or off doesn't make any difference.
The init remains the same. Just the last two packets from the init procedure above are not executed, the ones which change the channel to 22 and set a new TX_addr.
The packet is as following:
As you can see, the package contains first the TX_ID of my transmitter (C6, F3, D6, 02), then the default TX_addr(73, 73, 74, 63) and then again the TX_addr of my transmitter (C6, F3, D6, 02) and the remaining 3 bytes are unused (00). there's no additional checksum. But as the TX-ID will be transmitted two times in one package that should be enough error detection.
That's all.
Anybody keen to implement this binding process?
I could implement the additional channel handling (add channels 5,6 and 7), but I would first have to analyze other protocols to see how to implement the binding procedure in deviation.
Edit:
There's only one thing that puzzles me. Although I have a completely different TX_ID than the one in the current implementation, mine also uses the channels 22 and 4A. I get the impression that onlky these channels are used independent of the TX_IDs. Otherwise that would be quite a coincidence.
As it seems the binding process is quite forward: The TX just sends a special packet on channel 1, with the base tx_addr 0x73,0x73,0x74,0x63, over and over again, as long as you hold the trim button.
If the RX is powered on or off doesn't make any difference.
The init remains the same. Just the last two packets from the init procedure above are not executed, the ones which change the channel to 22 and set a new TX_addr.
The packet is as following:
0.236025250000000,53,0xA0,0x0E write payload (15bytes)
0.236096000000000,53,0xC6,0x00
0.236166500000000,53,0xF3,0x00
0.236237000000000,53,0xD6,0x00
0.236307625000000,53,0x02,0x00
0.236378125000000,53,0x73,0x00
0.236448625000000,53,0x73,0x00
0.236519125000000,53,0x74,0x00
0.236589625000000,53,0x63,0x00
0.236660250000000,53,0xC6,0x00
0.236730750000000,53,0xF3,0x00
0.236801250000000,53,0xD6,0x00
0.236871750000000,53,0x02,0x00
0.236942250000000,53,0x00,0x00
0.237012875000000,53,0x00,0x00
0.237083375000000,53,0x00,0x00
0.237387500000000,54,0x27,0x2E write status reg
0.237442750000000,54,0x70,0x00As you can see, the package contains first the TX_ID of my transmitter (C6, F3, D6, 02), then the default TX_addr(73, 73, 74, 63) and then again the TX_addr of my transmitter (C6, F3, D6, 02) and the remaining 3 bytes are unused (00). there's no additional checksum. But as the TX-ID will be transmitted two times in one package that should be enough error detection.
That's all.
Anybody keen to implement this binding process?
I could implement the additional channel handling (add channels 5,6 and 7), but I would first have to analyze other protocols to see how to implement the binding procedure in deviation.
Edit:
There's only one thing that puzzles me. Although I have a completely different TX_ID than the one in the current implementation, mine also uses the channels 22 and 4A. I get the impression that onlky these channels are used independent of the TX_IDs. Otherwise that would be quite a coincidence.
Last edit: 17 Dec 2016 13:15 by Käseknigger.
- Moeder
-
- Offline
Less
More
- Posts: 796
19 Dec 2016 12:27 #56979
by Moeder
Replied by Moeder on topic Esky 150X, which protocol ?
Has been a while for tweaking a protocol, but this should actually be a quick fix to this truly incomplete module.
Fixed channels 22 and 4A could very likely be possible, so all we have to do is transmit the "unique" TXID in a bind packet...
I'll try to get my docker images back up and running (am I the only one having trouble with this?)...unless victzh beats me to modifying the protocol
Fixed channels 22 and 4A could very likely be possible, so all we have to do is transmit the "unique" TXID in a bind packet...
I'll try to get my docker images back up and running (am I the only one having trouble with this?)...unless victzh beats me to modifying the protocol
- Käseknigger
-
- Offline
Less
More
- Posts: 36
19 Dec 2016 18:13 - 19 Dec 2016 18:18 #57001
by Käseknigger
Replied by Käseknigger on topic Esky 150X, which protocol ?
I'm also currently at it... Lol...
But I don't have the proper environment for compilation.
BTW. As I looked back, on another thread, it seems what victzh did with the channel selection does work, as the protocol works seemingly with any channels, if only the 2nd channel is the first+40.
So one really just has to integrate the bind process, and add the additional channels (CH5 Ch6 and CH7), whereas CH5 is only 1 bit, But I would implement it as 2 bits and CH6 is 12 bits and CH7 again 2bits.
Edit: Attached, what I have so far. But I just started...
But I don't have the proper environment for compilation.
BTW. As I looked back, on another thread, it seems what victzh did with the channel selection does work, as the protocol works seemingly with any channels, if only the 2nd channel is the first+40.
So one really just has to integrate the bind process, and add the additional channels (CH5 Ch6 and CH7), whereas CH5 is only 1 bit, But I would implement it as 2 bits and CH6 is 12 bits and CH7 again 2bits.
Edit: Attached, what I have so far. But I just started...
Last edit: 19 Dec 2016 18:18 by Käseknigger.
- Moeder
-
- Offline
Less
More
- Posts: 796
19 Dec 2016 18:29 - 19 Dec 2016 18:34 #57003
by Moeder
Replied by Moeder on topic Esky 150X, which protocol ?
Docker is up and running again, I
forked
the master branch, but the main code changes I haven't pushed into the repo yet. I'll use your stuff and send you some compiled Zip as soon as it's ready. What transmitter do you need?
Last edit: 19 Dec 2016 18:34 by Moeder.
- Käseknigger
-
- Offline
Less
More
- Posts: 36
19 Dec 2016 19:13 - 19 Dec 2016 19:23 #57005
by Käseknigger
Replied by Käseknigger on topic Esky 150X, which protocol ?
as attachment now the more progressed code. The channel handling should now be complete.
The binding still needs some handling code.
The tx_adress of the nrf24l01 has to be set to the same as the rx address for binding. And then set back to the tx_id.
I have a devo 10.
Edit:
Unfortunately I dont' have more time for today... So either someone else is finishing the binding code stuff, or I will continue tomorrow.
BTW:
I renamed the esk150 protocol into esky_new, as the protocol works for all newer esky models. So the makefile and protocol.h need to be updated accordingly.
Edit2:
Just saw an obvious error I made in the static u16 convert_2bit_channel(u8 num) routine
It should obviously be return ch_out; not return ch;
The binding still needs some handling code.
The tx_adress of the nrf24l01 has to be set to the same as the rx address for binding. And then set back to the tx_id.
I have a devo 10.
Edit:
Unfortunately I dont' have more time for today... So either someone else is finishing the binding code stuff, or I will continue tomorrow.
BTW:
I renamed the esk150 protocol into esky_new, as the protocol works for all newer esky models. So the makefile and protocol.h need to be updated accordingly.
Edit2:
Just saw an obvious error I made in the static u16 convert_2bit_channel(u8 num) routine
It should obviously be return ch_out; not return ch;
Last edit: 19 Dec 2016 19:23 by Käseknigger.
- Käseknigger
-
- Offline
Less
More
- Posts: 36
19 Dec 2016 19:30 - 19 Dec 2016 19:35 #57006
by Käseknigger
Replied by Käseknigger on topic Esky 150X, which protocol ?
BTW:
Why do all the nrf24l01 protocols do have the code for the special Beken Chip init in it (lol)?
Did really anyone install such a Beken module into his devo???
And even if they did, then one could add the beken init procedure into the nrf24l01 code (probably 3 different variants for the 3 different speeds)
That would save quite some memory! As like it is done now, it seems like a unnecessary waste of memory to me...
Why do all the nrf24l01 protocols do have the code for the special Beken Chip init in it (lol)?
Did really anyone install such a Beken module into his devo???
And even if they did, then one could add the beken init procedure into the nrf24l01 code (probably 3 different variants for the 3 different speeds)
That would save quite some memory! As like it is done now, it seems like a unnecessary waste of memory to me...
Last edit: 19 Dec 2016 19:35 by Käseknigger.
- victzh
-
- Offline
Less
More
- Posts: 1386
19 Dec 2016 19:36 #57007
by victzh
Replied by victzh on topic Esky 150X, which protocol ?
Sometimes an existing cheap TX is a reasonable source of nRF24 compatible module. We don't want to close this possibility if it costs nothing.
And it's not that terrible waste, but I'll think about moving it into separate procedure in nRF24 module.
And it's not that terrible waste, but I'll think about moving it into separate procedure in nRF24 module.
- victzh
-
- Offline
Less
More
- Posts: 1386
19 Dec 2016 19:40 #57008
by victzh
Replied by victzh on topic Esky 150X, which protocol ?
To not duplicate the whole protocol we have options. You can introduce a new option into esky150, say 'Esky 150X'.
- Moeder
-
- Offline
Less
More
- Posts: 796
19 Dec 2016 20:07 #57010
by Moeder
Replied by Moeder on topic Esky 150X, which protocol ?
I actually disagree in this case. Since the old Esky150 protocol ONLY works for SeBy, it does make no real sense to keep it in future nightlies, once the new Esky2 (I don't like "new" and "old") protocol is merged we should remove "esky150".
- Käseknigger
-
- Offline
Less
More
- Posts: 36
19 Dec 2016 21:04 #57018
by Käseknigger
Replied by Käseknigger on topic Esky 150X, which protocol ?
@victzh:
Actually options are not needed. As it seems, they all use exactly the same protocol. So no options needed.
Actually options are not needed. As it seems, they all use exactly the same protocol. So no options needed.
- victzh
-
- Offline
Less
More
- Posts: 1386
19 Dec 2016 21:07 #57019
by victzh
Replied by victzh on topic Esky 150X, which protocol ?
OK, then just fix existing esky150 - why introduce any new protocols? It's very common situation - bugs being fixed, protocols amended. If we change names every time it happens we'll be out of names soon
- Moeder
-
- Offline
Less
More
- Posts: 796
19 Dec 2016 22:56 - 20 Dec 2016 13:23 #57022
by Moeder
Replied by Moeder on topic Esky 150X, which protocol ?
I just thought since nobody actually uses ESky150 (except perhaps SeBy), we could replace it with something more universal. But I can live with ESky150 as well...
Anyhow, please find attached my first test build for devo10. Please select protocol "ESky2". Not sure it works though, I don't have an Esky150 myself for testing.
Anyhow, please find attached my first test build for devo10. Please select protocol "ESky2". Not sure it works though, I don't have an Esky150 myself for testing.
Last edit: 20 Dec 2016 13:23 by Moeder. Reason: Attachment removed - linked wong Protocol comands
- victzh
-
- Offline
Less
More
- Posts: 1386
20 Dec 2016 00:43 #57023
by victzh
Replied by victzh on topic Esky 150X, which protocol ?
WRT "nobody uses", pay attention to the numbers at the bottom of main forum page. Right now there are 19 registered users and 305 guests. These guests, a.k.a. lurkers, can use various things, and you never know until you try to turn something off.
- Käseknigger
-
- Offline
Less
More
- Posts: 36
20 Dec 2016 07:58 #57031
by Käseknigger
Replied by Käseknigger on topic Esky 150X, which protocol ?
@Moeder:
Thank you I will test it as soon as I got time, which will probably be in the evening, so it will take some time.
Would it also be possible to post your new source file. If anything isn't working I could check it accordingly.
@victzh:
Well actually, we can be pretty sure that the current ESKY150 protocol is not used by anyone except SeBy as it isn't possible to bind to any model. So it will not work for anyone except SeBY.
But IMHO it was just a question of naming. E.g. if one should rename the esky150 protocol into esky2 protocol, as the protocol itself hasn't really anything special to do with the 150, but is just the protocol for all new esky models. But in the end, as it is just a naming issue, it doesn't really matter at all...
Thank you I will test it as soon as I got time, which will probably be in the evening, so it will take some time.
Would it also be possible to post your new source file. If anything isn't working I could check it accordingly.
@victzh:
Well actually, we can be pretty sure that the current ESKY150 protocol is not used by anyone except SeBy as it isn't possible to bind to any model. So it will not work for anyone except SeBY.
But IMHO it was just a question of naming. E.g. if one should rename the esky150 protocol into esky2 protocol, as the protocol itself hasn't really anything special to do with the 150, but is just the protocol for all new esky models. But in the end, as it is just a naming issue, it doesn't really matter at all...
- SeByDocKy
-
- Offline
Less
More
- Posts: 1016
20 Dec 2016 10:16 #57034
by SeByDocKy
Replied by SeByDocKy on topic Esky 150X, which protocol ?
Well in theory the fixed Esky150 should bind some other Esky Helis (300 for example)..... after if both 150 & 150x are implemented I don't care about the name of the protocol
- Moeder
-
- Offline
Less
More
- Posts: 796
20 Dec 2016 14:02 - 20 Dec 2016 14:13 #57038
by Moeder
Replied by Moeder on topic Esky 150X, which protocol ?
Please find attached the devo10 zip for my rewrite of ESky2. I actually mixed the KN protocol up with part of your ESky150 writeup, since I liked the transmitter state setting and some other things more structured in the former one. You can find the
sources in my repository
. I wish you and me luck it works.
P.S.: I removed the old test version in the post above, since I missed out on the correct entry in protocol.h...it would've never worked ;P
P.S.: I removed the old test version in the post above, since I missed out on the correct entry in protocol.h...it would've never worked ;P
Last edit: 20 Dec 2016 14:13 by Moeder.
- Käseknigger
-
- Offline
Less
More
- Posts: 36
20 Dec 2016 18:47 - 20 Dec 2016 18:56 #57053
by Käseknigger
Replied by Käseknigger on topic Esky 150X, which protocol ?
Just a short notice:
The bind doesn't work. It is also waaaaayyy to short. It should be on for a few seconds, or until a key is pressed, if you bind, but it only tries to bind for like half a second.
Nevertheless didn't get it to bind. The stock tx still works without new binding it, so the binding definitely hasn't worked.
When I find the time, I will have a look at the source, if I can find the problem.
Edit:
Ahh I already found a big problem in the source:
The RX address (NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, ...) is fixed and is always needed and should therefore IMHO be initialized in the nrf24l01 init, as it has been done in the esk150 source
Exactly this RX address has also to bet set as TX_addr (NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, ...) for binding!!!
For normal data sending the tx address then can be the specific devo unique one.
The bind doesn't work. It is also waaaaayyy to short. It should be on for a few seconds, or until a key is pressed, if you bind, but it only tries to bind for like half a second.
Nevertheless didn't get it to bind. The stock tx still works without new binding it, so the binding definitely hasn't worked.
When I find the time, I will have a look at the source, if I can find the problem.
Edit:
Ahh I already found a big problem in the source:
The RX address (NRF24L01_WriteRegisterMulti(NRF24L01_0A_RX_ADDR_P0, ...) is fixed and is always needed and should therefore IMHO be initialized in the nrf24l01 init, as it has been done in the esk150 source
Exactly this RX address has also to bet set as TX_addr (NRF24L01_WriteRegisterMulti(NRF24L01_10_TX_ADDR, ...) for binding!!!
For normal data sending the tx address then can be the specific devo unique one.
Last edit: 20 Dec 2016 18:56 by Käseknigger.
- Moeder
-
- Offline
Less
More
- Posts: 796
20 Dec 2016 18:49 #57054
by Moeder
Replied by Moeder on topic Esky 150X, which protocol ?
Could you send me (a link to) the LA capture of the bind signal?
- Käseknigger
-
- Offline
Less
More
- Posts: 36
20 Dec 2016 18:58 - 20 Dec 2016 19:01 #57056
by Käseknigger
Replied by Käseknigger on topic Esky 150X, which protocol ?
What do you mean by "LA"? EDIT: ah Logic Analyzer
Actually all info for the binding proc is just on the top of this page.
Edit: Just saw another problem in the source: Why do you set the Bitrate to 1MB for bind???
Actually all info for the binding proc is just on the top of this page.
Edit: Just saw another problem in the source: Why do you set the Bitrate to 1MB for bind???
Last edit: 20 Dec 2016 19:01 by Käseknigger.
- Moeder
-
- Offline
Less
More
- Posts: 796
20 Dec 2016 19:01 - 20 Dec 2016 19:17 #57057
by Moeder
Replied by Moeder on topic Esky 150X, which protocol ?
I meant the raw capture from your logic analyzer (LA), is it a permanent signal? Is there small breaks between pulses? Things like that.
I just saw that I accidentally set the wrong bitrate for binding. Please find attached an updated version, which also sets channels fixed to 0x22 and 0x4A and significantly extends the bind period.
Edit: Seems we both found my error at the same time
I just saw that I accidentally set the wrong bitrate for binding. Please find attached an updated version, which also sets channels fixed to 0x22 and 0x4A and significantly extends the bind period.
Edit: Seems we both found my error at the same time
Last edit: 20 Dec 2016 19:17 by Moeder. Reason: removed attachment - not working
Time to create page: 0.416 seconds
-
Home
-
Forum
-
General
-
General Discussions
- Esky 150X, which protocol ?