ipod-gadget يحاكي جهاز iPod USB لدفق الصوت الرقمي إلى الأجهزة/قواعد الإرساء المتوافقة مع iPod. إنه يتحدث iAP (بروتوكول ملحقات iPod) ويبدأ جلسة بث صوتي.
تم اختباره على Raspberry Pi Zero وBeaglebone Black وNexus 5 (نواة Linux الرئيسية) مع جهاز استقبال Onkyo HT-R391 كجهاز مضيف (يلزم اختبار المزيد من الأجهزة المضيفة). يجب أن يعمل على أي جهاز يعمل بنظام Linux 4.x (مجمع باستخدام إعدادات أداة USB) ويحتوي على منفذ USB يدعم الوضع الطرفي.
وهو يتألف من جزأين - وحدة Linux kernel وتطبيق العميل (golang).
تعتني وحدة kernel بجانب أداة جهاز USB. يقدم جهاز iPod، عند توصيله بقاعدة إرساء، تكوين USB بواجهتين:
تقوم وحدة kernel بإنشاء بطاقة صوت ALSA جديدة "iPodUSB" لتشغيل الصوت وجهاز iap0 char لاتصالات 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 فقط بمصادقة الجهاز المضيف وهو أمر جيد).