5 דרכים לנתק ולחבר התקן USB מבלי להוריד את הידיים מהמקלדת

בהזדמנויות רבות, כאשר אנו משתמשים במחשב שלנו אנו מנתקים התקן USB (בבטחה, כפי שהוא חייב להיות), ומיד לאחר מכן, אנו מבינים ששכחנו להעתיק קובץ או שעלינו לוודא כי הנתונים היו ביחידה שלנו. במקרים אלה, בדרך כלל מאוד שימושי לנתק וירטואלי את כונני ה- USB בעבודה מרחוק.

לאחר שהוצאנו את המכשיר, אנו כבר לא רואים אותו ברשימת המכשירים שלנו, אך הכונן הקשיח או ה- pendrive עדיין מחובר על ידי יציאת ה- USB, ובהפצות רבות כיום, לאחר שהוצאנו את הכונן בבטחה, אנו גם לא רואים את המכשיר אנחנו לא יכולים לעשות הר מהטרמינל שלנו. הפיתרון המהיר ביותר הוא לנתק את הכבל ולחבר אותו מחדש, בחלק מהמקרים, בגלל עצלות הצורך לקום או בגלל שאנחנו ניגשים למחשב שאנחנו לא מולו ואין אף אחד בסביבה, אנחנו לא יכולים לעשות את זה.

מידע על התקני USB

לפני שנתחיל, בואו נראה כיצד לקבל מידע על התקני USB המחוברים למערכת. לשם כך אנו יכולים להשתמש lsusb, אשר יפרטו את המכשירים המחוברים כעת. שמתי דוגמאות למה שאני מקבל במחשב שלי כרגע, אבל אולי זה שונה מאוד ממה שאתה מקבל:

$ lsusb אוטובוס 002 מכשיר 001: מזהה 1d6b: 0003 Linux Foundation 3.0 רכזת שורש אוטובוס 001 מכשיר 006: מזהה 8087: 0a2a אינטל קורפ. : 001 Terminus Technology Inc. Hub Bus 007 מכשיר 046: ID 52f: c001a A-DATA Technology Co., Ltd. 005GB Pen Drive Bus 1 מכשיר 40: ID 0101f001: b010 Chicony Electronics Co., Ltd. אוטובוס 125 מכשיר 93: ID 4d001b : 003 רכזת שורש Linux Foundation 04

אם אנו רוצים מידע נוסף, נוכל להשתמש בשינוי -t אשר יראה לנו פלט בצורה של עץ עם מידע על המודולים:

$ lsusb -t /: אוטובוס 02. יציאה 1: Dev 1, Class = root_hub, Driver = xhci_hcd / 8p, 5000M /: אוטובוס 01. יציאה 1: Dev 1, Class = root_hub, Driver = xhci_hcd / 16p, 480M | __ יציאה 4: Dev 3, אם 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, 480M | __ יציאה 6: Dev 5, אם 0, Class = Hub, Driver = hub / 4p, 12M | __ יציאה 4: Dev 7, אם 0, Class = התקן ממשק אנושי, מנהל התקן = usbhid, 12M | __ יציאה 4: Dev 7, אם 1, Class = התקן ממשק אנושי, Driver = usbhid, 12M | __ יציאה 4: Dev 7, If 2, Class = התקן ממשק אנושי, Driver = usbhid, 12M | __ יציאה 9: Dev 6, אם 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 hub root MaxPower 0mA Bus 001 Device 006: ID 8087: 0a2a Intel Corp. MaxPower 100mA אוטובוס 001 מכשיר 007: ID 046d: c52b Logitech, Inc. מאחד מקלט MaxPower 98mA אוטובוס 001 מכשיר 005: ID 1a40: 0101 Terminus Technology Inc. רכזת MaxPower 100mA אוטובוס 001 מכשיר 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4GB כונן עט MaxPower 480mA אוטובוס 001 מכשיר 003: ID 04f2: b424 Chicony Electronics Co., Ltd. MaxPower 500mA אוטובוס 001 מכשיר 001: ID 1d6b: 0002 Linux Foundation 2.0 רכזת שורש MaxPower 0mA

