24 Aug 2008

Apple IR remote in Ubuntu Hardy

Posted by Jacob Emcken Comments (4)

This weekend I decided to try and get my Apple remote to work on my Mac mini which I just upgraded to Hardy the other day.

Configuring the package lirc you are able to select the apple remote from a list but I couldn’t get it to work that way. So I found a way to create my own configuration file for the Apple remote:

sudo irrecord -H macmini -d /dev/usb/hiddev0 macmini.conf

-H tels irrecord which driver to use -d is the device irrecord listens for input on macmini.conf is the file where irrecord saves the configuration when done

First you need to hold a button. I had to wait almost 25 sec before it was satisfied and went on with the configuration. Now just follow the on screen instructions and in the end you should have you own configuration file. I recommend to compare the following file with the one you just created to check out the differences:

/usr/share/lirc/remotes/apple/lircd.conf.macmini

I made sure to call my buttons the same as in lircd.conf.macmini.

After that I altered these two files to point to my newly created configuration file and removed pointers to lircd.conf.macmini:

hardware.conf
lircd.conf

I then restarted lircd with:

sudo /etc/init.d/lirc restart

now you should be able to check that it is working with the command irw:

irw

Just Ctrl+c when you are satisfied with the result.

At some point I would like to use my remote with Elisa which just released a 0.5.6 which have DVD playback support, but for now I’ll just stick to Totem just to try getting it to work.

To use the remote in Totem you first have to enable the IR plugin (Edit -> Plugins…). Then you have to configure what to buttons are supposed to do which is done in a configuration file in you home folder:

~/.lircrc

Content could look something like this (read more about syntax on LIRC’s website):

begin
    prog = Totem
    remote = Apple_A1156
    button = vol+
    config = volume_up
end

Since the Apple remote have a combined Play/Pause button I wanted to find out if that was possible. I had a bit of trouble figuring out what was going in the config = line and looked through all documentation I could find on LIRC’s website. Suddenly it hit me that the values in config a specific for the application. Not much about this on the Totem website so I downloaded the source code for Totem. Don’t worry this isn’t going to be hardcore. I unpacked the source code and searched for files with the name lirc:

$ cd totem-2.22.1
$ find . -name \*lirc\*
./data/lirc_example
./src/plugins/lirc
./src/plugins/lirc/totem-lirc.c
./src/plugins/lirc/lirc.totem-plugin.in

I opened the file totem-lirc.c and found about 25 definitions for IR commands something like the following:

#define TOTEM_IR_COMMAND_PLAY "play"
#define TOTEM_IR_COMMAND_PAUSE "pause"
#define TOTEM_IR_COMMAND_NEXT "next"
#define TOTEM_IR_COMMAND_PREVIOUS "previous"
#define TOTEM_IR_COMMAND_SEEK_FORWARD "seek_forward"
#define TOTEM_IR_COMMAND_SEEK_BACKWARD "seek_backward"
#define TOTEM_IR_COMMAND_VOLUME_UP "volume_up"
#define TOTEM_IR_COMMAND_VOLUME_DOWN "volume_down"
#define TOTEM_IR_COMMAND_FULLSCREEN "fullscreen"
#define TOTEM_IR_COMMAND_QUIT "quit"
#define TOTEM_IR_COMMAND_UP "up"
#define TOTEM_IR_COMMAND_DOWN "down"
#define TOTEM_IR_COMMAND_LEFT "left"
#define TOTEM_IR_COMMAND_RIGHT "right"
#define TOTEM_IR_COMMAND_SELECT "select"
#define TOTEM_IR_COMMAND_MENU "menu"
#define TOTEM_IR_COMMAND_PLAYPAUSE "play_pause"
#define TOTEM_IR_COMMAND_ZOOM_UP "zoom_up"
#define TOTEM_IR_COMMAND_ZOOM_DOWN "zoom_down"
#define TOTEM_IR_COMMAND_SHOW_PLAYING "show_playing"
#define TOTEM_IR_COMMAND_SHOW_VOLUME "show_volume"
#define TOTEM_IR_COMMAND_EJECT "eject"
#define TOTEM_IR_COMMAND_PLAY_DVD "play_dvd"
#define TOTEM_IR_COMMAND_MUTE "mute"
#define TOTEM_IR_COMMAND_TOGGLE_ASPECT "toggle_aspect"

Other multimedia software might be better docuemented when it comes to IR but I guess you would be able to use something similar to figure out what possible config-options you have in the lircrc for the software.

Anyways Totem have a Play/Pause toggle and I ended up with:

begin
    prog = Totem
    remote = Apple_A1156
    button = play
    config = play_pause
end

22 Jul 2008

Teamspeak start stop script

Posted by Jacob Emcken Comments (0)

After my server was restarted twice by my hosting center I decided to make sure Teamspeak would start automatically. I read a few posts on how other people did it but in the end I decided that I created my own minimal script.

My two goals with this init script was:

  • Run the Teamspeak server as an unprivileged user.
  • Make sure the Teamspeak server starts up after reboot even though it wasn’t shut down properly
  • A little bonus was that it reuses much of the init script that is bundled with the installation

