Wednesday, November 12, 2008

runs Linux software inside

The Kuro 9G operating instructions manual has a licensing appendix section that lists the names and licensing restrictions of the open source software used. Below is a description of each piece of software mentioned in the licensing appendix.

Linux
The Linux kernel is an embedded Unix operating system that manages peripherals, memory, and processes. Linux also has a complete TCP/IP networking stack.

TinyLogin
A suite of tiny UNIX utilities for handling logins, user authentication, changing passwords, and otherwise maintaining users and groups on an embedded system. It also provides shadow password support to enhance system security. TinyLogin is, as the name implies, very small, and makes an excellent addition to an embedded system. The getty program opens a tty and invokes /bin/login

FreeType
A high-quality and portable font engine that is capable of supporting several font formats (be they bitmapped or scalable) through a simple and uniform interface.

libupnp
A library for building control points, devices, and bridges that are compliant with Version 1.0 of the UPnP Device Architecture Specification. Used for the DLNA client.

Howl
A cross platform implementation of the Zeroconf zero configuration networking standard. It includes daemons and a client side SDK for registering, browsing, and resolving network services, and assigning link local IP addresses without a DHCP server.

portmap
The portmapper manages RPC connections, which are used by protocols such as NFS and NIS. The portmap server must be running on machines which act as servers for protocols which make use of the RPC mechanism. This portmapper supports hosts.{allow,deny} type access control.

libpcap
A library which provides a packet filtering mechanism based on the BSD packet filter (BPF). Used by the packet sniffing program tcpdump.

OpenSSL
A toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) as well as a full-strength general-purpose cryptography library.

SSLeay
A free implementation of Netscape's Secure Socket Layer - the software encryption protocol behind the Netscape Secure Server and the Netscape Navigator Browser.

GIFLIB
A library for reading and writing gif images.

JPEG image compression
Generic licensing for use of JPEG image decompression.

libpng
A library for manipulating PNG format graphics files.

tiff
A library for decoding the Tag Image File Format (TIFF).

zlib
A lossless data-compression library. Used by gzip and many other compression programs.

libmpeg1
A library for dealing with MPEG-1 streams.

MPEG4IP
A set of tools to encode, stream, and playback audio and video. It uses the MPEG-4 standards for audio and video, and the IETF standards for streaming. The included player can either playback from local MP4 file or stream from a remote server via RTP/RTSP.

Summary
The Kuro 9G runs Linux for its Home Media Gallery (HMG) function and possibly other more system critical features. Linux has driver support for Ethernet 10/100 and USB devices. TinyLogin suggests that getty is used with the RS232 rear service port. FreeType are nice anti-aliased fonts that are likely used for the Kuro's menu system and closed caption text.

The Pioneer Home Media Gallery (HMG) can use both USB and DLNA as a method for accessing audio, video, and image files. The UPnP library is a basis of DLNA support while the Howl zeroconf, also a remote discovery protocol, has an overlapping and somewhat unknown purpose.

The Secure Socket Layer (SSL) is used for accessing encrypted data with https: web servers. It is possible that SSL is used for some sort of DLNA digital right management (DRM) but that fact isn't listed in the manual or advertised. SSL's sole purpose could be for streaming MP3 from servers that use https:.

The existence of the libpcap packet filtering and port mapping libraries were surprising. It is unsure why a DLNA client would need to have any sort of packet sniffing software but this could all be part of the UPnP server discovery process.

There are codec libraries for DLNA image (GIF, JPEG, PNG, TIFF) and video (MPEG-1, MPEG-4) support. MPEG-2 video support isn't listed because the Pioneer Kuro has silicon support for this video codec. It is interesting that packages for VC-1 and all of the audio formats are missing but those likely required special proprietary licensing agreements.

Pioneer has an open source code distribution service page that has a section for the Kuro HDTV's up to the Kuro 8G series. It looks like Pioneer plasma displays have been using Linux long before the HMG function was introduced. Also of interest is that a number of debug utilities are listed such as the bash shell, gcc, gdb server, strace, and telnetd. It is unknown if these debug services are active in shipping Kuro's because an nmap scan turns up empty.

It is unfortunate that a telnet shell isn't accessible so that a Kuro owner can't login and poke around with the Linux inside. It is also unfortunate that Pioneer doesn't supply an SDK so that users could create applications that do interesting things with their Kuro. It's understandable because of obligations to protect the HDMI stream and other internal IP but think of all the amazing possibilities?

No comments: