رفض وصول libusb وتصحيح أخطاء برنامج تشغيل WinUSB: الأذونات وZadig وبرامج تشغيل النواة ومطالبات USB
كيفية استكشاف أخطاء رفض وصول libusb، وعدم ربط برنامج تشغيل WinUSB، ومشكلات تثبيت برنامج تشغيل Zadig، ومطالبات برنامج تشغيل النواة، والأذونات، وفشل الوصول إلى واجهة USB.
غالبًا ما تفشل أدوات مطور USB بأخطاء مثل LIBUSB_ERROR_ACCESS، أو "الوصول مرفوض"، أو "لا يمكن المطالبة بالواجهة"، أو "لم يتم العثور على برنامج تشغيل WinUSB"، أو "فشل تثبيت برنامج تشغيل Zadig"، أو "المورد موجود بالفعل". يبحث المستخدمون عن "رفض وصول libusb"، و"عدم ربط برنامج تشغيل WinUSB"، و"فشل Zadig"، و"لا يمكن لـ libusb المطالبة بالواجهة"، و"إذن USB مرفوض" عندما يظهر الجهاز في نظام التشغيل ولكن أداة التشخيص أو البرامج الثابتة لا تستطيع فتحه.
يكون Bus Scope مفيدًا لأن مشكلات الوصول تقع بين واصفات USB، وربط برنامج تشغيل نظام التشغيل، ومطالبات الواجهة على مستوى التطبيق. يمكن أن يكون الجهاز متصلًا فعليًا ومُعدًّا بشكل صحيح بينما لا يزال غير متاح لـ libusb.
وجود الجهاز لا يعني أن الواجهة قابلة للوصول
قد يعد جهاز USB بشكل صحيح:
- قراءة واصف الجهاز.
- تحديد التهيئة.
- ظهور الواجهات.
- وصف نقاط النهاية.
- يظهر الجهاز في نظام التشغيل.
لكن libusb لا يزال لا يستطيع فتح الواجهة المقصودة أو المطالبة بها لأن برنامج تشغيل آخر يملكها، أو الأذونات مفقودة، أو WinUSB غير مربوط، أو التطبيق يستهدف الواجهة الخاطئة.
Windows و WinUSB
على Windows، غالبًا ما يتطلب الوصول بأسلوب libusb وجود برنامج تشغيل متوافق مثل WinUSB مربوطًا بالواجهة المستهدفة. تُستخدم أدوات مثل Zadig عادةً لاستبدال برنامج تشغيل واجهة خاصة بالبائع أو تثبيته.
تشمل المشكلات:
- تحديد واجهة خاطئة في Zadig.
- الجهاز المركب له واجهات متعددة.
- برنامج تشغيل HID يملك الواجهة.
- تعارض حزم برامج التشغيل الحالية.
- تثبيت برنامج التشغيل محظور بسياسة.
- الجهاز يكشف VID/PID مختلف في وضع bootloader.
- واصفات Microsoft OS تشير إلى الواجهة الخاطئة.
بالنسبة للأجهزة المركبة، فإن استبدال برنامج تشغيل الواجهة الخاطئة يمكن أن يكسر وظيفة أخرى دون إصلاح الأداة المستهدفة.
أذونات Linux
على Linux، غالبًا ما يعني LIBUSB_ERROR_ACCESS أن المستخدم ليس لديه إذن لفتح عقدة الجهاز. الجهاز موجود، لكن قواعد udev أو عضوية المجموعة لا تسمح بالوصول.
يمكن أن يُظهر التتبع أن حركة USB موجودة، لكن أخطاء الأذونات قد تحتاج أيضًا إلى أدلة على مستوى نظام التشغيل. ميّز بين:
- الجهاز لا يعد.
- الجهاز يعد ولكن لا يوجد إذن.
- برنامج تشغيل النواة مربوط بالفعل.
- التطبيق يستهدف VID/PID أو واجهة خاطئة.
برنامج تشغيل النواة طالب الواجهة بالفعل
إذا كان برنامج تشغيل نواة يملك واجهة، فقد يحتاج libusb إلى فصله أو يجب أن يستخدم التطبيق واجهة برمجة برنامج تشغيل النواة بدلاً من ذلك. غالبًا ما تطالب برامج التشغيل المدمجة بواجهات HID وCDC والتخزين والصوت.
يعتمد الجواب الآمن على نية المنتج. بالنسبة للوحة المفاتيح أو جهاز التخزين، قد يؤدي فصل برنامج تشغيل النواة إلى تعطيل سلوك النظام العادي. بالنسبة لواجهة تشخيص خاصة بالبائع، قد يكون ربط WinUSB/libusb صحيحًا.
قائمة مراجعة التصحيح
استخدم سير العمل هذا:
- التقط التعداد والواصفات.
- حدد رقم الواجهة المستهدفة.
- تحقق مما إذا كان الجهاز مركبًا.
- على Windows، تأكد من ربط برنامج التشغيل بتلك الواجهة.
- على Linux، تأكد من الأذونات وقواعد udev.
- تحقق مما إذا كان برنامج تشغيل النواة يملك الواجهة بالفعل.
- تحقق من VID/PID في الوضعين العادي وbootloader.
- تأكد من أن التطبيق يستهدف الواجهة الصحيحة.
- تجنب استبدال برامج التشغيل لواجهات غير ذات صلة.
- حافظ على أدلة الواصف قبل تغيير ربط برنامج التشغيل.
التشخيص النهائي
رفض وصول libusb وحالات فشل ربط WinUSB عادة ليست مشكلات إشارة USB خام. إنها مشكلات ملكية الواجهة، أو الأذونات، أو ربط برنامج التشغيل، أو تعيين الواصف.
يساعد Bus Scope من خلال كشف الواجهات الموجودة وكيف يعد الجهاز، حتى يمكن تتبع أخطاء الوصول إلى الطبقة الصحيحة بدلاً من إعادة تثبيت برامج التشغيل بشكل أعمى.