5 طرق لفصل جهاز USB وتوصيله دون رفع يديك عن لوحة المفاتيح

في العديد من المناسبات ، عندما نستخدم جهاز الكمبيوتر الخاص بنا ، نقوم بفصل جهاز USB (بأمان ، كما يجب) ، وبعد ذلك مباشرة ، ندرك أننا نسينا نسخ ملف أو أنه كان علينا التأكد من أن البيانات كانت في وحدتنا. في هذه الحالات ، يكون من المفيد عادةً فصل محركات أقراص USB تقريبًا عندما نعمل عن بُعد.

بعد إخراج الجهاز ، لم نعد نراه في قائمة أجهزتنا ، لكن القرص الصلب أو بندريف لا يزال متصلاً عبر منفذ USB ، وفي العديد من التوزيعات اليوم ، بعد إخراج محرك الأقراص بأمان ، لا نرى الجهاز أيضًا و لا نستطيع أن نفعل جبل من محطتنا. الحل الأسرع هو فصل الكابل وإعادة توصيله ، في بعض الحالات ، إما بسبب كسل الاضطرار إلى النهوض أو لأننا نصل إلى جهاز كمبيوتر لسنا أمامه ولا يوجد أحد حوله ، ولا يمكننا القيام بذلك.

معلومات حول أجهزة USB

قبل أن نبدأ ، دعنا نرى كيفية الحصول على معلومات حول أجهزة USB المتصلة بالنظام. لهذا ، يمكننا استخدام lsusb، والتي ستدرج الأجهزة المتصلة الآن. أضع أمثلة لما أحصل عليه على جهاز الكمبيوتر الخاص بي الآن ، ولكن ربما يكون الأمر مختلفًا تمامًا عما تحصل عليه:

$ lsusb Bus 002 Device 001: ID 1d6b: 0003 Linux Foundation 3.0 root hub Bus 001 Device 006: ID 8087: 0a2a Intel Corp. Bus 001 Device 007: ID 046d: c52b Logitech، Inc. Unifying Receiver Bus 001 Device 005: ID 1a40 : 0101 Terminus Technology Inc. Hub Bus 001 Device 010: ID 125f: c93a A-DATA Technology Co.، Ltd. 4GB Pen Drive Bus 001 Device 003: ID 04f2: b424 Chicony Electronics Co.، Ltd Bus 001 Device 001: ID 1d6b : 0002 Linux Foundation 2.0 root hub

إذا أردنا مزيدًا من المعلومات ، فيمكننا استخدام المُعدِّل -t الذي سيُظهر لنا مخرجات في شكل شجرة تحتوي على معلومات حول الوحدات:

$ lsusb -t /: Bus 02.Port 1: Dev 1، Class = root_hub، Driver = xhci_hcd / 8p، 5000M /: Bus 01.Port 1: Dev 1، Class = root_hub، Driver = xhci_hcd / 16p، 480M | __ المنفذ 4: Dev 3، If 0، Class = Video، Driver = uvcvideo، 480M | __ Port 4: Dev 3، If 1، Class = Video، Driver = uvcvideo، 480M | __ Port 5: Dev 10، If 0، Class = سعة التخزين ، برنامج التشغيل = تخزين USB ، 480 م | __ المنفذ 6: ديف 5 ، إذا 0 ، الفئة = المحور ، برنامج التشغيل = المحور / 4p ، 12 م | __ المنفذ 4: ديف 7 ، إذا 0 ، الفئة = جهاز واجهة بشرية ، برنامج التشغيل = usbhid، 12M | __ المنفذ 4: Dev 7، If 1، Class = Human Interface Device، Driver = usbhid، 12M | __ Port 4: Dev 7، If 2، Class = Human Interface Device، Driver = usbhid، 12M | __ المنفذ 9: Dev 6، If 0، Class = Wireless، Driver = btusb، 12M | __ Port 9: Dev 6، If 1، Class = Wireless، Driver = btusb، 12M

