For some reason I can’t explain, I’ve wanted a weather station for years. A piece in Wired last month pushed me over the edge and I picked up the Honeywell TE923W. It’s relatively cheap, and while not as good as a Davis, accurate enough for me.
The problem with this station, though, is that it’s a USB station, and Linux is not supported by the software that ships with it. But I figured I could find a way around that, and indeed I could, but it wasn’t so straightforward. Along the way I learned some arcane details about USB on Debian Linux. This series of posts is something of a blow-by-blow of the process.
The hardest part was already done for me by Sebastian John who created an application that reads the current raw data from the station. The source is available at http://te923.fukz.org/index. Building the source requires libusb, and the site links to it, but I was able to build with the vanilla libusb-dev installed by apt-get:
apt-get install libusb-dev
The build creates the executable te923con, which I then installed in /usr/local/bin.
The first time I tried to run it, I got the following error message:
[mcp:…/te923/te923] te923con -D
Error while setting configuration (-1).
This indicates insufficient privileges to access the USB device, so to get things going I ran the te923con application as root. That got me to the next error:
[mcp:.../te923/te923] sudo ./te923con -D
Error while setting configuration (-16).
The dmesg shows the following error (all on one line):
[24464516.452385] usb 2-1: usbfs: interface 0 claimed
by usbhid while 'te923con' sets config #1
It seems that the TE923 registers itself as a human interface device (HID) for some reason, so the OS tries to treat it a such. The author of a package of code that creates a web view for the TE923 has the solution on his blog, though without explanation of the problem or why: http://firewall.haringstad.com/TE923-Frontend/blog/TE923-Frontend-Info/TE923-Frontend%20Blog/B9EF42CC-F942-41DE-ABDF-461549FEFB46.html
He removes the usbhid kernel module:
sudo rmmod usbhid
And success:
[mcp:.../te923/te923] sudo ./te923con -D
[DEBUG] got |07|00|0a|0a|00|0a|0a|00|
[DEBUG] got |07|0a|0a|00|0a|30|00|af|
[DEBUG] got |07|3d|03|57|c0|28|00|35|
[DEBUG] got |05|00|0a|b2|00|66|00|35|
[DEBUG] got |01|5a|0a|b2|00|66|00|35|
[DEBUG] got |02|28|82|b2|00|66|00|35|
[DEBUG] got |07|37|64|c0|96|0a|00|0a|
[DEBUG] got |07|0a|00|0a|0a|00|0a|0a|
[DEBUG] got |07|00|0a|30|00|af|3d|03|
[DEBUG] got |07|57|c0|28|00|35|00|0a|
[DEBUG] got |03|b2|00|66|00|35|00|0a|
[DEBUG] TMP 0 BUF[00]=28 BUF[01]=82 BUF[02]=37
[DEBUG] TMP 1 BUF[03]=64 BUF[04]=c0 BUF[05]=96
[DEBUG] TMP 2 BUF[06]=0a BUF[07]=00 BUF[08]=0a
[DEBUG] TMP 3 BUF[09]=0a BUF[10]=00 BUF[11]=0a
[DEBUG] TMP 4 BUF[12]=0a BUF[13]=00 BUF[14]=0a
[DEBUG] TMP 5 BUF[15]=0a BUF[16]=00 BUF[17]=0a
[DEBUG] UVX BUF[18]=30 BUF[19]=00
[DEBUG] PRESS BUF[20]=af BUF[21]=3d
[DEBUG] STAT BUF[22]=03
[DEBUG] WCHIL BUF[23]=57 BUF[24]=c0
[DEBUG] WGUST BUF[25]=28 BUF[26]=00
[DEBUG] WSPEE BUF[27]=35 BUF[28]=00
[DEBUG] WDIR BUF[29]=0a
[DEBUG] RAINC BUF[29]=00 BUF[30]=b2 BUF[31]=00
1272059734:22.80:37:6.40:96:::::::::986.9:3.0:3:0:10:1.6:1.3:5.7:178
Hooray! There are still a few problems to work out with the device interface, and there is a bug in the te923con application to fix, but now I have a working interface to my weather station. Next up, getting the weather data onto Weather Underground

Hi, if you are interested, we have up and running this weather station on embedded linux board: http://www.8devices.com/wiki_carambola/doku.php/carambola_pachube_nexus