About Jamie Lenehan

Software Engineer working in the field of network optimisation products. Lots of C/C++/boost, embedded hardware, linux kernel, TCP, SSL, deep packet inspection, SNMP, SQL, IPv6, QoS, policy based routing, virtualisation and appliance management.

Squeezebox radio review

What better way to wake in the morning than to a bit of streaming radio? No longer limited to the few FM or AM radio stations in your area and the option to the play your own music or stream from online music sources.

There were were two devices that I had in mind when I decided that none of the local radio stations were really doing much for me. Taking into consideration that I already had a Logitech Squeezebox Classic (V3),  the Logitech Squeezebox Boom seemed like the ideal candidate. It would be able to use my existing Logitech media server with all the existing local music and online music sources already present, and provide synchronisation and transfer options.

The other option that seemed like it might work as a DAB+ clock radio with line in paired with another Squeezebox Classic or a Squeezebox Touch. The need for multiple devices and the poor selection of DAB+ clock radios meant that this idea was abandoned early on.

So when the Squeebox Boom was put up for sale I jumped on board and ordered one. Another employee from my office also order one shortly before mine… which he received. But all I received was a call indicating that the last of the stock had been sold before they got to my order! So the Squeezebox Radio was last option for a self contained unit that could use the same Logitech media server install and had it’s own amplifier and speakers. The Radio also had the option for battery power and I eventually decided to buy the optional battery + remote pack.

Squeezebox Radio vs Squeezebox Classic

Setup

The first step out of the box is the setup processes and this can be a little confusing. You need to have a squeezebox.com account to complete this step, even if you have no plans to use it. I highly recommend creating this account before hand so you don’t have to try and create it on the squeezebox itself.

If you have are running a local copy of Logitech media server then it will require a specific version of the firmware on the radio,  which may be different to the version that the squeezebox.com service requires. This can result in some confusion about what version is needed! In my case it kept telling me it needed to upgrade to use my local Logitech media server, but what it actually mean it needed to downgrade, and that downgrade kept failing. After upgrading the local Logitech media server software version to the latest and power cycling the radio it all worked smoothly. This wouldn’t be an issue if you were not going to try and use a local instance of the Logitech media server.

User interface

On the older Squeezebox Classic you got a nice big VFD display, while on  radio you get a smallish LCD in its place. The new LCD can give you more menu options and once and show cover art it is rather small and I really do look the VFD displays in the original Squeezebox Classic. One area where the extra real estate of the LCD is noticeable in particular is manipulating alarms and play lists.  With a relative small size it does mean you need to be up nice and close to make sense of what it is showing.

Sound quality

The radio doesn’t have the sound quality or volume of the Squeezebox Classic connected to an expensive Hi-Fi system, but its reasonably decent (if mono) and perfectly suited to bedroom, bathroom, kitchen and back yard duties.

It would be interesting to compare to the sound of the Squeezebox Boom which has stereo output but physically looks like the speakers are smaller.

Even at maximum volume there’s no distortion to be heard – the sound remains very clear.

Battery

After much thought I decided to acquire the optional batter and remote pack. And despite the rather high price I am pretty happy that I did.

The battery means I can take the radio from the bedroom to the bathroom and it keeps on playing. Or I can drag it into the kitchen, or head out to the garage or wonder out  to the the back yard and it keeps on playing. Sure you could take the power adaptor with you and plug it in at your destination, but that’s more work and you’d have no audio while moving between locations.

When put into standby while on battery power the radio will turn off totally after an hour to save the battery from being drained. If it remains connected to the mains then it remains in standby ready to go. When totally powered off there is a reasonably long delay (approx 20s) while it powers up.

Over time I have found myself carry the radio into the kitchen while cooking and now consider it an excellent accessory for the kitchen. So much so that I may well be tempted to buy another one to use as a dedicated kitchen unit!

