ipod-gadget จำลองอุปกรณ์ iPod USB เพื่อสตรีมเสียงดิจิตอลไปยังอุปกรณ์/แท่นวางที่รองรับ iPod พูด iAP (โปรโตคอลอุปกรณ์เสริม iPod) และเริ่มเซสชันการสตรีมเสียง
ทดสอบกับ Raspberry Pi Zero, Beaglebone Black และ Nexus 5 (เคอร์เนล mainline linux) โดยมีตัวรับสัญญาณ Onkyo HT-R391 เป็นอุปกรณ์โฮสต์ (จำเป็นต้องทดสอบอุปกรณ์โฮสต์เพิ่มเติม) ควรทำงานบนอุปกรณ์ใดๆ ที่ใช้ Linux 4.x (คอมไพล์ด้วยการกำหนดค่าอุปกรณ์ usb) และมีพอร์ต USB ที่รองรับโหมดอุปกรณ์ต่อพ่วง
ประกอบด้วยสองส่วน - โมดูลเคอร์เนล linux และแอปไคลเอนต์ (golang)
โมดูลเคอร์เนลดูแลด้านอุปกรณ์ USB เมื่อเสียบ iPod เข้ากับแท่นวาง จะแสดงการกำหนดค่า USB พร้อมอินเทอร์เฟซ 2 แบบ:
โมดูลเคอร์เนลสร้างการ์ดเสียง ALSA ใหม่ "iPodUSB" สำหรับการเล่นเสียงและอุปกรณ์ถ่าน iap0 สำหรับการสื่อสาร iAP
ไดรเวอร์แกดเจ็ตจะเปิดใช้งานเมื่อมีการเปิดอุปกรณ์อักขระ 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 เท่านั้นที่ตรวจสอบสิทธิ์อุปกรณ์โฮสต์ซึ่งเป็นเรื่องปกติ)