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
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 :)
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.