James Richardson
I Wish To Write an UPnP Media Server

I have decided to write an UPnP Media Server

Why would I choose to do such a thing? Possibly because I'm insane. I was using Kodi, which was rather nice. The box I was using for the server gave up the ghost. It was an ancient Dell of some sort that had some sort of weird video card with a tv out port (a yellow rca thing) that worked with the tv in the living room. I didn't want to replicate this setup on a newer server. The remote control setup never suited the wife. I was never really happy with it either. I installed mediatomb on the fileserver that housed all of my media and had a Roku that worked with the tv. The roku could display the media on the tv. Mediatomb didn't have much in the way of metadata for media, unlike kodi. It became rather tedious to find a movie to watch just by a file tree listing.

I have since upgraded the TV to a smart one, which hopefully is not spying on my. It has a built in media player, which for some reason doesn't work so well with Mediatomb. All the TVs in my house are now either smart TVs or have a Roku attached. I don't really need something as heavy as Kodi now. I need a media server that works with my TV and/or Roku and is capable for presenting metadata to such devices. In my mind something not as heavy as Kodi, but not as light as Mediatomb.

Obviously, then, I have to write one myself. I also get learn about UPnP, DLNA, and SOAP. I spent the better part of my free time during my week of at Christmas writing exploratory code and reading DLNA and UPnP specs. I did manage to also learn about joining multicast groups and UDP sockets in general. I also find I actually enjoy writing code in guile, even better than CL and Clojure.

I have setup a code repository. The exploratory code should be pushed shortly. However, it is not even close to be a media server, yet. As of now it just does SSDP discovery. I find it interesting that my wireless access points advertise services even though I have those features disabled1. At some point I hope to get far enough along to actually serve media.


  1. Guess it shows why you can't trust proprietary software. ↩