Your Universal Remote Control Center
RemoteCentral.com
Complete Control by URC Forum - View Post
Previous section Next section Previous page Next page Up level
Up level
The following page was printed from RemoteCentral.com:

Login:
Pass:
 
 

Page 2 of 2
Topic:
Importing PronoHex to MX-editor
This thread has 25 replies. Displaying posts 16 through 26.
OP | Post 16 made on Monday April 9, 2007 at 23:08
kharan5876
Long Time Member
Joined:
Posts:
March 2007
17
Wow thanks a lot. This is awesome.

Also, btw I dont know if you did this or not but I think we just can ignore the second piece of the signal.

Once its done we should definatly make the hex file and it's working lircd.conf file public somewhere here so everyone else can benefit from it.
Post 17 made on Tuesday April 10, 2007 at 08:33
johnsfine
IR Expert
Joined:
Posts:
September 2002
5,159
On April 9, 2007 at 23:08, kharan5876 said...
Also, btw I dont know if you did this or not but I think
we just can ignore the second piece of the signal.

I looked at the second frame of each signal to verify my understanding of the encoding and to see a hex digit above B (none of the signals in the list have hex digits above B, but the second frame adds 4 to a position that is usually 9, so that position becomes D).

Anyway, I understood that you didn't want to include the second frame, just repeat the first frame.

On April 9, 2007 at 21:37, kharan5876 said...
I try to do a long press it doesnt learn the repeating
signal properly. (maybe because of the pause that occurs
before the original remote starts repeating?)

I hope you understood that you can't really encode "pause then start repeating" in Pronto Hex and there is probably no way to make an MX-950 behave that way. A Pronto Hex string either repeats or it doesn't.

