Friday 26 July 2019

Routing VMs anywhere

I'll start my saying that these things are freaking amazing!

I've been running a few VMs on my unRaid box for a while now. Specifically my main workstation (Win10 /OSX switchable), as well as some utility boxes.

One of the challenges has been physical location and signal transfer - my unRaid server resides in my attic and any VMs that required an interface (display & USB), would need to be located within the reach of a HDMI run.

This ruled out virtualising some systems, including a Win 10 / OSX dual boot hackintosh that's the main system the family uses. It's miles away from the server with no hope of running cables.

I'd toyed with HDMI over ethernet before, with little success. Recently, however, I came across the Av Access range of products...

The family system runs on an i3 CPU with 770 GFX GPU (very compatible with OSX) driving a Dell U3011 Display. Now, that's a bit of a beast of a monitor. It can run at 2560x1600 if driven  in a Dual Link DVI-D configuration. It's an old display, but amazingly crisp and expansive at that resolution.

Unfortunately, It does not look so great at non-native resolutions, so any solution that restricted me to 1080P wouldn't fly.

Browsing Amazon one day, I came across the AV Access range, which looked super interesting. Theres a very wide range of devices, all with subtly different features. I settled on the 4KEX100-KVM for a few reasons;

The specs promise 'FULL UHD 4K@60Hz(YUV4:2:0 8bit) HDMI signal over single Cat 6/6a/7 cables up to 330ft/100m' so there's a degree of future-proofing, and my 2560x1600 requirement falls well inside that range.

Also, this version passes through USB, and offers 4x usb ports on the receiver, so good flexibility there. Finally, it runs on PoE, so no need for a power supply at the receiving end.

The specs looked good, my research confirmed that it should work for me, though there was a degree of vagueness as to whether it would pass resolutions other than 4K and 1080P. There was only one way to find out - buy one and test it!

I was a little concerned that this (or any ethernet solution) was going to drive the U3011. It achieves its 2560x1600 resolution using Dual Link DVI-D. It also supports this resolution using DisplayPort, but HDMI tops out at 1920x1200. So, while the KVM unit supports up to 4K, there was a lot of opportunity for compatibility issues between VM and Screen!

On arrival, I unpacked the units and connected them up on a purely HDMI chain. So, HDMI out from my RX570 card into the sender. Cat5e out from ender to my patch panel. (this version requires direct connection, not through a switch or hub). Cat5e from my wall to the receiver and HDMI from receiver to display. (I also connected the sender USB to the system, and plugged a mouse and keyboard into the receiver).

