使用 USB/IP 將接在遠端電腦的 USB 裝置透過網路『重導』到另一台電腦,已經不需要經由 RPM Fusion - Free 套件庫安裝了,Fedora 自己的套件庫已經有收錄。
測試的結論先整理一下,免得有人像筆者一樣,試了半天才發現不合需求,而浪費時間。
- 目前的版本兩台電腦都需以 root 權限設定,才可順利重導 USB 裝置。
- 目前的版本只能『一對一重導』,尚不能『一對多分享』。
- USB 裝置所在電腦或稱為 Server(伺服器),接收重導那台稱為 Client(客戶端)。
- Client 端電腦若為「圖型化桌面環境」,重導後會『自動掛載』該 USB 裝置。
一、安裝 USB/IP
USB/IP 自 kernel 3.17 後已經加入 Linux 主線,所以沒有安裝 RPM Fusion 套件庫,也可以安裝。安裝前先切換到 Root 權限,命令為:[root@Celeron-D ~]# dnf install usbip
註一:無論是 USB/IP 的伺服器或客戶端都要安裝這個套件。
註二:安裝的「usbip 套件」只是控制和服務程式,核心模組已經和 Linux 一起安裝了。
先用命令查詢一下在伺服器上,有哪些 USB 裝置可以被『重導』,
再將查詢所得的 BUS ID 告知 USB/IP 伺服器程式。
註:完成 USB/IP 伺服器的設定後,若這個裝置(如:隨身碟)有掛載在這部電腦,將被『卸載』。
進行前,先查詢一下目前的 USB 裝置列表,
用另一個命令確認一下,查詢目前被重導的 USB 裝置的接收情形,
在進行連線、綁定前,先看看被伺服器重導出來的 USB 裝置有哪些?
將已被伺服器重導的 USB 裝置,與客戶端的 USB/IP 模組連結(即:連結、綁定『被重導』的 USB 裝置)。
查詢並確認在客戶端的 USB 裝置,
用另一個命令再確認一次,查詢目前被重導的 USB 裝置的接收情形,
註:完成重導 USB 裝置的缷載操作後,若這個設備(如:隨身碟)有掛載在客戶端電腦,將被『卸載』。
二、USB/IP 伺服器的設定
安裝、啟動的步驟很簡單,[root@Core-i7 ~]# modprobe usbip-core前兩個命令是載入 USB/IP 伺服器所需的「核心模組」,第三個命令是啟動 USB/IP 伺服器。若有開啟「防火牆」,記得要打個洞 TCP/3240,詳細步驟請參考前文〝Fedora 18 的「防火牆」設定(一):開「通訊埠」〞。
[root@Core-i7 ~]# modprobe usbip-host
[root@Core-i7 ~]# systemctl start usbip-server.service
先用命令查詢一下在伺服器上,有哪些 USB 裝置可以被『重導』,
[root@Core-i7 ~]# usbip list --local假設欲將『FT232 Serial (UART) IC』重導至客戶端,記住它的 BUS ID,上例中為 1-6。
- busid 1-1.1 (0cf3:3005)
Atheros Communications, Inc. : AR3011 Bluetooth (0cf3:3005)
- busid 1-1.2 (058f:a014)
Alcor Micro Corp. : Asus Integrated Webcam (058f:a014)
- busid 1-6 (0403:6001)
Future Technology Devices International, Ltd : FT232 Serial (UART) IC (0403:6001)
再將查詢所得的 BUS ID 告知 USB/IP 伺服器程式。
[root@Core-i7 ~]# usbip bind --busid=1-6最後出現『 complete 』表示重導功能已設定成功。
usbip: info: bind device on busid 1-6: complete
註:完成 USB/IP 伺服器的設定後,若這個裝置(如:隨身碟)有掛載在這部電腦,將被『卸載』。
三、USB/IP 客戶端的設定
記得也要安裝 USB/IP,參考『一、安裝 USB/IP』的步驟。客戶端也要加載「核心模組」,命令如下:[root@Celeron-D ~]# modprobe usbip-core接著,可以開始進行『接收重導』的操作。
[root@Celeron-D ~]# modprobe vhci-hcd
[root@Celeron-D ~]# systemctl start usbip-client.service
進行前,先查詢一下目前的 USB 裝置列表,
[root@Celeron-D ~]# lsusb由查詢結果可以看到,這些 USB 裝置都是客戶端電腦的 USB 裝置。
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 0b05:1869 ASUSTek Computer, Inc. ITE Device(8910)
Bus 001 Device 006: ID 13d3:5666 IMC Networks USB2.0 HD UVC WebCam
‧ ‧ ‧ ‧ ‧
用另一個命令確認一下,查詢目前被重導的 USB 裝置的接收情形,
[root@Celeron-D ~]# usbip port可以看到查詢結果,沒有接收到任何被重導的 USB 裝置。
Imported USB devices
====================
在進行連線、綁定前,先看看被伺服器重導出來的 USB 裝置有哪些?
[root@Celeron-D ~]# usbip list --remote=192.168.10.17上例中,伺服器的網路位址(IP)為 192.168.10.17,埠號(Port),確定是要連接、綁定的 USB 裝置,就可繼續進行下面的操作。
Exportable USB devices
======================
- 192.168.10.17
1-6: Future Technology Devices International, Ltd : FT232 Serial (UART) IC (0403:6001)
: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-6
: (Defined at Interface level) (00/00/00)
: 0 - Vendor Specific Class / Vendor Specific Subclass / Vendor Specific Protocol (ff/ff/ff)
將已被伺服器重導的 USB 裝置,與客戶端的 USB/IP 模組連結(即:連結、綁定『被重導』的 USB 裝置)。
[root@Celeron-D ~]# usbip attach --remote=192.168.10.17 --busid=1-6上例中,「192.168.10.17」是伺服器的網路位址,「1-6」是被伺服器所重導的 USB 裝置的 BUS ID。
查詢並確認在客戶端的 USB 裝置,
[root@Celeron-D ~]# usbip list --local咦!怎麼沒有,原來用這個命令只能查客戶端本機的 USB 裝置。要查詢由遠端電腦導到客戶端,且已經連接、綁定的 USB 裝置,要用另一個方式查詢:
Local USB devices
=================
- busid 2-1 (03ee:641f)
Mitsumi : WIF-0402C Bluetooth Adapter (03ee:641f)
2-1:1.0 -> btusb
2-1:1.1 -> btusb
- busid 3-1 (0458:0003)
KYE Systems Corp. (Mouse Systems) : Genius NetScroll+ (0458:0003)
3-1:1.0 -> usbhid
- busid 5-1 (058f:6387)
Alcor Micro Corp. : Flash Drive (058f:6387)
5-1:1.0 -> usb-storage
[root@Celeron-D ~]# lsusb可以看到被重導的裝置『FT232 Serial (UART) IC』,已經列出來了(第二項)。而 BUS ID 也被改成客戶端的編號,上例中為「Bus 003 Device 002」。
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 0b05:1869 ASUSTek Computer, Inc. ITE Device(8910)
Bus 001 Device 006: ID 13d3:5666 IMC Networks USB2.0 HD UVC WebCam
‧ ‧ ‧ ‧ ‧
用另一個命令再確認一次,查詢目前被重導的 USB 裝置的接收情形,
[root@Celeron-D ~]# usbip port由查詢結果可以看,被伺服器所重導的 USB 裝置,已經被客戶端所接收了。上例中的結果顯示出重導的 USB 裝置的各項參數,其中「Port 00」是該 USB 裝置在 USB/IP 核心模組中的埠號,等一下將 USB 裝置缷載、歸建時需要用它。
Imported USB devices
====================
Port 00: <Port in Use> at Full Speed(12Mbps)
Future Technology Devices International, Ltd : FT232 Serial (UART) IC (0403:6001)
3-1 -> usbip://192.168.10.17:3240/1-6
-> remote bus/dev 001/003
四、客戶端缷載 USB/IP 重導之裝置
最後,當不再使用這個 USB 裝置時,要將它缷載、歸建,將使用權交還 USB/IP 伺服器。[root@Celeron-D ~]# usbip detach --port=0上例中,「0」是命令「usbip port」查詢結果中,該 USB 裝置在 USB/IP 核心模組中的埠號。
註:完成重導 USB 裝置的缷載操作後,若這個設備(如:隨身碟)有掛載在客戶端電腦,將被『卸載』。
五、客戶端的『一般使用者』的權限設定
USB/IP 重導後的遠端 USB 裝置,若有要給客戶端的『一般使用者』使用(如:本上述例子中的『FT232 Serial (UART) IC』裝置),要根據裝置類型另外設定。以本例的 UART 裝置而言,設定的命令為:
[root@Celeron-D ~]# grep dialout /etc/group
dialout:x:18:
[root@Celeron-D ~]# usermod testuser-a -G dialout
[root@Celeron-D ~]# grep dialout /etc/group
dialout:x:18:testuser
已測試版本:
- Fedora: 33
請問前篇"不符合原先的需求"指的是哪部分? 看起來USB重導的基本功能應該還是有的
回覆刪除新版本的 USBIP 以伺服器方式接受連接,使用上更方便。
刪除