MusicPal remote controls

Some days ago I noticed that my bedroom alarm clock radio music player, Freecom's MusicPal, got an update to version 1.5.1 (while I was still at 1.3.0). I decided to go with the update since it promised multiple alarm times (useful when you and your wife go to work at different times) and an HTML browser. I saved the configuration settings, uploaded the new firmware image and restored my settings.

It really has an HTML browser now - which totally sucks at rendering web pages. It does not even get text/plain files right and swallows all newlines. Don't come to me with "But it's a music player" - they built it, and they failed. In-site anchored links? No way.

Remote controlling

The nice thing about UPnP is that media renderers, such as my MusicPal, are supposed to be remotely controllable. This is useful if you want to sync multiple players to play the same playlist, or to stop them when your TV is switched on automatically, or when it's time to sleep.

Now that the UPnP player MusicPal already implements the UPnP protocol and has a stack for it, what would you expect about the state of "lesser used features" like UPnP remote controlling, given that there is an official Windows tool you can use to control your MusicPal? Exactly. Nearly unimplemented.

Freecom Remote Control

The official Windows tool "Freecom Remote Control" does not use UPnP commands to play/pause/set loudness/edit playlist of the player as any resonable programmer would do it. No, it abuses the admin web interface via http, and that in an awkward way.

A list of URLs that are used to control the musicpal or get information from it:

Retrieve current state
http://user:pass@musicpal/admin/cgi-bin/state.cgi?fav=1
Retrieve current state with favorites
http://user:pass@musicpal/admin/cgi-bin/state.cgi?fav=0
Switch between play/pause
http://user:pass@musicpal/admin/cgi-bin/admin.cgi?f=play_pause&n=../now_playing_frame.html
Skip to next song
http://user:pass@musicpal/admin/cgi-bin/admin.cgi?f=next_song&n=../now_playing_frame.html
Play first favorite
http://user:pass@musicpal/admin/cgi-bin/admin.cgi?f=favorites&n=../favorites.html&a=p&i=0
Set loudness/volume
http://user:pass@musicpal/admin/cgi-bin/admin.cgi?f=volume_set&v=3&n=../now_playing_frame.html (v between 0 and 20 [inclusive])

The MusicPal has a default username/password combination of admin/admin. While the freecom remote controlling tool allows you to set a custom password, it always uses the default one first, and only if that fails the custom one. That doubles the traffic. Increasing bandwidth, power usage, etc - not a "green" tool at all.

Remote controlling via UPnP

The Cidero UPnP suite is some years old, but is still very useful to demonstrate or try things out. It also features a player window for each media renderer device in the network with buttons for every UPnP feature and a playlist window.

Media renderers that properly implement the UPnP protocol can be told to play, pause, play the next or previous track. You can set the volume, shut the device down or modify the playlist. The MusicPal is a bit special when being controlled via UPnP:

Alarm clock

With update 1.5.1, the MusicPal has awesome 5(!) alarm timers! This does not make it any better. Here are the deficiencies I noted over the last year:

There are methods to get the loudness level up at night by logging in via the telnet interface and creating a cron job at 3 in the night that uses wget to call the admin interface and set the loudness. Ah, teh technology. Explain that to your wife: "Sorry honey that you missed your flight. The alarm clock's cron job list had been erased during firmware update."

Debug mode

To get telnet access to your musicpal, you have to enable it first via a hidden web interface page: http://musicpal/admin/cgi-bin/debug.

Fixing it myself

Neither of the problems listed would stay problems for long if the source code would be publicly available. But as I wrote in my last post about my MusicPal, the nashville software doing all the things like playing music, sending UPnP commands or receiving user input is closed source. Oh my.

Written by Christian Weiske.

Comments? Please send an e-mail.