Straight away, everything worked. The screen gave me a desktop and my mouse and keyboard worked flawlessly. Except I was running at 1920x1200 :-(

I wasn't too perturbed, however, as this is what I expected.  I made some changes as follows;

RX570 DisplayPort out -> DP/HDMI Adapter -> HDMI Cable -> Sender -> Cate5e -> Receiver ->HDMI Cable -> HDMI/DVI-D Adapter -> Display DVI-D 1 Input.

Voila! 2560x1600 with full mouse/keyboard control over Cat5e.

I really didn't expect that to work, but it did, and really, really well! There's no lag in visuals or input and everything behaves as if I were sitting right beside a hardware PC, not a virtualised system in a server in the attic!

So, I can now replace the big, noisey black box in the living room with a tiny AV Access receiver and retire that system. As an additional bonus, the set up even supports the USB hub built-in to the display, this extending the number of available USB ports.

OSX Mojave Picking Up The U3011 Perfectly

The only wrinkle I have is when I plug in my SoundsSticks speakers. Doing so causes the screen to intermittently blank for a couple of seconds, as if trying to sync. Unplugging the SoundSticks reverts to normal operation. I expect I'm breaking this stated restriction: 'When connect with 2 or above USB devices on receiver,please make sure that the total power consumption less than 5V 0.5A', so I'll need to find another way to handle audio from the VM (the KVM unit does include support for transfer of audio as well, so I'll likely use that in some way).

(update: I solved the audio issue with a cheap USB audio card. Details here.)

All in all, though, this is an excellent solution for migrating machines to an unRAID VM and accessing them from anywhere in the house as long as there's a network outlet.

Here's the full list of bits I used to make this work;


       


If you found this interesting, check out some other of my posts tagged 'unRaid'.

Footnote: In my research, I'd come across this post that outlines how to force a display card to correctly recognise the U3011 display on OSX. I thought I'd have to follow this, but in the end, did not.  Leaving it here in case it helps someone else.

Update: I had a sticky problem where the AV Access unit would prevent my system from booting if the USB cable was plugged in. I finally solved the problem. Otherwise, very stable.

6 comments:

William Armstrong said...

If you are hitting the power limit, just buy a cheap y-split USB adapter, and plug the USB into both the hub and a mobile charging adapter. You would need to look at the specs for the speakers, but that should be enough power for them.

Albin said...

I am using the AV Access 4KIP100-KVM unit. I did not get sound for my initial test. I was using a DVI monitor at first, then switched to an HDMI monitor with builtin speakers and still no sound, then Windows recognized a new monitor was connected and then sound started coming through the monitor speakers. I would guess you may be having the same issue, DVI does not carry audio. I think you are loosing the audio when introducing the DVI to HDMI adapters.
On a differnet note, I had to enable MSI interrupts by adding a registry entry, but my graphics card is a nvidia GTX 1060, not sure if you will have the same issue.
To prevent issues with USB devices getting disconnected I added the vfio-pci.ids=8888:1d2d to the append section of the suyslinux configuration of the flash drive (go to main>flash) change 8888:1d2d to your device id making sure it is on a different bus from your unraid usb boot drive. Thbis allows you to go into the VM settings and check the box next to this device to pass it through to the vm.
Doing this allows me to plug and unplug any usb device and windows picks it up right away. The weird thing is you have to pass through the receiving unit of the kvm extender, no the sending unit, so be sure you isolate the id for the receiver unit. (I had to plug and unplug receiver to figure it out.), but I agree it is currently the best solution.

I was hoping to use the one to many option with the unit I purchased but I also am not sure it will work as I would want it to with the whole pass through set up.

MediaServer8 said...

Thanks for all that info Albin.

I actually have my USB host adapter passed through to the VM, so no need to identify and pass through the KVM units. USB has been rock solid since setup, no disconnects or anything.

I won't ever be able to pass audio over the DP/HDMI link as I ultimately need to connect the receiver to a DVI-D input on my display to access the full 2560x1600 resolution the monitor supports and, as you say, DVI doesn't support audio. Anyway, this is not my issue. I'm trying to use a pair of SoundSticks speakers that plug into the computer via USB. It's when I connect these to the KVM that I experience display blanking. As noted, I expect it's an issue of exceeding the voltage specifications. plan to try a USB Y splitter as suggested by someone on Reddit. This will allow me power the speakers from a wall wart. Otherwise, I'll try some other/different USB audio devices.

Albin said...

Passing the host adapter through works also, I just did not want to pass the whole host adapter through. When I first started looking at this, I had DVI monitor, so I was looking at all kinds of ways to get audio, as I am sure you have. Did you look at the HDMI Audio extractor devices, I think you could send the video with the hdmi cable into the extractor, which will give you audio, as long as the hdmi audio extractor will make windows think you have an hdmi monitor, then you would connect your monitor to the hdmi out on the extractor (adding the hdmi to dvi adapter before connecting the cable to the monitor. That was what I originally planned, but I really wanted to keep things simple so I just got an hdmi monitor with sound.

Some type of bluetooth device may work also,
Anyway good luck to you.

snoopy said...

Hi,

so if you have two VM's and two KVM extenders how do you connect this to kvm?

Passtrough specific usb, graphic card, audio to VM and use those physical outs for one of the kvm? How do you send audio for multile vm's to specific kvm?

I am thinking of similar route where i will have 3 VM running on unraid and will have 3 KVM to use for home pc's.

How is the gamplay over KVM? Any lag?

MediaServer8 said...

Hi @snoopy

You’ve pretty much got it. Each vm would have its own gpu and USB adapter passed through and connected to the kvm.

Audio could be done over Hdmi, if you have some kind of decoder at the client side. Or, you can feed audio into the kvm sender via a 3.5mm jack, if you have analog out from your vm at the server. The way I do it is a cheap external usb audio device at the client side that drives both local powered speakers and.or headphones.

We’re not avid gamers in our house, but the setup runs strategy games like cities skylines and civiilization no problem.