Linux Driver for the
RadioShack 12-258 S.A.M.E. Weather Radio

Capturing Communication With USBSnoopy

There is no freely available documentation describing the API between the weather radio and the host computer. So, to understand what is happening I needed to spy on the USB communication between them. Fortunately, at the time I was working on this, there was a utility called USBSnoopy that sits between the Windows device driver and the application, logging all of the commands and data sent back and forth. The status of the usbsnoopy project is unknown but it can be found at http://www.sourceforge.net/projects/usbsnoop/. Details about how to install and use it can be found there. Unfortunately, I don't recall much about this step as it was years ago. And I no longer have any computers with the Windows operating system installed.

With the device driver installed on a Windows XP computer and the weather radio attached via the USB cable and the supplied software installed and running, I had only to wait for an alert. Fortunately, there is a Required Weekly Test transmitted (almost) every Wednesday, meaning that in no more than a week I'd have some data.

The captured data is somewhat cryptic, especially if, like me, you are not an expert in USB communications. Here is a sample of what is produced.

1 get descriptor returned 18, bytes: 12 01 10 01 00 00 00 08 33 22 22 63 00 01 01 02 00 01 "........3""c......"
2 get descriptor returned 9, bytes: 09 02 22 00 01 01 04 a0 32 "..".....2"
3 get descriptor returned 34, bytes: 09 02 22 00 01 01 04 a0 32 09 04 00 00 01 03 00 00 00 09 21 10 01 00 01 22 22 00 07 05 81 03 08 00 0a "..".....2..........!....""........"
4 set configuration returned 0
4 set alternate setting returned 0
7 interrupt read returned -110, bytes: 
8 interrupt read returned -110, bytes: 
ab 80 00 2b 00 00 00 00 "...+...."
 9 control msg returned 8
10 interrupt read returned 8, bytes: ab 81 00 2c 00 00 00 00 "...,...."
ab b4 04 76 31 30 30 6a "...v100j"
 11 control msg returned 8
12 interrupt read returned 8, bytes: ab 80 00 2b 00 00 00 00 "...+...."
ab 80 00 2b 00 00 00 6a "...+...j"
 13 control msg returned 8
14 interrupt read returned 8, bytes: ab 81 00 2c 00 00 00 00 "...,...."
ab 84 00 2f 00 00 00 6a ".../...j"
 15 control msg returned 8
16 interrupt read returned 8, bytes: ab 0a 04 76 31 30 30 c0 "...v100."
ab 86 00 31 00 00 00 6a "...1...j"
 17 control msg returned 8
ab 84 00 2f 00 00 00 6a ".../...j"
 18 control msg returned 8
19 interrupt read returned 8, bytes: ab 84 00 2f 31 30 30 c0 ".../100."
ab 86 00 31 00 00 00 6a "...1...j"
 20 control msg returned 8
ab 80 00 2b 00 00 00 6a "...+...j"
 21 control msg returned 8
22 interrupt read returned 8, bytes: ab 81 00 2c 31 30 30 c0 "...,100."
ab 84 00 2f 00 00 00 6a ".../...j"
 23 control msg returned 8
24 interrupt read returned 8, bytes: ab 84 00 2f 31 30 30 c0 ".../100."
ab 86 00 31 00 00 00 6a "...1...j"
 25 control msg returned 8
ab 80 00 2b 00 00 00 6a "...+...j"
 26 control msg returned 8
27 interrupt read returned 8, bytes: ab 81 00 2c 31 30 30 c0 "...,100."
ab 84 00 2f 00 00 00 6a ".../...j"
 28 control msg returned 8
29 interrupt read returned 8, bytes: ab 84 00 2f 31 30 30 c0 ".../100."
ab 86 00 31 00 00 00 6a "...1...j"
 30 control msg returned 8
ab 80 00 2b 00 00 00 6a "...+...j"
 31 control msg returned 8
32 interrupt read returned 8, bytes: ab 81 00 2c 31 30 30 c0 "...,100."
ab 84 00 2f 00 00 00 6a ".../...j"
 33 control msg returned 8
34 interrupt read returned 8, bytes: ab 84 00 2f 31 30 30 c0 ".../100."
ab 86 00 31 00 00 00 6a "...1...j"
 35 control msg returned 8

...followed by about a bazillion more lines of the same.


<<Previous Page | Index | Next Page>>