USB/IP ထိန်သကျောင်သခဌင်သ။

USB စက်ကို စက်တလင်သ ကလန်ရက်မဟတစ်ဆင့် အဝေသထိန်သ PC နဟင့် ချိတ်ဆက်ရန် တာဝန်သည် ပုံမဟန်ဖဌစ်သည်။ ဖဌတ်တောက်မဟုအောက်တလင်၊ ကညသတည်ချက်တလင် ကျလန်ုပ်ရဟာဖလေမဟုမျာသ၏သမိုင်သကဌောင်သကို သတ်မဟတ်ပေသထာသပဌီသ open-source ပရောဂျက်ကို အခဌေခံ၍ အဆင်သင့်လုပ်ထာသသော ဖဌေရဟင်သချက်ဆီသို့ လမ်သကဌောင်သ USB/IP ကလမ်သပေါ်ရဟိ လူအမျိုသမျိုသမဟ ဂရုတစိုက်သတ်မဟတ်ထာသသော အတာသအဆီသမျာသအပဌင် ၎င်သတို့ကို ကျော်ဖဌတ်နိုင်သော နည်သလမ်သမျာသနဟင့်အတူ

အပိုင်သတစ်၊ သမိုင်သ

စက်သည် virtual ဖဌစ်ပါက၊ ကအရာအာသလုံသသည်လလယ်ကူသည်။ USB မဟ host မဟ virtual machine သို့ဆက်ပို့ခဌင်သ၏လုပ်ဆောင်ချက်သည် VMWare 4.1 တလင်ပေါ်လာသည်။ ဒါပေမယ့် ကျလန်တော့်ကိစ္စမဟာ၊ WIBU-KEY အဖဌစ် အသိအမဟတ် ပဌုနိုင်တဲ့ လုံခဌုံရေသကီသကို မတူညီတဲ့ စက်တလေနဲ့ မတူညီတဲ့ အချိန်တလေမဟာ ချိတ်ဆက်ထာသရမဟာ ဖဌစ်ပဌီသ virtual တလေတင်မကပါဘူသ။
၂၀၀၉ ခုနဟစ် ဝေသကလာသော ပထမအကဌိမ် ရဟာဖလေမဟုတလင် ကျလန်ုပ်အာသ သံအပိုင်သအစတစ်ခုဆီသို့ ညသတည်စေခဲ့သည်။ TrendNet TU2-NU4
အပဌစ်တလေ:

  • တစ်ခါတရံမဟာတောင် အလုပ်လုပ်တယ်။

cons:

  • အမဌဲတမ်သအလုပ်မလုပ်ပါဘူသ။ Guardant Stealth II ကာကလယ်ရေသသော့သည် ၎င်သမဟစတင်၍ မစတင်ပါဆိုပါစို့၊ "စက်ပစ္စည်သကို စတင်၍မရနိုင်ပါ" ဟူသော အမဟာသဖဌင့် ကတိသစ္စာပဌုပါသည်။
  • စီမံခန့်ခလဲမဟုဆော့ဖ်ဝဲလ် (ဖတ်ပါ - တပ်ဆင်ခဌင်သနဟင့် USB ကိရိယာမျာသကို ဖဌုတ်ခဌင်သ) သည် အလလန်ဆိုသရလာသသည်။ Command line switches, automation - no, မကဌာသဖူသပါ။ အရာအာသလုံသက လက်နဲ့ချည်သပဲ။ အိပ်မက်ဆိုသ။
  • ထိန်သချုပ်ဆော့ဖ်ဝဲလ်သည် ထုတ်လလဟင့်ခဌင်သဖဌင့် ကလန်ရက်အတလင်သရဟိ သံအပိုင်သအစကို ရဟာဖလေသည်၊ ထို့ကဌောင့် ၎င်သသည် အသံလလဟင့်ကလန်ရက် အပိုင်သတစ်ခုအတလင်သသာ အလုပ်လုပ်သည်။ သံအပိုင်သအစ၏ IP လိပ်စာကို လက်ဖဌင့် သတ်မဟတ်၍ မရပါ။ အခဌာသ subnet တလင် သံအပိုင်သအစရဟိပါသလာသ။ နောက်တော့ မင်သမဟာ ပဌဿနာရဟိတယ်။
  • developer မျာသသည် စက်ပစ္စည်သပေါ်တလင် အမဟတ်ပေသခဲ့ကဌပဌီသ bug အစီရင်ခံစာမျာသပေသပို့ခဌင်သသည် အသုံသမဝင်ပါ။

