View previous topic :: View next topic |
Author |
Message |
jward
Joined: 02 May 2006 Posts: 16
|
Posted: Sat Feb 02, 2013 6:29 pm Post subject: Glow with the Show ears |
|
|
This is a bit off topic. I hope this is the correct place to ask. I am working with a toy. Disney sells Mickey ears or hat called Glow with the Show. The ears will blink in colors during shows and at other places in the park. They will even synchronize to each other.
http://disneyparks.disney.go.com/blog/2012/06/disney-california-adventure-park-guests-will-glow-with-the-show-at-disney-california-adventure-park/
The communication is using IR signals. I have some captures using IRscope and and IR wiget here:
http://www.hifi-remote.com/forums/dload.php?action=file&file_id=11711
Someone else looking at the toy says the protocol is a UART/IRDA SIR 2400 baud based on probing with a logic analyzer.
http://www.youtube.com/watch?v=Sy9T-JvLu5g
I am hoping an expert might have a look at the ict file and give an opinion about the signals or an approach I can use to learn more and work with the device. Any advice is appreciated. One item in particular would be pointers on how to turn signals captured in IRscope into a learned signal on a JP1 remote. So many cool things to learn.
I have not been much a poster here. Years ago I purchased a JP1 remote from Rob, made a cable from one of the designs. Later purchased one of the JP1.2-1.3 cables. Recently, I purchased an IR wiget. Between all of the available upgrade files, software and posts I have not had much to ask or contribute. So thanks to everyone who puts all the work in that lets people like me silently program JP1 remotes. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
3FG Expert
Joined: 19 May 2009 Posts: 3367
|
Posted: Sat Feb 02, 2013 9:58 pm Post subject: |
|
|
Yes, this is a asynchronous protocol at 2400 baud. 1 start bit, 1 stop bit and 8 data bits. Each command is 9 bytes long, and it looks like the first 7 bytes are the same for all 11 commands, although I've only checked the first 3.
Is that all of the commands? Got names for them? What remote do you have? JP1 or JP1.3 use a Samsung processor, while JP1.2 use Motorola, and this means the executor has to be written in different assemblers.
ETA: I missed your desire to upload these as learned signals to a remote. You can export them from IRScope. Use Export\Export Format, and select UEI learned. Then you can export all selected signals to a file, which will be called exportedUEI.txt. You can choose the folder for this file by File\Set Folder\ Set Export Output Folder.
In RMIR, either load a remote image or download from your target remote. Go to the Learned Signals tab and click New. Paste the exported UEI for a single function into the Signal Data box, choose a device and a key. Then click Apply.
I tried this with two remotes, and they seemed to accept the imported signal. I wasn't able to learn the full signal with another remote, but I suspect that is a problem with learning rather than sending. So check your remote with your Widget after uploading candidate learned signals. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
jward
Joined: 02 May 2006 Posts: 16
|
Posted: Sat Feb 02, 2013 11:10 pm Post subject: |
|
|
I use a JP1.3, a COX-UCR-7820B remote, my current only way to send signals. I have an old laptop with IrDA. I am still trying to figure out how to get that software stack to send serial codes. Actually, it doesn't even see the hat. I think the laptop IrDA is ignoring it as noise since the hat doesn't negotiate a connection even if it uses serial IRDA.
These were the first signals I captured sent from the hat/ears to other nearby ears. It is unknown how many commands the ears can send each other. From their behavior they change their display pattern or synchronize their pattern display when they see each other. I just found a csv someone shared that is suppose to be a collection of the signals taken over 30 minutes.
The person who said it uses a UART/IRDA SIR 2400 buad also shared these codes: "There's a basic framing that consists of a two different types of basic message, system and show. (System messages start with 0x55, like "55 AA 16 01 01 02 0E 05 2D", Show messages start with 0x9X where X is a length nibble such as "96 42 00 00 BE 11 E6"). Each message contains a header byte at the beginning and checksum at the end. I hope to do a good writeup someday."
Also
"I'm sorry I didn't get back to you before Christmas. I'll give you some quick basics right now:
90 60 A6 - Off
90 61 F8 - Blue
90 62 1A - Green
90 63 44 - Cyan (Blue+Green)
90 64 C7 - Red
90 65 99 - Magenta (Red+Blue)
90 66 7B - Yellow
90 67 25 - White
These codes when transmitted set both ears to the same color. They're the bare minimum. I brute-forced the checksums to make them work, none of these occur at the park. Will continue in another comment."
And also
"90 68 64 90 69 3A 90 6A D8 90 6B 86 90 6C 05 90 6D 5B 90 6E B9 90 6F E7 These codes set the same colors but only for the right ear. By combining them you can set both ears to arbitrary colors, such as setting: 90 65 99 then 90 6E B9 Will set both ears magenta then the right ear yellow, which means effectively "Left Ear Magenta, Right Ear Yellow". There is actually a more sophisticated way to do things, perhaps one more post. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
jward
Joined: 02 May 2006 Posts: 16
|
Posted: Sat Feb 02, 2013 11:14 pm Post subject: |
|
|
I missed part of your answer when I just replied. I will try the procedure yo provided. Thanks. I'll also try to see the byte pattern you point out with IRscope. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Kevin Timmerman Expert
Joined: 09 Jan 2007 Posts: 142 Location: West Michigan |
Posted: Sun Feb 03, 2013 12:56 am Post subject: |
|
|
jward wrote: | I brute-forced the checksums to make them work |
Code: |
uint8_t gws_crc(uint8_t *d, unsigned len)
{
crc = 0;
while(len--) {
crc ^= *d++;
unsigned n = 8; do crc = (crc & 1) ? (crc >> 1) ^ 0x8C : crc >> 1; while(--n);
}
return crc;
}
|
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
jward
Joined: 02 May 2006 Posts: 16
|
Posted: Sun Feb 03, 2013 1:00 am Post subject: |
|
|
RMIR is not doing anything when I hit apply or ok. I am using the latest RemoteMaster 2.02a. I suspect an issue with needing to run the installer as administrator or do a local to me install.
3FG wrote: |
ETA: I missed your desire to upload these as learned signals to a remote. You can export them from IRScope. Use Export\Export Format, and select UEI learned. Then you can export all selected signals to a file, which will be called exportedUEI.txt. You can choose the folder for this file by File\Set Folder\ Set Export Output Folder.
In RMIR, either load a remote image or download from your target remote. Go to the Learned Signals tab and click New. Paste the exported UEI for a single function into the Signal Data box, choose a device and a key. Then click Apply.
I tried this with two remotes, and they seemed to accept the imported signal. I wasn't able to learn the full signal with another remote, but I suspect that is a problem with learning rather than sending. So check your remote with your Widget after uploading candidate learned signals. |
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
3FG Expert
Joined: 19 May 2009 Posts: 3367
|
Posted: Sun Feb 03, 2013 1:20 am Post subject: |
|
|
Not sure what you mean by doing anything. After hitting OK, the Learned Signal Details box should close, and you should see a single entry on the Learned Signals tab with, amongt other things, size 53 and freq about 37000. Then you can upload to the remote. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
jward
Joined: 02 May 2006 Posts: 16
|
Posted: Sun Feb 03, 2013 11:03 am Post subject: |
|
|
3FG wrote: | Not sure what you mean by doing anything. After hitting OK, the Learned Signal Details box should close, and you should see a single entry on the Learned Signals tab with, amongt other things, size 53 and freq about 37000. Then you can upload to the remote. |
After entering the key binding and learned signal data if I hit either the Apply or OK button the GUI outlines the button but RMIR does literally nothing else. Hitting OK does not close the dialog box. Hitting the Cancel button will close the dialog as will hitting the X button of the window. The signal is not listed in the learned signal tab on the main RMIR window. An active Cancel button seems to indicate RMIR is not hanging. I (re)installed version 2.02a. I tried it both as a local and for all users app. I have ran it as administrator. At this point I suspect some 64 bit Win 7 issue. Possibly one of the dlls is used with the learned signals and not other part of RMIR that I have utilized. I have not seen other parts of RMIR not work. I will install it on another computer and try there to factor out the Win 7 64 bit issue.
Thanks for the help. I am hot to get into learning to read the bits and bytes from IRscope that you guys so clearly read. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
jward
Joined: 02 May 2006 Posts: 16
|
Posted: Sun Feb 03, 2013 11:11 am Post subject: |
|
|
Kevin Timmerman wrote: | Code: |
uint8_t gws_crc(uint8_t *d, unsigned len)
{
crc = 0;
while(len--) {
crc ^= *d++;
unsigned n = 8; do crc = (crc & 1) ? (crc >> 1) ^ 0x8C : crc >> 1; while(--n);
}
return crc;
}
|
|
Thanks. Some else working on the ears on the DIY Christmas forum posted this exact same algorithm last night as the Maxim/Dallas's 1-Wire CRC-8. Does one just recognize this from years of experience? |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
3FG Expert
Joined: 19 May 2009 Posts: 3367
|
Posted: Sun Feb 03, 2013 12:15 pm Post subject: |
|
|
Let's make sure that we're working from the same data. Here's your first signal as exported from IRScope: Code: | 00 00 35 00 D3 09 01 A9 01 99 00 CD 00 CF 01 A3 00 CD 03 42 00 CA 07 55 00 C5 03 3C 01 A5 02 75 00 C9 02 74 01 8E 01 9F FF FF 06 01 02 31 81 40 0D 32 15 67 36 01 20 80 | When the Learned Signal Details window first opens, OK is enabled but Apply is not. Clicking on Show Advanced Details just gives blank boxes. Pasting in the above string enables the Apply box, and now Show Advanced Details provides values in Bursts and Durations.
If you're not seeing that behavior, check for exceptions in rmaster.err. I'm not sure where that will be located on a Win7 system, but on XP it is in the same directory as the RemoteMaster.jar file. With Win7, if the RMIR installation is in Program Files, the .err file will probably be somewhere else.
BTW, I don't have the 7820B, so I used File\New\RemoteImage to get started. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
jward
Joined: 02 May 2006 Posts: 16
|
Posted: Sun Feb 03, 2013 1:03 pm Post subject: |
|
|
Thank you. That shows the error of my ways. I was pasting this whole text part Code: | Protocol=Async9:404-432:96.42..64.32 Device=0.72 OBC=24 (UEI Learned)
00 00 35 00 D3 09 01 A9 01 99 00 CD 00 CF 01 A3 00 CD 03 42 00 CA 07 55 00 C5 03 3C 01 A5 02 75 00 C9 02 74 01 8E 01 9F FF FF 06 01 02 31 81 40 0D 32 15 67 36 01 20 80 |
and not just the numeric part
Code: | 00 00 35 00 D3 09 01 A9 01 99 00 CD 00 CF 01 A3 00 CD 03 42 00 CA 07 55 00 C5 03 3C 01 A5 02 75 00 C9 02 74 01 8E 01 9F FF FF 06 01 02 31 81 40 0D 32 15 67 36 01 20 80 |
Now the remote gets the learned code. It reads differently with IRscope then the loaded code. I would expect that a different capture would get interpreted differently for signals that don't decode. I still need to learn to read the bit/bytes in IRscope to compare them.
Any suggestions on what to read to learn more of anything that will help is welcome. Any suggestion on what to do to send the "90 60 A6" type codes would be welcome too. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Kevin Timmerman Expert
Joined: 09 Jan 2007 Posts: 142 Location: West Michigan |
Posted: Sun Feb 03, 2013 5:04 pm Post subject: |
|
|
jward wrote: |
Thanks. Some else working on the ears on the DIY Christmas forum posted this exact same algorithm last night as the Maxim/Dallas's 1-Wire CRC-8. Does one just recognize this from years of experience? |
Checksums, yes, could see that it was not a checksum. Had to write some code to test the popular CRC-8 polynomials - can't do that in my head.
RobG asked me for help over at the 43oh forum. We are both very familiar with the G2553 and I know a little about IR, so this thing will eventually be quite hacked.
It clearly does not use IRDA. There is no carrier on IRDA and the IR Widget does not work with IRDA. The ears use a Vishay TSMP6000 IR receiver module that responds to a 20 to 60 kHz carrier - that is close to the range of the IR Widget: 30 to 60 kHz. So no doubt it is not IRDA. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
RobG
Joined: 03 Feb 2013 Posts: 1
|
Posted: Sun Feb 03, 2013 8:55 pm Post subject: |
|
|
Are we 100% sure that the detector used in GwtS is TSMP6000?
The guy who took it apart said he thinks this is TSMP6000, but there are other IR detectors that come in this package.
This is how we know what IR detector is used
Quote: | The images in the datasheet match the part visually, as far as I could tell. |
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Kevin Timmerman Expert
Joined: 09 Jan 2007 Posts: 142 Location: West Michigan |
Posted: Mon Feb 04, 2013 12:33 am Post subject: |
|
|
OK, the receiver is probably a 38 kHz version rather than the wide band. IRDA modules look quite different, have tx/rx in one module and have rather short range.
The IR Widget capture posted by jward is certainly not IRDA. It has a ~38 kHz carrier. There are approximately 15.78 carrier cycles per 416.67 us bit.
Here is a manual decode of a chunk.
Code: |
Time Bits Data
+831 2 00
-816 2 11
+431 1 0
-396 1 1
+857 2 00
-816 2 11
+831 2 00
-422 1 1
+1678 4 0000
-396 1 1
+404 1 0
-422 1 1
+3731 9 000000000
-416 1 1
+3731 9 000000000
-422 1 1
+1678 4 0000
-396 1 1
+857 2 00
-369 1 1
+431 1 0
-443 1 1
+1631 4 0000
-816 2 11
+1284 3 000
-395 1 1
+1231 3 000
-843 2 11
+1657 4 0000
-416 1 1
+831 2 00
-2069 5 11111
+431 1 0
-843 2 11
+384 1 0
-842 2 11
+405 1 0
-848 2 11
+1252 3 000
|
Stream
Code: |
00110100110010000101000000000100000000010000100101000011000100011000010011111011011011000
|
Arranged as Start / Nibble / Nibble / Stop Hex
Code: |
0 0110 1001 1 96
0 0100 0010 1 42
0 0000 0000 1 00
0 0000 0000 1 00
0 0001 0010 1 48
0 0001 1000 1 18
0 0011 0000 1 0C
0 0111 1101 1 BE
0 1101 1000 1 1B
|
Put 0x96, 0x42, 0x00, 0x00, 0x48, 0x18, 0x0C, 0xBE in to the CRC and you get... 0x1B ! |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Kevin Timmerman Expert
Joined: 09 Jan 2007 Posts: 142 Location: West Michigan |
Posted: Mon Feb 04, 2013 2:10 am Post subject: |
|
|
Try this - it should send the blue command. If it works I will do all the other 3 byte codes.
Code: |
irscope 0
carrier_frequency 38005
sample_count 12
+2085
-417
+834
-834
+417
-417
+1668
-834
+417
-417
+1668
-2502
|
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|