Device Profile: Roku HD1000 high definition digital media player
Dec 1, 2003 — by LinuxDevices Staff — from the LinuxDevices Archive — 5 viewsRoku calls its first product, the $499 HD1000, “the world's first high-definition digital media player.” The product displays content from memory cards or networked PCs on High Definition TVs (HDTVs) including LCD and Plasma TVs. The HD1000's open, Linux-based architecture makes it especially interesting to embedded hackers, and Roku encourages such use.
Roku's HD1000 high definition digital media player
(Click for larger view)
Roku was founded by Anthony Wood, who, according to Roku, “created Dreamweaver,” “created ReplayTV,” and “invented the digital video recorder.” “Roku” means six in Japanese, and the company claims to be the sixth company founded through Wood's inventions.
Roku bases the HD1000 on “Roku OS,” a Linux-based operating system optimized for digital media and open for application development. “Developers can extend the home entertainment experience to include new types of digital media and applications,” says Roku CTO Don Woodward. Roku will actively cultivate third-party applications through an SDK it will release before 2004.
Woodward adds that Roku is focused on consumer-oriented design, “[We build] products from the outside in, so to speak, in contrast to inside-out PC-based products, which tend to be unattractive and complicated to use.”
What'll she do?
High-definition TV content remains scarce, according to Roku, and the HD1000 is intended to help fill that gap, letting HDTV owners actually use their machines rather than just having them hanging there, on the wall, with nothing to do. “The Roku HD1000 gives HDTV owners the ability to create a high-definition showcase for art, music, and photos that is individual and unique,” says Woodward.
The Roku HD1000 range of media capabilities comprises digital photos, art, music, and “dynamic media applications.” Content is displayed through memory card slots for CompactFlash, MMC, SD, Memory Stick, and SmartMedia. Or, the Roku HD1000 can connect via Ethernet or Wi-Fi to a home network.
The device works with any TV, though it was built specifically for HDTVs.
Roku says that industry analysts predict 42 million U.S. homes will have an HDTV by the end of 2007. HDVT prices are falling, it says, and approaching regulatory deadlines will ensure implementation of high-definition standards and programming, in turn stimulating consumer demand for HDTV.
Along with the HD1000, Roku sells “Art Packs,” which provide collections of high-definition still and motion art, called LiveArt, on removable memory cards. “Art Packs can transform any HDTV into an inspiring home gallery with endless digital media possibilities, from museum collections to nature scenes, dream cars, and professional photography,” notes Woodward. “Looping HD MPEG2 clips, JPEG, or MPEG are all supported.”
The Roku HD1000 and Roku Art Packs are available now in consumer electronics stores nationwide, but are only the first of the company's planned products. For example, the company is working on “visualizer” software to graphically represent music played through an HDTV system.
Third party opportunity
Roku says its HD1000 is the only digital media player that opens the door to third-party developers. Though transparent to the consumer, the Roku OS allows third-party developers to build applications that enhance enjoyment of high-definition digital media players.
The Roku HD1000 is based on the Roku OS, an open platform that includes Roku's advanced media APIs and the Linux Kernel. Roku says that developers can quickly craft innovative and custom applications that take advantage of the TV-centric user interface elements, network and memory card access, MP3, MPEG, windowing system, graphics library, and other media engines. A C/C++ SDK will be available by the end of the year 2003.
In addition, custom installers can control the Roku HD1000 without the SDK by using simple ASCII control commands. The HD1000 is completely controllable from the serial port, Ethernet port, or from scripts running on the device, according to Roku.
What's under the hood?
The HD1000 is based on an ATI Xilleon x225 processor which includes a 300MHz MIPS architecture CPU core, 2D and 3D graphics engines, video and graphics scalers, and a high-definition MPEG2 decoder. It comes with 32MB of 133MHz DDR system RAM and 32MB of 133MHz DDR video RAM.
The HD1000 boots a custom bootloader from a small serial flash. The bootloader then looks for a bootfile (the Linux kernel) on the CompactFlash slot. If it doesn't find one, it boots the Linux kernel from the 16MB internal NAND Flash memory chip.
Front and back views
(Click either image to enlarge)
Roku lists the following I/O connections for the HD1000:
- 100V TO 230V at 47-63Hz
- 10/100 Ethernet
- SPDIF coax digital audio out
- USB 1.1
- VGA out
- Component video out
- Composite video out
- S-Video out
- Component video in
- Composite video in
- S-Video in
- RS232 DB 9 serial port
- 2-Channel analog audio out
- 2-Channel analog audio in
- CompactFlash card slot
- SD/MMC card slot
- Memory Stick slot
- SmartMedia card slot
Software side
“Roku OS” is based on GNU/Linux with kernel version 2.4.18. Roku started development with a distribution it got directly from hardware supplier ATI. The device leverages many popular open-source software components, including Samba, Busybox, jpeglib, zlib, id3lib, madlib, and more. However, Roku opted to write its own super-light HDTV-friendly graphics library and windowing system.
Why Linux?
“Several factors influenced our choice,” says Woodward. “We have extensive experience with embedded operating systems, and while Linux is a relative newcomer to the embedded front, our device is less like an embedded system than a multi-media computer.”
Woodward cites the following reasons Roku chose embedded GNU/Linux:
- It is open.
- It is robust.
- Linux has a large developer community and we encourage third parties to develop applications for our device.
- There is a wealth of open-source software available for Linux.
- The price is right!
“We are glad we chose Linux,” adds Woodward, “Since it has enabled us to bring a feature rich product to market quickly by leveraging the excellent work of the Linux development community. We feel we made the right choice and would certainly make that choice again.”
“Many challenges surfaced during the course of our development project,” notes Woodward when asked about obstacles and challenges faced by his team. “Many of these were the types of challenges one sees during the development of any embedded project and were not related specifically to Linux.”
Woodward adds the following detailed list of challenges related to embedded systems development under Linux:
- Processes have their own virtual address space.
This is a blessing and one of the greatest features of the Linux kernel. Many embedded operating systems, however, use a flat unified address space and developers use real addresses directly. In a closed embedded system that only runs 'trusted' code, this is generally viewed as acceptable and makes inter-task communication a snap. Developers who are used to this memory model typically find inter-process communication on Linux a learning experience at best.
- malloc doesn't return NULL.
Many embedded developers are used to writing code that relies on the fact that malloc will return NULL when physical memory is exhausted. The 'over-commit' strategy of the Linux allocator confuses the traditional embedded developer – particularly when there is no actual paging file in use.
- The Linux scheduler is like no other (SCO's claims notwithstanding)!
Many embedded developers are used to hard real time schedulers and this business of process priorities with nice values seems a bit odd. I don't want my scheduler to be fair, I want it to be strict. On the other hand, I want to leverage open source that may rely on the behavior of the scheduler.
Woodward predicts that the use of Linux in embedded systems will continue to grow. “The diversity of GCC (GNU Compiler Collection) ports, the wealth of open source, and overall adoption of Linux in the development community will ensure that it becomes a strong player in the embedded space.”
An unflattering early review of the Roku is available here.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.