Karma

My poor MP3 player is destined to be relegated to the trash heap with all of the other Not-An-iPods. For good reason, really, since I have broken it in several different ways since I’ve had it: first the hard drive failed, then after replacing the unit, I dropped the new one and the scroll wheel broke off, and the battery leads came off the mainboard. I’ve soldered the battery back on and glued the scroll wheel back, so it continues to hobble along. Other than build quality, it is a fine MP3 player: it does OGG and FLAC, gapless, has a decent UI, fits nicely in one’s pocket.

What is most annoying about this device is that you have to use Rio’s software to transfer stuff to it over USB, and this only works in Windows. Otherwise, you are stuck using a Java app over ethernet in Linux which is sloooooooow. It would be nice if you could just use it like any old hard drive. Imagine being able to use a hard drive like a hard drive!

So, armed with the recent purchase of the book Linux Device Drivers, I have set out to reverse engineer this bad boy. It isn’t a straight up mass storage device, but if you poke around on it you can make it enter mass storage mode (also, you can make it reboot). From there, it should be a “simple” matter of using dd and figuring out the file system to make this thing a bit more user-friendly.

It took me a couple weeks of looking at hex dumps, but I’ve got phase one completed. Life is good.

Aug 17 08:09:10 dust kernel: usb 1-2: new high speed USB device using address 2
Aug 17 08:09:10 dust kernel: usb 1-2: Product: Rio Karma
Aug 17 08:09:10 dust kernel: usb 1-2: Manufacturer: Rio
Aug 17 08:09:10 dust kernel: usb 1-2: SerialNumber: 00000000000000000
Aug 17 08:09:15 dust kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Aug 17 08:09:15 dust kernel: Vendor: Rio Model: Rio Karma Rev: 0101
Aug 17 08:09:15 dust kernel: Type: Direct-Access ANSI SCSI revision: 02
Aug 17 08:09:15 dust kernel: SCSI device sda: 39070080 512-byte hdwr sectors (20004 MB)

2 Replies to “Karma”

  1. Yeah I searched it – it looks like people have only unpacked the “Pearl” protocol which is the empeg + rio + whatever wire format for ethernet transfers. USB-2.0 is totally different. I found only veiled references to people playing with that.

Comments are closed.