יום שלישי, דצמבר 19, 2017

שימוש ב רספבריי פי בשביל להעביר התקני USB ע"ג רשת

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

כשמחברים התקן USB למחשב מקבלים את הדבר הנפלא הבא:

[  643.190985] ehci-pci 0000:00:13.2: port 1 reset error -110
[  644.090985] ehci-pci 0000:00:13.2: port 1 reset error -110                                                                                                          
[  644.926983] ehci-pci 0000:00:13.2: port 1 reset error -110                                                                                                          
[  645.762989] ehci-pci 0000:00:13.2: port 1 reset error -110                                                                                                          
[  646.594989] ehci-pci 0000:00:13.2: port 1 reset error -110                                                                                                          
[  647.220116] usb usb1-port1: Cannot enable. Maybe the USB cable is bad? 

תודה ללינוס ט'כירו וגרג קיימת מערכת בשם usbip שאפשר להבין לפי השם שלה מה היא עושה, היא מאפשרת לנתב תקשורת usb ע"ג IP.

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

התקנתי את usbip בפיי שלי:
sudo apt-get install usbip
לאחר מכן הפעלתי את הדמון שלו על הפיי:
sudo usbip -D

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

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo usbip bind -b busid
ומהמחשב שצריך לקבל התקנים :
sudo modprobe usbip-core
sudo modprobe vhci-hcd
sudo usbip attach -r mypiip -b busid

מאותו הרגע המחשב המארח ראה את ההתקנים כאילו היו מחוברים מקומית :

[ 2277.264118] usb 4-1: new high-speed USB device number 2 using vhci_hcd
[ 2277.408092] usb 4-1: SetAddress Request (2) to port 0
[ 2277.512449] usb 4-1: New USB device found, idVendor=0951, idProduct=1603
[ 2277.512458] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2277.512462] usb 4-1: Product: DataTraveler 2.0
[ 2277.512467] usb 4-1: Manufacturer: Kingston
[ 2277.512472] usb 4-1: SerialNumber: 0000000000000000000
[ 2278.116148] usb-storage 4-1:1.0: USB Mass Storage device detected
[ 2278.116659] scsi host4: usb-storage 4-1:1.0
[ 2278.117008] usbcore: registered new interface driver usb-storage
[ 2278.145512] usbcore: registered new interface driver uas


על מנת להקל את החיים כתבתי טסריט קטן בשרת שמייצא רק התקנים שאני מתכנן לשתף (כל מה שהוא לה התקן מקומי שבמקרה הזה הוא 1-1.1) :
#/bin/bash
modprobe usbip-core
modprobe usbip-host
usbipd -D
usbip list -l | grep -vvv 1-1.1|grep busid|sed -rne 's/.*(1-[0-9][0-9]*\.[0-9][0-9]*) \(.*/\1/p'|xargs  -I {} usbip bind -b {}



וכאשר אני רוצה לצפות מה המחשב המארח מייצא :
sudo usbip list -r pi

Exportable USB devices
======================
 - pi
      1-1.5: Huawei Technologies Co., Ltd. : E353/E3131 (12d1:14db)
           : /sys/devices/platform/soc/20980000.usb/usb1/1-1/1-1.5
           : Communications / unknown subclass / unknown protocol (02/00/00)
           :  0 - Communications / Ethernet Networking / unknown protocol (02/06/00)
           :  1 - CDC Data / unknown subclass / unknown protocol (0a/06/00)
           :  2 - Mass Storage / SCSI / Bulk-Only (08/06/50)



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

אין תגובות:

הוסף רשומת תגובה