{"id":79,"date":"2007-07-05T16:32:30","date_gmt":"2007-07-05T20:32:30","guid":{"rendered":"http:\/\/www.phildev.net\/phil\/newblog\/?p=79"},"modified":"2007-07-05T16:32:30","modified_gmt":"2007-07-05T20:32:30","slug":"","status":"publish","type":"post","link":"https:\/\/www.phildev.net\/phil\/blog\/?p=79","title":{"rendered":"Writing a Linux driver for Harmony remotes"},"content":{"rendered":"<p>For the last few months I&#8217;ve been on-and-off trying to write a Linux driver for my Logitech Harmony 880. Thanks to a few friends with windows boxes, I was able to get some USBSnoop data &#8211; enough to be able to dissect about half of the communications that happen with the device.<\/p>\n<p>Once I got stuck, I submitted various tickets with Harmony (070322-000677 and 070520-000057) asking for hardware specs. The first time I was lucky enough to get my email forwarded to a developer (not on the Harmony team) who made an attempt to get ahold of someone on the Harmony team, but wasn&#8217;t successful.<\/p>\n<p>My second ticket was given a response saying that they were not interested in a Linux driver and could not release confidential information.<\/p>\n<p>I then tried to sign up for their <a href=\"http:\/\/www.logitech.com\/index.cfm\/partners\/\" target=\"_blank\">developer program<\/a> <strong>twice<\/strong>, but both times my application was silently dropped.<\/p>\n<p>Today, one of the people who have been following my efforts sent me a link to Paul Cutler&#8217;s <a href=\"http:\/\/www.silwenae.org\/blog\/?p=600\" target=\"_blank\">blog post<\/a> offering a bounty for a Linux driver. Neat! Well &#8211; as I said in an email to him, I&#8217;ll gladly give up the bounty in lieu of some pressure on Logitech.<\/p>\n<p>So, I decided to post about it. This is my official request for all of you interested in Linux, Harmonies, or open standards in general, to put pressure on Logitech to release communication specs for the Harmony class of remote controls. You can create support tickets and post in forums <a href=\"http:\/\/www.logitech.com\/index.cfm\/support_downloads\/\" target=\"_blank\">at their site<\/a>, post on your blogs (trackback here, please), send email, snail-mail, or whatever else you think would help.<\/p>\n<p>Thanks!<\/p>\n<p><strong>Update<\/strong>: I want to emphasize that by &#8220;put pressure on Logitech,&#8221; I do <strong>not<\/strong> mean be abusive. I&#8217;m not requesting, nor do I condone, attacks, DOSes, DDOSes, mail-bombs, or other such abusive behavior. Such things do not help the cause and only give the community a bad name. Thanks.<\/p>\n<p><strong>Update 2<\/strong>: Comments are fixed, sorry for the inconvenience. Also, I wanted to note a correction: <a href=\"http:\/\/abock.org\/2006\/12\/13\/harmony-880-remote-on-linux\/\" target=\"_blank\">Aaron Bock<\/a> was actually who started the bounty. Paul Carter then added to it. Finally, I&#8217;ve been asked about what code I have. I have nothing functional, really. Just a few lines of C (w\/libusb) to help test theories as I&#8217;ve tried to understand the binary blobs, and I inevitably freeze the remote. Most of my time has been comparing hex dumps of USB dump files and the binary blobs from the site. If\/when I get enough data to write something even remotely resembling useful, I&#8217;ll release it. GPLv2.<\/p>\n<p><strong>Update 3<\/strong>: Several people recommended I contact the PR contacts for Harmony. So yesterday I sent an email to both PR contacts, and today one of them was able to get back to me. Tate Tran is going to look into getting me the info I need. I&#8217;m not holding my breath, but this is a good sign.<\/p>\n<p><strong>Update 4<\/strong>: A few days ago, Kevin Timmerman contacted me. He has lots of experience writing drivers for devices like these without having specs and had already gotten a lot of the basics working before he ran out of time to work on it. This post inspired him to continue his work, and as of tonight, it looks like we have some working code! We&#8217;re looking to get working (if somewhat rough) code that will configure, firmware update, and do IR learning &#8211; on both Linux and Windows &#8211; released on Monday! Yes, the 16th. We will probably post the code on one of the SourceForge\/Googlecode type sites. This is very exciting! Thanks Kevin! On the Logitech front, they&#8217;re talking about getting me &#8220;a response&#8221; by the end of the week. I intend to keep pushing on them even though it looks like we have almost everything worked out.<\/p>\n<p><strong>Update 5<\/strong>: Code posted on a <a href=\"http:\/\/www.phildev.net\/phil\/blog\/index.php?title=harmony_software_for_linux_is_here&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1\" >more recent blog post<\/a>!<\/p>\n<p><a href=\"http:\/\/digg.com\/submit?phase=2&amp;url=http:\/\/www.phildev.net\/phil\/blog\/index.php?title=writing_a_linux_driver_for_harmony_remot&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1\" target=\"_blank\">Digg this story<\/a> &nbsp; <a href=\"http:\/\/slashdot.org\/bookmark.pl?url=http:\/\/www.phildev.net\/phil\/blog\/index.php%3Ftitle%3Dwriting_a_linux_driver_for_harmony_remot%26more%3D1%26c%3D1%26tb%3D1%26pb%3D1&amp;title=Writing%20a%20Linux%20driver%20for%20Harmony%20remotes\" target=\"_blank\">Slashdot this story<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For the last few months I&#8217;ve been on-and-off trying to write a Linux driver for my Logitech Harmony 880. Thanks to a few friends with windows boxes, I was able to get some USBSnoop data &#8211; enough to be able to dissect about half of the communications that happen with the device. Once I got [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/posts\/79"}],"collection":[{"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=79"}],"version-history":[{"count":0,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/posts\/79\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=79"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=79"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=79"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}