Ripping CDs to ogg

I perform most of my computing tasks with the command line, and that includes converting my CDs to ogg files (an ogg file is like an mp3 file, only better). I hadn’t ripped anything for some time, so I decided to compare a few command-line rippers. I had a quick look through my Debian package list and selected abcde and crip as they seemed to match my requirements. Both programs have simple interfaces: simple type abcde or crip on the command line and they do everything for you. At first there didn’t seem to be much difference. crip claimed to have some advantages over abcde, and one of the trivial ones I discovered was that it normalised the ogg audio automatically; in abcde I had to use the -a replaygain option for that feature. So crip crept into the lead.

But the lead didn’t last long. crip stumbled seriously on the third CD. I live in Japan now, where I buy CDs by Japanese artists who write songs in Japanese. crip couldn’t cope with that, and I couldn’t cope with playlists where all the songs were called "??????". So abcde won. For me its acronym is true: a better CD encoder.

Categorized as Uncategorized Tagged

iMon LCD in 3R Systems case

A while ago I bought a PC case made by 3R Systems. It came with a built-in iMon LCD that had been custom-made by Soundgraph for 3R Systems. The case is good, but I discovered that this LCD panel has no Free Software drivers, and Soundgraph do not support Linux or any Free OS. In fact, Soundgraph refuse to even try to understand simple questions if you mention Linux anywhere in the message. That sort of behaviour used to be common, but the growing popularity of Free Software / Open Source, and the Linux kernel in particular, has made many companies change their attitude: some release technical details of their products so we can write our own software; some write and release their own Free Software (or Open Source); and some others release non-Free software for Free OSes. But Soundgraph does nothing except ignore it.

So, I started to reverse engineer the device. I’m not the only one doing this, and I got some hints from ralph.y, Codeka, and someone called “tsuppiduppi” on the iMon user forum. To make it easy to experiment I wrote a quick’n’dirty C program using libusb to allow me to send commands to the device. Now I can do:

  • imon-poke 0x02 0x1c 0x02 to initialise the LCD screen
  • imon-poke 0x0d 0x0f 0x48 0x45 0x4c 0x4c 0x4f 0x00 0x20 0x57 0x4f 0x52 0x4c 0x44 0x20 to display “HELLO WORLD”

Below is a brief summary (well, random notes) of what I have found so far. The first two bytes select the main command. Subsequent bytes may be used as parameters. The 8th byte should always be zero, and the 16h should always be 2.

          0x02, 0x00: eq graph: 1 byte 1=off 2=on
          0x02, 0x01: eq graph bars (no pattern yet)
          0x09, 0x01: eq graph bars: 16 nybbles, value 0 to 6
          0x0d, 0x01: eq graph bars, seems to match previous 0x09, 0x01
          0x02, 0x09: fan icon bits lsb: F1 F2 F3 LMH
          0x02, 0x0a: fan guage 2 bits lsb: F1 F2 F3
          0x02, 0x0b: 1 byte temp degree c icons
          0x02, 0x0c: 1 byte temp value
          0x02, 0x0d: cpu icons 1 byte on=2 off=1 (or not 2)
          0x02, 0x0e: cpu guage 1 byte value
          0x02, 0x1b: the colon 1=off 2=on
          0x02, 0x1c: whole display: 0=off 1=auto clock 2=on
          0x02, 0x1d: strange xx/yy zzzz; xx = l nibble;
          0x02, 0x26: fan speed
          0x0d, 0x0f: ASCII text

A little Free Speech

I went to the GPLv3 Conference in Tokyo today. Well, part of it. Today was only my second day in my new job, and I couldn’t really spend the whole day at the conference. But I really wanted to be at the conference in the afternoon since they asked me to participate in the panel for ” International coordination of Free Software Movement”.

I expected the panel to be a question and answer setup, where the panel members responded to questions from the audience. But that isn’t what happened. Instead the panel chairman talked for 30 minutes, and then handed the mike over to me!

That wasn’t what I was expecting, but it wasn’t a problem either. I spent fifteen minutes saying my bit, then passed the mike on to the next guy.

The following panelists had interesting things to say, and I learnt a few things too. I didn’t know that pharmaceutical companies spend more on marketing than they do on research, although I wasn’t surprised to hear that. I was amused to hear that all maize (corn) was effectively genetically engineered millennia ago in South America.

But the quote that stood out the most was not a new fact, but it was a nice opinion: “education is not just about skills; it is about building values and building a citizen”. Somebody needs to start repeating that back in the UK.

Smartcard reader on Debian GNU/Linux

In April 2005 I joined the Free Software Foundation Europe and received my membership smartcard. The card looked impressive but wasn’t very interesting without a smartcard reader. So (at last) I have bought a reader (SCM Microsystems SCR335) so I can use the card with GnuPG.

To get the reader working I started to follow the mail GnuPG smartcard howto, but I soon noticed that the udev rules provided in that document were ugly: the rules called a script that changed group ownership and permissions on the device file; udev can do that without a script. So I made up my own rule that looked like this:

BUS=="usb", SYSFS{product}=="SCR33x USB Smart Card Reader", GROUP="staff"
That changes the group ownership of the device to “staff”, which is one of the groups I’m in. After stopping and starting udev I was able to use gpg to check the card status.

Non-free software is evil, but that’s good.

Following a suggestion from Richard Stallman, today I met Niibe Yutaka (新部 裕) from The Free Software Initiative of Japan at his office in Akihabara.

During our conversations Niibe-san mentioned something that I had almost forgotten: Debian has a non-free section in their distribution.  A lot of people don’t like that, or they are at least surprised to see what looks like a compromise from such devoted Free Software advocates.

But Niibe-san had a different perspective inspired by his Buddist faith: he can accept the existance of evil, and it can be used to highlight goodness. Evil (or non-free software) exists to remind us that more good needs to be done.  If we didn’t have a non-free section we would not notice the programs that need to be liberated.

Having a Kwiki

I installed CGI::Kwiki today. Kwiki rocks!

There are lots of wiki flavours around, all with different features. I wanted one that was simple to install and easy to tinker with. Kwiki was trivial to install, and it’s designed to be easily reconfigured and extended. Also, it happened to use my preferred set of wiki formatting rules.

I liked it so much that I wrote a MovableType Kwiki formatting plugin to use it. If you can read this, it works!

Ironically, wiki words in MT::Kwiki version 0.01 don’t link to anything. The next version will allow you to configure your target wiki.

Categorized as Uncategorized Tagged