USB از طریق IP در خانه

گاهی اوقات می خواهید با دستگاهی که از طریق USB متصل شده است بدون اینکه آن را روی میز کنار لپ تاپ خود قرار دهید کار کنید. دستگاه من یک حکاکی چینی با لیزر 500 مگاواتی است که در تماس نزدیک کاملاً ناخوشایند است. علاوه بر خطر فوری برای چشم، محصولات احتراق سمی در حین کار با لیزر آزاد می شوند، بنابراین دستگاه باید در مکانی با تهویه مناسب و ترجیحا از افراد جدا شود. چگونه می توان چنین وسیله ای را کنترل کرد؟ من به طور تصادفی پاسخ این سوال را هنگام مرور مخزن OpenWRT یافتم به این امید که استفاده شایسته ای از روتر قدیمی D-Link DIR-320 A2 پیدا کنم. برای اتصال، تصمیم گرفتم از چیزی که قبلا در Habré توضیح داده شد استفاده کنم. تونل USB over IP، با این حال، تمام دستورالعمل های نصب آن ارتباط خود را از دست داده اند، بنابراین من خودم را می نویسم.

OpenWRT یک سیستم عامل است که نیازی به معرفی ندارد، بنابراین من نصب آن را توضیح نمی دهم. برای روتر خود، آخرین نسخه پایدار OpenWrt 19.07.3 را گرفتم و آن را به عنوان مشتری به نقطه دسترسی Wi-Fi اصلی وصل کردم و حالت را انتخاب کردم. شبکه، تا فایروال را عذاب ندهد.

بخش سرور

طبق آن عمل می کنیم دستورالعمل های رسمی. پس از اتصال از طریق ssh، بسته های لازم را نصب کنید.

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-client

سپس، دستگاه خود را به پورت USB روتر متصل می کنیم (در مورد من، دستگاه ها: یک هاب USB، یک فلش درایو که سیستم فایل روتر روی آن نصب شده است (به دلیل کمبود فضا در حافظه داخلی)، و مستقیماً حکاکی).

بیایید سعی کنیم لیستی از دستگاه های متصل را نمایش دهیم:

root@OpenWrt:~# usbip list -l

خالی.

با جستجوی گوگل مقصر پیدا شد، معلوم شد که یک کتابخانه است libudev-fbsd.
ما آخرین نسخه کاری را از مخزن به صورت دستی بیرون می آوریم libudev_3.2-1 از نسخه OpenWRT 17.01.7 برای معماری شما، در مورد من libudev_3.2-1_mipsel_mips32.ipk است. با استفاده از wget/scp، آن را در حافظه روتر دانلود کرده و دوباره نصب کنید

root@OpenWrt:~# opkg remove --force-depends libudev-fbsd
root@OpenWrt:~# opkg install libudev_3.2-1_mipsel_mips32.ipk

ما بررسی می کنیم:

root@OpenWrt:~# usbip list -l
 - busid 1-1.1 (090c:1000)
   Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) : Flash Drive (090c:1000)

 - busid 1-1.4 (1a86:7523)
   QinHeng Electronics : HL-340 USB-Serial adapter (1a86:7523)

یک مرد چینی متصل به هاب USB یک bsuid دریافت کرد 1-1.4. یاد آوردن.

حالا بیایید دیمون را شروع کنیم:

root@OpenWrt:~# usbipd -D

و چینی ها را مقید کنید

root@OpenWrt:~# usbip bind -b 1-1.4
usbip: info: bind device on busid 1-1.4: complete

بیایید بررسی کنیم که همه چیز کار می کند:

root@OpenWrt:/home# netstat -alpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3240            0.0.0.0:*               LISTEN      1884/usbipd

برای اتصال بیشتر دستگاه به صورت خودکار، اجازه دهید ویرایش کنیم /etc/rc.localبا اضافه کردن قبل خروج 0 موارد زیر:

usbipd -D &
sleep 1
usbip bind -b 1-1.4

سمت مشتری

بیایید سعی کنیم دستگاه را با استفاده از دستورالعمل های بالا از openwrt.org به ویندوز 10 متصل کنیم. فوراً می گویم: این ایده محکوم به شکست است. اولا، فقط ویندوز 7 x64 در نظر گرفته می شود. ثانیاً، پیوندی به موضوعی در sourceforge.net داده می‌شود که پیشنهاد می‌کند یک درایور وصله‌شده در سال 2014 از Dropbox دانلود کنید. وقتی سعی می کنیم آن را تحت ویندوز 10 اجرا کنیم و به دستگاه خود متصل شویم، با خطای زیر مواجه می شویم:

