جهاز USB يستمر في الانفصال: تصحيح أخطاء حلقات إعادة الضبط وأحداث الطاقة وحالات فشل التعداد
كيفية تشخيص جهاز USB ينفصل بشكل متكرر أو يعيد ضبطه أو يعيد تعداده أو يفشل بعد تعليق باستخدام أدلة USB على مستوى الحزمة.
جهاز USB يستمر في الانفصال هو واحدة من أكثر مشكلات الأجهزة إحباطًا لأن العرض صاخب وغير متسق. يظهر الجهاز، ويختفي، ويعيد الاتصال، ويغير منفذ COM، ويفشل في التعداد، أو يعمل لبضع ثوانٍ ثم يعيد الضبط. يبحث المستخدمون عن "جهاز USB يستمر في الانفصال"، و"حلقة إعادة ضبط USB"، و"جهاز USB غير معروف بعد إعادة الاتصال"، و"لماذا يعيد جهاز USB الخاص بي التعداد" لأن رسالة نظام التشغيل نادرًا ما تشرح ما حدث بالفعل.
الدليل المفيد تحت طبقة التطبيق. تحتاج إلى معرفة ما إذا كان المضيف قد أعاد تعيين المنفذ، أو توقف الجهاز عن الاستجابة، أو فشلت قراءة الواصف، أو علّقت إدارة الطاقة الجهاز، أو أصدر برنامج التشغيل طلب فئة، أو توقفت نقطة النهاية.
تم بناء Bus Scope لهذا النمط من استكشاف أخطاء USB وإصلاحها. بدلاً من معاملة USB كصندوق أسود، يساعد في فحص عمليات نقل التحكم وقراءات الواصفات وإعادة الضبط وسلوك نقطة النهاية والتوقيت حول الانفصال.
ما يمكن أن يعنيه "الانفصال"
يمكن أن تصف عبارة "انفصال USB" عدة حالات فشل مختلفة:
- فصل مادي أو حركة كابل.
- ضوضاء كهربائية أو ضعف استقرار الطاقة.
- إعادة تعيين منفذ وحدة تحكم المضيف.
- عطل البرامج الثابتة للجهاز وإعادة التشغيل.
- فشل التعداد بعد إعادة الضبط.
- إلغاء تحميل برنامج التشغيل وإعادة تحميله.
- تعليق انتقائي أو إدارة طاقة وقت التشغيل.
- توقف نقطة النهاية يليه فشل الاستعادة.
- فشل واجهة الجهاز المركب.
- زيادة تحميل نقل عرض النطاق الترددي العالي.
تبدو هذه الحالات متشابهة في إشعار سطح المكتب، لكنها تبدو مختلفة في أدلة USB.
حلقة إعادة تعيين التعداد
غالبًا ما تبدأ حلقة إعادة التعيين بأن المضيف يكتشف جهازًا، ويعيد تعيين المنفذ، ويقرأ الواصفات، ويعين عنوانًا، ثم يفشل قبل اكتمال التهيئة. تتكرر الدورة.
يبدو التسلسل المبسط كـ:
Port reset
GET_DESCRIPTOR device
SET_ADDRESS
GET_DESCRIPTOR configuration
SET_CONFIGURATION
Disconnect
Port reset
GET_DESCRIPTOR device
...
إذا فشل الجهاز قبل SET_CONFIGURATION، فقد تكون المشكلة في محتوى الواصف، أو توقيت البرامج الثابتة، أو الطاقة، أو توافق المضيف. إذا فشل بعد SET_CONFIGURATION، فقد تكون المشكلة في تهيئة الفئة، أو إعداد نقطة النهاية، أو طلب برنامج تشغيل.
مشاكل الطاقة يمكن أن تبدو كمشكلات بروتوكول
يمكن أن تعيد أجهزة USB الضبط عند انخفاض الجهد أو ارتفاع سحب التيار أو عدم قدرة الموزع على توفير طاقة كافية. هذا شائع مع:
- كاميرات USB
- بطاقات التقاط USB
- الأقراص الخارجية
- لوحات التطوير
- مودمات الخلايا
- الأجهزة المتصلة عبر موزعات سلبية
- كابلات طويلة أو رديئة الجودة
على مستوى الحزمة، قد تبدو إعادة الضبط المتعلقة بالطاقة كصمت مفاجئ يليه إعادة تعداد. يتوقف الجهاز عن الرد على الطلبات، ويعيد المضيف تعيين المنفذ، ويبدأ التعداد من جديد.
لا يمكن لـ Bus Scope قياس الجهد مباشرة، لكنه يمكن أن يُظهر التوقيت والتسلسل حول إعادة الضبط. إذا كانت آخر عملية ناجحة هي بدء تدفق ثقيل على عرض النطاق الترددي أو أمر وضع الطاقة/المحرك، فإن الدليل يشير إلى الضغط على الطاقة أو البرامج الثابتة.
التعليق الانتقائي وإدارة طاقة وقت التشغيل
قد تعلّق أنظمة التشغيل أجهزة USB الخاملة لتوفير الطاقة. هذا طبيعي عندما يدعم الجهاز وبرامج التشغيل ذلك بشكل صحيح. يصبح مشكلة عندما لا تستأنف البرامج الثابتة للجهاز بشكل نظيف أو عندما يعلّق برنامج التشغيل جهازًا يتوقع التطبيق أن يظل نشطًا.
تشمل الأعراض:
- يعمل الجهاز بعد التوصيل لكنه يفشل بعد وقت خمول.
- الطلب الأول بعد الخمول يُرجع خطأ.
- يختفي الجهاز بعد النوم أو قفل الشاشة.
- يتغير حالة الجهاز التسلسلي بعد الاستئناف.
- يفقد جهاز HID الإدخال بعد الاستيقاظ.
يمكن أن يُظهر تتبع USB ما إذا كانت الحركة قد توقفت قبل الفشل وما إذا كان قد حدث تسلسل استئناف/إعادة تعيين. هذا أكثر فائدة من التخمين من رسالة خطأ التطبيق.
توقف نقطة النهاية قبل الانفصال
بعض تقارير الانفصال هي في الواقع حالات فشل على مستوى نقطة النهاية. قد يوقف الجهاز نقطة نهاية bulk أو interrupt أو طلب تحكم. يحاول برنامج التشغيل مسح التوقف. إذا فشلت الاستعادة، يعيد برنامج التشغيل تعيين الجهاز أو يغلق التطبيق المقبض.
ابحث عن:
STALLعلى نقل تحكم.- عمليات نقل bulk فاشلة متكررة.
CLEAR_FEATURE(ENDPOINT_HALT).- إعادة ضبط بعد نفس الطلب في كل مرة.
- مهلة قبل الانفصال.
إذا كان نفس الأمر يشغل إعادة الضبط دائمًا، فقد تكون البرامج الثابتة للجهاز تتعطل أثناء معالجة هذا الأمر.
حلقات إعادة تعيين الأجهزة المركبة
تكشف أجهزة USB المركبة عن واجهات متعددة تحت جهاز واحد. على سبيل المثال، قد يوفر الجهاز:
- واجهة CDC تسلسلية
- واجهة تحكم HID
- واجهة تخزين كبيرة السعة
- واجهة تشخيص خاصة بالبائع
يمكن أن يعد الجهاز جزئيًا ولا يزال يفشل عندما يلتصق برنامج تشغيل واجهة واحدة. قد يرى المستخدمون "تم التعرف على جهاز USB" يليه انفصال فوري لأن واجهة واحدة تشغل عطل البرامج الثابتة أو تعارض برنامج التشغيل.
في التتبع، افحص واصفات الواجهة والإعدادات البديلة وواصفات نقطة النهاية والطلبات الخاصة بالفئة. قد تحدث إعادة الضبط فقط بعد أن يبدأ المضيف في تكوين واجهة محددة.
أجهزة عرض النطاق الترددي العالي
يمكن أن تنفصل أجهزة فيديو USB والصوت والالتقاط والحصول على البيانات تحت الحمل. قد يعد الجهاز بشكل صحيح ويمر بطلبات تحكم بسيطة، ثم يفشل عند بدء البث.
تشمل الأسباب الشائعة:
- فشل حجز عرض النطاق الترددي المتساوي الزمن.
- مهلة نقطة نهاية bulk.
- ضغط عرض النطاق الترددي لوحدة تحكم المضيف.
- عنق زجاجة الموزع.
- عدم تطابق وضع USB 2.0 مقابل USB 3.x.
- تجاوز سعة مخزن البرامج الثابتة المؤقت.
- اختيار برنامج التشغيل لإعداد بديل غير مدعوم.
إذا حدث الانفصال بعد طلب بدء البث أو تغيير إعداد بديل، افحص النقل الدقيق الذي يأتي قبل إعادة الضبط. هذا غالبًا أهم دليل.
ما يجب التقاطه
لانفصال قابل للتكرار، التقط من قبل التوصيل أو قبل الإجراء الفاشل. تريد القصة الكاملة:
- توصيل الجهاز.
- إعادة تعيين المنفذ.
- قراءات الواصفات.
- تعيين العنوان.
- اختيار التهيئة.
- طلبات برنامج تشغيل الواجهة.
- أول نقل تطبيق عادي.
- آخر نقل ناجح قبل الفشل.
- مهلة، توقف، إعادة ضبط، أو انفصال.
- إعادة التعداد بعد الفشل.
بدء الالتقاط بعد فشل الجهاز بالفعل يفقد أهم دليل.
قائمة مراجعة التصحيح
استخدم هذا الترتيب:
- أعد الإنتاج بكابل قصير ومعروف جيدًا.
- تجنب الموزعات السلبية أثناء الاختبار الأول.
- التقط التعداد من التوصيل.
- تحقق مما إذا كان الفشل يحدث قبل أو بعد
SET_CONFIGURATION. - حدد آخر طلب ناجح.
- ابحث عن التوقفات والمهلات وإعادة الضبط المتكررة.
- قارن فشل الخمول مقابل فشل تحت الحمل.
- اختبر منفذ USB أو وحدة تحكم أخرى.
- عطّل التعليق الانتقائي فقط بعد جمع الأدلة.
- قارن نفس الجهاز على نظام تشغيل آخر إن أمكن.
التشخيص النهائي
"جهاز USB يستمر في الانفصال" عرض، وليس سببًا جذريًا. يعتمد الإصلاح على ما إذا كانت الأدلة تُظهر عدم استقرار الطاقة، أو إعادة ضبط البرامج الثابتة، أو فشل الواصفات، أو فشل طلب فئة برنامج التشغيل، أو توقف نقطة النهاية، أو مشكلة تعليق/استئناف، أو زيادة تحميل عرض النطاق الترددي.
يساعد Bus Scope من خلال إظهار معاملات USB حول الفشل بحيث يمكنك التوقف عن التخمين من إشعارات سطح المكتب وبدء التصحيح من سلوك الناقل الفعلي.