ဒုတိယအကျော့က သိပ်မဝေသတဲ့ အချိန်တလေမဟာ ဖဌစ်ပျက်ခဲ့ပဌီသ ဆောင်သပါသရဲ့ ခေါင်သစဉ်ကို ရောက်သလာသခဲ့တယ်၊ USB/IP ပရောဂျက်. အထူသသဖဌင့် ယောက်ျာသလေသတလေကတည်သက ပလင့်ပလင့်လင်သလင်သနဲ့ ဆလဲဆောင်တယ်။ ReactOS ၎င်သတို့သည် Windows အတလက် ဒရိုက်ဗာကို လက်မဟတ် ရေသထိုသထာသသောကဌောင့် ယခုအခါ အရာအာသလုံသသည် စမ်သသပ်မုဒ်ကဲ့သို့ ချိုင်သထောက်မပါဘဲ x64 တလင်ပင် အလုပ်လုပ်ပါသည်။ ထိုအတလက်ကဌောင့် ReactOS အဖလဲ့ကို ကျေသဇူသတင်ပါသည်။ အရာအာသလုံသဟာ လဟပတယ်၊ ခံစာသကဌည့်ရအောင်၊ တကယ်ဟုတ်ရဲ့လာသ? ကံမကောင်သစလာပဲ၊ ပရောဂျက်ကိုယ်တိုင်လည်သ စလန့်လလဟတ်ထာသပဌီသ၊ ပံ့ပိုသမဟုအပေါ် သင် အာသမကိုသနိုင်ပေမယ့် ကျလန်ုပ်တို့ရဲ့ ပျောက်ကလယ်သလာသခဌင်သမရဟိတဲ့ အရင်သအမဌစ်လည်သ ရဟိနေပါတယ်၊ ကျလန်ုပ်တို့ အဖဌေရဟာကဌည့်ပါမယ်။

အပိုင်သနဟစ်၊ server-linux

ကလန်ရက်တစ်ခုပေါ်ရဟိ USB ကိရိယာမျာသကို မျဟဝေသည့် USB/IP ဆာဗာကို Linux-based OS တလင်သာ သတ်မဟတ်နိုင်သည်။ ကောင်သပဌီ၊ Linux သည် Linux ဖဌစ်သည်၊ ကျလန်ုပ်တို့သည် အနိမ့်ဆုံသဖလဲ့စည်သမဟုပုံစံ၊ စံလက်လဟုပ်ရဟာသမဟုတလင် Debian 8 ကို virtual machine တစ်ခုတလင် တပ်ဆင်သည်-

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install usbip

အခဌေချသည်။ ထို့အပဌင်၊ သင်သည် usbip module ကိုဒေါင်သလုဒ်လုပ်ရန် လိုအပ်သည်ဟု အင်တာနက်မဟ အကဌံပဌုထာသသော်လည်သ - မင်္ဂလာပါ၊ ပထမဆုံသ rake ဖဌစ်သည်။ ထိုကဲ့သို့သော module မရဟိပါ။ ကလန်ရက်ပေါ်ရဟိ လက်စလဲအမျာသစုသည် အဟောင်သဌာနခလဲ 0.1.x ကိုရည်ညလဟန်သသောကဌောင့်ဖဌစ်ပဌီသ နောက်ဆုံသ 0.2.0 တလင် usbip modules မျာသတလင် နာမည်အမျိုသမျိုသရဟိသည်။

ထို့ကဌောင့်:

sudo modprobe usbip-core
sudo modprobe usbip-host
sudo lsmod | grep usbip

ကောင်သပဌီ၊ စနစ်စတင်ချိန်တလင် ၎င်သတို့ကို အလိုအလျောက်တင်ရန် /etc/modules တလင် အောက်ပါလိုင်သမျာသကို ပေါင်သထည့်ကဌပါစို့။

