Sinds enkele weken ben ik in het bezit van een iPod Nano. Prachtig ding. Ik ging onlangs op zoek naar wat 'creatieve' toepassingen voor dat ding en stuitte op (onvolledige) informatie over het Apple Accessory Protocol, de methode die Apple gebruikt om al die dure remotes en carkits met de iPod samen te laten werken. Ook vond ik een leverancier voor de Dock connector, en die heb ik nu een paar dagen in huis.
Met wat creatief soldeerwerk, een MAX232 of iets dergelijks, kun je je iPod volledig besturen vanaf de PC! Of, zoals ik later van plan ben, vanaf een microcontroller (dan kun je zonder Max232 toe, maar lees je daar eerst over in!)
Ik ben nu enkele dagen bezig geweest met de dock connector van de iPod (vanaf 3g) en heb, met hulp van een paar anderen op ipodlinux.org, het gehele basis protocol (mode 2) uitgevogeld! In deze modus kun je de iPod bijna helemaal bedienen met wat eenvoudige commando's!
Voor mezelf heb ik daarvoor een tooltje geschreven:
Hoe het werkt
Apple heeft in de iPods een seriële poort gebouwd, beschikbaar via de dock connector. Werkt met de snelheid 19200bps, 8n1. Het ding werkt wel op TTL 3.3v niveau dus je zult er een Max232 aan moeten hangen om het aan je pc te kunnen aansluiten.
Een commando voor de iPod bestaat altijd uit een reeks van karakters. Het begint met 0xFF en 0x55 om de iPod 'wakker te schudden'. Daarna volgt de lengte (van de modus, het commando en de parameter). Hierna volgt de modus. Daarna de opdracht, eventueel de parameter en daarna de checksum.
Stel ik heb het commando 0x00 0x01 (play). Dit is een 'mode 2' command, en heeft geen parameters. De lengte van het commando is dan '0x03'. Het gehele bericht wordt dan:
0xFF 0x55 0x03 0x02 0x00 0x01 0xFA
De checksum (0xFA) wordt berekend door 0x100 - ( (lengte+modus+commando+parameter bytes) & 0xFF)
Na dit hele feest moet er nog een regel gestuurd worden, het 'button released' commando. Zonder dit commando doet ie niks!. Het commando is een mode 2 command, met de code '0x00 0x00'. De gehele opdracht wordt dan
0xFF 0x55 0x03 0x02 0x00 0x00 0xFB
Een overzicht van alle mode 2 commando's, helemaal compleet
Het enige waar nog wat twijfel over is, is 'Power On' en 'Ipod On', die lijken qua reactie op elkaar maar wat nou het verschil is? Een aantal functies zullen niet in alle standen werken, zoals de Album en Chapter functies.
Mijn plannen voor de nabije toekomst zijn vooral het Mode 4 (AiR, Advanced iPod Remote) protocol uitvogelen en een leuke interface met mijn wekker maken. iPod jukebox wekker, klinkt goed toch?
Resources om zelf aan de gang te gaan
Apple Accessory Protocol
Dock Connector (erg leuk voor alle mogelijkheden!)
IPod to T&A remotecontrol adapter (bevat enkele tips over het protocol en microcontroller interfacing)
Met wat creatief soldeerwerk, een MAX232 of iets dergelijks, kun je je iPod volledig besturen vanaf de PC! Of, zoals ik later van plan ben, vanaf een microcontroller (dan kun je zonder Max232 toe, maar lees je daar eerst over in!)
Ik ben nu enkele dagen bezig geweest met de dock connector van de iPod (vanaf 3g) en heb, met hulp van een paar anderen op ipodlinux.org, het gehele basis protocol (mode 2) uitgevogeld! In deze modus kun je de iPod bijna helemaal bedienen met wat eenvoudige commando's!
Voor mezelf heb ik daarvoor een tooltje geschreven:
Hoe het werkt
Apple heeft in de iPods een seriële poort gebouwd, beschikbaar via de dock connector. Werkt met de snelheid 19200bps, 8n1. Het ding werkt wel op TTL 3.3v niveau dus je zult er een Max232 aan moeten hangen om het aan je pc te kunnen aansluiten.
Een commando voor de iPod bestaat altijd uit een reeks van karakters. Het begint met 0xFF en 0x55 om de iPod 'wakker te schudden'. Daarna volgt de lengte (van de modus, het commando en de parameter). Hierna volgt de modus. Daarna de opdracht, eventueel de parameter en daarna de checksum.
Stel ik heb het commando 0x00 0x01 (play). Dit is een 'mode 2' command, en heeft geen parameters. De lengte van het commando is dan '0x03'. Het gehele bericht wordt dan:
0xFF 0x55 0x03 0x02 0x00 0x01 0xFA
De checksum (0xFA) wordt berekend door 0x100 - ( (lengte+modus+commando+parameter bytes) & 0xFF)
Na dit hele feest moet er nog een regel gestuurd worden, het 'button released' commando. Zonder dit commando doet ie niks!. Het commando is een mode 2 command, met de code '0x00 0x00'. De gehele opdracht wordt dan
0xFF 0x55 0x03 0x02 0x00 0x00 0xFB
Een overzicht van alle mode 2 commando's, helemaal compleet
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| Buttonrelease - 0xFF 0x55 0x03 0x02 0x00 0x00 0xFB Play/Pause - 0xFF 0x55 0x03 0x02 0x00 0x01 0xFA Vol+ - 0xFF 0x55 0x03 0x02 0x00 0x02 0xF9 Vol- - 0xFF 0x55 0x03 0x02 0x00 0x04 0xF7 Skip>> - 0xFF 0x55 0x03 0x02 0x00 0x08 0xF3 Skip<< - 0xFF 0x55 0x03 0x02 0x00 0x10 0xEB Next Album - 0xFF 0x55 0x03 0x02 0x00 0x20 0xDB Prev Album - 0xFF 0x55 0x03 0x02 0x00 0x40 0xBB Stop - 0xFF 0x55 0x03 0x02 0x00 0x80 0x7B Play - 0xFF 0x55 0x04 0x02 0x00 0x00 0x01 0xF9 Pause - 0xFF 0x55 0x04 0x02 0x00 0x00 0x02 0xF8 Mute - 0xFF 0x55 0x04 0x02 0x00 0x00 0x04 0xF6 Next Chapter - 0xFF 0x55 0x04 0x02 0x00 0x00 0x08 0xF2 Prev Chapter - 0xFF 0x55 0x04 0x02 0x00 0x00 0x10 0xEA Nex Playlist - 0xFF 0x55 0x04 0x02 0x00 0x00 0x20 0xDA Prev Playlist - 0xFF 0x55 0x04 0x02 0x00 0x00 0x40 0xBA Shuffle - 0xFF 0x55 0x04 0x02 0x00 0x00 0x80 0x7A Repeat - 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x01 0xF8 Power On - 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x02 0xF7 Ipod Off - 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x04 0xF5 Ipod On - 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x08 0xF1 Begin FastForward - 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x10 0xE9 Begin Rewind - 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x20 0xD9 Menu Button - 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x40 0xB9 OK button - 0xFF 0x55 0x05 0x02 0x00 0x00 0x00 0x80 0x79 Scroll Up - 0xFF 0x55 0x06 0x02 0x00 0x00 0x00 0x00 0x01 0xF7 Scroll Down - 0xFF 0x55 0x06 0x02 0x00 0x00 0x00 0x00 0x02 0xF6 |
Het enige waar nog wat twijfel over is, is 'Power On' en 'Ipod On', die lijken qua reactie op elkaar maar wat nou het verschil is? Een aantal functies zullen niet in alle standen werken, zoals de Album en Chapter functies.
Mijn plannen voor de nabije toekomst zijn vooral het Mode 4 (AiR, Advanced iPod Remote) protocol uitvogelen en een leuke interface met mijn wekker maken. iPod jukebox wekker, klinkt goed toch?
Resources om zelf aan de gang te gaan
Apple Accessory Protocol
Dock Connector (erg leuk voor alle mogelijkheden!)
IPod to T&A remotecontrol adapter (bevat enkele tips over het protocol en microcontroller interfacing)
[ Voor 29% gewijzigd door sebastius op 05-01-2006 16:20 . Reden: Commando's toegevoegd ]