Init script (/etc/init.d/teamspeak):

#!/bin/sh

TEAMSPEAK_DIR=/usr/local/teamspeak
TEAMSPEAK_USER=teamspeak

# Make sure that Teamspeak starts even though it wasn't closed nicely last time (ie. by a power cut)
if [ $(su - $TEAMSPEAK_USER -c "ps ux" |grep tsserver2.pid|grep -v grep|wc -l) -eq 0 ] && [ -f ${TEAMSPEAK_DIR}/tsserver2.pid ]
then
    rm ${TEAMSPEAK_DIR}/tsserver2.pid
fi

cd ${TEAMSPEAK_DIR}
su - $TEAMSPEAK_USER -c "./teamspeak2-server_startscript $1"
cd -

05 Jun 2008

My media center

Posted by Jacob Emcken Comments (1)

A lot has happened since the last time I blogged… I must admit the main reason for not blogging has been World of Warcraft :)

Anyways back in December my girlfriend and I bought ourselves a new LCD TV capable of displaying HD 1920×1200. To start out with we used our aged Playstation 2 as a DVD player but the low DVD playback quality really shows on the new TV. A few months later I went out and bought a Mac Mini on which I installed Ubuntu.

So far we’ve mainly used it for the slimserver backed for the Squeezebox and occasionally DVD playback in the VLC media player. I’m looking a the different media centers for Linux but haven’t really decided yet. Being a Gnome guy I’m gonna give the next release of Elisa (0.5) a spin when it comes out in july. The earlier releases of Elisa was beautiful and clean but lacking a lot of functionality. So far VLC and a mouse has worked just fine. What I’m really hoping for is some BlueRay playback support in Linux.

Anyways I’m really happy with the Mac Mini as a “Media Center”. I wont be needing any TV Tuners. Its small, good looking, use fairly little power (I think) xD I’m hoping to replace the DVD drive with a BlueRay drive when Linux support picks up at some point.

30 Oct 2007

Migrate emails to Zimbra using imapsync

Posted by Jacob Emcken Comments (0)

I’ve installed Zimbra on SLES9 for a costumer because they wanted Zimbra on Suse. The costumer wanted the community maintained version and I felt it was too risky to install Zimbra 5 release candidate.

First a little Suse bashing (sorry but I just get irritated about this over and over again). Zimbra recommends using imapsync to migrate emails to Zimbra and it seems to be a fine piece of software.

  1. I started out by using yast to search for this tool but as I expected nothing.
  2. After downloading it from the website and trying to run it I got a message that I was missing Mail::IMAPClient lib.
  3. I tried to find SLES9 rpm packages (or just RPM packages) with the Mail::IMAPClientlib.
  4. I tried to install this with cpan:

    cpan
    cpan> install Mail::IMAPClient
    ....
    Writing Makefile for Mail::IMAPClient::MessageSet
    Warning: prerequisite Parse::RecDescent 1.94 not found. We have 1.80.
    

    I’m no cpan / perl expert so I couldn’t figure out why I couldn’t get Parse::RecDescent installed.

  5. Anyway what is the benefit of having a supported enterprise version of Suse if you trash it with all sorts of unsupported software.

You could argue that Zimbra should provide imapsync as some part of migration tools.

Anyway the solution was that I installed imapsync on my Ubuntu Gutsy laptop:

sudo apt-get install imapsync

I just gets so disappointed that things are so “hard” in a professional Linux compared to Debian or Ubuntu.

When I’m done I’ll just uninstall it and all its dependencies again:

imapsync libdigest-hmac-perl libdigest-sha1-perl libio-socket-ssl-perl libmail-imapclient-perl libnet-ssleay-perl libparse-recdescent-perl

Important note: I had imapsync on Ubuntu Gutsy hang when it connected to the Zimbra server. I found that passing --noauthmd5 with the example in User Migration in Zimbras wiki made imapsync not hang. An earlier version of Ubuntu (Edgy with an earlier version of imapsync) didn’t need this.

18 Oct 2007

Microsoft will use equipment located in California and other states

Posted by Jacob Emcken Comments (2)

I have been meaning to blog about this for a while now. When contacting the Hotmail mail servers to send email your mail server will be presented with strange message in my opinion.

First find the servers which receives email for the hotmail.com domain:

dig mx hotmail.com

which will return something like the following:

hotmail.com.            3600    IN      MX      5 mx1.hotmail.com.
hotmail.com.            3600    IN      MX      5 mx2.hotmail.com.
hotmail.com.            3600    IN      MX      5 mx3.hotmail.com.
hotmail.com.            3600    IN      MX      5 mx4.hotmail.com.

Now try contact one of these on port 25 (just like mail servers does):

telnet mx1.hotmail.com 25

Notice the greetings message from the server:

Sending unsolicited commercial or bulk e-mail to Microsoft's computer network is prohibited.
Other restrictions are found at http://privacy.msn.com/Anti-spam/.
Violations will result in use of equipment located in California and other states. 

Bringing it to peoples attention that sending unsolicited commercial or bulk e-mails is prohibited is fair enought even though I doubt many will read it :) But is it really nessesary to threat to use equipment, and why is California emphasised?