A recent problem that I have experienced is that after powering off (after the one hour on standy) the radio immediately powers up again, and resume playback of whatever is was playing when turned off. This didn’t happen originally so is possibly trigger by having the alarms enabled (it should wake up when the alarm is ready to fire) and was setting the radio to resume playback whenever it is powered up. This is a combination of having the squeezebox radio set to resume playing at power on and then turning the radio off. If I turn that setting off, or if I pause playback before turning it off, then the radio correctly turns off.

Preset stations

The preset buttons are very handy for quickly selecting one of your favourite stations or playlists.

I have the 6 most common internet radio streams I listen to set on each of the presets and makes it a lot easier to change between stations without having to look at the screen, such as when using it in the bedroom.

Perhaps the only downside is that there are only 6, and that they can’t be selected from the remote control.

Remote control

The remote has turned out to be very handy when using it as a sleep radio and/or alarm clock.  It is a lot easier to operate the sleep timer, volume, menus and alarms from the little remote than tying to reach out and press the buttons on the front panel.

I also find is a bit quicker to walk through the menus using the little remote than trying to use the dial on the front panel, so if the remote is handy sometimes use that instead of the dial on the front.

WiFi

The WiFi connection has been rock solid and works all around the house, outside, in the garage etc.  In areas where my Samsung Galaxy S2 smart phone looses WiFi access the radio is still showing a high signal strength and still streaming fine.

Alarms

Being able to use the radio as an alarm and to run it on a sleep timer at  night was one of the main reasons I decided to buy the Squeezebox Radio. What I didn’t expect was just how much I would appreciate having multiple alarms, with specific days and times (anyone who uses their smart phone’s alarm functions may be familiar with this.) It is very nice not having to remember to turn the alarms on and/or off and to be able to set weekend alarms days before the weekend. And there’s an al off for those times when  you on holidays and don’t want any alarms.

The alarm has been rock solid running from the local Logitech media server. Other reports suggest that this is not very reliable but most of those reports appears to be when using mysqueezebox.com. Another squeezebox owner (of the boom) reporting problems before switching to a local Logitech media server.

Conclusion

Back when I purchased the original Squeezebox Classic I felt the only thing wrong was how long I waited till I purchased it!

I think the same can be said of the Squeezebox Radio.

Originally it was the ability to use it as an Alarm clock that was my main interest but now find myself carry it all over the place. It’s not perfect but for anyone who already owns other Squeexebox products it is definitely a nice addition. If I didn’t already have the Squeexbox Classic and the associated Logitech media server running then I may have looked elsewhere, but with those already running it made sense to get something that fit well with the existing components.

The cost of the Radio was $USD149 and the optional battery pack and remote was $USD50 from amazon.com in June 2012.

Moving from subversion to git with gitolite

The following notes provide details on the conversion of several repositories from subversion to git making use of two tools to help with the process:

  1. gitolite which provides a framework to help managing a central git repository. From https://github.com/sitaramc/gitolite
  2. svn2git to convert existing repositories from subversion to git. From: https://github.com/nirvdrum/svn2git

This is the second time I performed such conversions and it was a lot easier the second time around due to greater familiarity with git and the tools being used to perform the conversion. These notes should make it even easier the next time I need to do this.

Setting up gitolite

Gitolite is a management framework for git. This is installed onto the server and will be used to manage ACLs, available repositories, configuration and hooks etc.

1. Create the git group and user account

There is a single account that will be used for all access to the git repositories and this needs to be created on the server.