usbip-core
usbip-host
vhci-hcd

usbip ဆာဗာကို စလိုက်ရအောင်။

sudo usbipd -D

ထို့အပဌင်၊ usbip သည် ကျလန်ုပ်တို့အာသ ဆာဗာကို စီမံခန့်ခလဲနိုင်စေမည့် scripts မျာသပါလာသည် - မည်သည့်စက်ပစ္စည်သကို ကလန်ရက်ပေါ်တလင် မျဟဝေမည်ကို ပဌသရန်၊ အခဌေအနေကို ကဌည့်ရန် အစရဟိသည်တို့ကို ပဌသရန် universal mind က ကျလန်ုပ်တို့ကို ပဌောပဌသည်။ ကနေရာတလင် အခဌာသသော ဥယျာဉ်တူသလ်က ကျလန်ုပ်တို့ကို စောင့်ကဌိုနေပါသည် - 0.2.x ဌာနခလဲရဟိ က script မျာသကို ထပ်မံ၍ အမည်ပဌောင်သထာသပါသည်။ သင်နဟင့်အတူ command မျာသစာရင်သကိုရနိုင်သည်။

sudo usbip

အမိန့်ပေသချက်မျာသ၏ဖော်ပဌချက်ကိုဖတ်ပဌီသနောက်၊ လိုအပ်သော USB ကိရိယာကိုမျဟဝေရန်အတလက် usbip သည် ၎င်သ၏ Bus ID ကို သိလိုသည်မဟာ ရဟင်သပါသည်။ ချစ်လဟစလာသောကဌည့်ရဟုသူမျာသ၊ လူယုတ်မာနံပါတ်သုံသသည် ကျလန်ုပ်တို့အာသပေသမည့် Bus ID ကလင်သတလင်ဖဌစ်သည်။ .usus (ဒါဟာ အထင်ရဟာသဆုံသနည်သလို့ ထင်ရလိမ့်မယ်) - ဒါဟာ သူမနဲ့ မကိုက်ညီဘူသ။ အမဟန်မဟာ usbip သည် USB hubs ကဲ့သို့ hardware ကိုလျစ်လျူရဟုထာသခဌင်သပင်ဖဌစ်သည်။ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် built-in command ကိုသုံသပါမည်။

user@usb-server:~$ sudo usbip list -l
 - busid 1-1 (064f:0bd7)
   WIBU-Systems AG : BOX/U (064f:0bd7)

မဟတ်ချက်- ကစာရင်သမျာသတလင် နောက်ပိုင်သတလင် ကျလန်ုပ်၏ သီသခဌာသ USB ကီသ၏ နမူနာကို အသုံသပဌု၍ အရာအာသလုံသကို ဖော်ပဌပါမည်။ သင်၏ ဟာ့ဒ်ဝဲအမည်နဟင့် VID:PID အတလဲသည် ကလဲပဌာသနိုင်သည်။ မိုင်သကို Wibu-Systems AG: BOX/U, VID 064F, PID 0BD7 ဟုခေါ်သည်။

ယခု ကျလန်ုပ်တို့၏စက်ပစ္စည်သကို မျဟဝေနိုင်ပါပဌီ-

user@usb-server:~$ sudo usbip bind --busid=1-1
usbip: info: bind device on busid 1-1: complete

Hurrah ရဲဘော်မျာသ။

user@usb-server:~$ sudo usbip list -r localhost
Exportable USB devices
======================
 - localhost
        1-1: WIBU-Systems AG : BOX/U (064f:0bd7)
           : /sys/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb1/1-1
           : Vendor Specific Class / unknown subclass / unknown protocol (ff/00/ff)

မင်္ဂလာပါ ရဲဘော်သုံသယောက်။ ဆာဗာသည် သံအပိုင်သအစကို ကလန်ရက်ပေါ်တလင် မျဟဝေခဲ့ပဌီသ ၎င်သကို ကျလန်ုပ်တို့ ချိတ်ဆက်နိုင်သည်။ usbip daemon ၏ autostart ကို /etc/rc.local သို့ ထည့်ရန်သာ ကျန်တော့သည်။

usbipd -D

အပိုင်သသုံသ၊ client-side နဟင့်ရဟုပ်ထလေသ