The direct method (the only way I'd expect universal browser to handle) has a single repeat rate. The gap between the first and second frames is the same as the gap between any subsequent two frames. That gap is typically under a tenth of a second. We can adjust the gap, but if we make it too big, universal browser is likely to get confused.

Pronto hex can be encoded to have a different (but still not terribly large) gap after the first frame than after any other, but that may cause the second frame to be sent unconditionally. I assume the point of the larger gap in the original is to give the user time to release the button fast enough that only one frame will be sent. Without testing, I don't know whether the MX-950 will let a repeating signal send just one frame for a short press. A short press should send fewer frames than a long press, but I don't know whether it can send just one.

There is also an issue with the IR encoding system. If I assume your IR sensor is decoding it correctly, it is a bad protocol design in which many bit patterns will be hard to reproduce correctly. Maybe the protocol has rules I'm not seeing and the decode by your IR sensor isn't capturing the true original data of the signals. But since the point is to satisfy that IR sensor, not understand the original encoding system, I should ignore that path.

The simplest way to get an organised set of signals but still avoid all the problem bit patterns is to use only the hex digits 1, 3, 5 and 7.

I was thinking of setting up the irp file to treat this as a base four encoding, using the patterns for hex 1, 3, 5, and 7 ans the base four digits 0, 1, 2 and 3. Then the first four hex digits could encode an 8 bit function number (and the last four could still duplicate the last four digits of one the signals you have). So we could have a sequence of codes such as:

111191B7
111391B7
111591B7
111791B7
113191B7
113391B7
113591B7
113791B7
etc. all the way up to
777791B7

Assuming your IR sensor will read those, does that sound reasonable?

(I can only test whether my MX-850 could send those after importing from CCF. I don't really know what your IR sensor could read).

Last edited by johnsfine on April 10, 2007 08:50.
OP | Post 18 made on Tuesday April 10, 2007 at 09:12
kharan5876
Long Time Member
Joined:
Posts:
March 2007
17
That works. lets try it and see if my ir sensor and lirc like it.

Also, just out of curiosity what do you use to decode ir signals? are you using a pc with an ir sensor and some software or is it some special piece of hardware?
Post 19 made on Tuesday April 10, 2007 at 09:31
johnsfine
IR Expert
Joined:
Posts:
September 2002
5,159
On April 10, 2007 at 09:12, kharan5876 said...
Also, just out of curiosity what do you use to decode
ir signals? are you using a pc with an ir sensor and some
software

Yes. The software is CaptureIr. The hardware is just an IR sensor connected to a pin of the printer port.

It is discussed in several threads in the JP1 forum, such as this thread
[Link: hifi-remote.com]
Post 20 made on Tuesday April 10, 2007 at 15:44
johnsfine
IR Expert
Joined:
Posts:
September 2002
5,159
I just emailed a ccf file with my first attempt at those signals. So far as I could tell, with very little testing, they are correct. But if your results with LIRC aren't as good, try to give me some details and I should be able to figure out what to adjust.

The .irp I used was:

Device=0
Function=0..255
Frequency=39700
First Bit=MSB
Time Base=415
Message Time=100m
0=5,-3
1=3,-5
2=1,-3,1,-3
3=1,-7
Form=;F:8,-2,3,-3,3,-5,-2,1,-5,1
OP | Post 21 made on Tuesday April 10, 2007 at 18:57
kharan5876
Long Time Member
Joined:
Posts:
March 2007
17
The codes don't seem to register with lirc too well. I'll try to give as much as possible.

First off, everytime I push a button lirc receives its code 2 times.
For example, here is mode2's output when I press the 0 button
code: 0x11119bbf
code: 0x11119bbf

I am not sure if this has to do with repeat happening too fast. The repeat here is much faster than the original remote. I tried increasing the Message Time variable to 200m and even up to 800m and it did not change the repeat speed. I must be doing it the wrong way?

The next problem is that the codes are not consistent. The first 16 bits usually work as planned but the last 16 are unstable. Sometimes the 0 key gives me these outputs:
0x1119bbf
0x1119bff
0x11193bf

This is more of a problem with the 2 button because the unstable signal seeps into the 3rd byte. Here is some of the output I get from pressing 2.
code: 0x1117dbff
code: 0x11159bff
code: 0x11179bff

I did notice my original remote sometimes sends incorrect commands. Perhaps the 255 functions from this new protocol are too packed together to allow for errors?


Another problem is that if I hold a button down it doesnt repeat forever. Take a look here at the output from the 0 button.

code: 0x111193bf
code: 0x111193bf
code: 0x11119bff
code: 0x11119bbf
code: 0x11119bbf
code: 0x11119bbf
code: 0x111193bf
code: 0x111193bf
code: 0x111193bf
code: 0x11119bff
code: 0x11119bff
code: 0x11119bff
code: 0x11119bff
code: 0x11119bff
code: 0x11119bff
code: 0x11119bbf
code: 0x111193bf
code: 0x111193bf
code: 0x111193bf
code: 0x11119bff
code: 0x11119bff
code: 0x11119bff
code: 0x11119bff
code: 0x11119bbf
code: 0x11119bbf
code: 0x111193bf
code: 0x111193bf
code: 0x111193bf
code: 0x11119bff
code: 0x11119bff
code: 0x111193bf
code: 0x111397bf
code: 0x3777ffff
code: 0x7fffffff

Once 0x7ffffff is spit out the receiver no longer accepts the repeated input until I let go of the button and press again. Perhaps this is also related to the repeat rate being too fast. Could the sensor be getting overloaded?
Post 22 made on Tuesday April 10, 2007 at 20:20
johnsfine
IR Expert
Joined:
Posts:
September 2002
5,159
On April 10, 2007 at 18:57, kharan5876 said...
First off, everytime I push a button lirc receives its
code 2 times.

That may be an unavoidable feature of the way the MX-950 handles repeating codes. I'll test a little with the MX-850, but I doubt there is anything I could fix.

For example, here is mode2's output when I press the 0
button
code: 0x11119bbf
code: 0x11119bbf

I meant to encode 91b7 as the end of every signal, not 9bbf. I'll try to look into why that is happening.

I tried increasing the Message Time variable to
200m and even up to 800m and it did not change the repeat
speed. I must be doing it the wrong way?

That doesn't make much sense, but it should be easy for me to check with the MX-850. Maybe the universal browser trashes the repeat rate when importing Pronto Hex.

The next problem is that the codes are not consistent.
The first 16 bits usually work as planned but the last
16 are unstable.

Learning signals distorts timing a little. Translating a captured signal to Pronto Hex forces much of the timing to be rounded to inexact values. Then translation from Pronto Hex by the universal browser rounds again. Most IR protocols have enough redundancy to resynchronize on every edge so even timing errors as large as 20% don't matter.

If the true version of THIS protocol matches what LIRC decodes, it doesn't have that redundancy and would need very accurate timing to work correctly. Even if the true version has some redundancy I haven't identified, your LIRC IR sensor apparently doesn't take that into account and needs better timing.

Once I figure out why you're getting 9bbf instead of 91d7 the variations of a given signal should tell me which direction the timing is off.

I already observed with my capture device that the MX-850 sent the signals from my CCF slightly faster than it sent your learned signals. But it was by such a small amount that after rounding, slowing it down in the IRP file would either do nothing or too much. Maybe the info you just gave me will be enough for a more informed tweak.

Sometimes the 0 key gives me these outputs:
0x1119bbf
0x1119bff
0x11193bf

Really? Just seven digits instead of eight? Or did you miss a 1 and you're just telling me the incorrect bbf is unstable?

This is more of a problem with the 2 button because the
unstable signal seeps into the 3rd byte. Here is some
of the output I get from pressing 2.
code: 0x1117dbff
code: 0x11159bff
code: 0x11179bff

The 2 button should be 1115. I have a general idea what sort of timing problem would make a 5 sometimes turn into a 7 and I think I can tweak the irp to make that less likely.

I did notice my original remote sometimes sends incorrect
commands. Perhaps the 255 functions from this new protocol
are too packed together to allow for errors?

Not sure what you mean. If the sensor doesn't use the available redundancy then it will get wrong strings sometimes, even if the code set is spaced better. Maybe you mean that with a better spaced code set you could include the wrong values of each real signal and they would be distinct, so you could make several different hex codes all map to the same function. I could do that if we can't tweak the timing to improve things more directly.

Another problem is that if I hold a button down it doesnt
repeat forever.

That sounds like another feature of the MX-950 that I can't do anything about.

Once 0x7ffffff is spit out the receiver no longer accepts
the repeated input until I let go of the button and press
again. Perhaps this is also related to the repeat rate
being too fast. Could the sensor be getting overloaded?

Are you saying the MX-950 didn't stop sending? The sensor stopped receiving? I wouldn't have guessed that, but maybe.
OP | Post 23 made on Tuesday April 10, 2007 at 20:37
kharan5876
Long Time Member
Joined:
Posts:
March 2007
17
Really? Just seven digits instead of eight? Or did you miss a 1 and you're just telling me | the incorrect bbf is unstable?

Sorry my mistake, its 8. I forgot a 1.

Maybe you mean that with a better spaced code set you could include the wrong
values of each real signal and they would be distinct, so you could make several
different hex codes all map to the same function. I could do that if we can't tweak the | timing to improve things more directly.

Yeah something like that. I just made the assumption that maybe they arent spaced
well enough because of what happened to the 2.

Are you saying the MX-950 didn't stop sending? The sensor stopped receiving?

Yes

Last edited by kharan5876 on April 10, 2007 20:44.
Post 24 made on Wednesday April 11, 2007 at 16:35
johnsfine
IR Expert
Joined:
Posts:
September 2002
5,159
I just emailed another CCF file. This time the IRP I used was:

Device=0
Function=0..255
Frequency=39700
First Bit=MSB
Define A=840
Define B=300
Message Time=200m
0=(3*A-B),-(A+B)
1=(2*A-B),-(2*A+B)
2=(A-B),-(A+B),(A-B),-(A+B)
3=(A-B),-(3*A+B)
Form=;F:8,~F:8

A is the bit time. Now it is easier to tweak if we decode it is too slow or too fast.

B is a tming adjustment. The signals you learned shortened every run of 0 bits by a fixed amount and increased every run of 1 bits by the same amount (about half a bit). The errors you reported indicate the codes I generated the first time sometimes did that adjustment too much for the IR sensor to understand. So this time I made that a controllable parameter (rather than a fixed half a bit) and tried it at much less than half a bit.

Also, I dropped the constant four digits at the end of each and put in the inverse of the first four digits. So if the timing is off, we'll get a clearer picture of which way and if we can't supress all the errors, there should at least be no overlap of errors, so you could put any errors into the lircd.conf file as alternative codes for the same function.

I tested in my MX-850 and the 200m definitely makes the repeat rate half as fast as the 100m. I don't know why that didn't work for you. Are you sure you used the universal browser correctly? Maybe it was keeping the old CCF file open when you created the new one, so you were just taking the old signals again rather than new ones.
OP | Post 25 made on Wednesday April 11, 2007 at 22:25
kharan5876
Long Time Member
Joined:
Posts:
March 2007
17
One button press sends one line of hex to lirc, so that part is good.

The delay is better but it is still faster than the original remote. lets try 400m (twice as slow), that should be right I hope.
The errors are still there. Hitting the 0 button I can get 1111,1119, or 1199 for the left 2 bytes and ffff,ffbf, or fbbf for the right 2 bytes.

Also, now there appears to be a problem with repeats. The first code sent responds as I showed above. All of the repeat codes that follow that look something like this:
code: 0x7777ffbb
code: 0x777ffffb
code: 0x777ffffb
code: 0x77ffffbb
code: 0x7777ffff
code: 0x777fffbb
code: 0x777fffbb
code: 0x777ffffb
code: 0x777fffbb
code: 0x777fffbb
code: 0x777ffffb
code: 0x777ffffb
code: 0x7777fffb
code: 0x77ffffbb
code: 0x77ffffbb
code: 0x77ffffbb
code: 0x77ffffbb
code: 0x777fffbb
code: 0x777fffbb
code: 0x777fffbb
code: 0x77ffffff

I'm going to try using my usb receiver and see if that makes a difference.
OP | Post 26 made on Wednesday April 11, 2007 at 23:39
kharan5876
Long Time Member
Joined:
Posts:
March 2007
17
Well I suppose a second way to try this would be to have lirc use an IR blaster and try to teach the codes to the remote that way. But the ir blaster I have doesnt seem to be powerful enough for my mx-950 to pick up its signals


Anyway this usb ir receiver seems to work better than the other one, it uses the mce protocol.
Mce.irp works perfectly with lirc. The problem only with mce.irp is that it doesnt repeat (the mx-950 doesnt send a repeating signal) even though the FORM begins with a ;


NM... I think I have found a solution. Sent you an email.

Last edited by kharan5876 on April 12, 2007 00:14.
Page 2 of 2


Jump to


Protected Feature Before you can reply to a message...
You must first register for a Remote Central user account - it's fast and free! Or, if you already have an account, please login now.

Please read the following: Unsolicited commercial advertisements are absolutely not permitted on this forum. Other private buy & sell messages should be posted to our Marketplace. For information on how to advertise your service or product click here. Remote Central reserves the right to remove or modify any post that is deemed inappropriate.

Hosting Services by ipHouse