Recreate the Classic iPod with Modern Features by Using a Raspberry Pi Zero Wireless
After replacing the internals of an original 4th gen iPod with a Raspberry Pi Zero W, it now supports modern features and a bigger battery.
The idea
The original iPod was what many consider to be the product that launched Apple into the realm of pocketable consumer technology and acted as a precursor to the now ubiquitous iPhone lineup. In recent times, the nearly two decades-old technology within the iPod is very outdated, but rather than throwing his old one out, one user who goes by production on Hackaday.io decided to upgrade it with some new internals while still being able to control everything with the original buttons and capacitive front wheel.
Replacing the internal circuitry
The first step of this project involved figuring out how the existing PCBs within the iPod worked. Luckily, there has already been a lot of work done to decode the proprietary protocol that is used. The click wheel contains a tiny onboard IC that reads the physical presses and changes in capacitance from the wheel and stored it internally. To communicate with the host device, it sends data over a single serial line while clocking it with a second one, similar to how I2C works. Each 32-bit packet contains information regarding about the current position of the scroll and if any buttons have been pressed down. By combining this knowledge with the pigpio API, a driver was created that allows for communication with the Click Wheel.
A 2" SPI LCD from Waveshare was also included to display the UI that shows the current song being played and any other relevant information. Charging was accomplished by taking the GND and 5V pins from the iPod's lower 30-pin connector and wiring them to a USB charge controller that is also attached to a 1700mAh battery pack and the Raspberry Pi Zero W.
Initial trials and difficulties
At first, production attempted to load OSMC which is a Kodi-based distribution that is optimized for media consumption. Unfortunately, this failed due to the OS not working properly with the display and/or Click Wheel.
Moving to a different OS
In order to get around this, the second attempt involved cloning the Rockbox UI Simulator onto the Pi and compiling it with the BCM2835 SoC as the target. This provides a handy API for adding the LCD and physical inputs to both control and view the UI.
However, when trying to listen to music with Bluetooth earbuds, the interface began to lag. As a final attempt, production went with the NCurses Music Player Client (Plus Plus), or ncmpcpp for short. This stripped-down interface still provides a rich feature-set for browsing and playing music while also being easier to run on more limited devices. Best of all, it even supports playing high-quality FLAC audio files.
Using this refreshed device
Even though the ipodrpi project is still a work-in-progress, it works well and is able to do more than the original iPod while also having better battery life. To read more about the project, you can visit its writeup here on Hackaday.io or view its associated scripts/code here on GitHub.