~#> adduser --system --shell /bin/bash --group --disabled-password --home /srv/git git
 Adding system user `git' (UID 125) ...
 Adding new group `git' (GID 125) ...
 Adding new user `git' (UID 125) with group `git' ...
 Creating home directory `/srv/git' ...
 ~#>

2. Change to the git user

We want to install gitolite into the new git account, so we need to su into it.

~#> su - git
 $

3. Download the gitolite code

In this case I have downloaded the code into the src directory in the gitolite account.

$ pwd
 /srv/git
 $ mkdir src
 $ cd src
 $ git clone git://github.com/sitaramc/gitolite
 Initialized empty Git repository in /srv/git/src/gitolite/.git/
 remote: Counting objects: 7695, done.
 remote: Compressing objects: 100% (2528/2528), done.
 remote: Total 7695 (delta 5273), reused 7410 (delta 5025)
 Receiving objects: 100% (7695/7695), 1.79 MiB | 426 KiB/s, done.
 Resolving deltas: 100% (5273/5273), done.
 $

4. Install into ~/bin:

And now install gitolite. There are a few options provided in the gitolite documentation, in this case it is using the recommended method:

$ mkdir ~/bin
 $ ./gitolite/install -ln
 $ ls ~/bin
 gitolite
 $

5. Acquire the initial ssh administrator key

The ssh public key of the initial administrator user is now needed. I copied this from my main workstation:

$ cd ~
$ scp johnsmith@nynaeve:.ssh/id_rsa.pub johnsmith.pub
johnsmith@nynaeve's password: 
id_rsa.pub                                                     100%  397     0.4KB/s   00:00    
$

6. Setup the initial administration repository

Now we are ready to create the gitolite-admin and test repositories.

$ export PATH=$PATH:/srv/git/bin
$  gitolite setup -pk johnsmith.pub
Initialized empty Git repository in /srv/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /srv/git/repositories/testing.git/
WARNING: /srv/git/.ssh/authorized_keys missing; creating a new one
$

7. Edit .gitolite.rc

I made two changes here so that I could manage the repository configuration and hooks from the gitolite admin repository.

First to allow manage of configuration keys I modified GIT_CONFIG_KEYS. Note that this allows any config keys which may not be desirable in all situations. Read the gitolite documentation for more information

GIT_CONFIG_KEYS             =>  '.*',

The next change was to add LOCAL_CODE to set the local that gitolite would look for additional code, such as hooks. This was set to:
# Local code

LOCAL_CODE                  =>  "$ENV{HOME}/.gitolite/local",

This allows hooks to be committed to local/hooks/common directory in the gitolite-admin repository and have them actually take effect.

Managing gitolite

All management of gitolite is now performed via the gitolite-admin repository. This can be checked out using the account associated with the administrator ssh public key used during setup.

~/work%> git clone git@servername:gitolite-aCloning into gitolite-admin...
remote: Counting objects: 54, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 54 (delta 10), reused 0 (delta 0)
Receiving objects: 100% (54/54), 10.16 KiB, done.
Resolving deltas: 100% (10/10), done.
~/work%>

To allow multiple public keys per user there are a few methods. I prefer the one file with different names per key.

~/work%> cd gitolite-admin/keydir
~/work/gitolite-admin/keydir%> git mv johnsmith.pub johnsmith@hosta.pub
~/work/gitolite-admin/keydir%> git add johnsmith@hostb.pub
~/work/gitolite-admin/keydir%> git commit -a

For the emailer I created local/hooks/common/post-receive and local/sender.cfg in the gitolite-admin repository and for configuration I placed the config keys in conf/gitolite.conf:

~/work/gitolite-admin%> ls
conf/  keydir/  local/
~/work/gitolite-admin%> ls local
hooks/  sender.cfg
~/work/gitolite-admin%> ls local/hooks/common
post-receive*
~/work/gitolite-admin%> cat conf/gitolite.conf
# Default hook settings
repo @all
    config hooks.mailinglist = johnsmith@example.org
    config hooks.emailprefix = "[%GL_REPO] "
    config hooks.maxdiffsize = 5000
    config hooks.project = "%GL_REPO"
    config hooks.link = "http://example.org/git/%GL_REPO/commit/?id=%s"
    config hooks.hostname = "example.org"

repo gitolite-admin
    RW+     =  johnsmith

repo testing
    RW+     =  johnsmith

These settings would depend on the emailer being used but give the basic idea on what is required.

Converting from subversion to git

The conversion process is done using svn2git and is reasonable simple. You should look at the svn2git documentation as it is reasonably straight foward and provides all the various options you are likely to need.

1. Install svn2git

sudo apt-get install git-core git-svn ruby rubygems
umask 022
sudo gem install svn2git

2. Create ~/.svn2git/authors

This will map subversion user names to git usernames. Alternatively you can pass the name of the authors files as a command line argument.

It just contains lines of the form:

johnsmith = John Smith <johnsmitch@example.com>

3. Convert your repository

Make sure you have either saved the subversion password, by directly accessing the repository with subversion, or that you use the password command line option.

There are different command line options to use depending on the layout of the subversion repository. Check the documentation for all the example.

To convert from a standard layout:

svn2git http://svn.example.com/path/to/repo

To convert from a repository that has no structure, just all the files in the root of the repository:

svn2git http://svn.example.com/path/to/repo --rootistrunk

To convert from a repository that has a project name at the top level, then the standard subversion structure underneath, but has no branches:

svn2git http://svn.example.com/path/to/repo --trunk projecta/trunk --tags projecta/tags --nobranches

Use the –verbose command line option if you need to see what is happening.

Use the –rebase if you have already converted the repository but new changes have been made and you want to get those additional changes. This is also useful if the subversion server times out and disconnects you during conversion (I had this happen when converting a very large repository hosted on a windows server when I needed to retry 30 to 40 times before managing to get the entire repository converted.)

Pushing a new repository to gitolite

1. Add the repository

In the gitolite-admin admin repository edit conf/gitolite.conf and define the new repository. This can be as simple as adding the following:

repo reponame
    RW+     =  johnsmith

Then commit the change and push this change to the server. This will create a new empty repository on the server.

2. Push up the existing repository

Change into your existing repository (such as the one just converted from subversion), then add your git server as a remote server and push up the new code:

git remote add origin git@server.example.com:reponame
git push origin master
git push --all
git push --tags

The push –all is only needed if additional branches (other than master) are present in the repository. The push –tags is only needed if there are tags in the repository.

3. Verify that it worked

Finally do a new clone of the repository and verify that the contents are correct:

mkdir ~/test
cd ~test
git clone git@server.example.com:reponame

Netgear WNDR3700

Two Netgear WNDR3700’s are now running here at twibble.org and both are loaded with locally built versions of openwrt.

The first is running as a router, switch, 2,4GHz access point, 5GHz wireless client. dhcp server and radvd server, while the second is running as a 5GHz access point, firewall (shorewall), vpn server (openswan), 6to4 gateway, pppoe client and router.

The 5GHz wireless bridge link carries multiple subnets and IPv6 and IPv4 traffic without any issues, unlike the bridge devices it replaced which could only handle single subnets and no IPv6. Previously a GRE tunnel was used over the link to allow them to be used here.

Beyonwiz DP-P1 hard disk upgrade

The trusty Beyonwiz DP-P1 had served me well for a few years but the 250G hard drive was starting to feel a bit small.

Research suggested that it was important that any new hard drive didn’t consume much more power than the original drive. If a SATA drive was to be used some a SATA to IDE adaptor would be needed and that would consume additional power which also needed to be taken into account.

Eventually I settled on the following components for the upgrade:

  1. Hitachi CinemaStar 7K1000.C 1TB 7200RPM SATA HDD
  2. Altronics D2335 SATA to IDE Converter Module

Attaching the converter to the SATA HDD effectively converted it into an IDE hard disk. It was then just a matter of swapping the existing hard drive and reconnecting the IDE cable and power cables.

The drive runs cooler and quieter than the original Samsumg 250G drive and disk related actions seem to be a lot more responsive. So deleting files, bringing up file player list etc are all feel quite a bit faster.

No problems have been observed in the year since the upgrade, including running the disk check after power outages. Most of the time the disk space used is sitting between 400G and 600G. Currently running firmware version 350.