פקודות אחרות מאוד שימושיות הן התקני USB, hwinfo, או, למשל, אם יש לנו נתיב של מכשיר (בתוך / dev /), נוכל לבקש מהמערכת את כל המידע האפשרי אודותיה ותתי מערכות שעליה לעבור. לדוגמא, אם אנו מחברים דיסק קשיח USB, כדי שנוכל לראות כיצד משתמשים במכשיר, אנו זקוקים למנהל התקן SCSI (להיות / dev / sdX), אנו זקוקים גם למנהל התקן אחסון USB, העובד דרך יציאת ה- USB, השייכת רכזת, המחוברת ליציאת PCI, בין מערכות ביניים אחרות. כל מה שיכולנו לראות איתו

$ udevadm מידע - query = path --name = / dev / sdX - attribute-walk

o

$ udevadm מידע -a -n / dev / sdX

אם אנחנו רוצים להסתכן, אנחנו יכולים גם להיכנס / sys / bus / usb ותסתכל על כל מה שיש, נראה הרבה מידע, אך למרבה המזל הפקודות הנ"ל מסווגות את כל המידע הזה.

הרשאות ומכשירים

כדי לבצע משימה זו נצטרך לדעת לאיזה מכשיר אנו הולכים להתחבר מחדש. לשם כך אנו יכולים לרוץ:

