Site icon Soul & Shell Blog

USB Over Network - USB Server for Linux (RDP使用讀卡機殘念)

USB Over Network

Linux上常遇到讀卡機無法在 !FireFox 使用的問題,其實這個議題已經有許多的商用軟體已經解決了。許多軟體提供透過驅動程式與網路將裝置掛載到遠端的作業系統中,從下面的網址可以看到現有的 USB Over Network Software

http://usb-over-network.qarchive.org/

USB Server

如何將本地端的 USB 連接埠進行網路分享,大致歸納兩種方式:

1. 透過專屬的 Service
2. 透過 RDP 或 ICA 通訊協定

那麼我們的需求是將 Linux 上的 USB Device Share 到 RDP 上,而目前找到的 Open Source 軟體稱為 USB-Server,網站如下:

http://www.usb-server.com/usb-server.html

USB-Server 軟體提供了在 Linux 上的 USB 分享解決方案如下:

1. USB-Server (分享 USB)
2. USB-Client (使用遠端的USB)
3. rdesktop RDP USB 分享功能

先說明一下:
Workststion : 指的是要分享出去的電腦 (就是我們的tOS)
Terminal : 指的是遠端連線上的電腦 (Windows 2008 Terminal Server)

Workststion 安裝方法

環境 Linux Ubuntu 9.04(Workststion)

1. 編譯 Driver 提供識別所有的 USB 裝置
下載 USB-Server,網址如下:
http://www.usb-server.com/downloads.html

解壓縮 usb-server.tar.gz
# tar -zxf usb-server.tar.gz

下載程式原始碼與 Kernel source head 版本 2.6.28
# apt-get source linux-source

解壓縮 trar -zxf linux-source-2.6.28.tar.bz2
# trar -zxf linux-source-2.6.28.tar.bz2

建立 link
# ln -s /usr/src/linux-source-2.6.28 /usr/src/linux

編譯
# make oldconfig && make prepare && make scripts

官方有提供 ./installer.sh install-server 的方式,但是測試之後發現有問題,所以改用手動編譯。
切換到 usb-server 解壓縮後的目錄,進入 /modules/src/tusbd 目錄中,依據 Kernel 重新編譯驅動程式得到 tusvd.ko。
# make clean && make

載入 tusbd.ko
# insmod tusbd.ko

啟動 USB Server
# ./usbsrvd

使用命令操作 USB Server ,列出所有可用的 USB
# ./usbsrv -l

分享 USB 設備
# ./usbsrv -s 1

2. 重新編譯 rdesktop 1.6 加入遠端分享 USB 功能

下載 rdesktop source 版本 1.6
# apt-get source rdesktop

解壓縮 rdesktop_1.6.0.orig.tar.gz
# tar -zxf rdesktop_1.6.0.orig.tar.gz

Patch rdesktop source,複製 USB Server 解壓縮目錄中 rdesktop-1.6.0-path 底下的檔案(usbrdr.c和usbrdr.patch)到 rdesktop_1.6.0.orig 原始碼目錄中,並且進行 Patch
# patch -p3 -i usbrdr.patch

重新編譯 rdesktop (這時候 Compile 出來的rdesktop就有把本地 USB 送出去的能力了,即-r usbrdr參數),順便偷偷編譯了scard模組
# ./configure --enable-smartcard --enable-debug --enable-debug-smartcard
# make clean
# make

Terminal 安裝方法

環境 Windows XP(Terminal)
安裝 usbrdr_terminalserver_setup.exe (這個軟體為試用版)

進行測試

使用rdesktop連線

rdesktop -r usbrdr rdp.server.com

確實在 Windows 的裝置管理員中看見了讀卡機,並且也能夠正確安裝 Drive,但是 IE 在網站中還是無法找到。如下圖

但是隨身碟倒是很聽話,用起來的感覺就根本地端的 USB 一樣,一插上 Remote Desktop 馬上找到。
聽說這樣的技術連視訊都可以過去,有空在來試試。
但是為什麼讀卡機沒辦法使用?明明已經抓到了。(RD前面那一台已經有這樣的環境了,期待高手的出現)
或許可以找成熟的商用軟體來測試,以下商用軟體支援 Citris 與 RDP Server,也支援了 Linux

http://www.usb-over-network.com/usbnet-solutions/rdp.html
此外有一個發現,經過測試之後即使讀卡機直接接在 Terminal Server 上,透過 Wondows RDP 登入之後依然無法使用讀卡機,因此我猜想是不是 Windows 對於遠端桌面所設定的限制。這個答案就需要 Microsoft 高手來回答了?

Exit mobile version