uhubctl هو أداة مساعدة للتحكم في طاقة USB لكل منفذ على لوحات وصل USB الذكية. يتم تعريف المحور الذكي على أنه المحور الذي ينفذ تبديل الطاقة لكل منفذ.
الفكرة الأصلية لهذا الكود مستوحاة من hub-ctrl.c بواسطة Niibe Yutaka: https://www.gniibe.org/development/ac-power-control-by-USB-hub
لاحظ أن عددًا قليلاً جدًا من لوحات الوصل تدعم فعليًا تبديل الطاقة لكل منفذ. بعضها لم يعد يتم تصنيعه وقد يكون من الصعب العثور عليه.
هذه قائمة بمحاور USB المتوافقة المعروفة:
| الشركة المصنعة | منتج | الموانئ | USB | فيد: معرف المنتج | يطلق | موسوعة الحياة |
|---|---|---|---|---|---|---|
| أيسر | شاشة BE270U (انظر) | 4 | 3.0 | 2109:2811 | 2016 | |
| أمازونبيسكس | HU3641V1 (مشكلة RPi) | 4 | 3.0 | 2109:2811 | 2013 | |
| أمازونبيسكس | HU3770V1 (مشكلة RPi) | 7 | 3.0 | 2109:2811 | 2013 | |
| أمازونبيسكس | HU9003V1EBL، HUC9003V1EBL | 7 | 3.1 | 2109:2817 | 2018 | |
| أمازونبيسكس | HU9002V1SBL، HU9002V1EBL، HU9002V1ESL (ملاحظة) | 10 | 3.1 | 2109:2817 | 2018 | |
| أمازونبيسكس | HUC9002V1SBL، HUC9002V1EBL، HUC9002V1ESL | 10 | 3.1 | 2109:2817 | 2018 | |
| أمازونبيسكس | U3-7HUB (يعمل فقط لمنفذ شحن واحد) | 7 | 3.0 | 2109:2813 | 2020 | |
| أنكر | AK-68ANHUB-BV7A-0004 (ملاحظة) | 7 | 3.0 | 2109:0812 | 2014 | |
| تفاحة | Pro Display XDR MWPE2LL/A (محور USB داخلي) | 4 | 2.0 | 05AC:9139 | 2019 | |
| تفاحة | شاشة Thunderbolt مقاس 27 بوصة (محور USB داخلي) | 6 | 2.0 | 2011 | 2016 | |
| تفاحة | لوحة مفاتيح USB مع لوحة رقمية (محور USB داخلي) | 3 | 2.0 | 2011 | ||
| آسوس | اللوحة الأم Z77 Sabretooth (محور USB على اللوحة) | 6 | 2.0 | 2012 | ||
| آسوس | اللوحة الأم Z87-PLUS (لوحة وصل USB مدمجة) | 4 | 3.0 | 2013 | 2016 | |
| أوكي | سي بي-C59 | 4 | 3.0 | 2109:2813 | 2017 | |
| بي + بي سمارت ووركس | UHR204 | 4 | 2.0 | 0856:DB00 | 2013 | |
| بي + بي سمارت ووركس | USH304 | 4 | 3.0 | 04B4:6506 | 2017 | 2019 |
| باسلر | 2000036234 | 4 | 3.0 | 0451:8046 | 2016 | |
| بلكين | F5U101 | 4 | 2.0 | 0451:2046 | 2005 | 2010 |
| بلكين | F5U238UKCRL-MOB | 4 | 2.0 | 0409:0059 | 2004 | 2010 |
| بينكيو | شاشة PD2700U 4K (تعمل فقط في وضع USB2) | 4 | 3.0 | 05E3:0610 | 2018 | |
| بينكيو | PD3220U | 4 | 3.1 | 05E3:0610 | 2019 | |
| بايتيك | BT-UH340 (تحذير) | 4 | 3.0 | 2109:8110 | 2010 | |
| سينتيك | CT-USB4HUB إعادة المحاولة HUB | 4 | 3.0 | 0424:2744 | 2017 | |
| سيركويتكو | Beagleboard-xM (محور USB داخلي) | 4 | 2.0 | 0424:9514 | 2010 | |
| Club3D | محطة الإرساء ذات العرض المزدوج CSV-3242HD | 4 | 3.0 | 2109:2811 | 2015 | |
| كولجير | USBG-12U2ML | 12 | 2.0 | 05e3:0607 | 2015 | |
| السرو | مجموعة تطوير CY4608 HX2VL (ملاحظة) | 4 | 2.0 | 04B4:6570 | 2012 | |
| دي لينك | DUB-H4 rev D,E (أسود). ملحوظة: المراجعة A، C، F غير مدعومة | 4 | 2.0 | 05E3:0608 | 2012 | |
| دي لينك | DUB-H7 rev A (فضي) | 7 | 2.0 | 2001:F103 | 2005 | 2010 |
| دي لينك | DUB-H7 rev D,E (أسود). القس B، C، F، G غير مدعوم | 7 | 2.0 | 05E3:0608 | 2012 | |
| ديل | شاشة P2416D مقاس 24 بوصة بدقة QHD (ملاحظة) | 4 | 2.0 | 2017 | ||
| ديل | شاشة ألعاب S2719DGF مقاس 27 بوصة بدقة WQHD | 5 | 3.0 | 0424:5734 | 2018 | |
| ديل | شاشة UltraSharp 1704FPT LCD مقاس 17 بوصة | 4 | 2.0 | 0424:A700 | 2005 | 2015 |
| ديل | شاشة UltraSharp U2415 LCD مقاس 24 بوصة | 5 | 3.0 | 2014 | ||
| ديل | شاشة منحنية UltraSharp U3419W مقاس 34 بوصة | 6 | 3.0 | 2020 | ||
| ديل | Wyse 3040 (-f مطلوب) | 6 | 3.0 | 2017 | ||
| ديلوك | 62537 | 4 | 3.0 | 2017 | 2021 | |
| ديلوك | 87445 (ملاحظة) | 4 | 2.0 | 05E3:0608 | 2009 | 2013 |
| إليكوم | U2H-G4S | 4 | 2.0 | 2006 | 2011 | |
| جيجابايت | شاشة G27Q (انظر | 4 | 3.0 | 2109:0817 | 2020 | |
| النطاق العالمي | إسبرسوبن SBUD102 V5 | 1 | 3.0 | 1D6B:0003 | 2017 | |
| النواة الصلبة | أودرويد-C4 (ملاحظة) | 4 | 3.0 | 2020 | ||
| تكنولوجيا هوكينج | UH214 | 4 | 2.0 | 2003 | 2008 | |
| هيوليت باكارد | قاعدة توصيل USB-C G5 5TW10AA | 5 | 3.0 | 03F0:076B | 2019 | |
| هيوليت باكارد | P5Q58UT | 3 | 3.0 | 2019 | ||
| إيناتيك | HB2025A (USB2 فقط) | 4 | 3.1 | 2109:2822 | 2021 | |
| إيوي | U3H415E1 | 4 | 3.0 | 2012 | ||
| j5create | JUH377 (ملاحظة) | 7 | 3.0 | 2016 | ||
| j5create | JUH470 (ملاحظة) | 3 | 3.0 | 05E3:0610 | 2014 | |
| أنظمة عصير | 6HUB-01 | 7 | 3.0 | 0BDA:0411 | 2014 | 2018 |
| كونبوس المحدودة | اتصال RevPi (+) / S / SE | 2 | 2.0 | 0424:9514 | 2018 | |
| كونبوس المحدودة | ريفبي كونيكت 4 | 2 | 3.0 | 2022 | ||
| كونبوس المحدودة | ريفبي كور 3/S/SE | 2 | 2.0 | 0424:9514 | 2017 | |
| إل جي إلكترونيكس | شاشة 27MD5KL-B | 4 | 3.0 | 043E:9A60 | 2019 | |
| إل جي إلكترونيكس | شاشة 27GL850-B | 4 | 3.0 | 0451:8142 | 2019 | |
| إل جي إلكترونيكس | شاشة 27UK850-W | 2 | 3.0 | 2018 | ||
| إل جي إلكترونيكس | شاشة 27UN83A-W | 2 | 3.0 | 0451:8142 | 2020 | |
| إل جي إلكترونيكس | شاشة 38WK95C-W | 4 | 3.0 | 0451:8142 | 2018 | |
| لينوفو | محطة إرساء ثينك باد ألترا (40A20090EU) | 6 | 2.0 | 17EF:100F | 2015 | |
| لينوفو | محطة إرساء ثينك باد ألترا (40AJ0135EU) | 7 | 3.1 | 17EF:3070 | 2018 | |
| لينوفو | ثينك باد X200 ألترا بيس 42X4963 | 3 | 2.0 | 17EF:1005 | 2008 | 2011 |
| لينوفو | ثينك باد X6 ألترا بيس 42W3107 | 4 | 2.0 | 17EF:1000 | 2006 | 2009 |
| لينوفو | محور ThinkPlus 4 في 1 USB-C 4X90W86497 | 3 | 3.0 | 2021 | ||
| لينوفو | شاشة ثينك فيجن T24i-10 | 4 | 2.0 | 17EF:0610 | 2018 | |
| لينوفو | USB-C إلى 4 منافذ USB-A | 4 | 2.0 | 17EF:103A | 2020 | |
| ليندي | محول تسلسلي USB 4 منافذ | 4 | 1.1 | 058F:9254 | 2008 | |
| لينكسيس | USB2HUB4 (ملاحظة) | 4 | 2.0 | 2004 | 2010 | |
| مابلين | A08CQ | 7 | 2.0 | 0409:0059 | 2008 | 2011 |
| ميتادوت | لوحة المفاتيح 4 | 2 | 3.0 | 2014 | ||
| رقاقة | EVB9512 | 2 | 2.0 | 2009 | ||
| رقاقة | EVB-USB2517 | 7 | 2.0 | 2008 | ||
| رقاقة | EVB-USB2534BC | 4 | 2.0 | 2013 | ||
| رقاقة | EVB-USB5807 | 7 | 3.0 | 2016 | ||
| موكسا | يوبورت-407 | 7 | 2.0 | 110A:0407 | 2009 | |
| نفيديا | جيتسون نانو B01 (التفاصيل) | 4 | 3.0 | 2019 | ||
| نفيديا | جيتسون كزافييه إن إكس (التفاصيل) | 4 | 3.0 | 2020 | ||
| فيدجيتس | HUB0003_0 | 7 | 2.0 | 1A40:0201 | 2017 | |
| فيليبس | شاشة منحنية 346B1C فائقة العرض مقاس 34 بوصة | 4 | 3.0 | 05E3:0610 | 2019 | |
| قابلة للتوصيل | USB3-HUB7BC | 7 | 3.0 | 2109:0813 | 2015 | |
| قابلة للتوصيل | USB3-HUB7C (يعمل فقط مع منفذي شحن) | 7 | 3.0 | 2109:0813 | 2015 | |
| قابلة للتوصيل | USBC-HUB7BC (يعمل مع 6/7 منافذ، وليس أقصى اليمين) | 7 | 3.0 | 2109:0817 | 2021 | |
| قابلة للتوصيل | USB3-HUB10-C2 (يعمل فقط مع منفذي شحن) | 10 | 3.0 | 2014 | ||
| شركة بورت | NWUSB01 | 4 | 1.1 | 0451:1446 | 1999 | 2003 |
| راسبيري بي | ب+، 2ب، 3ب (انظر أدناه) | 4 | 2.0 | 2011 | ||
| راسبيري بي | 3ب+ (انظر أدناه) | 4 | 2.0 | 0424:2514 | 2018 | |
| راسبيري بي | 4 ب (انظر أدناه) | 4 | 3.0 | 2109:3431 | 2019 | |
| راسبيري بي | 5 (انظر أدناه) | 4 | 3.0 | 1d6b:0002 | 2023 | |
| رينيساس | وحدة التحكم المضيفة uPD720202 PCIe USB 3.0 | 2 | 3.0 | 2013 | ||
| روزويل | RHUB-210 | 4 | 2.0 | 0409:005A | 2011 | 2014 |
| روزونواي | RSH-518C (ملاحظة) | 7 | 3.0 | 2109:0817 | 2021 | |
| روزونواي | آر إس إتش-A10 (انظر) | 10 | 3.0 | 0bda:0411 | 2020 | |
| روزونواي | RSH-A13 (تحذير) | 13 | 3.1 | 2109:2822 | 2021 | |
| روزونواي | RSH-A16 (ملاحظة، تحذير) | 16 | 3.0 | 0bda:0411 | 2020 | |
| روزونواي | RSH-A104 (USB2 فقط) | 4 | 3.1 | 2109:2822 | 2022 | |
| روزونواي | RSH-A107 (المعروف أيضًا باسم ikuai A107-5) | 7 | 3.1 | 0bda:5411 | 2022 | |
| روزونواي | RSH-ST07C (4 فقط) | 7 | 3.0 | 2109:2822 | 2023 | |
| توريد سانوا | USB-HUB14GPH | 4 | 1.1 | 2001 | 2003 | |
| سيجيت | النسخ الاحتياطي زائد المحور STEL8000100 | 2 | 3.0 | 0BC2:AB44 | 2016 | |
| ستوديو سيد | إعادة المحطة CM4104032 | 2 | 2.0 | 0424:2514 | 2021 | |
| ستارتك | قاعدة السفر DKT30CSDHPD3 USB-C | 3 | 3.0 | 2109:2817 | 2018 | |
| ستارتك | HB30A4AIB (تحذير) | 4 | 3.0 | 2109:2817 | 2018 | |
| سونيكس | SHB4200MA | 4 | 2.0 | 0409:0058 | 2006 | 2009 |
| محادثات النظام | سوغوي USB2-HUB4X | 4 | 2.0 | 2007 | ||
| تارجوس | PA095UZ | 2 | 2.0 | 2004 | ||
| تارجوس | PAUH212/PAUH212U | 7 | 2.0 | 2004 | 2009 | |
| تكساس إنسترومنتس | TUSB4041PAPEVM | 4 | 2.1 | 0451:8142 | 2015 | |
| UUGear | MEGA4 (لراسبيري بي 4B) | 4 | 3.0 | 2109:0817 | 2021 | |
| VirtualHere | محور USB3 ذو 4 منافذ (ملاحظة) | 4 | 3.0 | 2024 |
هذا الجدول ليس كاملا بأي حال من الأحوال. إذا كان المركز الخاص بك يعمل مع uhubctl ، ولكنه غير مدرج أعلاه، فيرجى الإبلاغ عنه عن طريق فتح مشكلة جديدة على https://github.com/mvp/uhubctl/issues، حتى نتمكن من إضافته إلى الجدول المدعوم. في تقريرك، يرجى تقديم طراز المنتج الدقيق وإضافة مخرجات من uhubctl والرجاء اختبار دعم VBUS كما هو موضح أدناه في الأسئلة الشائعة.
لاحظ أن عددًا لا بأس به من اللوحات الأم الحديثة تحتوي على لوحات وصل جذرية مدمجة تدعم هذه الميزة - وقد لا تحتاج حتى إلى شراء أي لوحة وصل خارجية.
إذا كان لديك محور USB 3.0 متصلاً بمنفذ USB3 العلوي، فسيتم اكتشافه كمحورين افتراضيين مستقلين: USB2 وUSB3، وسيتم توصيل أجهزة USB الخاصة بك بمحور USB2 أو USB3 الظاهري اعتمادًا على قدراتها وسرعة الاتصال. للتحكم في الطاقة لهذه المحاور، من الضروري إيقاف تشغيل/تشغيل الطاقة على كل من لوحات الوصل الافتراضية USB2 وUSB3 حتى تدخل تغييرات إيقاف التشغيل/التشغيل حيز التنفيذ. سيحاول uhubctl القيام بذلك تلقائيًا (ما لم تقم بتعطيل هذا السلوك باستخدام الخيار -e ).
لسوء الحظ، على الرغم من أن معظم لوحات الوصل ستقطع اتصال USB للبيانات، إلا أن بعضها قد لا يقطع اتصال VBUS بالمنفذ، مما يعني أن الهاتف المتصل قد يستمر في الشحن من المنفذ الذي يتم إيقاف تشغيله بواسطة uhubctl .
تم اختبار هذه الأداة المساعدة للتجميع والعمل على Linux (Ubuntu/Debian، وRedhat/Fedora/CentOS، وArch Linux، وGentoo، وopenSUSE، وBuildroot)، وFreeBSD، وNetBSD، وSunOS، وMacOS.
أثناء تجميع uhubctl على نظام التشغيل Windows، لا يعمل تبديل طاقة USB على نظام التشغيل Windows لأن libusb يستخدم برنامج التشغيل winusb.sys ، والذي وفقًا لمايكروسوفت لا يدعم طلبات التحكم USB الضرورية. قد يتم إصلاح هذا إذا بدأ libusb في دعم برامج تشغيل مختلفة على نظام التشغيل Windows.
لاحظ أنه يوصى بشدة بتثبيت pkg-config (توفره العديد من الأنظمة الأساسية افتراضيًا).
أولاً، تحتاج إلى تثبيت المكتبة libusb-1.0 (الإصدار 1.0.12 أو الأحدث، يوصى بالإصدار 1.0.16 أو الأحدث):
sudo apt-get install libusb-1.0-0-devsudo yum install libusb1-develsudo zypper install libusb-1_0-develbrew install libusb ، أو sudo port install libusb-develsudo pkgin install libusb1 gmake pkg-configلجلب مصدر uhubctl وتجميعه:
git clone https://github.com/mvp/uhubctl
cd uhubctl
make
يجب أن يؤدي هذا إلى إنشاء ثنائي uhubctl . يمكنك تثبيته في نظامك كـ /usr/sbin/uhubctl باستخدام:
sudo make install
لاحظ أنه في بعض أنظمة التشغيل (مثل FreeBSD/NetBSD) تحتاج إلى استخدام gmake بدلاً من ذلك للإنشاء.
أيضًا، على نظام MacOS، يمكنك تثبيت uhubctl مع جميع التبعيات الضرورية في لقطة واحدة باستخدام Homebrew Tap:
brew tap mvp/uhubctl https://github.com/mvp/uhubctl
brew install uhubctl
للإنشاء/التثبيت من الفرع الرئيسي، استخدم --HEAD :
brew install uhubctl --HEAD
️ على Linux، استخدمsudoأو قم بتكوين أذونات USB كما هو موضح أدناه!
لسرد كافة المحاور المدعومة:
uhubctl
يمكنك التحكم في الطاقة على منفذ (منافذ) USB مثل هذا:
uhubctl -a off -p 2
وهذا يعني العمل على المحور الذكي الافتراضي وإيقاف تشغيل الطاقة ( -a off أو -a 0 ) على المنفذ 2 ( -p 2 ). الإجراءات المدعومة هي off / on / cycle / toggle (أو 0 / 1 / 2 / 3 ). cycle تعني إيقاف تشغيل الطاقة، والانتظار لبعض التأخير (يمكن تكوينه باستخدام -d ) ثم تشغيله مرة أخرى. يمكن أن تكون المنافذ عبارة عن قائمة مفصولة بفواصل، ويمكن استخدامها - للنطاقات، على سبيل المثال 2 أو 2,4 أو 2-5 أو 1-2,5-8 .
️ قد يؤدي إيقاف تشغيل منافذ USB المدمجة إلى قطع لوحة المفاتيح أو الماوس، لذا كن حذرًا بشأن المنافذ التي تقوم بإيقاف تشغيلها!
إذا كان لديك أكثر من لوحة وصل USB ذكية متصلة، فيجب عليك اختيار لوحة وصل محددة للتحكم باستخدام معلمة -l (الموقع). للعثور على مواقع المحور، ما عليك سوى تشغيل uhubctl بدون أي معلمات. تبدو مواقع الموزع مثل bx.yz ، حيث b هو رقم ناقل USB، و x ، y ، z ... هي أرقام المنافذ لجميع لوحات الوصل في السلسلة، بدءًا من لوحة الوصل الجذرية لناقل USB معين. هذا العنوان شبه مستقر - لن يتغير إذا قمت بفصل/إعادة توصيل (أو إيقاف تشغيل/تشغيل) جهاز USB بنفس منفذ USB الفعلي (تُستخدم هذه الطريقة أيضًا في Linux kernel).
في نظام التشغيل Linux، يجب عليك تكوين أذونات udev USB (وإلا فسيتعين عليك تشغيله كجذر باستخدام sudo uhubctl ).
بدءًا من Linux Kernel 6.0، هناك واجهة قياسية لتشغيل أو إيقاف تشغيل منافذ USB Hub، وسيحاول uhubctl استخدامها (بدلاً من libusb ) لتعيين حالة المنفذ. ولهذا السبب توجد قواعد إضافية للإصدار 6.0+ من النواة. ليس هناك أي ضرر في وجود هذه القواعد على الأنظمة التي تعمل بإصدارات أقدم من kernel.
لإصلاح أذونات USB، قم أولاً بتشغيل sudo uhubctl ولاحظ كل vid:pid للمحاور التي تحتاج إلى التحكم فيها. بعد ذلك، قم بإضافة قواعد udev كما هو موضح أدناه إلى الملف /etc/udev/rules.d/52-usb.rules (استبدل 2001 بمعرف البائع الخاص بك، أو قم بإزالة مرشح ATTR{idVendor} بالكامل للسماح بأي وصول إلى لوحة وصل USB):
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2001"
# Linux 6.0 or later (its ok to have this block present for older Linux kernels):
SUBSYSTEM=="usb", DRIVER=="usb",
RUN="/bin/sh -c "chmod -f 666 $sys$devpath/*-port*/disable || true""
لاحظ أنه بالنسبة للوحات وصل USB3، تستخدم بعض لوحات الوصل معرف بائع مختلفًا لمكونات USB2 مقابل مكونات USB3 من نفس الشريحة، وكلاهما يحتاج إلى أذونات لجعل uhubctl يعمل بشكل صحيح. على سبيل المثال، بالنسبة لـ Raspberry Pi 4B، تحتاج إلى إضافة هذين السطرين (أو إزالة مرشح idVendor):
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="2109"
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0666", ATTR{idVendor}=="1d6b"
إذا كنت لا تحب الوضع المفتوح على نطاق واسع 0666 ، فيمكنك تقييد الوصول حسب المجموعة مثل هذا:
SUBSYSTEM=="usb", DRIVER=="usb", MODE="0664", GROUP="dialout"
# Linux 6.0 or later (its ok to have this block present for older Linux kernels):
SUBSYSTEM=="usb", DRIVER=="usb",
RUN+="/bin/sh -c "chown -f root:dialout $sys$devpath/*-port*/disable || true""
RUN+="/bin/sh -c "chmod -f 660 $sys$devpath/*-port*/disable || true""
ثم قم بإضافة المستخدمين المسموح لهم إلى مجموعة dialout :
sudo usermod -a -G dialout $USER
لكي تدخل تغييرات قاعدة udev حيز التنفيذ، قم بإعادة التشغيل أو التشغيل:
sudo udevadm trigger --attr-match=subsystem=usb
لراحتك، يتم توفير قاعدة udev جاهزة للاستخدام هنا.
وفقًا لمواصفات USB 2.0، يمكن لمراكز USB الإعلان عن عدم وجود تبديل للطاقة، أو تبديل الطاقة المجمع (جميع المنافذ في وقت واحد) أو تبديل الطاقة لكل منفذ (فردي). لاحظ أن uhubctl افتراضيًا سيكتشف فقط لوحات وصل USB التي تدعم تبديل الطاقة لكل منفذ (ولكن يمكنك إجباره على محاولة التشغيل على لوحات وصل غير مدعومة باستخدام الخيار -f ). يمكنك العثور على نوع تبديل الطاقة الذي يدعمه جهازك باستخدام sudo lsusb -v :
لا يوجد تبديل الطاقة:
wHubCharacteristic 0x000a
No power switching (usb 1.0)
Per-port overcurrent protection
تبديل الطاقة المجمعة:
wHubCharacteristic 0x0008
Ganged power switching
Per-port overcurrent protection
تبديل الطاقة لكل منفذ:
wHubCharacteristic 0x0009
Per-port power switching
Per-port overcurrent protection
uhubctl ؟sudo uhubctl . إذا لم يكن المركز الخاص بك مدرجًا، فهذا يعني أنه غير مدعوم. بدلاً من ذلك، يمكنك تشغيل sudo lsusb -v والتحقق من Per-port power switching - إذا لم تتمكن من رؤية هذا الخط في إخراج lsusb، فهذا يعني أن لوحة الوصل غير مدعومة.uhubctl لإيقاف تشغيل الطاقة على هذا المنفذ، وتأكد من توقف الهاتف عن الشحن، أو توقف ضوء USB عن السطوع أو توقف مروحة USB عن الدوران. إذا لم يتم إيقاف تشغيل VBUS، فهذا يعني أن الشركة المصنعة للمحور الخاص بك لم تقم بتضمين دوائر لقطع الطاقة فعليًا. سيظل هذا المحور يعمل على قطع اتصال بيانات USB، لكنه لا يمكنه إيقاف تشغيل الطاقة، ونحن لا نعتبر هذا الجهاز المدعوم.بعد إيقاف تشغيل منفذ USB، لا يحصل udev على أي حدث، لذلك يحتفظ بملفات الجهاز. ومع ذلك، فإن محاولة الوصول إلى ملفات الجهاز ستؤدي إلى خطأ في الإدخال/الإخراج.
هذه مشكلة Linux kernel وتم إصلاحها منذ uhubctl 2.5.0 للأنظمة التي تعمل بنظام Linux kernel 6.0 أو الإصدارات الأحدث.
إذا كنت لا تزال تستخدم Linux 5.x أو إصدار أقدم، فيمكنك استخدام هذا الحل البديل لهذه المشكلة:
sudo uhubctl -a off -l ${location} -p ${port}
sudo udevadm trigger --action=remove /sys/bus/usb/devices/${location}.${port}/
ستتم إزالة ملف الجهاز بواسطة udev، ولكن سيظل جهاز USB مرئيًا في lsusb . لاحظ أن المسار /sys/bus/usb/devices/${location}.${port} لن يكون موجودًا إلا إذا تم اكتشاف الجهاز على هذا المنفذ. عند إعادة تشغيل الطاقة، يجب إعادة تعداد الجهاز بشكل صحيح (لا حاجة للاتصال بـ udevadm مرة أخرى).
تتفاجأ بعض برامج تشغيل الأجهزة في kernel بإيقاف تشغيل جهاز USB وتحاول إعادة تشغيله تلقائيًا.
هذه مشكلة Linux kernel وتم إصلاحها منذ uhubctl 2.5.0 للأنظمة التي تعمل بنظام Linux kernel 6.0 أو الإصدارات الأحدث.
إذا كنت لا تزال تستخدم Linux 5.x أو أقدم:
يمكنك استخدام الخيار -r N ، حيث N هو رقم ما من 10 إلى 1000 لإصلاح هذه المشكلة - سيحاول uhubctl إيقاف تشغيل الطاقة عدة مرات في تتابع سريع، ويجب أن يمنع ذلك.
من المفترض أن يساعد تعطيل ترخيص USB للجهاز المعني قبل إيقاف تشغيل الطاقة باستخدام uhubctl :
echo 0 > sudo tee /sys/bus/usb/devices/${location}.${port}/authorized
إذا كان جهازك عبارة عن وحدة تخزين USB كبيرة السعة، فإن استدعاء udisksctl قبل الاتصال بـ uhubctl من شأنه أن يساعد أيضًا:
sudo udisksctl power-off --block-device /dev/disk/...`
sudo uhubctl -a off ...
تقوم العديد من الشركات المصنعة للوحات الوصل ببناء لوحات وصل USB الخاصة بها باستخدام شرائح USB الأساسية ذات 4 منافذ. على سبيل المثال، لإنشاء محور 7 منافذ، يقومون بربط محورين بأربعة منافذ في سلسلة تعاقبية - يتم فقدان منفذ واحد بسبب التسلسل التعاقبي، مما يجعله 4+4-1=7 محور منافذ. وبالمثل، يمكن بناء لوحة وصل ذات 10 منافذ على شكل 3 محاور ذات 4 منافذ متسلسلة معًا، مما يعطي 4+4+4-2=10 منافذ قابلة للاستخدام.
لاحظ أنه لا ينبغي عليك مطلقًا محاولة تغيير حالة الطاقة للمنافذ المستخدمة لربط لوحات الوصل الداخلية معًا. سيؤدي القيام بذلك إلى إرباك دوائر المحور الداخلية وسيتسبب في سلوك غير متوقع.
هذا هو الحد من تصميم أجهزة Raspberry Pi. كحل بديل، يمكنك شراء أي موزع USB خارجي من القائمة المدعومة أعلاه، وإرفاقه بأي منفذ USB في Raspberry Pi، والتحكم في الطاقة على منافذه بشكل مستقل. هناك أيضًا محاور مدعومة مصممة خصيصًا لـ Raspberry Pi، على سبيل المثال UUGear MEGA4.
كمرجع، تحتوي نماذج Raspberry Pi المدعومة على هيكل USB الداخلي التالي:
محور واحد 1-1 ، منافذ 2-5 مجمعة، يتم التحكم بها جميعًا بواسطة المنفذ 2 :
uhubctl -l 1-1 -p 2 -a 0
محاولة التحكم في المنافذ 3 ، 4 ، 5 لن تفعل شيئًا. يتحكم المنفذ 1 في الطاقة لشبكة Ethernet+WiFi.
المحور الرئيسي 1-1 ، جميع المنافذ الأربعة مجمعة، ويتم التحكم فيها جميعًا بواسطة المنفذ 2 (يقوم بإيقاف تشغيل منافذ المحور الثانوية أيضًا). يقوم المنفذ 1 بتوصيل المحور 1-1.1 بالأسفل، والمنفذان 2 و 3 متصلان بالخارج، والمنفذ 4 غير سلكي.
uhubctl -l 1-1 -p 2 -a 0
المحور الثانوي 1-1.1 (متسلسل إلى رئيسي): 3 منافذ، يُستخدم المنفذ 1 لشبكة Ethernet+WiFi، ويتم توصيل المنافذ 2 و 3 بالخارج.
️ إذا كان البرنامج الثابت VL805 الخاص بك أقدم من00137ad(راجعsudo rpi-eeprom-update)، فيجب عليك تحديث البرنامج الثابت حتى يعمل تبديل الطاقة على RPi 4B.
محور USB2 1 ، منفذ واحد، يتصل فقط بالمحور 1-1 أدناه.
محور USB2 1-1 ، 4 منافذ مجمعة، مزدوج إلى محور USB3 2 أدناه:
uhubctl -l 1-1 -a 0
محور USB3 2 ، 4 منافذ مجمعة، مزدوج إلى محور USB2 1-1 أعلاه:
uhubctl -l 2 -a 0
محور USB2 3 ، 1 منفذ، وحدة تحكم OTG. تبديل الطاقة غير مدعوم.
يحتوي Raspberry Pi 5 على منفذي USB2 ومنفذي USB3 (إجمالي 4). ترتبط هذه المنافذ بأربعة محاور USB مميزة 1 و 2 و 3 و 4 بتكوين غريب حقًا (ولكن اعتمادًا على نظام التشغيل ومحاور المراجعة HW يمكن أن تكون 2 و 3 و 4 و 5 ). إذا كان جهاز USB3 متصلاً بمقبس أزرق، فسيتم اكتشافه على محور USB3 2 أو 4 . إذا كان جهاز USB2 متصلاً بأي مقبس أو جهاز USB3 متصلاً بمقبس أسود، فسيتم اكتشافه على محور USB2 1 أو 3 . بغض النظر عن نوع اتصال USB2/USB3، تكون المقابس الزرقاء دائمًا هي المنفذ 1 ، والمقابس السوداء دائمًا هي المنفذ 2 .
يتم الإعلان عن كل من لوحات وصل USB الأربعة الموجودة على اللوحة بأنها تدعم تبديل الطاقة لكل منفذ، ولكن هذا ليس صحيحًا. في الواقع، تم تجميع جميع منافذ Raspberry Pi 5 الأربعة معًا في مجموعة واحدة، على الرغم من انتمائها إلى 4 محاور USB منطقية مختلفة.
لإيقاف تشغيل طاقة VBUS، يجب تعطيلها عبر جميع المحاور والمنافذ الموجودة على متن الطائرة باستخدام:
uhubctl -l 2 -a 0
uhubctl -l 4 -a 0
لتشغيله مرة أخرى:
uhubctl -l 2 -a 1
uhubctl -l 4 -a 1
لاحظ أن طاقة VBUS تنقطع فقط في حالة إيقاف تشغيل كافة المنافذ - حيث يؤدي تمكين أي منفذ واحد إلى تمكين VBUS من العودة لجميع المنافذ الأربعة.
| مشروع | وصف |
|---|---|
| ضوء USB كود مورس | ومض رسالة في رمز مورس مع ضوء USB |
| ضوء USB لكاميرا الويب | قم بتشغيل/إيقاف تشغيل LED عند تشغيل/إيقاف تشغيل كاميرا الويب |
| سينما لايت بوكس | قم بتشغيل/إيقاف تشغيل Cinema Lightbox من تطبيق iOS Home |
| بناء ضوء الحالة | قم بإنشاء ضوء حالة البناء في أقل من 10 دقائق |
| بيلدنلايتس | حالة بناء مشروع GitLab/GitHub كضوء أخضر/أحمر |
| محطة الطقس | إعادة ضبط محطة الطقس عندما تتجمد |
| sysmoQMOD | قم بإعادة ضبط أجهزة المودم الخلوية عند الضرورة |
| مستشعر الضباب الدخاني | إعادة ضبط طاقة مستشعر الضباب الدخاني المستند إلى Raspberry Pi |
| الكتلة الرهيبة | قم بتشغيل/إيقاف تشغيل عقد مجموعة Raspberry Pi حسب الحاجة |
| خادم الموسيقى المثالي | قم بإيقاف تشغيل منافذ USB غير المستخدمة لتحسين جودة الصوت |
| محركات أقراص USB بدون تحميل وهمي | قم بتشغيل محركات أقراص USB فقط عند الحاجة لتوفير الطاقة |
| استعادة بيانات محرك أقراص USB | استعادة البيانات من القرص الصلب USB الفاشل |
| التحكم في الطاقة للطابعة ثلاثية الأبعاد | البرنامج المساعد للويب OctoPrint للتحكم في طاقة USB |
| مروحة USB لراسبيري باي | تحكم في مروحة USB لتجنب ارتفاع درجة حرارة Raspberry Pi |
| جهاز التوجيه راسبيري باي لإعادة التشغيل | إعادة تشغيل جهاز التوجيه تلقائيًا إذا كان الإنترنت لا يعمل |
| التحكم في مصباح USB بالصوت | التحكم الصوتي بمصباح USB باستخدام Siri وRaspberry Pi |
| التحكم في شريط LED USB | التحكم في شريط إضاءة LED يعمل بمنفذ USB |
| قم بتحضير البيرة باستخدام Raspberry Pi | نظام تخمير البيرة الآلي باستخدام Raspberry Pi |
| علامة كاميرا الويب على الهواء | قم بإضاءة اللافتة تلقائيًا عند استخدام كاميرا الويب |
| افعل ذلك بنفسك PPPS | أسلاك اللحام في لوحة وصل USB الخاصة بك لدعم uhubctl |
| مركز PPPS مفتوح المصدر | مشروع أجهزة مفتوح المصدر لمركز متوافق مع uhubctl |
| غلاف بايثون لـ uhubctl | وحدة لاستخدام uhubctl مع بايثون |
| labgrid | إطار عمل لاختبار Linux المضمن على الأجهزة |
حقوق الطبع والنشر (C) 2009-2024 فاديم ميخائيلوف
يمكن توزيع هذا الملف بموجب شروط وأحكام رخصة جنو العامة الإصدار 2.