The favotech sign is now mounted in our living room, where it shares
news headlines, stock quotes and weather forecasts scraped from the
web. It's a very depressing sign.
I ordered a Pro-Lite sign to play around with at work, but it won't
get here until next week.
So, what I’ve got here is my implementation of the favotech sign’s protocol in python. As I’ve mentioned, it’s horrible. From what I can tell, the sign supports basically the same protocol over TCP, UDP, and serial. I’ve been using UDP over a crossover cable from a whitebox with two NICs, and that’s worked fine.
I’m using it inside a twisted app, mostly for all the batteries it includes. I have a UDP server class that inherits from this class, but implements its own send_to_sign method. This layout made reusing the code for different connection media a breeze. Basic usage then looks something like this:
To dumb down the interface, a frame count of n actually creates a playlist containing n two-letter filenames, 'AA’…’ZZ’. Calling set_text with a frame ID then sets the text of the corresponding file. The set_text method has a dead simple markup language it can use to set text colors and stuff.
More to come, probably…
I’m using it inside a twisted app, mostly for all the batteries it includes. I have a UDP server class that inherits from this class, but implements its own send_to_sign method. This layout made reusing the code for different connection media a breeze. Basic usage then looks something like this:
self.test_reset()
self.pause()
self.time_sync()
self.set_frame_count(3)
self.set_text(0, '{y}OH HAI')
self.set_text(1, 'I AM {f}THE{/f} SIGN')
self.set_text(2, '{0}{ma} {dd} {12}')
self.resume()To dumb down the interface, a frame count of n actually creates a playlist containing n two-letter filenames, 'AA’…’ZZ’. Calling set_text with a frame ID then sets the text of the corresponding file. The set_text method has a dead simple markup language it can use to set text colors and stuff.
More to come, probably…
So right now, I have a simple python app that queries servers over SNMP and displays their load averages on the sign. And the text can flash if a load average seems high, and stuff like that. I’ll do more later, I just hacked that together yesterday to get something working.
If you try this, you may notice that the sign’s protocol documentation kind of sucks. Oh, also, its Sigma software only uses that protocol as part of the format of its text files. It has another, more horrible protocol, in which lots of things are framed as file transfers. The files being transfered are also in various ugly formats.
Maybe I’ll post some code later, because this would get super-boring if I started throwing out hex codes and what endian integers to use and how it calculates checksums.
I will just say that I’m kind of wishing I’d held out for a better-known brand of sign with a better-documented protocol.
If you try this, you may notice that the sign’s protocol documentation kind of sucks. Oh, also, its Sigma software only uses that protocol as part of the format of its text files. It has another, more horrible protocol, in which lots of things are framed as file transfers. The files being transfered are also in various ugly formats.
Maybe I’ll post some code later, because this would get super-boring if I started throwing out hex codes and what endian integers to use and how it calculates checksums.
I will just say that I’m kind of wishing I’d held out for a better-known brand of sign with a better-documented protocol.
Is that an LED sign on my desk? I believe it is.
It’s a FavoTech model I picked up on eBay that can be programmed by ethernet, USB, serial and IR. My weekend project has been reverse engineering enough of its network protocol to control it programatically. The protocol is all binary stuff over UDP, but I’ve made quite a bit of progress in deciphering it.
It’s not all mai tais and yahtzee, though. I somehow broke the sign so that when it first boots up, it spams the network with constant ARP packets until I’ve uploaded a playlist. I think it’s because I removed the playlist on the flash drive, but I haven’t figured out how to get one back on there yet. Against all reason, it’s apparently not “select the flash drive then upload a playlist”.
I know it has a speaker, because it’s forever beeping when it resets. I just haven’t figured out any message I can send it to make it beep on cue. I emailed their tech support but haven’t heard back yet.
I’m not even being original here – one of my co-workers has a nearly identical LED sign that used to stream news feeds and OA scores in our office.
It’s pretty fun, though. And I think there’s a lot of neat information you could convey in sign form. The only limit is my imagination! Oh, hell.
It’s a FavoTech model I picked up on eBay that can be programmed by ethernet, USB, serial and IR. My weekend project has been reverse engineering enough of its network protocol to control it programatically. The protocol is all binary stuff over UDP, but I’ve made quite a bit of progress in deciphering it.
It’s not all mai tais and yahtzee, though. I somehow broke the sign so that when it first boots up, it spams the network with constant ARP packets until I’ve uploaded a playlist. I think it’s because I removed the playlist on the flash drive, but I haven’t figured out how to get one back on there yet. Against all reason, it’s apparently not “select the flash drive then upload a playlist”.
I know it has a speaker, because it’s forever beeping when it resets. I just haven’t figured out any message I can send it to make it beep on cue. I emailed their tech support but haven’t heard back yet.
I’m not even being original here – one of my co-workers has a nearly identical LED sign that used to stream news feeds and OA scores in our office.
It’s pretty fun, though. And I think there’s a lot of neat information you could convey in sign form. The only limit is my imagination! Oh, hell.
This is my second-favorite ad from Facebook. It’s pretty well-targeted. I mean, how did they know that I like hot asian girls?
My #1 favorite ad I ever saw (but failed to get a screenshot of) had a picture of some dude without a shirt on and said, “Try something different!”
My #1 favorite ad I ever saw (but failed to get a screenshot of) had a picture of some dude without a shirt on and said, “Try something different!”
So, it turns out that Greg's darkest hour was one of my brighter hours.
The thing to take away from our scorecard is not that I lost at par 3 golf.
It’s that I lost at par 3 golf by the least that I ever lost by before!
I’m pretty sure I understand how Arnold Palmer feels now. You know, like I’ll be remembered for something. Sure, I’ll be remembered for golf while he’s remembered for mixing lemonade and iced tea, but the analogy still holds.
The thing to take away from our scorecard is not that I lost at par 3 golf.
It’s that I lost at par 3 golf by the least that I ever lost by before!
I’m pretty sure I understand how Arnold Palmer feels now. You know, like I’ll be remembered for something. Sure, I’ll be remembered for golf while he’s remembered for mixing lemonade and iced tea, but the analogy still holds.
You can tell nobody said "cheese!" first.
That's Nels, me, and Greg at a company developers' conference.