إذا أردنا المزيد من المعلومات ، يمكننا استخدام lsusb -v (الإخراج كبير جدًا) ، يمكننا أيضًا ، على سبيل المثال ، معرفة الحد الأقصى للطاقة التي يتم توصيلها للجهاز ، بالطريقة التالية:

$ lsusb -v 2> / dev / null | egrep "^ Bus | MaxPower" Bus 002 Device 001: ID 1d6b: 0003 Linux Foundation 3.0 root hub MaxPower 0mA Bus 001 Device 006: ID 8087: 0a2a Intel Corp. MaxPower 100mA Bus 001 الجهاز 007: ID 046d: c52b Logitech، Inc. جهاز استقبال موحد MaxPower 98mA Bus 001 Device 005: ID 1a40: 0101 Terminus Technology Inc. Hub MaxPower 100mA Bus 001 Device 010: ID 125f: c93a A-DATA Technology Co.، Ltd. 4GB Pen Drive MaxPower 480mA Bus 001 Device 003: ID 04f2: b424 Chicony Electronics Co.، Ltd MaxPower 500mA Bus 001 Device 001: ID 1d6b: 0002 Linux Foundation 2.0 root hub MaxPower 0mA

أوامر أخرى مفيدة للغاية هي جهاز USB:٪ s, hwinfo، أو ، على سبيل المثال ، إذا كان لدينا مسار جهاز (داخل / dev /) ، فيمكننا أن نسأل النظام عن جميع المعلومات الممكنة عنه والأنظمة الفرعية التي يجب أن يمر بها. على سبيل المثال ، إذا قمنا بتوصيل قرص صلب USB ، لكي نتمكن من معرفة كيفية استخدام الجهاز ، نحتاج إلى برنامج تشغيل SCSI (لكونه / dev / sdX) ، نحتاج أيضًا إلى محرك تخزين USB ، والذي يعمل من خلال منفذ USB ، الذي ينتمي إلى محور ، متصل بمنفذ PCI ، من بين أنظمة وسيطة أخرى. كل ما يمكن أن نرى به

$ udevadm info --query = path --name = / dev / sdX - سمة المشي

o

$ udevadm info -a -n / dev / sdX

إذا أردنا المغامرة ، يمكننا أيضًا الدخول / sys / bus / usb وننظر إلى كل شيء هناك ، سنرى الكثير من المعلومات ، لكن لحسن الحظ ، تصنف الأوامر المذكورة أعلاه كل هذه المعلومات.

الامتيازات والأجهزة

لتنفيذ هذه المهمة ، سنحتاج إلى معرفة الجهاز الذي سنقوم به أعد الاتصال. للقيام بذلك ، يمكننا تشغيل:

$ dmesg | tail [الخميس 24 نوفمبر 19:50:04] sd 2016: 7: 0: 0: مرفق scsi generic sg0 type 3 [0] sd 798339.431677: 7: 0: 0: [sdc] 0 الكتل المنطقية 15806464 بايت: ( 512 جيجا بايت / 8.09 جيجا بايت) [7.54] sd 798339.431840: 7: 0: 0: [sdc] حماية الكتابة متوقفة [0] sd 798339.431848: 7: 0: 0: [sdc] تحسس الوضع: 0 00 00 00 [00] sd 798339.431988: 7: 0: 0: [sdc] فشل طلب بيانات ذاكرة التخزين المؤقت [0] sd 798339.431996: 7: 0: 0: [sdc] افتراض ذاكرة التخزين المؤقت لمحرك الأقراص: الكتابة من خلال [0] sdc: sdc798339.434157 sdc1 [2] sd 798339.446812 : 7: 0: 0: [sdc] قرص SCSI المتصل القابل للإزالة [0] امتدادات ISO 798360.808588: Microsoft Joliet المستوى 9660 [3] امتدادات ISO 798360.809353: RRIP_9660A

في هذا الإخراج ، سنرى أن الجهاز الذي نعمل معه هو مركز إيداع الأوراق المالية (سيكون sdc1 و sdc2 أقسامًا داخل هذا القرص). للحصول على الأمثلة التي سأستخدمها هذا الجهاز ، في حالتك سيكون عليك تصور الحساب الذي لديك.

