So it’s been six days since my last post, and after a busy and at times frustrating week (work-wise, nothing to do with Blackjack) I have some more updates.
First, good news.
The Plex migration worked flawlessly as I mentioned in the last post. We’ve been running it for 6 days now and have watched a bunch of stuff on it without any issue whatsoever. This is what should have happened but I’m still pleased.
As you can see, I’m also penning this on my Windows 10 VM, using dual screens. The performance is excellent – it’s faster at booting than the bare metal install on my old machine!
I’ve now shut down my old machine, physically replacing it with Blackjack and swapping the rest of the memory. We’re now running on 64GB total, with 24GB reserved for the Windows 10 machine. It was pretty happy with 8 and I’m sure would be happy with 16, but if I have a surplus why not use it?
So far the containers I have running aren’t taxing the system much at all, but I have further plans which may drive that usage higher.
There have been a few things that haven’t quite worked as well as I’d hoped though.
The first is honestly a minor issue at best. I was unable to pass the onboard audio through to the VM – this is something I’ve seen commented on all over the place, so I wasn’t so surprised.
This isn’t a huge issue for me though. I’ve already passed through my GPU, which has its own audio controller to do audio over HDMI, and that’s fine for me. I have a set of mini bookshelf speakers (Kanto YU2) for my desktop audio, so I simply plugged the 3.5mm jack into my Dell monitor and we’re off to the races. Everything still sounds great, and I don’t need the rest of the audio ports on the motherboard.
If I were doing surround sound or something more complex it could be a problem requiring a discreet audio card, but this is fine for me.
The second issue also has to do with passing devices through to the VM, and this one has been a bit more annoying (and resulted in me typing this post on an Amazon Basics keyboard that I borrowed from work rather than my Microsoft Natural Wireless keyboard.
My motherboard has a few USB controllers, but the primary onboard ports are all grouped under the same IOMMU group. This means that the controller handling the USB port that the Unraid USB drive is plugged into also controls all the other ports.
In short, I can’t pass the USB controllers through to the Windows 10 VM without rendering the server unusable.
But why do I want to do that anyway? After all, you can pass individual USB devices through to a VM.
The problem with passing through individual devices is that they become part of the VM ‘template’ – so if they are not there one day and you try to boot the VM, it will throw errors and refuse to boot.
The solution is to pass an entire controller through to the VM. That way, it will always be present, and you can then hot-swap USB devices without breaking things.
The USB devices themselves are also picky, as I discovered to my annoyance. Passing my Microsoft Wireless Controller USB for my keyboard works intermittently and then not at all. Meanwhile, my Logitech Unifying Receiver for my mouse works just fine!
Further complicating matters is the USB switcher I have on my desk, which usually has my webcam and MS keyboard receiver connected to.
Caution, segue ahead.
After a few months working from home, I started to get serious wrist & arm pains from RSI (repetitive strain injury) as I was using an Apple Keyboard and not the Natural Keyboard I usually used at work. For a while I used the MS keyboard, but it became annoying having to switch the USB dongle between my work MacBook Pro and my Windows 10 machine when I wanted to change at the end of the day / weekend.
Yep, truly a First World Problem, but a problem nonetheless.
(Meanwhile my Logitech MX Master 2S just has a hardware switch that allows it to switch between three different paired devices – way to go Logitech!!)
I also needed to switch my webcam around, as I needed it for Zoom at work, and every other weekend on Skype to keep in touch with my parents.
(Yes, I know that most people now just use their work laptops as their personal machines but I like to try and stay away from that wherever possible.)
I also had a third machine in a Dell Latitude 7400 that Dell had sent me for evaluation and which I was using as a physical Windows machine for the rare occasions I needed to test something on actual hardware vs a VM.
To resolve all of this I picked up a cheap and cheerful USB switcher that allowed me to share 3 USB devices with 4 machines. It has worked great for the most part, but it doesn’t work well with my new setup for the reasons outlined above – by its nature, it will disappear from the VM when it’s being used by the MacBook and potentially cause problems.
So, right now I’m using an Amazon Basics keyboard physically connected to the machine, and that’s working fine. I’ve just picked up a PCIe USB expansion card which will arrive on Monday – that will have its own IOMMU group and can be passed through directly to the VM, and I’ll just plug everything I need into that. After all this is a gaming VM, so I’ll want to connect a controller to it at some point, and I also have a USB headset.
I should be able to connect the USB switcher to it, and go back to flipping my webcam & keyboard between the two machines.
Frustratingly, there are two other USB controllers in this machine which are in their own IOMMU groups and ripe for doing things with … but nothing is connected to them!
The front panel of the machine had two physical connection options when I set the machine up, and naturally I picked the wrong one. I’m assuming, but pretty sure the other connector belongs to a separate USB controller. I took a look inside the machine but if you’ve ever tried to wrestle a USB 3.0 motherboard connector free you’ll understand what happened next.
The USB cable pulled the header clean off the motherboard, and I was unable to get it free. It’s now safely connected again, but it’s annoying. This is common issue with this type of connector – you’ll find posts around the internet about its poor design. It happened on my last build, though that time the port was so tight that it actually separated the plug from the cables’ pins.
I may take another crack at it this weekend, or leave it for now, as the incoming USB card also has its own USB header.
The other reason I was in the guts of the machine – and another of the ‘kind of annoying’ issues – was to check on my cooling.
This machine has been running hotter than I think it should – currently 46C whilst doing a lot of nothing – and playing around with the fan speed profiles hasn’t really done anything to help. I ran a brief stress test on the CPU and the temps went to 97C rapidly before I cut it short. My old machine topped out around 85C with a very similar cooler attached, albeit a less powerful CPU.
On Friday night I detached the heatsink, cleaned up both the thermal pad and the CPU die, and reseated it with some fresh Arctic Silver 5. It was still idling in the mid-40s, so today when I needed to take a look at the USB header, I took the heatsink off again to check. Honestly everything looked as good as it could be, so I started wondering if my initial pre-build thought about a water-cooling loop for the CPU was in fact the way to go.
However as I write this, I’ve just run an OCCT stress test on the CPU again, and its holding steady around mid-80s, which is exactly where I want it to be.
So overall, a few hiccups but still very pleasing so far!
Next up is public access, reverse proxy, encryption, and other good stuff, but that’s for another time and another post.