github.com/oandrew/ipod

ipod implements ipod accessory protocol and a client for https://github.com/oandrew/ipod-gadget


Keywords
accessory, gadget, golang, hid, iap, ipod
License
MIT
Install
go get github.com/oandrew/ipod

Documentation

ipod

Join the chat at https://gitter.im/ipod-gadget/Lobby GoDoc Build Status

ipod is a golang userspace library implementation of the ipod accessory protocol. It includes an example client for use with https://github.com/oandrew/ipod-gadget

This is a total rewrite of what was included with the ipod-gadget project. It should work as a drop-in replacement for the old app.

New features:

  • Storing and replaying traces
  • Detailed verbose logging for debug
  • Better codebase with message type definitions
  • Tests

update 03/2020

kernel module needs to be recompiled due to a breaking change (hid descriptor).
This should fix the issue with hanging after GetDevAuthenticationInfo on some devices.
At least it's finally working in my own car :)

build and run

GO111MODULE=on go build github.com/oandrew/ipod/cmd/ipod
# or cross compiling
GO111MODULE=on GOOS=linux GOARCH=arm GOARM=6 go build github.com/oandrew/ipod/cmd/ipod

# with debug logging
./ipod -d serve /dev/iap0

# save a trace file
./ipod -d serve -w ipod.trace /dev/iap0

# simulate incoming requests from a trace file
./ipod -d replay ./ipod.trace

# view a trace file
./ipod -d view ./ipod.trace

Client app godoc https://godoc.org/github.com/oandrew/ipod/cmd/ipod

Refer to https://github.com/oandrew/ipod-gadget for more info on how to get the kernel part working.