Update eTrex 30 with Linux

I am a proud owner of an Garmin etrex 30. Since I do run Linux on all my machines at home, I tried several ways to update the firmware of this device. Unfortunately this is not possible, using WebUpdater from garmin directly. A tool which should make it easy (and most probably it does on windows and/or mac) makes it hard to do on Linux.

Anyways, a download of the lates firmware can be found at http://garmin-etrex.wikispaces.com/firmware. You just need to rename the Downloaded file to GUPDATE.GCD and move it to /Garmin/ on your Garmin device.

After a restart of the eTrex 30, all seems to be fine.

Rotate Images based on EXIF Tags

Back from vacation I am currently in the process to create an image gallery using sigal.

Unfortunately sigal can only copy EXIF tags to the (smaller) images in the gallery or rotate the images correctly.

Since this is needed for some of the pictures, I have done, I use jhead.

The following line is quite helpful to rotate jpgs based on the EXIF tags:

find -name "*.JPG" -exec jhead -autorot {} \;

MPD and ALSA settings on cubox-i

I have had some trouble with some songs playing on my cubox-i via the SPDIF-Toslink connection. I heard crackling noises on those songs. First I thought, that those were due to some mistake done during ripping those from my CDs. But I tested those songs on some other devices and recognized, that it is most probably due to high frequencies or something similar.

Therefor I digged into the concrete settings of ALSA and MPD to fiddle around with Frequency- and Volume-Settings. In the end it turned out, that the solution is rather easy and I just had to reduce the volume of the cubox-i SPDIF out to 98%. Now all crackling noises are gone and I can enjoy the music via my home stereo system.

Here are the settings of ALSA (/etc/asound.conf):


pcm.imxspdif {
type hw
card imxspdif
}

pcm.imxhdmisoc {
type hw
card imxhdmisoc
}

ctl.imxspdif {
type hw
card imxspdif
}

ctl.imxhdmisoc {
type hw
card imxhdmisoc
}

The above settings are just setting the devices in the Cubox-I to be used by alsa. The „imxspdif“ is important, because this one is used by the following MPD-setting:


audio_output {
type "alsa"
name "imxspdif"
mixer_type "software"
}

Unfortunately I could not use „alsactl store“ to store my alsamixer settings, therefor I have set the mixer_type of MPD to software, which allows to call the


mpd volume -2

command inside of my mediaplayer-startup script. This command sets the used volume to 98%. Now everything is working fine, on every boot, like wanted 😉

Install Gollum with Unicorn and nginx

I just documented on how to install gollum on an ArchLinux machine using Unicorn and an nginx reverse proxy. This documentation provides detailed installation instructions as well as config files.

One of the requirements I had, was to be able to run multiple instances of gollum, as well as using systemd to start and stop these instances easily. There is a gollum package in the AUR, but this does use the webRick, and therefor I decided to start from scratch.

IPv6 on Netcup using ArchLinux

I just enabled IPv6 on my Netcup Server, this is quite easy. There is one real important point in the documentation (found here): „poweroff“ is needed, without this, the Adress will not get assigned to the VServer.

I am using netctl for the configuration, and my config looks like this:


Description='A basic static ethernet connection'
Interface=ens3
Connection=ethernet

IP=dhcp

## For IPv6 autoconfiguration
#IP6=stateless

## For IPv6 static address configuration
IP6=static
Address6=('2a03:4000:5:f1::1/64')
Gateway6='fe80::1'
DNS=('2001:4860:4860::8888' '2001:4860:4860::8844')

Note, that IPv4 is configured via DHCP whereas IPv6 is configured static. Furthermore the gateway for IPv6 is set to the current machine, this is according to the documentation of Netcup (found in some forums). Furthermore I did configure some DNS-Server here. These are the ones of Google.

You can then use ping6 to ping some hosts and test, if the connection is working. The host is reachable from the outside with the given IP.

New DVD Drive