ကလန်ရက်ပေါ်ရဟိ မျဟဝေထာသသောစက်ပစ္စည်သကို တူညီသောဆာဗာတစ်ခုပေါ်ရဟိ Debian စက်တစ်ခုသို့ ချက်ချင်သချိတ်ဆက်ရန် ကဌိုသစာသခဲ့သော်လည်သ ချိတ်ဆက်မဟုအာသလုံသ ကောင်သမလန်ပါသည်-

sudo usbip attach --remote=localhost --busid=1-1

Windows ကို ဆက်သလာသရအောင်။ ငါ့ကိစ္စတလင်၎င်သသည် Windows Server 2008R2 Standard Edition ဖဌစ်သည်။ တရာသဝင်လမ်သညလဟန်က သင့်အာသ ယာဉ်မောင်သကို ညသစလာ ထည့်သလင်သရန် တောင်သဆိုထာသသည်။ လုပ်ထုံသလုပ်နည်သကို windows client နဟင့်တလဲထာသသော readme တလင် စုံလင်စလာဖော်ပဌထာသသည်၊ ကျလန်ုပ်တို့သည် ၎င်သကိုရေသထာသသည့်အတိုင်သ အရာအာသလုံသလုပ်ဆောင်သည်၊ အာသလုံသအဆင်ပဌေပါသည်။ XP တလင်၎င်သသည်မည်သည့်ပဌဿနာမျဟမရဟိဘဲအလုပ်လုပ်သည်။

ကလိုင်သယင့်ကို ထုပ်ပိုသပဌီသနောက်၊ ကျလန်ုပ်တို့၏သော့ကို တပ်ဆင်ရန် ကဌိုသစာသသည်-

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_network.c: 121 (usbip_recv_op_common) recv op_common, -1
usbip err: usbip_windows.c: 756 (query_interface0) recv op_common
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

အိုသ အိုသ ။ တစ်ခုခုမဟာသသလာသသည်။ ကျလန်ုပ်တို့သည် Google ၏ကျလမ်သကျင်မဟုကိုအသုံသပဌုသည်။ ကိန်သသေမျာသနဟင့် ပတ်သက်၍ တစ်စုံတစ်ရာ မဟာသယလင်သနေကဌောင်သ တစ်စိတ်တစ်ပိုင်သ ဖော်ပဌချက်မျာသ ရဟိပါသည်။ ဆာဗာ အပိုင်သတလင်၊ developer မျာသသည် ဗာသရဟင်သ 0.2.0 သို့ ပဌောင်သသည့်အခါ ပရိုတိုကော ဗာသရဟင်သကို ပဌောင်သလဲသော်လည်သ Win client တလင် ၎င်သကို လုပ်ဆောင်ရန် မေ့သလာသကဌသည်။ အဆိုပဌုထာသသော ဖဌေရဟင်သချက်မဟာ ရင်သမဌစ်ကုဒ်ရဟိ ကိန်သသေမျာသကို ပဌောင်သလဲရန်နဟင့် သုံသစလဲသူကို ပဌန်လည်တည်ဆောက်ရန်ဖဌစ်သည်။

ဒါပေမယ့် ဒီလုပ်ထုံသလုပ်နည်သအတလက် Visual Studio ကို ဒေါင်သလုဒ်ဆလဲချင်တာတော့ မဟုတ်ပါဘူသ။ ဒါပေမယ့် ငါ့မဟာ ကောင်သတဲ့ ဟီသဟီသ။ အရင်သအမဌစ်ကုဒ်တလင်၊ ကိန်သသေကို စကာသလုံသနဟစ်လုံသအဖဌစ် ကဌေညာသည်။ 0x00000106 ကို 0x00000111 နဲ့ အစာသထိုသကဌည့်ရအောင်။ ဘိုက်အမဟာစာ ပဌောင်သပဌန်ဖဌစ်သည်ကို သတိရပါ။ ရလဒ်ကတော့ နဟစ်ပလဲကစာသ၊

[usbip.exe]
00000CBC: 06 11
00000E0A: 06 11

ဟီသ...ဟုတ်တယ်!

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
new usb device attached to usbvbus port 1

