From wikiPodLinux

Table of contents

General Questions

What is this?

Currently the project is focused on porting the uClinux (http://www.uclinux.org/) kernel to the iPod. Ideally the kernel will support all the hardware features available on the iPod. The project also includes a GUI replacement dubbed podzilla.

Why would you want to do that?

For a number of reasons, but mainly because we can. Linux on the iPod unlocks infinite expandibility of a hard drive driven portable device.

No, really! What are some of the goals?

We hope to make a fully functional Linux distribution available on the iPod platform that will be able to play a greater variety of formats, have better features, and even be compatible with external hardware like flash card readers.

But the Apple iPod firmware rocks!

Yes, it is quite good. And if it does everything you want it to do, please feel free to keep using it. If it doesn't then perhaps the uClinux kernel is a good place to experiment.

But the iPod is an MP3 player, not a PDA!!

No one said anything about a PDA. This is all about running Linux, not converting the iPod into a PDA. It simply expands the functions of the music player and allows customization.

What if something goes wrong?

Be sure to backup your music before installing iPodLinux! The worst thing that has happened so far is someone lost all of their music, because they didn't back it up before running Apple's restore utility. If anything goes wrong, you can always (no, really) use Apple's handy Firmware Restore Utility (https://www.apple.com/ipod/download/) to reinstall Apple's iPod operating system. For more tips, see troubleshooting.

Linux Questions

What is uClinux?

uClinux (http://www.uclinux.org/) is a special variant of the Linux kernel that does not require a MMU (a memory management unit (http://en.wikipedia.org/wiki/Memory_management_unit)).

But the iPod has an MMU!

Well, it has some MMU type facilities, but at present they are not sufficient to support the Linux kernel.

Why is there no support for __________?

Because it hasn't been written yet. This may be for a number of reasons such as time or insufficient documentation. As stated previously the goal is to support all hardware features on the iPod so hopefully we will get there eventually. This is an open source project, patches are welcome!

How was the port done?

With a lot of hard work :) Unfortunately there is not a lot of technical information available for the hardware platform and so a lot of reverse engineering was required to determine how things work. Much of it was guess-work and much of it still is. Hopefully the hardware vendors will be more open in the future with their technical documentation.

How can you debug the kernel?

Unfortunately there is no simple debug technique. If you open your iPod case it may be possible to use the JTAG interface or hook into one of the serial ports but I've never opened my iPod so you'll have to look elsewhere for assistance there. One of the serial ports for the 1/2G iPod is connected to the headphone jack, at least as an input, it could be possible to use that but I've never tried. Progress has been made on using the 3rd Gen's remote connector as a Serial Port. Most debugging work is done using printk().

Is there an easier way to build or install all this stuff?

There is a Windows Installer (https://sourceforge.net/projects/ipodlinuxinst) and an OS X Installer (http://ipodlinuxinstl.sf.net), but be forewarned as these track the beta podzilla and the beta Kernel. There is also a new more general installer in the works. This new installer supports Windows, OS X & Linux installations.


What applications can it run?

Click here for a more detailed list of Applications.

In theory most applications that run on uClinux can run on the iPod however there are important limitations;

  • The iPod does not have a FPU (floating point unit) so things like mpg123 won't run too nicely. Integer based versions of MP3 players however are available and will run.
  • The frame buffer does not support mmap() so X11 would not run.
  • Since we are running on uClinux the fork() system call is not supported (vfork() however is available, as is clone()).

podzilla is a GPL'd GUI that runs on top of the uClinux kernel.

Is there an MP3 player?

Currently we use Intel's highly optimised library for the ARM processor that includes MP3 decoding support. The MP3 player in podzilla that uses this library runs quite well, but it isn't perfect - some songs will skip, VBR isn't handled too well and high bitrates aren't always decoded fast enough. With current developments on 4G iPods, realtime playback is possible and these problems generally don't apply.

The MAD (http://www.mars.org/home/rob/proj/mpeg/) player also runs, however it is not quite real-time.

The Helix MP3 Decoder (http://datatype.helixcommunity.org/mp3dec) has been tested and runs almost as fast as the Intel library.

Is there an Ogg player?

The Tremor (http://www.xiph.org/ogg/vorbis/) player is running at about 80% real-time. With current developments on 4G iPods, realtime playback is possible.

What about FLAC, AAC, Mod, and wave files?

Right now some development is happening on MPD which supports these formats as well MP3 and OGG Vorbis.

An AAC player is in the current beta of podzilla. See the blog entry (http://www.ipodlinux.org/Blog/index.php?p=15) for details.

Can you imagine a Beowulf cluster...

There was an April Fool's joke about a bunch of Buddhists ordering a heap of iPods (http://www.ipoding.com/modules.php?op=modload&name=News&file=article&sid=848&mode=thread&order=0). Too bad... if it were true perhaps they could have clustered them to solve the ancient mysteries...

Translation: yes, but it's just silly.


Can I still run the Apple firmware?

The bootloader allows you to choose to load either the standard firmware or Linux after a reset.

Can i use the latest Apple firmware?

You can use whatever firmware version you want to. iPodLinux is independent of the firmware.

Will I lose my music? Playlists?

In the majority of cases, no. Your current preferences, music and playlists will be there. The clock does reset itself on 1G and 2G iPods when a hard reset is performed, though.

However, on Nanos and 5Gs, the official installer shrinks the music partition to make room for iPodLinux, and in doing so, erases it. This is required due to the much greater usage of firmware partition space on these iPods, specifically with regard to the "hibernation" done by the Apple software. As long as all your music is managed by iTunes, this will be nothing more than an inconvenience; everything should re-sync appropriately, but it will take a bit of time.

Can I access my music and playlists from Linux?

Kinda. At this point the software support is still very immature. The beta version of podzilla includes some iTunesDB support. Currently, podzilla supports shuffle and repeat for song playing.

Is my iPod supported?

Currently the 1st, 2nd and 3rd generation iPods are supported in release version. The iPod mini (1G and 2G), 4th generation iPods (including U2 version), Photo iPods, iPods with video (5G and 5.5G) and the Nano (1G) are in development. Details on which devices are supported can be seen on the project status page.

Does this work with Mac and Win iPods?

Yes, both Mac and Win iPods work.

Technical Questions

What's inside my iPod?

This varies on which generation iPod you have. All but the shuffle have a PortalPlayer (http://portalplayer.com) SoC (http://www.wikipedia.org/wiki/SoC) incorporating two ARM7TDMI (http://www.wikipedia.org/wiki/ARM7TDMI) CPU cores. They all use Wolfson (http://www.wolfsonmicro.com) DACs (http://www.wikipedia.org/wiki/Digital-to-analog_converter). The hard drives are pretty much normal IDE and usually come from either Hitachi or Toshiba.

How much RAM is inside the iPod?

32MB DRAM + 96 or 128kB SRAM (aka IRAM, fast RAM). The 60GB/80GB iPod video has 64MB DRAM.

How fast is the iPod?

Speed depends on more than the clock speed. The iPod Linux kernel clocks the CPU and COP (they cannot be clocked at different speeds) at 75Mhz on all generations. This is probably the highest we can go without a lot of crashing/overheating. However, memory access is pretty slow to the DRAM, so memory intensive operatives can be painful. Using the Linux BogoMIPS quasi-benchmark, the PP5002 gets around 16 BogoMIPS at 75Mhz, the PP5020 gets around 32 BogoMIPS at the same clock speed. The PP5022 is a little faster at the same clock speed.

Why is the PP5020 faster than the PP5002?

From Gizmodo (http://www.gizmodo.com/archives/ogg-vorbis-on-ipod-a-rebuttal-015738.php): The 5002 has a "broken" cache (1 wait state per access for program or data, meaning you effectively have half the effective clock rate when running code from external memory). This means that running code that doesn't fit in the internal 96kbyte SRAM of the player is very inefficient, both in terms of CPU cycles and power.

Legal Issues

Is this legal?

According to Apple representatives, installing iPodLinux is completely legal. It does not involve tampering with any hardware, so Apple's replace/repair warranties aren't even violated. See iPodLinux:Copyrights for our policy on software design and other legal information. Also compare Rockbox's opinion (http://www.rockbox.org/twiki/bin/view/Main/GeneralFAQ#Is_this_legal_I_mean_I_d_just_ha) and iPodWizard's disclaimer (http://www.ipodwizard.net/wiki/index.php/Disclaimer).

How is the software licensed?

The software I have written is licensed under the GNU General Public License. There is of course much software required that I have not written. This software is mostly GNU licensed however the details may vary so please consult the original documentation for the details.

Can you send me firmware x.y?

No. That software is copyright Apple. You can download their iPod updater package from apple.com (https://www.apple.com/ipod/download/).

Retrieved from "http://ipodlinux.org/FAQ"