The Switching Saga, Part 3

Almost exactly 2 years ago I wrote about my experience with trying to find the perfect switching solution for my setup. At that time, I ended up choosing an integrated KVM/Dock called the iDock C10 from a company called AV Access, and while that is a very good little device, I eventually found its limits.

As a reminder: I’m trying to find a way to manage having both a work-provided laptop and my personal desktop PC at the same desk, using the same keyboard, mouse, and dual-monitors (but not at the same time). Historically, you would solve this problem with what’s called a KVM (or “KVM switch,” with the “KVM” standing for “Keyboard, Video, Mouse”). These devices are fairly commonplace and readily available (and relatively inexpensive), but they all share the same design principle: switch between 2 sets of inputs to 1 set of outputs… and almost universally the 2 sets of inputs are identical.

It was this last thing that was the main challenge from my last attempt: the laptop only has USB-C outputs – no HDMI, no DisplayPort; just USB-C. So at a minimum, you’d need a device (typically a laptop “dock” of some sort) to convert the USB-C to “normal” video and USB signals for the KVM.

This is where the 2nd problem cropped up: my desktop’s GPU was old and only had 2 usable outputs (we won’t count the DVI connector it had, as almost nothing uses that anymore):

  • HDMI
  • DisplayPort

Since most KVMs have identical inputs for both devices they switch, this means I’d need a laptop dock that also produces HDMI and DisplayPort (or I’d need to introduce a video converter somewhere in the chain).

These are the problems the iDock C10 solved in one device: it used USB-C to connect to the laptop, internally converted its video output (acting like a dock), and also let me switch to a more “normal” input from the desktop, which conveniently was in the form of HDMI and DisplayPort (to drive the 2 monitors).

This was all fine and good… until my work issued me a new, more powerful laptop.

As soon as I started using the new laptop, I immediately started getting messages from Windows saying “your display connection might be limited.” I also began to notice that my laptop was driving the displays at only 60Hz (compared to the 75Hz my desktop was capable of), even though the laptop’s dedicated GPU was more than capable of driving the displays at the higher refresh rate.

I also began to experience some other odd behavior – the second display randomly cutting out, and occasionally a complete system crash (a “blue screen,” though the screen isn’t blue anymore) with a confusing KERNEL_SECURITY_CHECK_FAILURE.

I started doing some digging and it turns out the answer was basically that the iDock was trying to do too much, and was limited by the bandwidth of the USB-C connection itself.

As an aside, “USB-C” is a terribly confusing term – technically it just refers to the physical standard of the cable and connector; there are many different protocols that can be run over it, all of which have different capabilities and limitations. So, one USB-C connection is not guaranteed to be like another USB-C connection. One of the most common instances of this is with Thunderbolt: some USB-C connections are Thunderbolt capable, while others are not (typically, they are just USB 4.0 connections “under the hood”).

The problems I was encountering were due to a myriad of factors all intermingling:

  • Driving 2 high-resolution displays which pushed near the max bandwidth for the USB-C connection (due to the protocols the iDock supported)
  • A complicated USB topology due to having the iDock itself (which acts as a USB hub) plus the USB hub in my monitors (both of which I was using).
  • The iDock doing some EDID emulation – effectively copying the internal USB IDs of every device connected to it, and “pretending” to be those devices even when you’ve switched to another computer. This is done so that each computer never notices that the displays and USB devices have been switched, avoiding the problem of Windows getting confused when it suddenly sees that it has no monitors.

Basically, the displays were near the max bandwidth, and having so many USB devices and hubs in the chain made switching unstable, and something in the graphics stack on my laptop would occasionally fall over as a result.

Because these were limitations from the iDock C10 itself, the only solution was to replace it – which felt particularly annoying, given that it was not a cheap device and I’d bought it only 2 years ago. But, such is the march of technological progress, sometimes.

So after doing a great deal of research I settled on exactly the sort of configuration I had tried to avoid previously: using a dedicated dock for the laptop, and a more “normal” KVM to do the switching.

Making this happen, however, was not quite as easy as it sounded.

On the laptop side, I bought a very well-regarded Dell Thunderbolt Dock (a WD22TB4). Given that my work laptop was also a Dell, this seemed like the smart choice – maximum compatibility, and a very capable dock that had the bandwidth to handle driving dual displays at high resolution and refresh rates.

The dock also output 2x DisplayPort connections, which further simplified the video chain – video over USB-C is natively DisplayPort (DisplayPort Alt Mode I think it’s called) – so this would reduce the number of video conversions.

Because I settled on an entirely DisplayPort-based video configuration, this means I had to do something about my antiquated RTX 1050 Ti graphics card, since it only had 1x DisplayPort and 1x HDMI outputs. (Again, ignoring the DVI connection.) The only real answer if I wanted to avoid converters was to get a new graphics card… which is exactly what I ended up doing. I settled on an RTX 4060, which gave me 3x DisplayPort connections (and gave me a nice graphics boost, which is a nice bonus).

With the new dock and GPU, I now had 2x DisplayPort coming from both devices, so I could use a fairly standard KVM – I went with a UGREEN model. I also disconnected the USB hubs in my monitors, preferring instead to keep things simple with a single, small USB hub to give me just a couple extra ports from the KVM.

With this setup I was also able to re-route all the cables under my desk, which helped clean up my setup a bit. The UGREEN KVM also came with a (wired) remote switch, which meant I didn’t have to reach under my desk to switch devices – another nice bonus.

With all this, I was finally able to get rid of the crashes, display blanking issues, and “display connection might be limited” messages – and I was able to drive the displays at 75Hz from the work laptop as well.

Unfortunately, this wasn’t quite the end of the story. Both my laptop and desktop were connected to a pair of Edifier speakers. These speakers had no switching or anything; they just happened to have 2 sets of inputs on the back. Both were connected via ordinary analog headphone jacks. However, with the laptop now powered by the dock, there was an audible “ground loop” hum which wasn’t there when the laptop was powered by its factory power brick. (Both the dock and the factory power brick connect via USB-C, but clearly the dock uses some different power isolation.)

In the end, the simplest way to resolve this was to just get a small USB DAC for the laptop, so that its audio output is isolated – I went with a tiny little Apple USB-C dongle. This eliminated the audio hum, and now finally my setup was complete.

This setup lacks any sort of EDID emulation, so each computer sees its displays and all USB devices effectively get “unplugged” every time I switch, but thankfully Windows has gotten smarter and better at handling this, so it’s not as big of a deal as it used to be.

At last I have a setup that works for my use case – it took way longer than it should have to get here, but at least now it is done, and this setup is modular enough that it can grow if any of my devices get swapped out.

At every stage of this journey there were complications – it was never just a simple case of “oh, it’s this one thing,” there was always a “yeah, but…” At the beginning I never would have thought that just switching between two devices could be this complicated, yet here we are. Technology marches on – but the problems remain the same, it seems. Here’s hoping I don’t have to mess with this setup again for a good long while!

By Keith Survell

Geek, professional programmer, amateur photographer, crazy rabbit guy, only slightly obsessed with cute things.

1 comment

  1. @Keith@www.starkeith.net @keith@social.starkeith.net Oh that's SUCH a pain, but I'm so glad you got it sorted! I honestly kinda gave up on KVMs the last time I tried shopping for one (admittedly around a decade ago), because I literally could not find one that could drive the resolution of even one of my monitors, let alone two. So the solution I settled on was to just use Remote Desktop to connect to my work laptop (and ensure its config allowed that, which was a challenge at one particular job but hasn't been since), which also made it a lot easier to dual-wield computers; not always an option, but sometimes it is! ^.^

Likes

Reposts

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)