IPod firmware

From Winamp iPod plugin ml_iPod
Jump to: navigation, search

The iPod firmware is the piece of software that controls your iPod. It is written by Apple and updated with the iPod updater. You can download the newest firmware from the Apple website - but newer is not always better! Starting with iTunes 7, Apple decided to integrate the iPod updater into iTunes. So, for current iPod firmware, the only way to update is via iTunes.

The firmware is what Apple puts into the iPod, no way to change it. It's one of their top secrets.


Apple's view of the iPod world

Apple's design is this: You have two pieces of software, one on the iPod and one on the PC. The iPod software is called firmware, because it's not so "soft" - you can't change it easily. The PC software is called iTunes. You need both to keep your iPod going.

While the iPod is connected to the PC, the firmware is (almost) asleep. iTunes manages to transfer songs to the iPod. In the end it writes some very special files, these are called the database. They contain hints for the firmware, where it can find certain songs on the iPod HD, what the name or artist of a track is, how often it was played, the artwork, notes etc. Then you "eject" your iPod and the firmware comes to live. It reads these special database files, and only through this interface it knows what is actually loaded on the iPod.

The firmware is responsible for reading the database (which is written by iTunes or ml_ipod), displaying the menus, playing songs or videos, etc. Limitations imposed by the firmware are only changeable by Apple. One such limitation is the different handling of smart playlists in Winamp and inside the iPod.

iTunes never really talks to the firmware, it only writes database files which are later read by the firmware. And the same is true the other way round: The firmware writes into other database files the timestamps for played tracks or the new rating, if you change the rating for a song. After connecting, iTunes reads these files and updates its internal state (playcount etc.) for the songs.

Whenever Apple decides to support a new feature (say, gapless playback), all three parts of this game have to be changed:

  • iTunes is updated to support this feature, like calculating gapless playback data
  • the database files get a new structure, because new data fields are needed
  • the iPod firmware must be updated, to enable it to understand the new database files

This is Apple's view of the world.

Now, there are alternatives

Winamp with ml_ipod is one of them. It replaces the iTunes part only, the other two stay the same. That's the reason why we must update ml_ipod all the time if new iPods with new firmware and new database structure come to market

The important thing is that ml_ipod writes the database in a way that the iPod firmware thinks it was written by iTunes. A lot of reverse engineering is necessary to make this work, and with every new iTunes version the work begins again.

So all ml_ipod is able to do is filling out all the fields in the database correctly. Features not supported by the firmware are beyond the scope of what ml_ipod can do. That's the same with iTunes: If you download a new iTunes version with cool new features, your iPod will not support them unless you install Apple's newest firmware.

Changing the firmware is almost impossible. You need the source code of it to do changes, and of course Apple does not publish this. (Would be great if Apple decided one day to develeop their firmware as open source)

You're with me so far?

iPod modding

Now, there ARE possibilities left. Some hackers spend half of their life to find out which bit in the iPod firmware has to be changed to get a different screen background color, or a different font in the iPod display. That is called "modding". There is a whole iPod modders community active, but I don't know a lot about that. I'm quite satisfied with Apple's design of a user interface. A good starting place could be http://www.ipodmods.com/ I strongly doubt that something as complex as support for a second genre is possible that way.

Alternative firmware

Then, there is the option to run a completely different firmware on your iPod. You simply take the iPod as a hardware basis, but don't run Apple firmware on it. I know of two active projects: iPodLinux which is dedicated to run a linux system on the iPod, and Rockbox. Both are open source. iPodLinux is a project to port Linux (actually uClinux, a derivative of the standard Linux kernel) and associated userspace utilities to the iPod. Rockbox is a project to create cross-platform music player firmware from scratch, with the goal of being the best music player possible. Rockbox is not based on Linux or any other operating system, it is written completely from scratch. While iPodLinux also includes music player functionality (and Rockbox contains plugin platform functionality), the goals of the two projects are different.

I don't know any of the features of these two alternatives. But basically it is possible to add new features here, because it is open source. I think iPodLinux uses the same database files as the Apple firmware, so it can be used with iTunes or ml_ipod. Rockbox does not, it is based on a file browser.

ml_iPod's place in this

ml_ipod's goal is to provide an interface to the original Apple firmware, by reading and writing database files that are as compatible as possible with iTunes. So, for ml_ipod, the firmware is the absolute limit of what is feasable and what is not. If Apple's firmware doesn't support it, ml_ipod can do nothing about it.

Personal tools
Translations of the Wiki