Page 1 of 7

UEI Learning format change

Posted: Tue Sep 12, 2017 8:41 am
by vickyg2003
I do my protocol development in PB/IR because RMIR doesn't like it when you continually change the protocol (get it right the first time you dummy!). Since it takes me a LOT of trial and error I stick with the PB/IR combo.

I have a long standing practice of loading a learn into an Atlas and then doing my protocol development and shooting the signals at my widget for comparison. Recently I worked on a bunch of learns from an xsight remote. When I transferred them to my Atlas, the learns crashed IR. I tried to import the learns into IRScope and they wouldn't go there either.

It was really disappointing to load a bunch of learns into an Atlas and then not be able to open the file in IR, to gain access to the Learn timing summary and just have them at hand for easy comparison.

Is there a chart or rule of thumb that can tell me what learns can be transferred and what learns can't?

Posted: Tue Sep 12, 2017 4:14 pm
by mathdon
RMIR will transfer all learns between remotes. There are at least 4 learned formats and RMIR translates all of them into the original format for display, and back to the format used by the remote concerned on import.

Vicky, the sooner you move over completely from IR to RMIR, the better :) .

Posted: Tue Sep 12, 2017 6:22 pm
by vickyg2003
mathdon wrote: Vicky, the sooner you move over completely from IR to RMIR, the better :) .
Be careful what you wish for, :lol:. You know I break things.

There are a few things holding me back from RMIR but now that I'm moving on to the Nevo, I'm getting there.

I really miss a few things in RMIR
Missing items
-First of all there is the Timing report that does the rounding.
-The summary report

The second thing is that I have so little control. It removes things that it thinks I don't need. Like protocols with very minor tweaks.

I use a lot of custom protocols that are such minor tweaks. Like I need a 50% duty cycle on the RC-5 protocol that I use for my Roady, and I pushed the limits of my Sharp protocol so that I can get into the menu without my XMP cable box tuning in NASCAR.

To do this kind of thing, in RMIR takes a lot of work. it requires that I edit protocols.ini and RDFs. and that I need to redo these things every time you issue an update.

Posted: Tue Sep 12, 2017 7:42 pm
by The Robman
The main thing still missing in RMIR is the ability to manually decode bi-phase signals, we still need IR.exe for that.

Posted: Wed Sep 13, 2017 2:22 am
by mathdon
Rob, can you give me an example of what you can't do? I thought Vyrolan added bi-phase and rounding capabilities into RMIR a few years ago at your request.

Posted: Wed Sep 13, 2017 8:46 am
by The Robman
I thought so too, and maybe it was there once and has since vanished, not sure. I haven't tried decoding any learned signals in a very long time, so this MCE keyboard thing with Vicky was the first time in a long time.

