ipod gadget
1.0.0
ipod-gadget 模擬 iPod USB 設備,將數位音訊串流傳輸到 iPod 相容設備/底座。它使用 iAP(iPod 配件協定)並啟動音訊串流會話。
在 Raspberry Pi Zero、Beaglebone Black 和 Nexus 5(主線 Linux 核心)上進行測試,並以 Onkyo HT-R391 接收器作為主機裝置(更多主機裝置需要測試)。應該適用於執行 Linux 4.x(使用 usb gadget configfs 編譯)並具有支援週邊模式的 USB 連接埠的任何裝置。
它由兩部分組成 - Linux 核心模組和客戶端應用程式 (golang)。
核心模組負責 USB 裝置小工具端。當 iPod 插入底座時,會呈現具有 2 個介面的 USB 配置:
核心模組創建一個新的 ALSA 音訊卡“iPodUSB”用於音訊播放,並創建 iap0 字元設備用於 iAP 通訊。
當字元裝置 iap0 開啟時,小工具驅動程式將被啟動;當字元裝置 iap0 關閉時,小工具驅動程式將被取消註冊。
客戶端應用程式透過 iAP 透過從 /dev/iap0 字元設備讀取/寫入資料包來與主機設備通訊。它處理身份驗證並啟動音訊串流,以便 ALSA 設備可以用於播放。
git clone https://github.com/oandrew/ipod-gadget.git
cd ipod-gadget/gadget
make
# or cross compiling
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- KERNEL_PATH=/home/andrew/pi-linux
#load the module
modprobe libcomposite
insmod g_ipod_audio.ko
insmod g_ipod_hid.ko
insmod g_ipod_gadget.ko [swap_configs=0] [product_id=0x1297]
#optional params
swap_config: swap USB configurations.
Might be useful when the dock sees only the Mass Storage configuation.
product_id: override the usb product id.
See doc/apple-usb.ids for the list of ids
檢查來自dmesg
的消息並驗證裝置/dev/iap0
是否可用。
請按照此處的說明進行操作:https://github.com/oandrew/ipod
./ipod -d serve -w /tmp/ipod.trace /dev/iap0
現在您可以打開不同的終端機並測試播放!
speaker-test -D plughw:CARD=iPodUSB,DEV=0 -c 2 -r 44100
如果您有任何問題,請告訴我。
將追蹤檔案(例如上面的/tmp/ipod.trace
)附加到問題中。
注意:目前,只有當主機設備不驗證 iPod 時,它才會起作用(通常只有 iPod 驗證主機設備,這沒問題)。