Skip to content
Go to file


A barebones android device farm for controlling android devices via a web browser.


Screenshot of multiple devices displayed on web brpwser

Setting up


sudo useradd -m hats
sudo usermod -aG wheel hats
echo 'hats ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers
  • Set up hats-linux for Centos 7 / Fedora or Ubuntu.
  • Ensure environment variables to linuxbrew, npm (for appium) and android-sdk are properly configured in /home/hats/.bashrc.

Set-up USB Server

  • Go to VirtualHere Server and download VirtualHere Server.
  • You can run VirtualHere Server on a separate machine. This machine will act as the USB Server
  • A VirtualHere license is required to connect more than 1 android device.
  • Ensure VirtualHere USB Server process / service is running.
  • Refer to VirtualHere Server documentation for more information on setting up USB Server.

Set-up USB Client

  • Clone or download this repo and copy it's contents to /opt/scripts.
  • On the Fedora workstation, install VirtualHere Client by downloading their linux release. Note: Commercial software.
  • Copy vhuit64 and vhclientx86_64 to /opt/scripts .
  • Ensure the USB Client can access the USB Server running VirtualHere Server. TCP port 7575 or 17575 must be open.
  • Within a Desktop Environment, run /opt/scripts/ . Choose the USB Server and device(s) you want to attach to the USB Client.

Set-up barebones-device-farm

  • Install xpra and websokify by using sudo dnf install xpra python2-websockify -y (Fedora) or sudo apt install xpra python-websockify -y (Ubuntu).

  • Additionally, for Ubuntu, apply the following fixes:

    echo "allowed_users=anybody" | sudo tee --append /etc/X11/Xwrapper.config
    sudo unzip -d /usr/share/xpra/
  • For Fedora, install scrcpy via linuxbrew by using brew install scrcpy.

  • For Ubuntu,

    sudo unzip -d /usr/local/share
    echo "export PATH=$PATH:/usr/local/share/scrcpy" >> ~/.bashrc
    source ~/.bashrc

Set up auto-start service script

  • Copy service script sudo cp device-farm.service /etc/systemd/system .
  • Run sudo systemctl daemon-reload.
  • Enable the service sudo systemctl enable device-farm.service.
  • Allow service to start on boot by running the following as root if [ -f /etc/systemd/system/*.wants/device-farm.service ]; then echo "On"; else echo "Off"; fi


  • Start the service by using sudo systemctl start device-farm.service.
  • Check service is running sudo systemctl status device-farm.service.
  • Browse and control your android device http://localhost:14500.

Other Usage

  • Set up your own CI tool such as GoCD or Bamboo and run appium / robot framework tests.
  • Check the website for more information on usage scenarios and configuring display client.


A barebones android device farm for controlling android devices via the web browser.




No releases published


No packages published
You can’t perform that action at this time.