Since I have ripped around 900 CDs with my Laptop, the build-in DVD Rom broke (which is bad, but to be expected on this large amount of CDs). I bought a new external drive (Samsung SE-218CN). This one works now without any problems on my ArchLinux Laptop 😉

My UPNP Stack

Hello,

i have already witten, that I am ripping my whole CD collection (see discogs for the already ripped collection). I have written a for tagging my collection and this is working great.

To play music on my stereo, I thought, that UPNP is a great protocol for it. The stack I am currently using is involving the following toolset:

Please note, that parts of this stack are replaceable through other components, but this stack is right now the best working (at least for me). All components do use the UPNP enhancements from OpenHome, which is an OpenSource Project of Linn, IIRC.

The MediaRenderer could be replaced by UPMPDCli, a nice UPNP Frontend for MPD (my favourite Music Player. But then you should also use BubbleUPNPServer to enjoy all the benefits of the Openhome extensions.

MediaPlayer is using MPD or MPlayer to be able to play the music. MPD do offer quite some extensions, which still can be used with the above mentioned environment.

One Extension is LCD4Linux, which allows to show some information about the current played song on a small LCD. This is working on my Raspberry, but unfortunately this also seems to have some problems, in that the Display just freezes and the whole Box needs to get restarted. Since the used display is also very small (see Pearl Display) I decided to invest some more time and money into something slightly larger (see TaoTronics Display, Power Supply, HDMI to Component Adapter as well as a couple of additional needed cables (MiniHDMI, Component…)). I do hope that this is going to work out. For this stack, LCD4Linux is not needed anymore, since this is a „normal“ Screen. Therefor I plan to integrate a Full-Screen Display component into the MediaPlayer. As soon as this is finished, I will report back, right now I am still waiting, that all the above mentioned components do arrive.

On the beginning of my UPNP discoveries, I stumbled across the X10, which is also a nice toy, but unfortunately does not support gapless UPNP playback (see X10 Forum (German)). Unfortunately I needed to buy this device to discover this one ;-( It is still a nice playing toy, but right now is just used for Internet Radio Streaming, since even the Tagging I did with DiscogsTagger is totatlly screwed on this device and the X10 is showing me the albums in totally different format then shown eg. on minimserver.

So, you could buy yourself some expensive devices from Linn, Naim or …, or you spend you money on some decent Hardware like Raspberry PI (uh, the sound of this device is not realy good, without the addition of a good DAC like HifiBerry) or a Cubox-I and invest some time in installing the above mentioned stack, then all should be fine, without spending too much Money as well as time.

Create Postgresql Role

CREATE ROLE username WITH LOGIN PASSWORD ‚password‘;
CREATE DATABASE dbname OWNER username;

Edit pga_hba.conf to avoid connections via trust or clear text passwords.

Discogstagger

If you have read my blog lately, you know already, that I am in the process of ripping all my CDs into flacs. I am using RubyRipper (since I am on a ArchLinux Box) to rip the CDs. Since the quality of FreeDB (used by RubyRipper) is not really good, when it comes to certain (in my case most) of the CDs. Therefor I am using Discogs to get the correct Metadata. In the beginning, I used Puddletag to Tag all the Tracks. Later I discovered a nice tool, called Discogstagger, which is able to tag a whole album by using the releaseId from Discogs. Unfortunately, this tool did not provide all the needed functionality (e.g. multi disc albums were not supported). Jessewards (the owner of Discogstagger) was quite interested in my changes and accepted all of my pull requests (and I am not really a Python Expert). Since the whole application grew out of itself quite fast, I decided to fork discogstagger and provide a new version of it. I am still in the process of extending discogstagger and right now this version is not working at all (unfortunately), but all tests I have written (and I wrote quite some unit tests for it) are running 😉

If you are interested in helping out just take a look on the version2 Branch of discogstagger. I am more then happy to accept pull requests, but keep in mind, that I would like to increase the code coverage with every single commit 😉

Every type of pull request is very welcome, if it is just a bug fix, an extenstion to the current functionality or „just“ documentation.

Greetz