War is peace. Freedom is slavery. Ignorance is strength - Orwell's 1984
EMBEDDED SOFTWARE firm Cadenux agreed to release its SDIO and USB stack microcode for the TI DM320 as free software under a GPL license, giving Neuros OSD buyers some hope of finally getting Bluetooth on the unit as well as USB keyboard support. It just goes to show that a Linux OS with buggy proprietary code does not equal freedom.
An open sauce based device surely has a better chance of beating planned obsolescence than a proprietary one, as we pointed out before in the case of the Nokie Nxx Linux based internet tablets. But running a Linux OS is only half of the story. Here's how a new piece of open source microcode can give Neuros OSD owners some hope.
The Linux foundation of the OSD personal video recorder and media centre makes it a very attractive accessory for your telly. It evolved from being just a TV recorder and SD card video player to also searching for and playing Youtube videos and having a (beta) Last.FM client to enjoy your favourite music. But as some Linux kernel hackers found, many of the device's low-level functions running on its internal Digital Signal Processor are proprietary bits. The video codecs are examples, as is the firmware that lets the DM320 processor from TI also act as a USB 2.0 host controller.
A major, if not the only, annoyance for OSD owners has been that the USB port can only function with a single device, namely a USB mass storage device. Using a USB keyboard, USB Bluetooth dongle, or even adding a USB 2.0 hub to access multiple USB devices is not supported. And most of the shortcomings of this USB host support in the DM320 used in the Neuros OSD can be blamed on proprietary code from Ingenient Technologies.
Neuros Technologies' founder Joe Born commented publicly at the time on the OSD mailing list: " We started out with the most highly recommended, expensive and secure reference design. When that yielded obvious problems on the USB driver, we looked around for additional designs, we put out bounties and even reached out to Greg K.H., who as most of you know heads a kernel driver effort to re-write closed drivers to open ones. His group objected to the binary module nature of our reference design. We certainly reached out to Cadenux and others." Developer and OSD enthusiast Dan Fandrich commented on the need for having Bluetooth dongles supported: "Surely, it will need interrupt support, which sounds like the OSD's big missing USB feature."
One of the possible solutions to get Bluetooth keyboards working with the OSD and solving one of the main gripes with the unit -text input was using an SD-to-Bluetooth adapter, but again, the proprietary USB firmware that ships on the DM320 in the OSD lacks SDIO support. Enter Cadenux. Some years ago this embedded software firm developed both a full USB host driver for the TI DM320 supporting mass storage, networking, keyboard, and mouse, and also an SDIO driver allowing the use of SDIO devices on a SD slot. But this code was, again, proprietary, and by the time Neuros Technology was busy with the OSD v2 and its latest toy, the Link, the company couldn't affort another dive into the proprietary software minefield.
Since besides being a tech scribbler and fan of the miniature marvel, the $99 Neuros OSD, this writer is also a very stubborn person, finally one of the company honchos, Gregory Nutt, finally replied to my e-mail. You will see that in the end, annoying stubborn people sometimes get their way. Nutt forwarded the request to Cadenux' Todd Fischer whom, as the original author of the drivers, agreed to release the firm's USB drivers for the DM320 under a Free Software licence, namely the GPL. He noted that his company is now selling drivers for TI's follow-on chip, the DM355, and that there aren't many business opportunities left for the DM320, so he agreed to open source it.
Fischer said "I am willing to provide the DM320 USB drivers and SD/SDIO drivers with a GPL license. These are for Linux kernel 2.6.4 and would likely need some lovin' to get them working with 2.6.15. At the time the drivers were written, many of the standards established since then didn't exist, so the drivers may seen a bit odd when compared to newer drivers." His first GPL release is here until it finds a better home.
All this long tale proves, in the end, is that a device running Linux is only half of the story. For best results you also need to have open firmware or microcode as well. If that seems daunting to you, just remember that stubborn people sometimes win. µ
A device with Linux in its microcode would be cool.
You surely meant firmware, no?
Why does it matter if it's written on Linux? You can write sh!t code in any language, any OS. It could've run on QNX, Windows, BSD, OS X and still blown goats. And there's plenty of crap Linux code out that that *is* open source.
First: It is about General Public Licensing of software. It means that the software is freely available and the source code is included so reverse engineering is not required.
This will allow hardware and software developers get the most out of a device by writing microcode to meet their needs (within the abilities of the device of course) and not be functionally limited by proprietary code as the example in the article pointed out.
Fischer is willing to release the current drivers under GPL; he did mention that these were written FOR the Linux kernel 2.6.4, but he did not imply that the code WAS Linux.
I hope this will mean the end of proprietary firmware. Manufacturers will come out ahead if "reverse engineering" isn't required to use their devices with more than a limited number of operating systems.
If you want to put the code somewhere that others can get hold of it and hack on it, how about one of the code-hosting sites like GitHub or Gitorious?
You can tell I’m a Git fan. :)