في الأمثلة أدناه سأستخدم سودو لتنفيذ الأوامر بامتيازات جذر. على الرغم من أنه سيكون كافيًا أن يكون لديك مستخدم لديه إذن كافٍ. إذا أردنا رؤية الامتيازات الضرورية ، فقط افعلها ls ل الجهاز:

$ ls -latr / dev / sdc brw-rw ---- 1 قرص جذر 8 ، 32 نوفمبر 24 19:50 / dev / sdc

هناك نرى أن المالك هو الجذر والمجموعة أسطوانة. سيكون كافيًا أن يكون لديك مستخدم ينتمي إلى قرص المجموعة.

الطريقة الأولى: تعامل معها مثل قرص مضغوط / قرص DVD

إنه الأبسط على الإطلاق. بالتأكيد إذا كنت تستخدم جنو / لينكس لسنوات ، فعندما تعمل مع قرص مضغوط أو قرص DVD ، استخدمت أمر الإخراج. حسنًا ، تم استخدام الإخراج لفتح القرص المضغوط وتم استخدام الإخراج -t لإغلاق الدرج. حسنًا ، إذا قمنا بذلك قبل جهاز USB:

sudo eject -t / dev / sdc

يجب أن يظهر الجهاز كما لو قمنا بتوصيله مرة أخرى.

الطريقة الثانية. غير موصول و Virtual Plugged In

في بعض الأنظمة (طالما أن الجهاز يدعمها) ، عند إزالة جهاز USB بأمان ، يتوقف الجهاز عن التشغيل ولا يظهر الجهاز مرة أخرى. إنه نفس الشيء عندما تفعل:

udisksctl power-off -b / dev / sdc

في هذه الحالة، / ديف / مركز إيداع الأوراق المالية إنه جهازي ، ومن خلال هذا الأمر ، قام بمحاكاة فصل طاقة افتراضي.

المشكلة هي أن الآن / dev / sdc غير موجود ، والأكثر من ذلك ، إذا نظرنا إلى dmesg ، فسنحصل على شيء مثل هذا:

$ dmesg | ذيل [281954.693298] منفذ USB 1-5: فصل USB ، الجهاز رقم 3

لذلك إذا حاولنا باستخدام طريقة إخراج لن يعمل. ملاحظة: لقد أبرزت منفذ USB 1-5 وسنرى لماذا قريبا.

إذا كنت تعمل عن بعد ، فقد تكون هذه فكرة جيدة. تخيل أن لديك محركات أقراص USB متصلة بالنسخ الاحتياطي. عندما تقوم بعمل النسخ ، من الجيد أن يعرف النظام أن هناك أقراصًا متصلة ، ولكن عندما لا نستخدمها ، يجب علينا من ناحية أخرى توفير الطاقة وتجنب تآكل الأقراص ، لذلك من الأفضل قطع التيار ، من ناحية أخرى ، لا نريد أن ترى التطبيقات الضارة أنها موجودة هذه الأقراص حتى لا تصاب. (نعم ، يوجد في جنو / لينكس فيروسات).

كيف نربط التيار الآن؟

يجب أن نتصل بمنفذ USB ، لهذا يوجد مشروع يسمى قوة المحور (أقوم بربط مفترق المشروع الأصلي لأنه تم إصلاح الخلل هنا والذي يمكنه إزالة التيار من المزيد من الأجهزة وليس فقط الجهاز الذي نريده). هناك المزيد من المشاريع (مثل uhubctl) ، ولكن هذا ليس له تبعيات عندما نذهب إلى الترجمة ، فهو أيضًا مجرد ملف hubpower.c.
أولاً ، نقوم بتجميعها ،

$ دول مجلس التعاون الخليجي -o hubpower.c

الآن ، هل تتذكر الأرقام بالخط العريض من dmesg؟ حسنًا ، سنستخدمهم ، سيتعين علينا فصل الجهاز وإعادة توصيله ، مثل هذا:

