Picture of Sam

Sam Starkenburg

With a deep appetite for Python, virtualization, Linux and Windows, I've made it my mission to devour as much knowledge as I can.

Visit my Linkedin

HVHTPC Project

Hypervisor Virtual Home Theater PC

Design Goals

  • Set up a fully functional hypervisor that can host VMs of all types
    • Linux, Windows, etc.
  • Use compact hardware that is not obtrusive in a home theater
  • Set up one of the VMs with video passthrough for a HTPC
    • Original goal was to do this with the Intel graphics. This is theoretically possible, but I wasn't able to implement this at the time of the project.
    • Due to the previous point, a discrete GPU was purchased in place of a 4 port NIC


  • VM -- A Virtual Machine, an operating system running in software emulating dedicated hardware
  • VT-x -- Intel’s base virtualization technology, available in most modern Intel CPUs
  • VT-d -- Intel virtualization technology that allows for directed I/O to a VM, available on most non-K Intel CPUs above the i5 product line
  • iommu -- Input/Output memory management unit, a technology to give VMs dedicated hardware access, such as PCI-passthrough

Hardware used:

  • Intel Core i5 4460
    • Important to use and i5 or above due to the need for VT-d and other virtualization technologies.
    • More cores are also good for more VMs
  • 16GB of RAM
    • The more RAM the better for having a larger number of VMs
  • ASRock B85M-ITX motherboard
    • Chosen due to ASRock being better with iommu in my research.
  • 4 Port Gigabit NIC
    • Allow 4 VMs to have dedicated network access, so that they are not bottlenecked by bridging through one port
    • Due to the fact that I had use a dedicated video card for video output, this was omitted from the build. However, this does not seem to limit the performance in any way.
  • PNY Nvidia GT 730
    • GPU to pass through to the VM
    • Nvidia is supposedly subverting the use of consumer GPUs in virtual machines, so some workarounds are required
  • XFX R5 220
    • Has UEFI, which is helpful for passthrough
  • Less specific hardware
    • Silverstone Milo ML05B
      • Best bang for the buck HTPC case I could find that fit in my goal of being non-obtrusive
    • Silverstone SFX ST30SF 300W PSU
      • Smallest/cheapest SFX PSU I could find from a reliable manufacturer
    • Cryorig C7 cooler
      • Due to the computer sitting in a TV cabinet with limited airflow, I decided to get a better cooler to deal with the limited airflow
    • Storage
      • 64GB SSD for the hypervisor
      • Larger 128GB SSD for the guest virtual disks


  1. Install Fedora OS
    • Nothing different from any other base install
  2. Follow the steps from the Fedora wiki here
  3. https://wiki.centos.org/TipsAndTricks/WindowsShares #3
  4. https://wiki.centos.org/HowTos/KVM the bridging part
    • make sure it says DEVICE not NAME for the br0 config
  5. https://fedoraproject.org/wiki/Using_UEFI_with_QEMU
  6. http://kodi.wiki/view/HOW-TO:Autostart_XBMC_for_Linux
  7. http://vfio.blogspot.com/
  8. http://kodi.wiki/view/Settings/System

Potential steps

  • Give qemu user access to network shares

Problems Encountered

  • GPU compatibility
    • Theoretically the Intel integrated gpu should work, but it’s not quite possible in the real world yet (as far as I can tell)
    • Due to this, I had to cut the NIC, but bridging is working just fine
    • Nvidia has supposedly been making it so that their consumer gpus don’t work with passthrough, in favor of their enterprise models
    • Kernel and software version available in repos
    • Many server versions are made for reliability, but that means keeping back software versions, so many distributions are shipped with a 3.x kernel

Coming soon!