IR code database - use the TiVo to do it for you
Quote:
Originally Posted by timmy
Well i'm keen to build up a repository of IR codes for various STB's in NZ. Who's keen to buy a pronto remote and go about it? hehe no takers?
Seriously, i'll contribute say $40 towards someone buy a remote and doing their best to make as many codes as they can, and ideally keen to lend it to others to help make codes too.
How about we start with a list of the STB's for starters. eg what boxes (make/model) are there for Saturn, Sky Digital. anyone got any dirt on Sky boxes or sky in general? heh
Hmm, I saw a post on This Link about someone creating a TCL app to remove the Sky+ Red-Dot they get in the UK.
In one of the posts, someone showed a brief snippet of code using irtest
to send IR data.
There is also This post on Minnies oztivo maillist archive about using IR Test to capture the information from other remote controls.
Quote:
switcherstart -k
irest -t /dev/ttyS0 -l
Will output something like:
174.0000.1 85.0175.0 10.0261.1 10.0272.0 10.0283.1 9.0294.0 10.0304.1
10.0315.0
10.0326.1 10.0337.0 9.0348.1 10.0358.0 11.0369.1 9.0381.0 9.0391.1
10.0401.0
11.0412.1 9.0424.0 9.0434.1 11.0444.0 9.0456.1 10.0466.0 10.0477.1
10.0488.0
9.0499.1 10.0509.0 10.0520.1 32.0531.0 9.0564.1 10.0574.0 10.0585.1
10.0596.0
9.0607.1 10.0617.0 10.0628.1 32.0639.0 9.0672.1 32.0682.0 9.0715.1
10.0725.0
11.0736.1 9.0748.0 9.0758.1 11.0768.0 9.0780.1 10.0790.0 10.0801.1
10.0812.0
9.0823.1 10.0833.0 10.0844.1 10.0855.0 9.0866.1 10.0876.0 10.0887.1
32.0898.0
9.0931.1 32.0941.0 9.0974.1 32.0984.0 11.1017.1 30.1029.0 10.1060.1
32.1071.0
10.1104.1 31.1115.0 10.1147.1 125.1158.0
174.0000.1 42.0175.0 10.0218.1 122.0229.0
Which looks similar to whats in the IR database in the Tivo MFS for each digit.
[without the leading 2 numbers which encode the frequency of the IR].
So, you can probably skip the Pronto and just use the Tivo to build your code database.
You jusy have to kill the "switcher" process to do this (swticherstart -k), then reboot your TiVo afterwards to restore normal operation.
FWIW - My Sky DigitalDecoder is a Pace, I use the UK Tivo "Pace" STB setting and find the "medium" setting works best. Same for my US Tivos.
Oh, yes, before anyone asks about the Sky UHF Decoder - forget it, the codes change on that remote with every button press and cannot be learned or played back by the Tivo AFAIK.
Command line parameters for irtest
Heres the Command line options for the /sbin/irtest program (I got it by running strings across the binary, not sure if the program prints this message or not):
Quote:
Usage: %s -t tty -w -l -v -?
-t Specify TTY, default is /dev/cua1.
-w Print IR waveform.
-l Print pulse length report.
-v Print verbose Sony IR decode information.
-b IR blast test (Sony volume up command).
-s n Turn on some LEDs.
-c n Turn off some LEDs.
-r Read state of LEDs.
-e Exercise commands during standard mode receive.
-d Diagnostic loopback mode for IR.
-- Remaining args are a TiVo remote code to blast.
-? This message.
Not sure what -w does - might be interesting to play with it as it may save some pronto-ing.
Same for -l which is what it spat out before
(and -v looks interesting too - if you have a Sony remote).
Using -w and -l you could probably put together a simple script to capture any IR commands from any remote and turn it into valid IR blast data to control any set-top box.
irtest dump using Sony IR Remote
I fired up irtest on my UK Tivo
using this command:
Quote:
/sbin/irtest -t /dev/ttyS0 -w -v -l
And got these results when I pressed VCR change channel buttons 1 2 & 3
Might need to cut and paste this test below into Notepad or similar to get it all in one line. Forgive the very wide listing of this but it makes it much clearer when shown this way.
Quote:
Microcode version 00034.
***********************************************... ........************...........************....... ....************...........************........... ************...........************...........**** ********............***********************....... ....************************...........*********** *...........***********************............*** ********.......................................... .................................................. .................................
47.0000.1 10.0048.0 11.0059.1 10.0071.0 11.0082.1 10.0094.0 11.0105.1 10.0117.0 11.0128.1 10.0140.0 11.0151.1 10.0163.0 11.0174.1 10.0186.0 11.0197.1 11.0209.0 22.0221.1 10.0244.0 23.0255.1 10.0279.0 11.0290.1 10.0302.0 22.0313.1 11.0336.0 10.0348.1 124.0359.0
000000011010 (good Sony12) 580
Sony 12: 580
<repeats 5 more times>
***********************************************... ........************************...........******* *****...........*************..........*********** *...........*************..........************... ........*************...........****************** *****...........************************.......... *************...........************************.. .........************............................. .................................................. ............................................
47.0000.1 10.0048.0 23.0059.1 10.0083.0 11.0094.1 10.0106.0 12.0117.1 9.0130.0 11.0140.1 10.0152.0 12.0163.1 9.0176.0 11.0186.1 10.0198.0 12.0209.1 10.0222.0 22.0233.1 10.0256.0 23.0267.1 9.0291.0 12.0301.1 10.0314.0 23.0325.1 10.0349.0 11.0360.1 122.0372.0
100000011010 (good Sony12) 581
Sony 12: 581
<repeats 9 more times>
***********************************************... .......**************..........******************* *****...........************...........*********** *...........************...........************... ........************...........******************* *****...........***********************........... ************...........************************... ........************.............................. .................................................. ..........................................
47.0000.1 9.0048.0 13.0058.1 9.0072.0 23.0082.1 10.0106.0 11.0117.1 10.0129.0 11.0140.1 10.0152.0 11.0163.1 10.0175.0 11.0186.1 10.0198.0 11.0209.1 10.0221.0 23.0232.1 10.0256.0 22.0267.1 10.0290.0 11.0301.1 10.0313.0 23.0324.1 10.0348.0 11.0359.1 121.0371.0
010000011010 (good Sony12) 582
Sony 12: 582
<repeats a bunch of times>
Now, what this shows is this:
1. The -w flag prints out a "string" containing * when the IR led was lit and "." when the IR led is not lit [dark].
2. Each * or dot represents 1 time interval (I believe this is 17.136uS, but can be deduced from the sony IR code strings as the "initial" IR on/then off burst on Sony remotes has a fixed/known duration.
3. The Timing string (underneath the **.. string) shows the timing of each IR "burst", with the number being a floating point number of intervals for each IR burst. the ".1" or ".0" after each string shows whether the IR LED was lit (.1) or dark (.0) for this timing period, so this can be used to determine numbers you need [in fact if you were to read these numbers as is, and ignore anything after the first decimal point, these numbers should probably be able to be used "as-is" to make a "digit" string for the Tivo.
The -v option decodes that string into a valid Sony IR remote code - since I'm using a Sony Remote control, then I should get the correct Sony Remote code value for the button I press and the -v option confirms this code back to me.
(if you want to go and dig up some info on the Sony IR control format to verify this please do so, but trust me, it matches what I know of these codes).
The 010... string printed shows the "Binary" representation of the IR Remote control command [again assuming code is in Sony format, but its shown from MSB to LSB - the reverse of hows its sent by the IR remote] and then it shows the Code length (Sony12 or Sony15 depending on Remote control used, OSny 12 = 12 bit Sony code, Sony 15 = 15 Bit Sony code), then is shows the Hex value of the decoded remote code [58X], where in this case, X will equal 0 for Number 1 key, 1 for Number key 2 and 2 for number key 3 [as per Sony IR remote protocol].
Note: I have removed repeating IR output samples as the Sony Remote normally sends each command 4 times - more times than this again if you press the button longer, hence the variable number of repeats as I probably pressed the keys too long.
Also, note in the Sony protocol the IR command "bits" are sent LSB first, so thats why the ***... string varies after the initial 47(*)10(.) "lead-in" string as the next (i.e. lowest) 2 bits of the IR command are the only ones that change for these 3 different button codes.
Also note - the "58" value will differ depending on what Sony device you are using the remote from - and in the case of a TV or VCR, what "device" code (1,2 or 3) you are using [in my Case it was VCR remote, set to VCR code "3"]
Given this information, we should be able to match this up with what TiVo has in its IR database for any Sony Device, and then work out what the additional bytes on the front should be for timing info.
Then you can kiss your Pronto requirement goodbye and use the Tivo for all your IR code capturing, which with a smart bit of software can deduce everything needed from this information provided by irtest.