$ dmesg | זנב [ה '24 בנובמבר 19:50:04 2016] sd 7: 0: 0: 0: מצורף scsi generic sg3 type 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512 בתים בלוקים לוגיים: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] כתיבת Protect אינה כבויה [798339.431848] sd 7: 0: 0: 0: [sdc] Mode Sense: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] בקשת נתוני המטמון נכשלה [798339.431996] sd 7: 0: 0: 0: [sdc] בהנחה שמטמון הכונן: כתוב דרך [798339.434157] sdc: sdc1 sdc2 [798339.446812] sd 7 : 0: 0: 0: [sdc] דיסק נשלף SCSI מצורף [798360.808588] תוספות ISO 9660: Microsoft Joliet דרגה 3 [798360.809353] תוספות ISO 9660: RRIP_1991A

בפלט זה נראה שהמכשיר שאיתו אנחנו עובדים Sdc (sdc1 ו- sdc2 יהיו מחיצות בתוך אותו דיסק). לדוגמאות אשתמש במכשיר זה, במקרה שלך תצטרך לדמיין איזה חשבון יש לך.

בדוגמאות להלן אשתמש sudo לבצע את הפקודות עם הרשאות שורש. אם כי זה יהיה מספיק שיהיה משתמש עם הרשאה מספקת. אם אנו רוצים לראות את ההרשאות הדרושות, פשוט עשו זאת ls למכשיר:

$ ls -latr / dev / sdc brw-rw ---- 1 דיסק שורש 8, 32 בנובמבר 24:19 / dev / sdc

שם אנו רואים שהבעלים הוא שורש והקבוצה דיסק. זה יהיה מספיק שיהיה משתמש השייך לדיסק הקבוצה.

שיטה 1. התייחס אליו כמו CD / DVD

זה הפשוט מכולם. בוודאי אם אתה משתמש ב- GNU / Linux במשך שנים, כשעבדת עם CD-ROM או DVD השתמשת בפקודת ההוצאה. ובכן, פליטה שימשה לפתיחת ה- CDROM והוצאת -t שימשה לסגירת המגש. ובכן, אם נעשה זאת לפני התקן ה- USB:

$ sudo הוצא -t / dev / sdc

המכשיר אמור להופיע כאילו חיברנו אותו שוב.

שיטה 2. לא מחובר לחשמל וירטואלי

במערכות מסוימות (כל עוד החומרה תומכת בכך), כאשר אתה מסיר את מכשיר ה- USB בבטחה, המכשיר מפסיק לפעול והמכשיר כבר לא מופיע. זה אותו הדבר כמו כשאתה עושה:

כיבוי udisksctl -b / dev / sdc

במקרה זה, / dev / sdc זה המכשיר שלי, ועם פקודה זו הוא מדמה ניתוק חשמל וירטואלי.

הבעיה היא שעכשיו / dev / sdc לא קיים, מה גם שאם נסתכל על dmesg, נקבל משהו כזה:

$ dmesg | זנב [281954.693298] USB 1-5: ניתוק USB, מספר מכשיר 3

אז אם ננסה בשיטה של מַפלִיט זה לא יעבוד. הערה: הדגשתי USB 1-5 ונראה מדוע בקרוב.

אם אתה עובד מרחוק, זה יכול להיות רעיון טוב. דמיין שיש לך כונני USB מחוברים לגיבוי. כשאתה מייצר את העותקים, טוב למערכת לדעת שישנם דיסקים מחוברים, אך כאשר איננו משתמשים בהם מצד אחד עלינו לחסוך באנרגיה ולהימנע משחיקת דיסק, ולכן עדיף לנתק את הזרם, לעומת זאת, אנחנו לא רוצים שאפליקציות זדוניות יראו שהן קיימות את הדיסקים האלה כדי שלא יידבקו. (כן, ישנם וירוסים ב- GNU / Linux).

איך נחבר את הזרם עכשיו?

עלינו להתקשר ליציאת ה- USB, לשם כך יש פרויקט שנקרא כוח רכזת (אני מקשר למזלג של הפרויקט המקורי מכיוון שכאן תוקן באג שיכול להסיר את הזרם ממכשירים נוספים ולא רק מזה שאנחנו רוצים). ישנם פרויקטים נוספים (כמו uhubctl), אך אין לכך תלות כאשר אנו הולכים לקומפילציה, זהו גם רק קובץ hubpower.c.
ראשית, אנו מרכיבים אותו,

$ gcc -o hubpower hubpower.c

עכשיו, האם אתה זוכר את המספרים המודגשים מה- dmesg? ובכן, אנו נשתמש בהם, נצטרך לנתק את המכשיר ולחבר אותו מחדש, כך:

$ sudo ./hubpower 1: 1 power 5 off יציאה 5 מצב: 0000 Power-Off $ sudo ./hubpower 1: 1 power 5 on Port 5 status: 0100 Power-On

אם המכשיר לא מזהה אותנו, נוכל לעשות:

$ sudo ./hubpower 1: 1 בקשה לאגד קישור למנהיג שנשלח לליבה

באופן זה, נראה שוב את מכשיר ה- USB המחובר שלנו.

אם אנחנו לא רוצים תוכנית C ... יש לי אותה בפרל

קשה לגבש תוכנית C ולבדוק אם מה שאנחנו הולכים לעשות הוא פשוט מאוד, כך שנוכל לנסות את היציאה הקטנה הזו בעשרה שורות המיוצרות בפרל:

#! / bin / perl דורשים "sys / ioctl.ph"; $ device = "05"; פתח ($ usbdev שלי,"> "," / dev / bus / usb/ 001/001 "); $ data = pack ("H *", "23010800". $ device. "000000FFFFFF8813"); ioctl ($ usbdev, 0xC0185500, $ data); $ data = חבילה ("H *", "23030800". $ מכשיר. "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).

שיטה 3. הסתרה והצגת המכשיר

דרך נוספת לנתק את המכשיר יכולה להיות:

הד '1-5' | sudo tee / sys / bus / usb / drivers / usb / unbind

ונוכל לשחזר זאת על ידי ביצוע:

הד '1-5' | sudo tee / sys / bus / usb / drivers / usb / bind

שיטה זו אינה גורמת לניתוק מוחלט של המכשיר. זה רק גורם למערכת ההפעלה לא לדבר איתה ומכשירים רבים, כאשר מחשב לא רוצה לדעת עליהם דבר, מועברים למצב צריכת חשמל נמוכה, מכיוון שאנחנו לא הולכים לבקש שום דבר.

שיטה 4. אישור מכשירים

החיסרון של שיטה זו הוא שבמערכות רבות ניתן להשבית זמנית התקנים נוספים, שהם לא רק זה שאנחנו צריכים, אלא אנו תוקפים גם רכזת USB שלמה. לדוגמה:

הד $ 0 | sudo tee / sys / bus / usb / התקנים / usb1 / הד $ מורשה 1 | sudo טי / sys / bus / usb / התקנים / usb1 / מורשה

מה שאנחנו יכולים כמובן להריץ הכל בשורה:

הד $ 0 | sudo tee / sys / bus / usb / התקנים / usb1 / מורשה; הד 1 | sudo טי / sys / bus / usb / התקנים / usb1 / מורשה

עלינו להיזהר, אם יש יותר דיסקים המחוברים לאותו יציאת USB (וכמעט תמיד במחשבים שלנו, כמה יציאות USB ממה שאנחנו רואים מחוברות באופן פנימי לרכזת, כך שישנן קבוצות של יציאות עם אותו USB אבא, שים את זה בצורה כלשהי.

שיטה 5. אתחל מחדש את תת מערכת ה- USB

אם אנו רוצים להפעיל מחדש את תת מערכת ה- USB. כלומר, רענן את כל התקני ה- USB, כגון ניתוק וחיבור כולם, מצד אחד נוכל להוריד ולהטעין מחדש את מודול ליבת ה- USB:

$ sudo modprobe -r ehci_hcd; sudo modprobe ehci_hcd #For USB2 $ sudo modprobe -r xhci_hcd; sudo modprobe xhci_hcd # עבור USB3

למרות שחלק מההפצות, כולל הגרסאות האחרונות של אובונטו ונגזרות, כוללות את מודולי USB משולבים ולא ניתן להוריד אותם. מצד שני, ייתכן שהמערכת לא תאפשר לנו להוריד אותם מכיוון שהם נמצאים בשימוש בגלל מודולים אחרים (מדפסות, אחסון, התקני ממשק וכו '), ואם נתחיל להוריד מודולים ולשבור דברים, ייתכן שנצטרך להפעיל מחדש את המחשב. בסופו של דבר. אז, בדרך אחרת אנחנו יכולים לעשות:

הד $ '0000:00:14.5'| sudo tee / sys / bus / pci / drivers / xhci_hcd / לבטל $ echo '0000:00:14.5'| sudo tee / sys / bus / pci / drivers / xhci_hcd / bind

כדי למצוא את המכשיר שלנו, אנחנו יכולים לעשות 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 (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   כריסטיאן דיג'ו

    מאמר מעולה!

    1.    gasparfm דיג'ו

      תודה רבה כריסטיאן! אני מקווה שמצאת את זה מועיל.

  2.   אנטוניו חואן דיג'ו

    במאמר זה לא נאמר שבכל פעם שאתה הולך לשים את זה זה בצד ההפוך לזה הנכון ואתה צריך להפוך את זה ... hehehe. מאמר נהדר.

    1.    gasparfm דיג'ו

      תודה אנטוניו חואן! ובכן תראה, אתה לא יודע כמה פעמים זה קרה לי בזמן שניסיתי את כל מה שהכנסתי לתפקיד! 🙂

  3.   רומסאט דיג'ו

    גדול. פריט מעולה. זה צריך להיות שכותרתו: "למד על מערכת לינוקס פשוט על ידי ניתוק וחיבור מקל ה- USB שלך." מזל טוב.
    ברכות ממלאגה.

    1.    gasparfm דיג'ו

      ובכן כן, אני לא יודע אם מישהו יתחיל לתכנת ב- C ולגשת למכשירים מהפוסט הזה! גם ממלאגה !! אנחנו בכל מקום 🙂

  4.   HO2Gi דיג'ו

    מאמר מרשים. יצאתם החוצה עם חומר כזה.

    1.    gasparfm דיג'ו

      תודה HO2Gi !! בבלוג האישי שלי ( http://totaki.com/poesiabinaria ) יש גם הרבה הדרכות בסגנון 🙂

  5.   אטחואלפה דיג'ו

    תודה רבה חבר. אני מתחיל בלינוקס, במיוחד במנטה לינוקס, ויש לי את הבעיה הבאה: במסוף אני יכול לראות שהטלפון שלי מחובר למכונה אבל לא למנהל הקבצים. ולכן אני לא יכול להשתמש בו כמודם להתחברות לאינטרנט. מה אני יכול לעשות?

    1.    גספר פרננדז דיג'ו

      ישנם טלפונים שאינם מאפשרים לך להתחבר כמודם, אך אתה יכול לבצע קשירה

  6.   מילאצו דיג'ו

    תיעוד מעולה!
    תודה שפניתם לחלוק את החוויה.
    אני משתמש בו כהפניה לסוג אחר של בעיות שיש לי: ניתוק יציאות USB באובונטו (# 42 ~ מדויק 1-אובונטו SMP רביעי 14 באוגוסט 15:31:16 UTC 2013)
    יש זמן שהמערכת זורקת -110 ב- dmesg ומפעילה מחדש את המחשב, ההנחה היא כי התקלה נובעת מחוסר חשמל ב- USB שבו המחבר מחובר (USB3.0).

    עכשיו אני משתמש ב- lsusb -v כדי לבדוק את רמת ההספק של המכשיר אבל הוא זורק 2mA, וזה אבסורדי לחלוטין ... רק הנוריות דורשות יותר מזה ...

    אני מחבר מודם USB-4G huawei E8372, אולם הכוח המקסימלי מציין 2mA, וזה מדהים, עכשיו הספק השתנה ואחרים צצו:
    האם MaxPower הוא מאפיין שמגיע כברירת מחדל במכשיר או במערכת ההפעלה?
    האם זה פרמטר של הספק מרבי שיציאת ה- USB תספק?
    במקרה שהוא פרמטר
    האם ניתן לשנות פרמטר זה ולהגדיר אותו למקסימום הניתן על ידי יציאת ה- USB (900mAh - 3.0 / 500mAh - 2.0)?
    במקרה שזה לא פרמטר,
    האם זהו ערך מדידה בזמן אמת של צריכת ה- USB (לא סביר)?
    אם זו אפשרות אחרת אנא הסבירו לי כיוון שאני בספק לגבי המידע ההפניה.

    יש לי כמה ספקות לגבי ערך MaxPower זה, אם יש לך מידע נוסף, אני אודה מאוד.

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

    אוטובוס 002 מכשיר 006: ID 1a86: 7523 QinHeng Electronics HL-340 מתאם USB סידורי
    מחלקה ספציפית לספק. bDeviceClass 255
    iProduct 2 USB2.0-סידורי
    MaxPower 96mA
    אוטובוס 002 מכשיר 008: מזהה 12d1: 14db Huawei Technologies Co., Ltd.
    תקשורת bDeviceClass 2
    iProduct 2 HUAWEI_MOBILE
    MaxPower 2mA

  7.   אנונימי דיג'ו

    האם ניתן להחיל אותו על חלונות?

  8.   Chelo דיג'ו

    תודה רבה. עם כיבוי udisksctl -b / dev / sdc בדיסק החיצוני שלי זה הספיק כדי לפתור את כאב הראש. לא עדיף אם לביטול ההרכבה תהיה אפשרות לעשות זאת בעצמו?

  9.   מריסה דיג'ו

    אלוהים מה לעזאזל! מישהו קרא את כל הצוואה הזו? ומעל אחרי הלוח אנחנו עדיין לא יודעים איך לכבות ממשק צליל DAC / USB, מדפסת, טאבלט גרפי ... בקיצור, שום דבר שהוא לא ספייק או דיסק חיצוני. איזה בזבוז זמן ...