Let me show you a slick application I stumbled across about 6 months ago. My HP all-in-one USB printer is certainly a handy device, but being bound to the thing via a USB cable was driving me nuts. I wanted to have full control (which meant a print server wasn’t going to cut it) and I wanted that control from anywhere in my house over my wireless network. Now, there are a number of products on the market that can do this. As an example, AnywhereUSB from Digi is one such product which seems to have a good reputation and from what I’ve seen, it works well. But, I was in one of my moods and I was bound and determined to find a free solution. In my searches I found a few software products and tried the 30 day demos. They all worked well but they weren’t free and they were all products for Windows. And since my WindowsXP desktop is actually a VMware Workstation virtual machine running on top of Ubuntu Linux, what I really needed was a solution for Linux.
I knew that if I could find something for Linux I would kill two birds with one stone. Because not only would I be able to connect USB devices to my Linux OS, but as an added benefit, my WindowsXP virtual machine would see the connected device just as if it were actually connected … no additional software needed for Windows! Eventually I stumbled across USB Server (+ USB Client) for Linux Beta which is offered as a freeware product from IncentivesPro (http://www.incentivespro.com). After playing with the product a bit and creating a few custom scripts to further automate the connecting and disconnecting of USB devices, I found the solution I was looking for! And I can tell you, I use the product on a daily basis. Here’s a quick look at my setup.
1) I have an HP all-in-one USB printer connected to a Linux server running USB Server for Linux.
2) On my laptop, running Ubuntu 8.04 I have the USB Client for Linux installed.
3) To automate the process of connecting to the server and attaching the USB devices, I created a Bash script called connect_usb. Simply running this script produces the following output …
Restarting USB Server on sweemserv … Success!
Restarting local USB Server … Success!
Connecting to USB Server on sweemserv … Success!
Looking for USB Devices on sweemserv … Success!
Found the following USB Devices on sweemserv:
1: USB Server on sweemserv:32032 status: [connected]
‘–> 5: USB Device: Officejet 5600 series HP – Composite USB Device
busid: 1-1 hwid: 03f0-4f11
speed: [full] status: [device is connected]
Connecting to the USB Devices on sweemsrv … Success!
After I see this, I have full control of the device just as if I had the USB cable plugged directly into my laptop.
4) I already mentioned that I run my VMware corporate XP desktop as a Workstation 6.5 instance. The USB Client presents the USB devices as local, so I connect to them in Workstation as if they were directly connected devices. Check out the following screenshot …
See the last line “Hewlett-Packard Officejet 5600 series”? That’s the printer. And believe me, it’s not local like the other devices in the list, but VMware Workstation doesn’t know the difference. And when I connect the device to the virtual machine, WindowsXP doesn’t know the difference either.
6) That’s it! Works like a charm everytime
If you’d like a copy of the Bash script, let me know and I’ll update the post. Also, I’d be interested in any other unique ways to handle USB Redirection, so please comment if you have a solution.