sudo ./hubpower 1: 1 power 5 off Port 5 status: 0000 Power-Off $ sudo ./hubpower 1: 1 power 5 on Port 5 status: 0100 Power-On

إذا لم يكتشفنا الجهاز ، فيمكننا محاولة القيام بما يلي:

sudo ./hubpower 1: 1 تم إرسال طلب ربط سائق إلى النواة

بهذه الطريقة ، سنرى جهاز USB المتصل مرة أخرى.

إذا كنا لا نريد برنامج سي ... لدي في بيرل

يصعب تجميع برنامج C واختبار ما إذا كان ما سنفعله بسيطًا جدًا ، لذلك يمكننا تجربة هذا المنفذ الصغير في 10 أسطر مصنوعة في بيرل:

#! / bin / perl تتطلب "sys / ioctl.ph" ؛ جهاز $ = "05"؛ open (my $ usbdev،"> "،" / dev / bus / usb/ 001/001 ") ؛ $ data = pack ("H *"، "23010800". $ device. "000000FFFFFF8813") ؛ ioctl ($ usbdev، 0xC0185500، $ data) ؛ $ data = pack ("H *"، "23030800". $ device. "000000FFFFFF8813") ؛ ioctl ($ usbdev، 0xC0185500، $ data) ؛ قريب ($ usbdev) ؛

يجب أن نحترم جهاز $، رقم المنفذ (في حالتي كان 5) ، هو قيمة سداسية عشرية ، لذلك 10 سيكون A ، 11 سيكون B ، 15 سيكون F ، 16 سيكون 10 ... علينا أيضًا مراقبة الجهاز والحافلة ، التي نصل إليها من / dev / bus / usb /001/001، يجب أن تكون الأرقام بأصفار بادئة لأننا نستدعي هذا الملف.

كما نرى ، المفتاح موجود في ioctl () ، إنها وظيفة تتعامل مع معلمات الجهاز من ملف خاص في نظام الملفات. من بين القيم السداسية العشرية المستخدمة نجد 0xC0185500، ثابت يسمى USBDEVFS_CONTROL سنرسل بواسطته أمر تحكم إلى جهاز USB ، تنتمي الرموز الأخرى إلى طلب الفصل والاتصال (يمكنك العثور على مزيد من المعلومات في البرنامج المصنوع في C).

الطريقة الثالثة. إخفاء الجهاز وإظهاره

هناك طريقة أخرى لفصل الجهاز وهي:

صدى '1-5' | sudo tee / sys / bus / usb / drivers / usb / unind

ويمكننا استعادتها بالقيام بما يلي:

صدى '1-5' | sudo tee / sys / bus / usb / drivers / usb / bind

لا تتسبب هذه الطريقة في فصل كامل عن الجهاز. إنه فقط يجعل نظام التشغيل لا يتحدث إليه ويتم وضع العديد من الأجهزة ، عندما لا يرغب الكمبيوتر في معرفة أي شيء عنها ، في وضع الطاقة المنخفضة ، لأننا لن نطلب أي شيء.

الطريقة 4. ترخيص الجهاز

يتمثل الجانب السلبي لهذه الطريقة في أنه في العديد من الأنظمة يمكن إلغاء تنشيط المزيد من الأجهزة مؤقتًا ، وهو ليس ما نحتاجه فحسب ، بل نهاجم أيضًا محور USB بأكمله. فمثلا:

صدى $ 0 | sudo tee / sys / bus / usb / devices / usb1 / مصرح به $ echo 1 | sudo tee / sys / bus / usb / الأجهزة / usb1 / مصرح به

والتي ، بالطبع ، يمكننا تشغيل كل شيء على التوالي:

صدى $ 0 | sudo tee / sys / bus / usb / الأجهزة / usb1 / مصرح به ؛ صدى 1 | sudo tee / sys / bus / usb / الأجهزة / usb1 / مصرح به

