usb over network for linux,USB over Network with XenServer 6

Notes:

The following configuration was employed on XenServer 6 and 6.0.2.

I’ve also used previous versions of usb-redirector on instances of

XenServer 5.x, but will not cover their installation.

The solution has not been rigorously tested and is not supported by

Citrix.

This article does not go into detail on how to use the Linux

command line. Please refer to Linux documentation for further

information if necessary.

Since early versions of XenServer 5 I’ve wanted to run my print

server as a virtual machine. The problem is that XenServer doesn’t

natively support USB passthrough of anything but mass storage

devices. This caused me to look at other solutions. One solution

that’s popular is the hardware approach used by companies

like Digi.

This approach works, but is cost prohibitive for a very small home

office deployment, which caused me to search for a cost effective

software solution. Early on I tried a few different

implementations, but there were relatively few solutions that

allowed the use of Linux as a USB over network server.

One that I found to work, and have been using for about 3 years now

is USB

Redirector from Incentives

Pro. The Linux-based server is actually free, but you need to

pay for the client side when using Windows (as in my case). That

said, I found this solution to be the most cost effective at the

time, and although I haven’t done extensive research lately, I

expect it still to be very, if not the most cost effective.

Before someone suggests that the Open

Source USB/IP

Project would be more cost effective, I

attempted its use after XenServer 6 was released. If memory serves,

I believe I did have a bit of success with it, but using it with

the specific printers I had didn’t work properly. It does offer

hope for a future implementation, but at the time I tried it the

project and XenServer stars didn’t align.

So, before we get into the nitty gritty, here’s what I needed to

accomplish. I have XenServer 6.0.2 running on a machine, and I

wanted to plug a Sony UP-D75 photo printer into the XenServer via

USB and forward that device into a Windows 2003 Server VM running

on the same resource pool. The printer is rather old, and as a

result they don’t make a driver for newer operating systems, so I’m

stuck with 2003.

Now, without further ado… the process.

Compiling the kernel module

Download the DDK for the version of XenServer you’re running

fromhttp://www.citrix.com/English/ss/downloads/

Inside the DDK ISO is the DDK virtual appliance. Do one of the

following:

extract the DDK appliance from the ISO

mount the ISO

burn the ISO to CD, insert the CD into the maching running

XenCenter

then import via XenCenter

Power on the DDK VM and answer the firstboot questions

Log into the DDK, either at the console, or through an SSH

session

Download USB Redirector for Linux from http://www.incentivespro.com/usb-redirector-linux-i386.tar.gz:

wget http://www.incentivespro.com/usb-redirector-linux-i386.tar.gz

Extract the tarball:

tar xzvf usb-redirector-linux-i386.tar.gz

Change into the resulting directory:

cd usb-redirector-linux-i386

Run the installer to compile the kernel module and install into the

DDK:

./installer.sh install-server

Change to the parent directory:

cd ..

Create a tarball of the install directory with the kernel module

compiled for your specific version of XenServer:

tar czvf usb-redirector-linux-i386-XS6.0.2-53456p.tgz usb-redirector-linux-i386

Copy the tarball to the XenServer of the correct version that you

want to install onto:

scp usb-redirector-linux-i386-XS6.0.2-53456p.tgz root@10.10.1.10:/root

If desired, uninstall the usb-redirector from the DDK

/usr/local/usb-redirector/uninstall.sh uninstall

That’s all we’ll need of the DDK, so you can do with it as you

like.

Now, it’s time to install onto your XenServer:

Installing USB Redirector on XenServer

Log into your XenServer, either at the console or via an SSH

session

Extract the tarball you copied from the DDK:

tar xzvf usb-redirector-linux-i386-XS6.0.2-53456p.tgz

Change into the resulting directory:

cd usb-redirector-linux-i386

Next we need to modify the installer so that it doesn’t attempt to

compile the kernel module, which we’ve already done. There are two

ways of doing this. The first is to make the modifications manually

using vi. If you aren’t comfortable editing text files on Linux,

you can use the second method which is to apply a patch. Complete

one of the following two patch methods:

Manual Patch

vi installer.sh

In the usbsrv_install() function comment out the following 3 lines