18 Oct 2007

Bash prompt pimping

Posted by Jacob Emcken Comments (0)

Today at work over lunch I read an article in Linux Magazine called Pimped Prompt.

It inspired me to try different stuff out. I often missed an indication on when I was doing different stuff in the terminal… this is what I ended up with:

export PS1='\[\e[0;34m\][\@\e[1D]\[33[0m\] \u@\h:\w\$ '

This is how it looks like.

To make it permanent put it in your .bashrc file in your home directory. Remember that this variable is propably already set so you either need to replace the line or instert closer to the bottom of the file.

13 Sep 2007

Mass converting flac to mp3 with Gstreamer from cli

Posted by Jacob Emcken Comments (0)

I’m extracting all my CD’s to flac files but my girlfriend is using iPod and iTunes on Windows which won’t play flac files. So I looked into converting all the music to mp3 so she could use it as well. I wanted a way to do it from the command line and I knew Gstreamer was up for the job:

gst-launch-0.10 filesrc location="music.flac" ! flacdec ! audioconvert ! lame ! id3mux name=tag v2-tag=true v1-tag=true ! filesink location="music.mp3"

The cool thing is that tags is preserved.

Note: Actually first I thought tags wasn’t preserved during the the gstreamer conversion, but that was because I used Totem with the Xine backend which apparently cant show mp3 tags.

Now I only need to write a bash script to run through all the music… lets see when I find the time :D

07 Sep 2007

Lenovo laptops with preinstalled Ubuntu?

Posted by Jacob Emcken Comments (0)

Just found this on the Ubuntu forums:

Lenovo Blogs – Linux Follow Up

I would be very interesting indeed :)

02 Sep 2007

Bazaar (bzr) howto – Creating your own branch

Posted by Jacob Emcken Comments (4)

I have been learning a bit of Mono over the last couple of months and yesterday I decided that I wanted my code in a verison control system. The choice fell on Bazaar for various reasons which is unimportant and uninteresting at this point. Right now I just wanna write down how I did :D

First off you tell Bazaar who you are with:

bzr whoami "Jacob Emcken "

To test it is set correct just type:

bzr whoami
Jacob Emcken 

For the sake of it, lets imagine my project I want to version control is called Starfire. Go to the directory with the project and initialze the directory as a Bazaar branch:

cd Projects/Starfire
bzr init

Within that directory a new directory called .bzr will be created:

ls -la
drwxr-xr-x 5 je je 4096 2007-09-01 23:56 .
drwxr-xr-x 3 je je 4096 2007-09-01 23:37 ..
drwxr-xr-x 6 je je 4096 2007-09-01 23:37 .bzr
drwxr-xr-x 2 je je 4096 2007-09-01 23:37 Glade
-rw-r--r-- 1 je je 5342 2007-09-01 23:37 Starfire.cs
-rw-r-xr-x 1 je je 5342 2007-09-01 23:40 Starfire.exe

Now tell Bazaar which files your branch consist of. In the following example we’ll tell Bazaar to ignore Starfire.exe because we dont need the compiled file within our version control:

bzr ignore Starfire.exe
bzr add .
added Glade
added Starfire.cs
added Glade/gui.glade
ignored 1 file(s).
If you wish to add some of these files, please add them by name.

Ignored files is found in the file .bzrignore, just try run ls -la if you wont take my word for it :P

And finally to actual save the code in the branch repository commit your files:

bzr commit -m "Initial revision"
added .bzrignore
added Glade
added Starfire.cs
added Glade/gui.glade
Committed revision 1. 

By supplying commit with the parameter -m you avoid a text editor popping up asking you for a commit message.

Now you can just hack away and you can check changes with:

bzr diff

Whenever you want to save you changes to the branch, just do a commit again. In the following example I change a line in Starfire.cs:

bzr commit -m "Fixed small typo"
modified Starfire.cs
Committed revision 2. 

Now if you want to make your code available on the another machine ie. a server on the internet you can push you code out there through ssh (and ftp). Place yourself in the root directory of your project. The following example will push the branch out to my server (emcken.dk) where I have a ssh key so I dont need to write a password when logging in:

bzr push sftp://emcken.dk/~/development/Starfire

Now a copy of my branch is available in my home directory on my server (/home/je/development/Starfire).

As a last thing I would like my server to be central for my development. From the root directory of my project I tell Bazaar that my current branch is a checkout of the branch on my server:

bzr bind sftp://emcken.dk/~/development/Starfire

Now whenever I commit changes they will be committed to the server as well so I don’t need to push the copy of the branch out there every time. You can test the settings with:

bzr info

My experience with version control systems are very limited to say the least which was why some of the above wasn’t obvious to me before I made a few tests and read the man pages. But the above was what I needed to get started and I hope that this might help someone else. You can find more inspiration here and here.

13 Aug 2007

Helpdesk from medieval times… users are still stupid

Posted by Jacob Emcken Comments (0)

I was cleaning my (computer) desktop and found this video about a helpdesk from medieval times ( sadly it is in Norwegian :( ). I had saved it on purpose because I though it was so funny. Now I found it on YouTube… deleted :P