c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip for windows ($Id$)

*** ERROR: cannot find device

این به این دلیل است که کلاینت با سرور ساخته شده برای هسته قدیمی تر از نسخه 3.14 کار نمی کند.
سرور usbip برای OpenWRT 19.07.3 بر روی هسته 4.14.180 ساخته شده است.

در ادامه جستجوی خود، با توسعه فعلی یک کلاینت ویندوز برای مواجه شدم گیتهاب. بسیار خوب، پشتیبانی از Windows 10 x64 ذکر شده است، اما کلاینت فقط یک کلاینت آزمایشی است، بنابراین تعدادی محدودیت وجود دارد.

بنابراین، ابتدا درخواست نصب گواهی را می دهند و دو بار. خوب، اجازه دهید آن را در Trusted Root Certification Authority و Trusted Publishers قرار دهیم.

در مرحله بعد، باید سیستم عامل را در حالت تست قرار دهید. این کار توسط یک تیم انجام می شود

bcdedit.exe /set TESTSIGNING ON

بار اول موفق نشدم، در مسیر قرار گرفتم بوت امن. برای غیرفعال کردن آن، باید در UEFI راه‌اندازی مجدد شده و راه‌اندازی امن را غیرفعال کنید. برخی از مدل های لپ تاپ ممکن است نیاز به تنظیم رمز عبور سرپرست داشته باشند.

پس از آن، ویندوز را بوت کنید و انجام دهید bcdedit.exe /set TESTSIGNING ON
ویندا می گوید همه چیز اوکی است. دوباره راه اندازی مجدد می کنیم و در گوشه سمت راست پایین عبارت Test Mode، نسخه و شماره ساخت سیستم عامل را می بینیم.

این همه دستکاری برای چیست؟ برای نصب درایور بدون امضا USB/IP VHCI. پیشنهاد می‌شود این کار را با دانلود فایل‌های usbip.exe، usbip_vhci.sys، usbip_vhci.inf، usbip_vhci.cer، usbip_vhci.cat و اجرای با حقوق مدیر انجام دهید.

usbip.exe install

یا روش دوم نصب Legacy Hardware به صورت دستی. من گزینه دوم را انتخاب کردم، اخطاری در مورد نصب درایور بدون امضا دریافت کردم و با آن موافقت کردم.

در مرحله بعد، با اجرای دستور بررسی می کنیم که توانایی اتصال به یک دستگاه USB از راه دور را داریم:

usbip.exe list -r <ip вашего роутера>

ما لیستی از دستگاه ها را دریافت می کنیم:

c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: error: failed to open usb id database
Exportable USB devices
======================
 - 192.168.31.203
      1-1.4: unknown vendor : unknown product (1a86:7523)
           : /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
           : unknown class / unknown subclass / unknown protocol (ff/00/00)

برای یک اشتباه usbip: خطا: باز کردن پایگاه داده usb id انجام نشد ما توجه نمی کنیم، تاثیری روی کار نمی گذارد.

اکنون دستگاه را متصل می کنیم:

c:Utilsusbip>usbip.exe attach -r 192.168.31.203 -b 1-1.4

تمام است، ویندوز یک دستگاه جدید را شناسایی کرده است، اکنون می توانید با آن طوری کار کنید که گویی به صورت فیزیکی به لپ تاپ متصل است.

من مجبور شدم کمی با حکاکی چینی عذاب بکشم، زیرا وقتی سعی کردم درایور CH341SER آن را از طریق نصب کننده ای که با حکاکی ارائه می شد (بله، یک حکاکی آردوینو) نصب کنم، USB/IP VHCI ویندوز را در BSOD انداخت. با این حال، نصب درایور CH341SER به اتصال دستگاه از طریق usbip.exe مشکل را حل کرد.

خط پایین: حکاکی در آشپزخانه با پنجره باز و در بسته سروصدا می‌کند و سیگار می‌کشد، من فرآیند سوختن را از اتاق دیگری از طریق نرم‌افزار خودم تماشا می‌کنم، که گیر کردن را حس نمی‌کند.

منابع مورد استفاده:

https://openwrt.org/docs/guide-user/services/usb.iptunnel
https://github.com/cezanne/usbip-win

منبع: www.habr.com

اضافه کردن نظر