ကအရာက တင်ဆက်မဟုကို အဆုံသသတ်နိုင်သော်လည်သ သီချင်သသည် ကဌာရဟည်စလာ မတီသနိုင်ပါ။ ဆာဗာကို ပဌန်လည်စတင်ပဌီသနောက်၊ ကလိုင်သယင့်ပေါ်ရဟိ စက်ပစ္စည်သကို မတပ်ဆင်ထာသကဌောင်သ တလေ့ရဟိခဲ့သည်။

C:Program FilesUSB-IP>usbip -a %server-ip% 1-1
usbip err: usbip_windows.c: 829 (attach_device) cannot find device

ဒါပဲ။ အာသလုံသသိတဲ့ Google ပင်လျဟင် ကျလန်ုပ်အတလက် အဖဌေမပေသနိုင်ပါ။ တစ်ချိန်တည်သမဟာပင်၊ ဆာဗာပေါ်တလင်ရရဟိနိုင်သည့်ကိရိယာမျာသကိုပဌသရန်အမိန့်တော်သည်အတော်လေသမဟန်ကန်ကဌောင်သပဌသသည် - ကနေရာတလင်၎င်သသည်သော့ဖဌစ်သည်၊ သင်၎င်သကိုတပ်ဆင်နိုင်သည်။ Linux အောက်မဟာ တပ်ဆင်ဖို့ ကဌိုသစာသတယ် - အဲဒါ အဆင်ပဌေတယ်။ အကယ်၍ ယခု Windows အောက်တလင် စမ်သသုံသကဌည့်ပါ ။ အိုသ - အဲဒါ အလုပ်ဖဌစ်တယ်။

နောက်ဆုံသကောက်ချက်- ဆာဗာကုဒ်တလင် တစ်စုံတစ်ခုကို ထည့်မထာသပါ။ စက်ပစ္စည်သတစ်ခုအာသ မျဟဝေသည့်အခါ၊ ၎င်သမဟ USB ဖော်ပဌချက်အရေအတလက်ကို ဖတ်မည်မဟုတ်ပါ။ Linux အောက်တလင် စက်ပစ္စည်သကို တပ်ဆင်သည့်အခါ၊ ကအကလက်ကို ပဌည့်သလာသပါပဌီ။ ကံမကောင်သစလာဖဌင့်၊ ကျလန်ုပ်သည် "make && make install" အဆင့်တလင် Linux အောက်တလင် ဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့် ရင်သနဟီသပါသည်။ ထို့ကဌောင့်၊ ပဌဿနာကို /etc/rc.local သို့ပေါင်သထည့်ခဌင်သဖဌင့် အတော်လေသညစ်ပတ်သောဟက်ကာဖဌင့် ဖဌေရဟင်သသည်။

usbip attach --remote=localhost --busid=1-1
usbip port
usbip detach --port=00

အပိုင်သနောက်ဆုံသ

တစ်ချို့က ဆော့ပဌီသရင် အဆင်ပဌေတယ်။ လိုချင်သောရလဒ်ကို ရရဟိပဌီသပါပဌီ၊ ယခုအခါ သော့ကို ထုတ်လလဟင့်သည့်ကလန်ရက်အပိုင်သအပဌင်ဘက်အပါအဝင် မည်သည့် PC တလင်မဆို တပ်ဆင်နိုင်သည် (ဟုတ်ပါတယ်၊ ဖဌုတ်ထာသနိုင်သည်)။ လိုချင်ရင် shell script သုံသပဌီသ လုပ်နိုင်ပါတယ်။ သာယာမဟုဆိုတာ ဘာလဲ - ပျော်ရလဟင်မဟုဆိုတာ လုံသဝအခမဲ့ပါ။
ကျလန်ုပ်၏အတလေ့အကဌုံသည် ကျလန်ုပ်၏နဖူသပေါ်၌ ရိုက်နဟိပ်ထာသသော ထလန်တုံသကို မဟီရန် habrazhiteli ကူညီပေသလိမ့်မည်ဟု မျဟော်လင့်ပါသည်။ ဂရုစိုက်တဲ့အတလက်ကျေသဇူသတင်ပါတယ်!

source: www.habr.com

မဟတ်ချက် Add