Anyway, I first tried opening the MCE learns in RMIR, then I clicked "Timing Summary" where the only rounding option it gives is to enter a single number (in the "Round To" box) but there are no bi-phase options (unless they're hidden). For the MCE bi-phase signals, I entered 300 but it didn't split the 600 times into two, which I didn't expect it to as I don't have the ability to tell RMIR that the signal is bi-phase.

Using IR.exe, you go to the "Learned Signals" tab, then for the MCE bi-phase signals, I enter 300 as the "RoundTo" time and select "ODD" from the "Bi-Phase" drop down. Then you click on "Times Summary" to get all the timings.

When bi-phase is "NO", the rounding should match what RMIR does. The difference between ODD and EVEN is basically determines whether the leadin pair has an OFF time or not. For the MCE signals it doesn't, so even though the strings all start with "+2700 -300", when you select ODD, that -300 becomes the first half of a ZERO pair in the main data, whereas if you had selected EVEN, the -300 would be treated as part of the leadin and the next +300 would be the first half of the first binary bit.

I'm pretty sure it also handles the fact that, for even signals, the first pair could be "+2700 -600 +300", which should really be "-2700 -300; -300 +300". Not sure if it would convert "+3000 -300" into "+2700; +300 -300" or not because how would it know that the leadin time is +2700.

When we first see a bi-phase signal, the way we decide if it should be EVEN or ODD is to try both and see if one of them eliminates pairs like "+300 +300" and "-300 -300". Of course, RC6 tries to fool you because it has a coupe of double wide pairs in it.

Anyway, here's a *.ir file with some MCE learns in it that you can experiment with:
https://www.hifi-remote.com/forums/dload ... e_id=14687

Try opening it with IR.exe and do the rounding as I described, then try doing the same in RMIR. Actually, that brings up another question. If someone learns something using a recent remote like a Nevo C2, is there anyway that I can make RMIR save the data in *.ir format in such a way that I can open it using IR.exe, given that IR.exe can't handle remotes like the Nevo? Basically, I'd like to convert the output to an older remote that IR.exe can handle. I would just cut & paste the learning section of the E2 area over, but I know the format has changed.

And in case you're wondering, the *.ir file that I just posted was created using my IRScope Decoder spreadsheet that converts IRScope learns into *.ir format.

Posted: Wed Sep 13, 2017 9:00 am
by The Robman
I did a search and found the thread where Vyrolan added rounding and bi-phase to RMIR:
https://www.hifi-remote.com/forums/viewtopic.php?t=14418

So the functionality is in there, it's just hiding. Basically, when you open the timing summary tab, which was his first attempt at it, you just get the one rounding option. What you need to do is click edit on an individual learned signal, then click "Show Advanced Details" which lets you select Bi-Phase, but it doesn't give you an ODD/EVEN option, it tries to figure that out automatically and I don't see a way of overriding it if it's wrong. But here's the deal-breaker, there doesn't appear to be a way of making the bi-phase option persist so that when you go to the timing summary screen it's still in effect.

Posted: Mon Sep 18, 2017 7:40 am
by mathdon
Rob, I've looked into the way Vyrolan's code works and this is what I found. It attempts to create all possible analyses of a learned signal. It then selects the best match as its preferred analysis but all others are available through the drop-down boxes. One box selects between Bi-Phase and Raw, the other selects between analyses of the selected type. This second box will give you a choice between Even and Odd bi-phase signals if the code can create valid analyses of both sorts. So when only Odd is available, as in your Keyboard signals, it is because it cannot create a valid Even analysis.

If you have an example where RMIR only offers you one out of Odd and Even bi-phase and you think the choice is wrong, please let me have it and I will investigate further.

The Timing Summary issue is partly my fault. The overall heading in the summary panel, above the column headings, is

Code: Select all

LEARNED SIGNALS:
LEARNED RAW DATA:
and the data column is headed Raw Timing Data. The data it was displaying, however, was analyzed data. Somehow this came to my attention in March this year, I can't remember how, and I fixed it by making the display be what it said, the raw data. I thought at the time about putting in a selector to allow a choice of display, but had other things on my plate and so just did the quickest fix.

I've now put in radio buttons to select between raw and analysed data and the headings are changed accordingly. The analyzed data is, by default, what RMIR selects as its preferred analysis, so will be Odd Bi-Phase in the case of the Keyboard signals. If you edit a signal and use the Advanced Details panel to change the selected analysis for it, your selection will be what is displayed in the summary. But just pressing Timing Analysis without ever editing any signal, and then selecting the Analyzed Data radio button, will give you its preferred choice of bi-phase analysis for any signal that it considers to be bi-phase.

If you like the sound of this and don't have an example of a wrong-choice bi-phase signal for me to look at, I'll post this as a development build for you, and anyone else, to try.

Posted: Mon Sep 18, 2017 9:00 am
by The Robman
Given that we already have a rounding box in the Timing Summary screen, I think it would be a good idea to also have the bi-phase stuff next to it there, thus eliminating the need to keep switching back to an individual signal to make changes. I'm ok with the reduced options based on the analysis for now, because it probably gets it right, I'll let you know if I come across a case where it doesn't. Though I have to admit that I'm a little un-easy with the software making decisions for an expert.

What would be REALLY nice though, would be an option to have RMIR create the binary for you. What I currently do is, cut & paste all the data from the Timing Summary over to Notepad and then edit all the "-300 +300; " pairs to be "0" and all the "+300 -300; " pairs to be "1", then I cut & paste the results over to Excel so I can eliminate all the needless columns in the beginning of each line and so I can split the binary into byte sized (or smaller) chunks, so I can figure out device codes, OBCs and checksums. That wouldn't be too bad if you only had to do it once, but when you're writing and testing a new executor, you have to do it many times. So, if I could enter all the burst pairs once and have RMIR remember what I did, that would be great.

Posted: Mon Sep 18, 2017 12:12 pm
by mathdon
I'm not entirely sure what you mean, but how about something like this (from your Keyboard data):

Code: Select all

LEARNED SIGNALS:
SELECTED DATA ANALYSES:
#	Device	Key	Notes	Freq	Analyzed Timing Data
1	CBL	TV	three	35714	Once:	+2800; 00010000010011000000000010000000000000 ;-73200 0
2	CBL	Setup	six	35874	Once:	+2800; 00010000010000000000000010001100000000 ;-73220 0
3	CBL	Power	seven	36530	Repeat:	+2800; 00010000011100000000000010010000000000 ;-73200 0
4	CBL	VOL+	eight	35714	Once:	+2760 -240; 11111111111111111111111111111110 ;-72940
5	CBL	VOL-	nine	37209	Once:	+2800; 00010000010010000000000010011000000000 ;-73200 0
6	CBL	CH+	F8 Down	36364	Repeat:	+2700; 00010000011001000000000100000100000000 ;-73200 0
7	CBL	CH-	f9 Down	37559	Once:	+2700; 00010000011010000000000100001000000000 ;-78300 0
8	CBL	Mute	f10 down	36364	Repeat:	+2700; 00010000010111000000000100001100000000 ;-73200 0
9	CBL	CBL	f11 Down	35714	Once:	+2800; 00010000011011000000000100010000000000 ;-73220 0
10	CBL	VCR	Backquote	36697	Once:	+2800; 00010000000011000000000011010100000000 ;-73220 0
11	CBL	RWD	Colon	35714	Once:	+2800; 00010000001000000000000011001100100000 ;-73200 0
12	CBL	Play	Colon 2	37559	Repeat:	+2700; 00010000001000000000000011001100100000 ;-73250 0
13	CBL	FWD	Comma	37037	Once:	+2700; 00010000001010000000000011011000100000 ;-73200 0
14	CBL	Stop	CTRl	36364	Repeat:	+2700; 00010000000011000000000000000000000001 ;-73200 0
15	CBL	Pause	Left Bracket	36697	Once:	+2800; 00010000000001000000000011000000000000 ;-73220 0
16	CBL	REC	LeftBracket 2	37037	Once:	+2700; 00010000000001000000000011000000000000 ;-73200 0
17	CBL	AUX1	F8 Down	36364	Repeat:	+2700; 00010000011001000000000100000100000000 ;-73200 0
18	CBL	Enter	f9 Down	37559	Once:	+2700; 00010000011010000000000100001000000000 ;-78300 0
19	CBL	Prev	f10 down	36364	Repeat:	+2700; 00010000010111000000000100001100000000 ;-73200 0
20	CBL	Move	f11 Down	35714	Once:	+2800; 00010000011011000000000100010000000000 ;-73220 0
21	CBL	1	Right Brace	35398	Once:	+2800 -140; 00100000010110000000000110000001000000 ;-73220
22	CBL	2	Mouse Up	36530	Repeat:	+2700; 00000100001111111101000000000010000 ;-10800 0
23	CBL	3	Mouse Left	36530	Repeat:	+2700; 00000100000001000000011110110011110 ;-10800 0
24	CBL	Fav	Mouse L Down	36530	Repeat:	+2700; 00000100010000000011111110000001111 ;-10800 0
25	CBL	4	Mouse L Up	36530	Repeat:	+2700; 00000100001000111101011110100010111 ;-10800 0
26	CBL	5	Mouse R Down	36530	Repeat:	+2700; 00000100010000000010100001010001111 ;-10800 0
27	CBL	6	Mouse R Up	36530	Repeat:	+2700; 00000100001110111101100001010010001 ;-10800 0
28	CBL	7	Mouse Right	36530	Repeat:	+2700; 00000100001111000000000001010010000 ;-10800 0

Posted: Mon Sep 18, 2017 1:00 pm
by The Robman
Exactly, then I'd copy it over to Excel to remove the excess columns, reducing it to something like this (paste it back into Excel to view properly, I threw the button names to the end to make it display better here):

Code: Select all

+2800; 00010000010011000000000010000000000000 ;-73200 0	three
+2800; 00010000010000000000000010001100000000 ;-73220 0	six
+2800; 00010000011100000000000010010000000000 ;-73200 0	seven
+2800; 00010000010010000000000010011000000000 ;-73200 0	nine
+2700; 00010000011001000000000100000100000000 ;-73200 0	F8 Down
+2700; 00010000011010000000000100001000000000 ;-78300 0	f9 Down
+2700; 00010000010111000000000100001100000000 ;-73200 0	f10 down
+2800; 00010000011011000000000100010000000000 ;-73220 0	f11 Down
+2800; 00010000000011000000000011010100000000 ;-73220 0	Backquote
+2800; 00010000001000000000000011001100100000 ;-73200 0	Colon
+2700; 00010000001000000000000011001100100000 ;-73250 0	Colon 2
+2700; 00010000001010000000000011011000100000 ;-73200 0	Comma
+2700; 00010000000011000000000000000000000001 ;-73200 0	CTRl
+2800; 00010000000001000000000011000000000000 ;-73220 0	Left Bracket
+2700; 00010000000001000000000011000000000000 ;-73200 0	LeftBracket 2
+2700; 00010000011001000000000100000100000000 ;-73200 0	F8 Down
+2700; 00010000011010000000000100001000000000 ;-78300 0	f9 Down
+2700; 00010000010111000000000100001100000000 ;-73200 0	f10 down
+2800; 00010000011011000000000100010000000000 ;-73220 0	f11 Down
+2800; 00100000010110000000000110000001000000 ;-73220 0	Right Brace
Then I'd use the "Text to columns" feature to split the lead in/out times off...

Code: Select all

00010000010011000000000010000000000000	three
00010000010000000000000010001100000000	six
00010000011100000000000010010000000000	seven
00010000010010000000000010011000000000	nine
00010000011001000000000100000100000000	F8 Down
00010000011010000000000100001000000000	f9 Down
00010000010111000000000100001100000000	f10 down
00010000011011000000000100010000000000	f11 Down
00010000000011000000000011010100000000	Backquote
00010000001000000000000011001100100000	Colon
00010000001000000000000011001100100000	Colon 2
00010000001010000000000011011000100000	Comma
00010000000011000000000000000000000001	CTRl
00010000000001000000000011000000000000	Left Bracket
00010000000001000000000011000000000000	LeftBracket 2
00010000011001000000000100000100000000	F8 Down
00010000011010000000000100001000000000	f9 Down
00010000010111000000000100001100000000	f10 down
00010000011011000000000100010000000000	f11 Down
00100000010110000000000110000001000000	Right Brace
And then I'd use the "Text to columns" feature again to split the binary into whatever sort of chunks I think make sense based on my analysis of the signal

Code: Select all

000100000	10011	00000000	00100000	00000000	three
000100000	10000	00000000	00100011	00000000	six
000100000	11100	00000000	00100100	00000000	seven
000100000	10010	00000000	00100110	00000000	nine
000100000	11001	00000000	01000001	00000000	F8 Down
000100000	11010	00000000	01000010	00000000	f9 Down
000100000	10111	00000000	01000011	00000000	f10 down
000100000	11011	00000000	01000100	00000000	f11 Down
000100000	00011	00000000	00110101	00000000	Backquote
000100000	01000	00000000	00110011	00100000	Colon
000100000	01000	00000000	00110011	00100000	Colon 2
000100000	01010	00000000	00110110	00100000	Comma
000100000	00011	00000000	00000000	00000001	CTRl
000100000	00001	00000000	00110000	00000000	Left Bracket
000100000	00001	00000000	00110000	00000000	LeftBracket 2
000100000	11001	00000000	01000001	00000000	F8 Down
000100000	11010	00000000	01000010	00000000	f9 Down
000100000	10111	00000000	01000011	00000000	f10 down
000100000	11011	00000000	01000100	00000000	f11 Down
001000000	10110	00000000	01100000	01000000	Right Brace
In this case, the first byte is the "device code", the second is the checksum, the third is always zeroes, the forth is the OBC and the fifth is the modifier (ie, SHIFT, CTRL, Windows, etc).

Posted: Mon Sep 18, 2017 4:04 pm
by mathdon
That wasn't a simulation, I have coded that so I will incorporate it into the Timing Summary as a selectable option. But of course it is only for bi-phase signals. While I am at this, is there anything similar you think I should do for other (non-bi-phase) signals?

Posted: Mon Sep 18, 2017 5:28 pm
by The Robman
mathdon wrote:That wasn't a simulation, I have coded that so I will incorporate it into the Timing Summary as a selectable option. But of course it is only for bi-phase signals. While I am at this, is there anything similar you think I should do for other (non-bi-phase) signals?
Sure, I do the same editing for non bi-phase, except I would need to tell RMIR which pairs are logic 1s and 0s. And then there are signals that have more than 2 pairs, like quads with 4 and XMP with 16. For XMP I had to label them 0 thru F.

Posted: Mon Sep 18, 2017 6:30 pm
by vickyg2003
Don't forget Quad-Phase

Posted: Wed Sep 20, 2017 7:33 am
by mathdon
Rob, I find that there are significant issues with Vyrolan's coding. The Vol+ signal on key eight of the Keyboard is an example where the bi-phase should be ODD and RMIR forces it to be EVEN. I have so far failed to find a fix for this - I've tried all sorts of code changes to try to get it to recalculate with a rounding to 300, which should give ODD at least as an alternative, but with no success. His code is immensely complicated and I haven't properly found my way around it, but you have got me interested, so I will persist. This is really just to let you know that I am investigating it.