يجب أن نكون حذرين ، إذا كان هناك المزيد من الأقراص المتصلة بمنفذ USB نفسه (ودائمًا ما تكون في أجهزة الكمبيوتر الخاصة بنا ، فإن العديد من منافذ USB أكثر مما نراه متصلة داخليًا بلوحة وصل ، لذلك توجد مجموعات من المنافذ بنفس منفذ USB والد، ضعها بطريقة ما.

الطريقة الخامسة. أعد تشغيل نظام USB الفرعي

إذا أردنا إعادة تشغيل نظام USB الفرعي. أي تحديث جميع أجهزة USB ، مثل فصلها وتوصيلها جميعًا ، فمن ناحية يمكننا تنزيل وحدة USB kernel وإعادة تحميلها:

sudo modprobe -r ehci_hcd $؛ sudo modprobe ehci_hcd # for USB2 $ sudo modprobe -r xhci_hcd؛ sudo modprobe xhci_hcd # من أجل USB3

على الرغم من أن بعض التوزيعات ، تتضمن أحدث إصدارات Ubuntu ومشتقاته ، ملحق وحدات USB متكاملة ولا يمكن تنزيلها. من ناحية أخرى ، قد لا يسمح لنا النظام بتنزيلها لأنها قيد الاستخدام بسبب الوحدات النمطية الأخرى (الطابعات والتخزين وأجهزة الواجهة وما إلى ذلك) ، وإذا بدأنا في تنزيل الوحدات النمطية وكسر الأشياء ، فقد نضطر إلى إعادة تشغيل الكمبيوتر. في نهايةالمطاف. لذلك ، بطريقة أخرى يمكننا القيام بما يلي:

صدى $0000:00:14.5'| sudo tee / sys / bus / pci / driver / xhci_hcd / إلغاء ربط $ echo '0000:00:14.5'| sudo tee / sys / bus / pci / driver / xhci_hcd / ربط

للعثور على أجهزتنا ، يمكننا عمل ls داخل / sys / bus / pci / drivers / xhci_hcd ، ستظهر عدة أشياء ، وعلينا البحث عن جهاز يشبه هذا aaaa: bb: cc: dd.e. قد لا يأتي منفذ USB الخاص بك كـ xhci_hcd (USB3) ، ولكن بدلاً من ذلك ehci_hcd (USB2)


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   كريستيان قال

    مقال ممتاز!

    1.    جاسبرفم قال

      شكرا جزيلا لك كريستيان! أتمنى أن تكون قد وجدتها مفيدة.

  2.   أنطونيو خوان قال

    لا يُقال في هذه المقالة أنه كلما كنت ستطرحه ، يكون على الجانب الآخر من الجانب الصحيح وعليك قلبه ... ههههه. مقالة رائعة.

    1.    جاسبرفم قال

      شكرا أنطونيو خوان! حسنًا ، انظر ، أنت لا تعرف عدد المرات التي حدث فيها ذلك معي بينما كنت أحاول كل ما وضعته في المنشور! 🙂

  3.   رومسات قال

    عظيم. عنصر متفوق. يجب أن يكون بعنوان: "تعرف على نظام Linux ببساطة عن طريق فصل محرك أقراص USB وتوصيله." تهانينا.
    تحياتي من ملقة.

    1.    جاسبرفم قال

      حسنًا ، نعم ، لا أعرف ما إذا كان شخص ما سيبدأ البرمجة في C والوصول إلى الأجهزة من هذا المنشور! أيضا من ملقة !! نحن في كل مكان 🙂

  4.   HO2Gi قال

    مقال مثير للإعجاب. لقد تجاوزت هذه المواد.

    1.    جاسبرفم قال

      شكرا HO2Gi !! على مدونتي الشخصية ( http://totaki.com/poesiabinaria ) هناك أيضًا الكثير من البرامج التعليمية للأسلوب 🙂

  5.   آتاهوالبا قال

    شكرا جزيلا صديقي. أنا أبدأ في لينكس ، وتحديداً في لينكس مينت ، ولدي المشكلة التالية: في وحدة التحكم أستطيع أن أرى أن هاتفي متصل بالجهاز ولكن ليس في مدير الملفات. وبالتالي لا يمكنني استخدامه كمودم للاتصال بالإنترنت. ماذا استطيع ان افعل؟

    1.    جاسبار فرنانديز قال

      هناك هواتف لا تسمح لك بالاتصال كمودم ، ولكن يمكنك إجراء التوصيل

  6.   ميلاتسو قال

    وثائق ممتازة!
    شكرا لك على الوقت الذي استغرقته لمشاركة التجربة.
    أنا أستخدمه كمرجع لنوع آخر من المشاكل التي أواجهها: فصل منافذ USB في Ubuntu (# 42 ~ Precision1-Ubuntu SMP الأربعاء 14 أغسطس 15:31:16 بالتوقيت العالمي المنسق 2013)
    يأتي وقت يقوم فيه النظام بإلقاء -110 في dmesg وإعادة تشغيل جهاز الكمبيوتر ، من المفترض أن يكون الفشل بسبب نقص الطاقة في USB حيث يتم توصيل الجهاز (USB3.0).

    الآن أستخدم lsusb -v للتحقق من مستوى طاقة الجهاز ولكنه يرمي 2mA ، وهو أمر سخيف تمامًا ... فقط مصابيح LED تستهلك أكثر من ذلك ...

    أقوم بتوصيل مودم huawei E4 USB-8372G ، لكن القوة القصوى تشير إلى 2mA ، وهو أمر لا يصدق ، والآن تغير الشك ونشأ آخرون:
    هل MaxPower سمة تأتي بشكل افتراضي على الجهاز أو في نظام التشغيل؟
    هل هي معلمة للحد الأقصى للطاقة التي سيوفرها منفذ USB؟
    في حالة كونها معلمة
    هل يمكن تعديل هذه المعلمة وضبطها على الحد الأقصى الذي يوفره منفذ USB (900 مللي أمبير - 3.0 / 500 مللي أمبير - 2.0)؟
    في حالة عدم كونه معلمة ،
    هل هي قيمة قياس في الوقت الفعلي لاستهلاك USB (غير مرجح)؟
    إذا كان خيارًا آخر ، فيرجى توضيح ذلك لي لأن لدي شكوك حول المعلومات المرجعية.

    لدي العديد من الشكوك بشأن قيمة MaxPower هذه ، إذا كان لديك أي معلومات إضافية ، فسأكون ممتنًا للغاية.

    lsusb -v 2> / dev / null | egrep "^ Bus | MaxPower | bDeviceClass | iProduct"

    ناقل 002 الجهاز 006: المعرف 1a86: 7523 QinHeng Electronics HL-340 USB-Serial محول
    bDeviceClass 255 فئة خاصة بالبائع
    iProduct 2 USB2.0-المسلسل
    ماكس باور 96 مللي أمبير
    ناقل 002 الجهاز 008: المعرف 12d1: 14db شركة Huawei Technologies Co.، Ltd.
    bDeviceClass 2 الاتصالات
    iProduct 2 HUAWEI_MOBILE
    ماكس باور 2 مللي أمبير

  7.   Anonimo قال

    هل يمكن تطبيقه على النوافذ؟

  8.   شيلو قال

    شكرا جزيلا. مع udisksctl power-off -b / dev / sdc على القرص الخارجي ، كان ذلك كافياً لحل الصداع. ألن يكون من الأفضل إذا كان لدى إلغاء التحميل خيار للقيام بذلك بنفسه؟

  9.   ماريسا قال

    الله ما هذا اللعنة! هل قرأ أحد هذه الوصية بأكملها؟ وفوق اللوحة ، ما زلنا لا نعرف كيفية إيقاف تشغيل واجهة الصوت DAC / USB ، أو الطابعة ، أو الكمبيوتر اللوحي الرسومي ... حسنًا ، لا شيء ليس ارتفاعًا أو قرصًا خارجيًا. يا لها من مضيعة للوقت ...