PodEmu
Android application that emulates iPod to use together with old 30-pins iPod serial interface.
Install / Use
/learn @xtensa/PodEmuREADME
About
PodEmu is Android application that allows you to connect your Android device to iPod docking station or your car audio system. PodEmu supports both AiR (Advanced) and Simple modes so you can control your Android music app directly from docking station or from your cars steering wheel. PodEmu uses serial protocol to communicate with iPod docking station so it will work only with "old" 30-pin iPod connectors. Lightning interface is not supported.
XDA Developers discussion for this app is here
PodEmu in action:
Features
- No root required
- Display track/time information for currently playing song on your car audio system or docking station display.
- Control your favourite Android music app (eg. Spotify, YouTube, Amazon Prime Music, Apple Music) directly from car's steering wheel or docking station remote control
- Download docking station color image to android device. Car audios usually have this feature.
- Support for Bluetooth serial devices. You can assemble the dongle and connect your android completely wirelesly.
- Entirely Open Source :) You can modify and redistribute as long as you comply with GPLv3.
Screenshots
<table> <tr> <td width=300>PodEmu with cable not connected</td> <td width=300>PodEmu with bluetooth connected and connection with the car established</td> <td width=300>PodEmu with Apple Music</td> </tr> <tr> <td align="center"><img width="250" src="screenshots/screen_01.png?raw=true" /></td> <td align="center"><img width="250" src="screenshots/screen_02.png?raw=true" /></td> <td align="center"><img width="250" src="screenshots/screen_03.png?raw=true" /></td> <td></td> </tr> <tr> <td>PodEmu with Apple Music</td> <td>PodEmu with Amazon Music</td> <td>PodEmu Settings (screen 1)</td> </tr> <tr> <td align="center"><img width="250" src="screenshots/screen_04.png?raw=true" /></td> <td align="center"><img width="250" src="screenshots/screen_05.png?raw=true" /></td> <td align="center"><img width="250" src="screenshots/screen_06.png?raw=true" /></td> </tr> <tr> <td>PodEmu Settings (screen 2)</td> <td>PodEmu Settings (screen 3)</td> <td>PodEmu Settings (screen 4)</td> </tr> <tr> <td align="center"><img width="250" src="screenshots/screen_07.png?raw=true" /></td> <td align="center"><img width="250" src="screenshots/screen_08.png?raw=true" /></td> <td align="center"><img width="250" src="screenshots/screen_09.png?raw=true" /></td> </tr> </table>Requirements
- Android device with USB host support (USB host support not required if you are using FT311D or FT312D dongles, or Bluetooth)
- DIY cable or DIY bluetooth dongle. Unfortunately there is no ready-to-use cables available on the market so you need some basic soldering skills to assemble your own cable. Read further for details.
Supported Music Application List
PodEmu will support any music application out of the box if this application properly declares notification in notification/status bar. The table below summarizes the behavior of the applications with which PodMode was tested.
Additionally, please remember, that in order support track/album/artist/playlist/genre navigation fully PodEmu need to have this information provided. Unfortunately there is no way to retreive this information through the notification bar. In the best case PodEmu is only able to gather information about currently played track, total playlist size and current track position. Therefore PodEmu is trying to mimic the rest of the information for the docking station to be able to operate. Please also note, that each docking station behaves differently and therefore final behaviour will be also different. Feel free to provide feedback with your experience on XDA thread or raise an issue through GitHub issue tracker.
<table> <tr> <td><b>Application</td> <td><b>Support for basic control (play/pause, prev, next)</b></td> <td><b>Provides metadata information</b></td> <td><b>Additional information</b></td> </tr> <tr> <td>Google Play Music</td> <td>yes</td> <td>yes</td> <td>fully works</td> </tr> <tr> <td>Spotify</td> <td>yes</td> <td>yes</td> <td>Metadata does not contain ListSize and ListPosition information. Default list is generated with ListSize=11. Additionally, Spotify delays notifications after you scroll the song forward or backward, so playback position maynot be updated in your car instantly. </td> </tr> <tr> <td>TIDAL</td> <td>yes</td> <td>yes</td> <td>ListSize and ListPosition not provided, so generic playlist with size 11 is generated. Scrolling seems to be updated immediately.</td> </tr> <tr> <td>PowerAmp</td> <td>yes</td> <td>yes</td> <td>All notes are the same as for Spotify</td> </tr> <tr> <td>Apple Music</td> <td>yes</td> <td>yes</td> <td>Stable with PodEmu, instant status updates</td> </tr> <tr> <td>Amazon Prime Music</td> <td>yes</td> <td>yes</td> <td>Artworks are not downloaded. The rest works properly.</td> </tr> <tr> <td>YouTube</td> <td>yes</td> <td>yes</td> <td>YouTube does not notify when the track is paused.</td> </tr> </table>If you don't see your favourite app in the table above, don't worry, most probably it will still work with PodEmu.
ListSize and ListPosition information is very important to be able to see the total amount of songs in the playlist from the docking station and to be able to select random song from list and jump to it. Whenever this information is missing PodEmu will not know how many songs are in the the current playlist and will not support "jump to" command. In such case you will see one album, that contains 11 songs. Also remember, that even if ListSize information is provided, PodEmu don't know track names "a priori". Therefore, first time you browse them from docking station, you will see titles like "Track XYZ" for all of them. However, once the song is played, it's title is remembered at given position. This list is flushed when total count of song is changed or application is restarted.
How it works
To work properly PodEmu requires to be connected to your car using two separate channels:
- audio channel (obvious)
- data channel (for controll and metadata information)
Audio is transmitted through "calssic" analog lines. For metadata serial interface is used. PodEmu will not work with usb/lightning cable, because with such cables all information (including audio) is transmitted digitally and PodEmu is not able to interpret it (plus due to Android architecture it might not be possible to properly recognize the external device and talk to it).
Both channels mentioned above could be connected directly using wires, or bluetooth modules. Below you can find multiple options available to connect your Android device with iPod 30-pins interface.
Audio channel can be connected directly, by wires, or with use of BT module that supports A2DP profile, for example XS3868, RN52, BK8000L.
Data channel could be connected by wires. In this case you will need any USB-to-serial interface like FT232R, FT231X, FT311D, FT312D, PL2303, CP2102, CP2105, CP2108 or CP2110. Alternatively, you can also connect it with any BT module that supports SPP profile (except BLE devices which are too slow). For BT you can use modules like HC05, HC06, RN52.
Obviously you will also need to power all the modules up. There are multiple ways to do it. Below is an example of wiring diagram for XS3868 and HC05 modules that are powered up by LM2596, but you can use any power suply that can provide appropreate voltage and current.
Note for all diagrams below: R1/D1 elements are only required for those cars/docking stations where car or docking station expects the pin 18 to be pulled up to 3.3V by iPod. Otherwise it will not recognize iPod connection. R1 is required to limit the current and D1 is added to protect the dongle (could be ommitted to be honest). If you are not sure if you car needs it, it is safe to start without R1/D1 and if car does not recognize connection, then just add it.
Connection diagram: Wired
This is the simplest and the most reliable version of connection.
<img width="500" src="schematics/PodEmu%20Wired.png?raw=true" />Supported serial interfaces:
- FTDI: FT232R, FT231X, FT311D, FT312D
- Prolific: PL2303
- SiLabs: CP2102, CP2105, CP2108, CP2110
PodEmu was tested with FT312D, PL2303, FT232R, CP2102. Other chips should also work (as claimed by driver developer), but were never tested with PodEmu.
Connection diagram: Bluetooth with HC-05 and XS3868
Bluetooth setup was tested with HC-05 as serial interface device and XS3868 to stream audio. Connection diagram that was used is the following:
<img width="500" src="schematics/HC-05%20and%20XS3868.png?raw=true" />Before start using HC-05 it need to be configured properly. To do this you need to issue the following commands:
AT+NAME=PodEmuSPP - to change module name. Instead of PodEmuSPP you can use whatever you like.
AT+UART=57600,1,0 - to change baud rate. This command is mandatory for PodEmu to work correctly.
Instead of using HC-05 and XS3868 you can use any other BT modules that provide SPP and A2DP profiles. SPP is a profile for serial communication. A2DP is a BT profile used for audio connection.
Important notes:
- do not short audio ground (pin 2) with power ground (pins 15 and 16). If you do it, significant noise will appear.
- voltage is set to 3,55V and not to 3,3V. 3.3V is normal operating voltage for HC-05, 3.6V is maximum for HC-05. However 3.6V should be minimum voltage for XS3868. When voltage drops below 3.5V, XS3868 will produce audible warnings. To avoid it, but to stay within HC-05 voltage limits it is recommended to set voltage between 3.5V and 3.6V. There are known cases when slight exceeding 3.6V burned HC-05.
- before using HC-05 it need to be configured. You need to change Baud Rate to 57600 (or whateve
Related Skills
node-connect
352.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
