Linux FAQ

When running virtualhere on your embedded device (e.g raspberry pi, beagle, ubuntu), it is important that you have the latest firmware. For example on the raspberry pi, run the sudo rpi-update utility.

What functionality does the VirtualHere software provide?

VirtualHere will make your USB device appear local and yet be connected in a remote location. All communication takes place transparently using a network instead of a USB cable, thereby allowing remote access to USB devices. There are many benefits to enabling remote access to USB devices, including not needing to have your USB device actually present near your computer, being able to use the device at another computer on the network or over the Internet (simultaneous access to the same device is not supported), and being able to centrally manage USB devices in an office environment.

Can more than one client use the same USB device simultaneously?

No, not physically possible

Can VirtualHere Server run in a VM?

No, it may not function correctly. Virtualhere Server needs real access to hardware without the Hypervisor layer between. (Note: The VirtualHere Client can run in a VM with no problems)

How to i start VirtualHere when my device boots?

Please see here

(Thanks to @burghardt for improvements)

VirtualHere sometimes takes a lot of CPU why is that?

Converting the USB protocol and communicating it over the network is quite CPU intensive and therefore CPU usage will spike while the USB device is being accessed. This is only temporary and not a problem.

My Webcam doesnt work at the highest resolutions via VirtualHere?

You need to do this (or put it in a boot script) before starting the virtualhere server

echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb

What are the server arguments?

You can find the arguments by running the server with the -h command.

For example on the raspberry pi:

pi@raspberrypi:~ $ ./vhusbdarmpi3 -h
vhusbdarmpi3 v3.2.9
VirtualHere USB Server for Raspberry Pi (Optimized build)
Share USB Devices over the network
(C) VirtualHere Pty. Ltd 2010-2017

usage: vhusbdarmpi3 [-hlbiu] [-c ] [-r ]

   -b run as daemon in the background
   -c configuration file
   -h display this usage
   -l display license text
   -i prefer ipv6 (dual/stack)
   -r log to file instead of syslog

How do i edit the settings for the server?

See here for more information

How do i edit the settings for the Client?

The client has several command line options and configurable settings, see here for more information

Does the server support IPv6?


Does VirtualHere require Internet access to run?

No, Internet access is not required.

How can i control who has access to what devices?

See here for information

My Android device doesn't have a USB socket?

Most recent or larger Android devices have USB host enabled in the kernel, and a Micro USB slot. You need to have a Micro USB to Host OTG cable such as this to convert the socket.

What Linux library dependencies does the VirtualHere USB Server require?


My device only has two USB ports, I want to share more devices!

Just plug in a USB hub and VirtualHere will then share all devices connected to that hub as well. The server supports up to 122 devices and 5 hubs deep.

Can I share my USB devices over the Internet?


What are the licensing terms?

The terms can be found here

TLDR: The license basically says if you are an end user you can share one device for free using a Generic build of the VirtualHere USB Server. If you want to resell VirtualHere (on your device), or you are an end user and want to share unlimited USB devices from your server, or you want to use a CPU optimized build of VirtualHere you need to purchase a license.

My server is behind a NAT/Firewall how can my client access the server?

If your server does not have a public IP or is behind a firewall and your client(s) have public IP's you can use a "reverse connection", where the server initiates the connection to the client instead. In the Client, right click USB Hubs -> Specify Hubs -> Firewall/NAT -> Enable Reverse Connections. On the Server, edit the config.ini file and add the list of client IP's to the ReverseClients setting. With this setting the server will initiate a connection to each client listed, and the client will be listening for this connection. If the server cannot connect to the client, it will keep trying every 15 seconds. See here for more information