Entertainment/Media Links (Last updated: Sunday, Apr. 06, 2008)
Introduction
In my book (Linux Smart Homes For Dummies, Chapter 7) Terry Collins wrote about installing and using the TwonkyMedia server. Well I now have a, Linksys Linksys WMLS11B Wireless-B Music System, a D-Link DSM320 (Terry used a DSM320) and a Linksys NLSU with Unslung 6.8-beta (I think Terry was using an x86 Linux box). My DSM320 has arrived and I've been busy finding out everything I can about it. My friends and I spent one night setting the Linksys WMLS11B and NSLU project up and it worked quite well. I intend to write another 'chapter' using the NSLU2 and either post it as a magazine article or as a web page, we'll see. I did learn a few neat things while doing this. I'll also be posting that various links to various information I found on all of this to help other with such a setup. As usual, more to follow.
The DSM320 seems to work well enough. I can put video on the Twonky media server and it plays the OGG, MP3 and WMV formats pretty well. I haven't tried anything fancier. So far I've spent a lot of my time investigating how Linux gets put on the DSM320. I've managed to rip apart the firmware image and mount the CRAM FS on my existing x86 box (the DSM320 is an ARM processor). The Linux Journal has a good article on the CRAM FS. I can now get to the Busybox binary and everything else. The Linux Journal has a good flash based tutorial on Busybox. Now that the CRAMFS image is loaded I'll save the 'proprietary' files and see how I can fix in the others. This Linux image uses uClibc so I'll be setting up for it's usage. I need to match my dev environment to that of the binaries used by the DSM320 as I can't recompile the 'proprietary' binaries and I don't want to loose the functionality. I think it's uClib 0.9.15 and GCC 3.2.
I've also spent some time playing with MediaTomb on the NSLU. And I'm now beginning to work with it some more on my main x86 server. What I want is to transcode a few local radio stations so my WMLS11Bs can get them. There are quite a few radio stations that I can't pick up off the air. Probably because I'm too cheap to buy a proper antenna. ;-) Mediatomb has support for transcoding (decoding a stream, and re-encoding it into a nother stream such as Ogg to Wav or some of those crazy asf to mp3. This allows things like the WMLS11B, which has no support for Ogg to still listen to the stream.
One more thing to note: the WMLS11B doesn't like my WRT54G with Sveasoft Alchemy firmware. I've got to swap in my WRT54GL with OpenWRT (White Russian) to see if it works better. One of the little nasty things I've noticed with Alchemy is the the wireless devices all get NAT'd to the WRT's address, that's not bridging! The WRT54G also causes problems with Radio updates. The same WMLS11B works fine with my friends D-Link router so I know it's not the WMLS11B.
Software list - UPnP Servers
UPnP Servers - This page is currently under construction. So pardon the mess. Over all it should be operation (working links) it just that it's missing the diagram, a working explaination of UPnP and a few other things like logical text. I'll work on that. In the mean time here are the links.
UPnP Diagram
Need a diagram of the WMLS talking to a UPnP server and out to the internet.
DLNA - Digital Living Network Archetecture
I'm working on this. I'm currently a little confused about the relationship between DLNA and UPnP. As far as I can tell DLNA is a subset of UPnp but with tighter rules and a slightly modified set of protocols (so their incompatible). Of course more to follow.
Server | Price | Windows | Mac | Linux | Music | Photo | Video | Transcoding |
Cidero Internet Radio Station Server (Java) | Free | X | X | X | X | X | X | |
Cyber Media Gate (Java) | Free | X | X | X | X | X | X | |
MediaTomb | Free | X | X | X | X | X | ||
MythTV | Free | X | X | X | X | X | ||
uShare | Free | X | X | X | X | |||
Rhapsody | 12.99/month | X | X | X | X | |||
TwonkyMedia | 39.95 | X | X | X | X | X | X | X |
What is UPnP
UPnP (short for "Universal Plug and Play") is a set of computer network protocols from the UPnP Forum. The goals of UPnP are to allow UPnP devices on a network to detect each other and connect seamlessly, without the need for manual configuration on the users end, and then be able to share/stream data (usually video and audio files). For a more detailed explaination on the inner working of UPnP please read the "Developers notes on UPnP" section at the end of this article. There are three main types of UPnP AV (Audio/Video) device control protocols (also called profiles); there is the "UPnP AV MediaServer" which sole purpose is to share content, and there rhe "UPnP AV MediaRenderer" which render content to exposes an interface to control the playback, and then there is the "UPnP AV MediaServer ControlPoint" which can detect/find "UPnP AV MediaServer" and browse them to read media/data from them. A DMP (Digital Media Player) like XBMC typically only implements the "UPnP AV MediaServer ControlPoint" device profile.
Much of this information comes from the XBox Media Center (XBMC) Wiki
UPnP links and Libraries
- libupnp - The Linux* SDK for UPnP* Devices (libupnp) provides developers with an API and open source code for building control points, devices, and bridges that are compliant with Version 1.0 of the UPnP Device Architecture Specification. Note: As of Mar. 5, 2006 this project is no longer being developed.
- pupnp - The portable SDK for UPnP Devices (libupnp) provides developers with an API and open source code for building control points, devices, and bridges that are compliant with Version 1.0 of the Universal Plug and Play Device Architecture Specification and support several operating systems like Linux, *BSD, Solaris and others.
- gupnp - GUPnP is an object-oriented open source framework for creating UPnP devices and control points, written in C using GObject and libsoup. The GUPnP API is intended to be easy to use, efficient and flexible. The GUPnP framework was born out of frustration with libupnp and its mess of threads. GUPnP is entirely single-threaded (though asynchronous), integrates with the GLib main loop, and provides the same set of features as libupnp while hiding most of the UPnP internals through an elegant object-oriented design.
- MiniUPnP - UPnP IGD client lightweight library and UPnP IGD daemon. The aim of the MiniUPnP project is to bring a free software solution to support the "Internet Gateway Device" part of the protocol. The MediaServer/MediaRenderer UPnP protocol is also becoming very popular but here we are talking about IGD (think routers and firewalls).
- UPnP Standards - the specifications, produced by specific technical working committees, which have been standardized. The standardization process includes obtaining three sample implementations of the Device Control Protocol (DCP) to pass the UPnP Certification Test Tool, circulating the specification for a mandatory Forum member review and comment period, and obtaining the approval of the Steering Committee to become a Standardized DCP. Standardized DCPs are available to the public.
DLNA links
- MiniDLNA - A DLNA server for Linux. I'm currently using this with My Sony Bravia TV. It doesn't support transcoding it just basically delivers the content.
- PyTivo - is both an HMO and GoBack server. Similar to TiVo Desktop, pyTivo loads many standard video compression codecs and outputs mpeg2 video to the TiVo. However, pyTivo is able to load many more file types than TiVo Desktop. I'm not really sure this belong here. My understanding is that this software will help make a Tivo act like a UPnP or DLNA client but I can't find any mention of either on the site.
MythTV
At this moment MythTV may not be a UPnP media server but I'm betting that it will go in that direction if it hasn't already. So I'm making sure it gets a prominent postion at the front of the page. :-)
Now to make a bit of a mess of this. The following links are related to MythTV but also to control of lights and appliances. Seems that Pluto Home integrated MythTV and Zwave in it's suite. Then a few folks started putting things together and build systems. Then LinuxMCE (running KUbuntu) creates a ready made distribution that make the whole thing a lot easier to use!
- MythTV
- Pluto Home
- LinuxMCE
- A Google LinuxMCE video (about 25 minutes long).
- Hackmythtv - sells ready made systems with MythTV and ZWave.
Free UPnP MediaServers
- GeeXboX ushare, a free open source UPnP MediaServer for Linux and NSLU2. GeexBox is an entire Linux Distribution for media servers.
- GMediaServer, a free open source UPnP MediaServer for Linux.
- mediatomb, a free open source UPnP MediaServer for Linux.
- CyberMediaGate, a free open source UPnP MediaServer for Windows/Macintosh/Linux/UNIX, (reference implementation of UPnP MediaServer integrates into MythTV PVR for Linux)
- PyMedS, a free open source Python UPnP MediaServer for Windows/Macintosh/Linux/UNIX.
- Cidero Internet Radio Server, a free open source Java UPnP MediaServer for Windows/Macintosh/Linux/UNIX (Internet Radio Server only, SHOUTcast by default).
- Platinum UPnP SDK, a dual license open source/commercial UPnP Media Control/Renderer/Server SDK for Windows, Linux, Mac. This is what XBMC uses.
- PyMedS - Python UPnP Media Server. I haven't tried this yet.
- MP3Server - Chris Gokey's Java MP3 server. Chris describes it as "adapts Real Audio and Windows Media streams on the fly to a LinkSys WML11B wireless music system. The software accomplishes this by writing entries to the Favorites list of the Music device. These entries access this server rather than a direct URL. The server then acts as a proxy between your real audio or windows media stream and adapts these streams on the fly as an MP3 streams serving it to your music system. It probably can also be adapted to work on other media devices that can only play MP3 streams."
- GNUMP3D - streaming server for MP3s, OGG vorbis files, movies and other media formats. I'm not sure if it supports UPnP
- Coherence - As a stand-alone application it acts as a DLNA/UPnP MediaServer and exports local and remote media files via its plugins to other UPnP clients. And together with GStreamer it forms a controllable DLNA/UPnP MediaRenderer.
- Fuppes is a free, multiplatform UPnP A/V Media Server. It supports a wide range of UPnP MediaRenderers (see "features" for details) as well as on-the-fly transcoding of various audio, video and image formats. Fuppes also includes basic DLNA support.
- Elisa - is an open source cross-platform media center solution designed to be simple for people not particularly familiar with computers.
- Libdlna - aims at being a reference implementation of DLNA (Digital Living Network Alliance) standards. Its primary goal is to provide DLNA support to uShare, an embedded DLNA and UPnP A/V media server, but it will be used to build both DLNA servers and players in the long term.
- XBMC - Linux Port which is a port of the XBox (not the 360) Media Center (XBMC). This is currently being ported over to Linux. I'm not sure how far along it is but it belongs on this list. I currently have one at home (just not running Linux yet).
Linux Media Players
- Wikipedia entry for Linux media players
UPnP Clients
- Slimserver: a free open source MediaServer from Slim Devices for Windows, Linux and Mac OSX. Can see UPnP servers, but is not one itself.
- GMediaRender - is a UPnP media renderer for POSIX-compliant systems, such as GNU/Linux or UNIX. It implements the server component that provides UPnP controllers a means to render media content (audio, video and images) from a UPnP media server.
- djmount - mount MediaServers content as a Linux filesystem.
- VideoLAN - VLC media player, it's a group of software for video streaming and transcoding.
Streaming Servers
This section is for stuff that doesn't quite fit elsewhere. These servers are not UPnP but are streaming servers.
- DJIB - is a streaming server for media (MP3, Ogg vorbis, video, ..) files, with a web server frontend allowing the user to browse the collection of available files over the web. Links to the actual media files allow an HTTP aware media player (such as Windows Media Player, XMMS, WinAmp, FreeAmp, ..) to play the files. Requires the mutagen module and the Mako templates.
Commercial UPnP MediaServers
- TwonkyMedia, by TwonkyVision, a commercial UPnP Media Server for Windows and Linux, (can interface with the third-party applications iTunes, WinAmp, and Adobe Photoshop Album, and work as plugin to give those applications UPnP-server function), it can even run as a background service on Windows.
UPnP MediaServer hardware
- NSLU2, a hacked/modded version running ushare (a free open source UPnP MediaServer for Linux), (connect USB 2.0 drives to the NSLU2 and share).
- D-Link DSM-G600 wireless storage enclosure, (connect USB 2.0 drives to the NSLU2 and share).
- Maxtor Shared Storage Family.
- D-Link DSM-602H 20GB Central Home Drive.
- Buffalo Media Server.
- Infrant ReadyNAS X6/600, (features room for four internal IDE/ATA-drives, supports RAID-0/1/5)
- Synology NAS stations.