Skip to content

A work in progress emulator for the iPod Nano 3rd Generation

Notifications You must be signed in to change notification settings

lemonjesus/iPod-n3g-emulator

Repository files navigation

iPod Nano 3rd Generation Emulator

This is a work in progress emulator for the iPod Nano 3rd Generation. It is written in C using the Unicorn Engine for execution.

Building

Install Capstone and the Unicorn Engine, and then run make.

This does not include the actual code to run in the emulator. You will need to provide your own firmware image. This consists of:

  • A bootrom from the S5L8702
  • An EFI image with the IM3 header intact (theoretically this can be skipped with one of the patches I have in place)
  • A decrypted EFI image (at 0x8800 on NOR)

Progress

The iPod currently makes it through the bootrom (skipping verification steps, of course) and into the EFI image. I don't think it successfully loads any modules (decompressing them takes forever). I think my NOR is missing the sysconfig partition which is why it's getting stuck.

Currently Working

  • Executing ARM and THUMB code (thanks Unicorn!)
  • Logging of ARM and THUMB instructions at TRACE level
  • Flexible Peripheral and Paravirtualization Interface
  • Enough of the SPI peripheral to make it through the bootloader
  • Enough of the NOR Flash to make it through the bootloader
  • The barest of definitions of other peripherals (in most cases, just acknowledging that they exist)
  • SHA1 peripheral might work
  • Some paravirtualization of NOR Flash (speeds up certain big reads) and slow (for some reason) memory routines like memzero

Not Working (yet)

  • The other peripherals (I2C and Timers are about to become important)
  • Speed - (it takes so long to decompress the EFI drivers that it's not even funny)
  • Getting past the DXEMain module (which is the first EFI driver)
  • Everything else.

License

GPLv3

About

A work in progress emulator for the iPod Nano 3rd Generation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published