with hash marks (#):

if [ ! -d $KERNELDIR ]; then

exit_with_error "Kernel sources or kernel headers directory not found. Please install the corresponding package first."

fi

In the usbsrv_make_kernel_module() function comment out the

following 2 lines with hash marks (#):

make KERNELDIR=$KERNELDIR clean >/dev/null 2>&1

make $make_flags $driver_config KERNELDIR=$KERNELDIR >$script_dir/buildlog.txt 2>&1

Save and close the file.

Automated Patch

Download the patchfile and

patch installer.sh:

Run the installer:

./installer.sh install-server

Now you need to modify the firewall settings so clients can connect

to your USB server:

vi /etc/sysconfig/iptables

add

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 32032 -j ACCEPT

before the REJECT statement, by default the 3rd to last line,

making it look like the following:

...

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 32032 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

Restart the firewall service:

service iptables restart

Kernel Module/Driver Nuances

Depending on the device you’re wanting to share, there may be a

driver installed on XenServer that will become active when you plug

in the device and cause conflicts. In my case, I am sharing a Sony

USB printer. When I plug in the printer, by default, the usblp

driver grabs hold of the device, which is not what I want so I need

to disable it. To determine if a driver is activated for a given

device, BEFORE PLUGGING IN THE DEVICE, issue the following

command:

tail -fn 0 /var/log/messages

This will keep a connection open to the messages file and if

anything writes to it the messages will also be posted to your

session. In my case, the following messages were displayed when I

plugged in the device:

Feb 29 13:48:35 schizo kernel: usb 2-4: new high speed USB device using ehci_hcd and address 5

Feb 29 13:48:35 schizo kernel: usb 2-4: configuration #1 chosen from 1 choice

Feb 29 13:48:36 schizo kernel: usblp0: USB Bidirectional printer dev 5 if 0 alt 0 proto 2 vid 0x054C pid 0x0202

Feb 29 13:48:36 schizo kernel: usbcore: registered new interface driver usblp

After unplugging the device, the usblp driver remains loaded. This

is determined by issuing the following command:

lsmod | head

which in my case produced the following output:

[root@schizo ~]# lsmod | head

Module Size Used by

usblp 9577 0

iptable_filter 1277 1

ip_tables 8497 1 iptable_filter

tusbd 32182 1

cifs 210827 4

nfs 257444 1

nfs_acl 2153 1 nfs

auth_rpcgss 32640 1 nfs

lockd 61583 1 nfs

To unload the module, use the rmmod command:

rmmod usblp

To disable the module:

echo blacklist usblp > /etc/modprobe.d/blacklist-usblp

Generically, this would be:

echo blacklist > /etc/modprobe.d/blacklist-

Sharing a USB Device from XenServer

Now it’s time to share a USB device with your newly installed USB

server. Plug a USB device you want to share into the XenServer,

then share it with USB Redirector:

To find the options available to you:

usbsrv

To see the devices attached to the system and their status:

usbsrv -list

Here’s what I get on my server:

[root@schizo usb-redirector-linux-i386]# usbsrv -list

================= USB SERVER OPERATION SUCCESSFUL ===============

List of USB devices:

1: Virtual Keyboard and Mouse American Megatrends Inc. Composite USB Device

Vid: 046b Pid: ff10 Port: 1-3.1

Status: plugged

2: UP-D75 Sony USB Printer

Vid: 054c Pid: 0202 Port: 2-3

Status: plugged

===================== ======================= ===================

To share a USB device:

usbsrv -s 2

or

usbsrv -share -vid 054c -pid 0202 -usbport 2-3

Now notice the “shared” status for the Sony printer:

[root@schizo usb-redirector-linux-i386]# usbsrv -list

================= USB SERVER OPERATION SUCCESSFUL ===============

List of USB devices:

1: Virtual Keyboard and Mouse American Megatrends Inc. Composite USB Device

Vid: 046b Pid: ff10 Port: 1-3.1

Status: plugged

2: UP-D75 Sony USB Printer

Vid: 054c Pid: 0202 Port: 2-3

Status: plugged, shared

===================== ======================= ===================

Connecting to a Shared Device from a Client

To use the shared device, on a client machine download the client

and connect to the shared USB resource. I used Windows and

downloaded the USB

Redirector Client v5.1. After installing the client, run

it.

a4c26d1e5885305701be709a3d33442f.png

You’ll need to add the license using “Enter License Key…” from the

Help menu.

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

After that you “Add USB Server…” from the Connect menu, using the

IP address of the XenServer.

a4c26d1e5885305701be709a3d33442f.png

Assuming the server adds properly, you can then click on the USB

device and “Connect USB Device” from the Connect menu.

a4c26d1e5885305701be709a3d33442f.png

Then your device will be connected and you can install the driver

for the device and start using it.

a4c26d1e5885305701be709a3d33442f.png

And that’s all there is to it! Good luck!

from:http://blogs.citrix.com/2012/02/29/usb-over-network-with-xenserver-6/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值