BMOW title
Floppy Emu banner

Archive for the 'Bit Bucket' Category

Windows 10 Crashes Part 4 – 2K Video

I’m still chasing after unexplained errors and crashes with the new Windows 10 powered HP EliteBook x360 1030 G2 laptop that I bought in May. See part 1, part 2, and part 3 for the backstory. The computer crashes, freezes, reboots, or experiences other problems every day or two when I’m not using it – I’ll return to the computer after a few hours and discover that something’s gone wrong. From investigation of event logs and other clues, the problems seem related to the graphics display. I’m using the laptop with an external ASUS PB258Q 2560 x 1440 monitor. On June 15 I uninstalled the HP OEM graphics driver and installed the generic Intel graphics driver, after which I had no more crashes, but I continued to see other problems:

  • computer periodically locks up with a blank screen and fan running 100%
  • computer is unexpectedly off, then hangs during booting
  • Start menu won’t open
  • Windows toolbar is missing
  • Chrome window gets resized to a tiny size

After a few months of testing, I believe I’ve finally isolated the problem: the computer can’t handle 2560 x 1440 graphics on an external monitor. If I use a 1920 x 1080 monitor, or a 2560 x 1440 monitor running at 1920 x 1080 resolution, everything is OK and the computer runs smoothly for weeks at a time. But switch to 2560 x 1440 resolution and problems reappear within a day or two.

What’s going on here? A previous commenter mentioned that for resolutions above 1920 x 1080, HDMI uses a different signalling method with a higher frequency data rate. That’s probably part of the answer, but if there were problems with the faster data rate, I’d expect to see video artifacts rather than Windows errors. I tried two different HDMI cables to see if that might help, but it made no difference. Perhaps the 2560 x 1440 resolution is forcing the integrated graphics hardware to work at a faster rate or in a different mode, exposing some firmware bug or hardware defect, or simply overheating.

As a last-ditch solution, as of today I’m running 2560 x 1440 using a USB-C to DisplayPort cable instead of HDMI. Maybe that will help, maybe not. If it doesn’t eliminate the problems, I’ll have to choose between attempting to RMA the computer or just living with 1920 x 1080 resolution. The lower resolution by itself isn’t so bad, but that solution would leave me with a useless 2K monitor. Anybody interested in some used hardware? 🙂

Read 3 comments and join the conversation 

Windows 10 Crashes Part 3 – New Clues

I’ve been struggling with unexplained Windows 10 crashes ever since I got a new computer in May. See part 1 and part 2 for the backstory. The symptoms were mysterious crashes and reboots that happened every day or two when I was not using the computer. From examining crash dumps and event logs, I found that most of the problems seemed related to the graphics display or window manager. I suspected that something about the computer’s handling of my external monitor was buggy – either in the Windows driver, the computer’s firmware, or the computer hardware itself.

I’m now more confident than ever that the external monitor is somehow causing the problem. On July 5, I swapped in a different external monitor and made a few other graphics changes, and since then I’ve gone 11 days with zero crashes or unexplained reboots. Unfortunately this new-and-stable config is not the config I actually want, so I still need to do more testing, but I think I’m getting close to a solution.

The computer is an HP EliteBook x360 1030 G2 laptop. It has a built-in 1920 x 1080 display. A second external monitor is connected by HDMI cable.

The crashes-every-day configuration was an ASUS PB258Q 2560 x 1440 monitor, connected with a no-name HDMI cable, and running at its native resolution. The Windows 10 Display control panel was set to “duplicate”, showing the same image on the external and internal monitor (scaled down). Scaling was set to 125% to make text more legible on the high-DPI external monitor.

The new-and-stable configuration is an ASUS VE228 1920 x 1080 monitor, connected with an Amazon Basics HDMI cable, and running at its native resolution. The Windows 10 Display control panel is set to “show only on 2”, effectively disabling the internal display. Scaling is set to 100%. Everything else is the same as before – same graphics driver version, etc.

Now I can do some A/B testing, and try to determine which of these differences is causing problems. Could it be something as stupid as a bad HDMI cable? Does the computer’s firmware not correctly handle scaling when the external monitor is a different resolution than the internal one? Could the 2560 x 1440 monitor actually cause crashes somehow, due to a bug in its firmware (I think HDMI is bidirectional) or electrical faults?

Read 5 comments and join the conversation 

Windows 10 Ongoing Crashes

My new computer continues to experience unexplained freezes and reboots, and I’m running out of ideas for fixing it. A few weeks ago I wrote about crashes in the Intel integrated graphics driver, and the symptoms have since changed, but problems continue. I’m now looking at either

  1. reinstalling Windows and all my applications, which would be a huge undertaking and might not fix anything
  2. replacing the whole computer and reinstalling all my applications, which would also be a huge undertaking
  3. resigning to accept a computer that can’t go more than a few days without crashing.

My previous Windows 7 computer easily ran for weeks without trouble, so this kind of instability is disappointing.

The new computer is a Windows 10 laptop (HP Elitebook x360 G2 1030). I use it with the lid closed, connected to an external monitor, keyboard, and mouse. I suspect this is the root cause of my problems. While this setup should work and does work most of the time, running a laptop with the lid closed doesn’t seem 100% robust. The computer sometimes seems to lose communication with the external monitor, or gets confused because the primary (internal) monitor is off. I see occasional event log entries like “A pointer device has no information about the monitor it is attached to”, window manager crashes, and other graphics related errors. And all of these problems happen while I’m away from the computer, when the external monitor is in power-save mode, but the computer is not asleep. When I return to the computer later, I sometimes find that it has frozen or unexpectedly rebooted.

I should emphasize that the computer rarely sleeps and never hibernates, so I don’t believe this is a sleep-related problem.

 
History

The first problem was crashes in the Intel integrated graphics driver igdkmd64.sys while I was away from the computer. Nearly every day, I’d return to the computer in the morning to find that it had crashed and rebooted sometime since its last use. Here’s what’s happened since then:

June 15 – I forced an update to the latest Intel graphics driver version 26.20.100.6890. This required completely uninstalling the HP-provided graphics driver first. Since then, I have not seen any more crashes in igdkmd64.sys.

June 16 – The computer was still running since the day before, but the Start menu and Cortana did not work. I restarted the computer and Start/Cortana began working normally again.

June 17 – The computer fan was blowing 100%, but both the external and internal screens were dark. I could tell that Windows was still running, because I heard the Windows disconnection sound effect when I unplugged USB devices, but nothing I did would get an image to appear on any screen. I forced a reboot with the power button. The event log showed several prior errors about the embedded controller (EC) not responding. In light of this, I disabled the 3rd-party program Notebook Fan Control. After rebooting, the computer hung on the boot screen with the HP logo, and did not proceed into Windows. After rebooting a second time, all seemed normal.

June 18 – The computer was still running since the day before, but once again the Start menu did not work. I used the task manager to terminate WindowsShellExperienceHost.exe, which then automatically restarted and restored normal Start menu functionality. Afterwards I fully uninstalled Notebook Fan Control. Following a tip related to broken Start menus, I also turned off the Windows option for Settings -> Accounts -> Sign in Options -> Use my sign-in info to automatically finish setting up my device and reopen my apps after an update or restart.

June 19 – All OK. The computer was still running since the day before, with no problems.

June 20 – All OK.

June 21 – All OK.

June 22-23 – Didn’t use the computer.

June 24 – All OK.

June 25 – The computer was still running since the day before, but again the Start menu did not work. I terminated WindowsShellExperienceHost.exe to get the Start menu working again.

June 26 – All OK.

June 27 – Didn’t use the computer.

June 28 – The computer fan was blowing 100%, but both the external and internal screens were dark. Nothing I did would get an image to appear on any screen. I had to hold the power switch to reboot the computer. The event log showed lots of errors in the preceding hours, including multiple desktop window manager crashes, and an application hang error from Microsoft.Photos.exe every 15 minutes stretching on for hours, all during a time when I wasn’t using the computer.

June 29 – The computer fan was blowing 100%, but both the external and internal screens were dark. Nothing I did would get an image to appear on any screen. I had to hold the power switch to reboot the computer. Nothing interesting was found in the Windows event log.

I don’t understand what’s going on here, but it’s a hot mess.

Read 16 comments and join the conversation 

Intel Integrated Graphics Driver Crashes

Here’s a mystery for Windows-lovers (or haters) – unexplained crashes in the Intel integrated graphics driver whenever the computer is left unattended. A few weeks ago I upgraded to a new PC, choosing an HP Elitebook x360 laptop that’s mainly used in a desk-bound docked mode. This computer is running Windows 10 Pro with whatever drivers HP saw fit to preinstall. The mystery began shortly after the new computer was put into service. When I’d sit down at the computer in the morning, I’d find a log-on screen and a blank desktop. All the programs and documents that I’d left open from my previous session were gone. Why?

 
Hunting the Cause

My first thought was to suspect Windows Update. Probably it was downloading and installing updates overnight, rebooting the computer afterwards. That would be annoying, but at least it would be explained, and wouldn’t happen too often. But the problem reappeared every day or two over the next week, sometimes even happening twice in the same day. I never witnessed the update reboot happening (or whatever it was), but when I’d leave the computer unattended for a couple of hours or overnight, I’d often find an empty desktop when I returned.

Eventually I thought to check the Windows event viewer (Control Panels -> System and Security -> Administrative Tools -> View Event Logs). Here I found symptoms of a very different problem than I’d imagined. The computer was frequently crashing and rebooting whenever I was away:

The same sequence of errors appeared five times over the last week, at seemingly random times of day: 9:25 AM, 5:25 PM, 1:26 AM, 8:21 AM, 12:57 PM. This doesn’t obviously fit with my usage of the computer. Some of the crashes happened an hour or two after I last used the computer, other crashes were 12+ hours after. The times also don’t seem to fit with any background task that I can identify.

I installed the program BlueScreenView to examine the crash dump files referenced in the BugCheck entries of the event log. Each crash dump appears to overwrite the previous one, so I was only able to example the most recent crash. To further complicate things, Windows appears to periodically delete the crash dump files according to some schedule I haven’t determined. But I was able to catch and examine several crash dumps over a few days, and all of them showed the same culprit. It was an error 0x0000007e (SYSTEM_THREAD_EXCEPTION_NOT_HANDLED) in igdkmd64.sys. A quick Google search revealed that igdkmd64.sys is the Intel integrated graphics driver for recent CPUs with built-in graphics hardware.

 
No Driver Update for You

My first thought was to update the graphics driver. Maybe the crash was caused by some bug that’s fixed in the current version. I visited the Device Manager and tried to update the driver there, but was told my driver version 25.20.100.6472 from December 2018 was already up to date.

Skeptical, I visited HP’s support site and confirmed that the latest driver version there is the same 25.20.100.6472. Then I visited Intel’s site to search for the driver, and discovered that the current version is 26.20.100.6890 and was released just two weeks ago on May 29. Aha! I downloaded the driver and attempted to install it, only to be denied:

It seems I had a special HP-customized version of the Intel graphics driver already installed, and the generic driver installer refused to replace it. Some more web searching suggested that it was almost always safe to ignore this and install the generic driver anyway, using the Device Manager to directly select the driver’s INF file rather than using the driver installer. But I was denied there too. Intel recently switched to some new type of driver installation that’s not backwards compatible with previous drivers, and they explicitly warn that bypassing the installer by manually choosing the INF will result in “minor to catastrophic” issues on your computer. Here’s the full text:

Important Note:

These new drivers labeled as Windows DCH graphics drivers are not backward compatible with our previous graphics drivers that we’re now labeling Legacy. This means if later you want to revert to a Legacy driver you will need to uninstall the driver via Windows Apps and Features and reboot the system before installing a Legacy driver. Failure to do so may result in minor to catastrophic issues on your system as well as system instability.

DO NOT use the INF / Have-Disk method to install or uninstall this driver as it bypasses the Intel installer designed to install these new drivers, thereby possibly resulting in minor to major system instability. For this reason, we’re not providing the ZIP file for the next several driver releases while users transition to this new Microsoft driver platform.

There’s probably a way to circumvent this and install the driver anyway, but since I have no specific reason to believe it will fix my problem, and Intel has warned me not to do it, I’m going to leave it as is.

 
Idle Speculation

That leaves me with unexplained system crashes without any obvious solution. But given the type and timing of the crashes, I can speculate about the possible cause.

The crashes always occurs when the computer is unattended, never (so far) while I’ve been using it. That suggests a problem related to sleep/wake, or else with some background process that only runs when the computer is idle. But the computer isn’t sleeping, or at least it shouldn’t be. The sleep timeout is set to 18 hours, and that seems to be working correctly. I don’t think the computer is sleeping or waking when these crashes occur.

The rather strange number of 18 hours was chosen to accommodate my backup software, Paragon Hard Disk Manager 16. It’s configured to do an incremental backup to an external USB drive every night at 12:30 AM. It’s also configured to wake the computer from sleep, if necessary, to do the backup. But I found that wake from sleep didn’t work, and if the computer was asleep at 12:30 AM, the backup wouldn’t happen. By extending the sleep timeout to 18 hours, it ensures that I’ll get a backup at 12:30 AM if I used the computer any time after 6:30 AM the previous day. That’s about right for my usage. These mystery crashes started at roughly the same time as when I installed the Paragon backup software, so maybe that’s a clue, or maybe it’s just coincidence.

The second detail of these crashes is that they’re in the graphics driver, so presumably they’re somehow graphics-related. This is a laptop computer used as a desktop, so the laptop normally has its lid closed and its built-in screen disabled, while I work with an external monitor, keyboard, and mouse. This isn’t exactly a rare setup, but it’s not the most common configuration either, and maybe it’s somehow contributing to the problem. I could try leaving the computer with the lid open for a while to see if that helps, but it’s not really how I wish to use the hardware.

There’s one more clue to consider. Also in the event log, I found many entries related to a problem with gfxdownloadwrapper.exe. I couldn’t find much information about this program on the web, but it appears related to Intel graphics drivers somehow. These errors first appeared on May 29 and the last one was on June 8, but the mysterious igdkmd64.sys crash has happened three more times since then.

The gfxdownloadwrapper problem is related, perhaps, but not a direct cause. For now this will remain a mystery, and an advertisement for why people dislike Windows.

Read 14 comments and join the conversation 

Shiny New Computer Setup

Upgrading to a new computer is exciting, but can also be a pain. Last week I replaced my primary desktop computer with a new laptop, and the setup has involved some bumps in the road. Read on for my take on high DPI displays, desktop vs laptop, data and program migration, and Windows 10.

The old PC was a Mac Mini running Boot Camp with Windows 7. It worked well enough, aside from some quirks with USB 3.0 and bluetooth support under Boot Camp. But the end of Windows 7 support is on the horizon. Now felt like the right time to update to Windows 10 and get some new hardware. The new machine is an HP EliteBook x360, so I can work on BMOW projects from anywhere instead of being tied to a desk.

 
High DPI Displays

Windows 10 has some work to do before it can match the Mac’s easy retina display support. Many programs scale correctly under Windows 10, but many don’t. Under Mac OS, high DPI displays just work. Whether it’s in the OS’s own windows and settings programs, or in 3rd party software, I’ve only ever encountered one program that didn’t scale properly on a retina display.

The same can’t be said for Windows 10. On a high DPI display, most of the built-in Windows programs scale nicely and look crisp, but a few items like file dialog boxes look blurry. Older third party software generally doesn’t scale well. You’re left with a choice between viewing programs at 100% scale where everything is tiny, or viewing them at a higher scale where everything is blurry. You might think that at least text should always scale properly, even if program icons don’t, but I haven’t found this to be true. Depending on what software you use most often, the experience with a high DPI display under Windows 10 may actually be worse than with a standard DPI display.

 

Desktop vs Laptop

For the first time in 30 years, my primary computer is not a desktop machine. Getting the absolute fastest performance wasn’t important to me, but I thought portability would be valuable. I’m primarily using the laptop as a desktop replacement, with an external monitor, keyboard, mouse, and USB hub. But I can unplug everything and walk away with the laptop when I need to.

I hadn’t anticipated the drawbacks of using a laptop as a desktop replacement. Fewer I/O ports, limited expansion, and higher cost were all expected, but I’ve found that a laptop-as-desktop simply doesn’t work as smoothly as a desktop. Sleep doesn’t work well. Sometimes I can’t wake the computer from sleep without opening the laptop lid. Sometimes the external monitor fails to turn on after waking from sleep. The computer occasionally gets confused about applying scaling settings appropriate for the internal or external display.

And the most surprising discovery about this laptop-as-desktop? It’s loud. Louder than any other desktop or laptop I’ve ever used. On battery power the Elitebook is nice and quiet, but when plugged in, the fan roars any time CPU usage gets above 10-20%. It doesn’t take much to reach that threshold – unzipping a file, rendering a busy web page, or even a background process can start the fans going. A laptop doesn’t have anywhere near the cooling capacity of a desktop case, so the fan has to work very hard to keep the CPU cool without forcing it to throttle to lower GHz.

At lower fan speeds it’s not so bad, but at max fan speed the Elitebook is so loud that it’s nearly unusable. I can configure the power settings for energy savings instead of max performance, and then it’s quieter, but there’s a huge performance hit of 25% or more. That makes the new computer as slow as the old one it replaced.

 
Windows 10

I disliked Windows 8.0 so strongly that I downgraded back to 7, so I approached Windows 10 with hesitation. I’m happy to report that the experience has been mostly good. In many ways, Windows 10 just feels like a more polished version of Windows 7. The wacky paradigm-breaking elements of 8.0 are gone, including charms and the disappearing start menu and everything running full-screen. Yes, the Metro / UWP programs are still there, but Microsoft seems to have stopped pushing it so hard and UWP programs work much like any other software.

The biggest gripe about Windows 10 that I’ve heard from others is the loss of control over updates. Compared to Windows 7, there’s less ability to control the timing of Windows updates or their contents. Automatic driver updates sound scary. I haven’t been using the computer long enough to experience this yet, but I’ll watch for it.

 

Program Migration

Copying all your data to a new computer is easy. Copying all your programs is decidedly not easy. In most cases you can’t actually copy the programs at all, due to their extensive reliance on the registry, extra DLLs, and other semi-hidden dependencies. Attempts to copy everything from C:\Program Files will generally result in a non-working copy. Third party utilities exist for copying programs between computers, but their success rate is questionable for anything beyond basic programs.

In most cases, the only real option is to reinstall all the programs from scratch on the new computer. If you’re lucky, you can download the latest version of the program, install it, and be done. But often it’s more complex than this – you may need to create an account or get a license key before you can download or install the software. And if your current version of the software is no longer available, the latest version may not always be a good replacement. Newer versions may be incompatible with your old data or other software components. In the worst case, the software may have been discontinued with no way to download it again.

Here’s a summary of which programs were a challenge to migrate.

 
Easy

iTunes, Inkscape, Notepad++, GIMP, VirtualBox, Saleae Logic, Atmel Studio 7, and various small utility programs were no trouble. I just downloaded the latest versions and installed them, taking only a few minutes. All of them worked fine under Windows 10, including the drivers for the programs like Logic that use external hardware.

 
Medium

I couldn’t log in to Gmail with Microsoft Edge using my Yubikey for 2FA. It would always appear to succeed, but then immediately complain “something went wrong”. Attempts to use my backup 2FA methods also led to the same error. I eventually gave up on Edge and installed Chrome.

Visual Studio Express 2015 is supposedly still available, but I couldn’t find a working download link. I use VS for developing several tools like the FC8 compression/decompression utility, and an internal order-processing tool. Microsoft seems to have abandoned the Express series, but fortunately Visual Studio Community 2019 worked smoothly with my old projects.

The driver for my Zebra 2844 label printer is built into Windows, but it requires some special print setup after installing the driver. I had to contact the eBay seller who sold me the printer two years ago in order to get the instructions again. Fortunately the seller is still around and willing to help.

The latest version of Eagle (PCB layout software) is subscription based, but the last non-subscription version (Eagle 6.6) is still available and works fine.

Quicken and Lattice Diamond (FPGA software tool for Yellowstone) required an account login before I could download the software. Diamond also required generating a new license key, even though the software is free.

I purchased CorelDRAW Suite a few years ago, and have an install CD with license key. But after installing it on the new computer, I was told the license key was already in use. By me! I had to unearth the login credentials for the Corel account that I created the first time I installed the software, and use it to update the license. Fortunately I’d used my real email address when I’d first created the Corel account, instead of supplying a fake one as I often do when I’m forced to create an account for some purpose I don’t want.

 
Hard

MPLAB is Microchip’s software for PIC development, and I use it for ADB-USB Wombat development. Downloading and reinstalling the software was no problem, but the Wombat project had lots of errors when compiled under the new IDE. I vaguely remembered installing some other software components several years ago in order to get MPLAB working, but I couldn’t remember what. It took several hours to untangle this hairball and refresh my memory, learning that I also needed to separately install the Microchip Library for Applications, the XC32 complier, and the Legacy PLIB. Four separate installs to get a working build environment.

The standard driver for my EasyPRO EPROM programmer only supports Windows XP. There’s a newer 64-bit driver, but it’s only available on a Chinese-language web site, and it took a long time to find it. Unfortunately I couldn’t install that driver under Windows 10 because it’s not digitally signed, which is now a requirement. I found the hidden Windows setting to disable enforcement of the signed driver policy, and successfully installed the 64-bit EasyPRO driver, but the hardware still didn’t work. The device manager revealed that “the driver for this device has been blocked from starting because it is known to have problems with Windows”.

After lengthy attempts to fix this somehow, I gave up and installed a Windows 7 virtual machine for the EasyPRO software under VirtualBox. The VM is configured to allow USB pass-through for the EasyPRO hardware’s USB vid and pid.

Migrating my Perforce database was challenging. While the rest of the world has largely moved to git, I still use Perforce’s free single-user configuration for source control of my projects. The version of the Perforce server that I’d been using is no longer available for download. I installed the latest version, and directly copied over my database files, but not surprisingly that didn’t work. I followed the instructions to export my old DB and import it into the new server, but that only produced an empty database. It required many hours of slogging through the Perforce documentation to understand what I’d done wrong, and successfully export and re-import the DB into the new server.

 
Hardest

My experience with the Xilinx development tools was the worst. I use the Xilinx ISE to develop firmware for the XC9500 CPLD chip at the heart of the Floppy Emu, so it’s essential to my business. The current version of Xilinx’s development tool is called Vivado. Sounds fine, except Vivado doesn’t support the XC9500 chip. The XC9500 may be an older product, but it’s still being manufactured and sold by Xilinx, so it’s curious why their software doesn’t support it.

For the XC9500 you need the Xilinx ISE WebPACK, which you can still find on their site. That’s OK, except the ISE WebPACK doesn’t support Windows 10… or does it? Read the ISE 14.7 description on their web site, and tell me what it sounds like to you. Notice there are a couple of references to “VM” that aren’t explained. Also notice the warning that this version only supports the Spartan 6 FPGA, even though it’s the ISE WebPACK that provides XC9500 support. Hmm.

The ISE is a huge many-gigabyte download, but when I finally finished downloading 14.7, I discovered two things:

  1. The software is actually a virtual machine image containing Linux and the Linux version of the ISE.
  2. They weren’t kidding about it being Spartan 6 only. XC9500 is not supported.

So that’s Xilinx’s solution to providing support for their older (but still active) products? Rather than adding support to Vivado, or updating ISE WebPACK to work on Windows 10, they give you a virtual machine image and tell you to run the old software under virtualization. The web page where the software is described doesn’t even mention this.

For reasons known only to Xilinx, even this virtualized version of ISE WebPACK is limited to Spartan 6 support only. To get XC9500 support I had to go back for another many-gig download of ISE WebPACK 14.6, which doesn’t work on Windows 10 and has no virtualized version. Fortunately I’d already set up a Windows 7 VM for use with the EasyPRO programmer, so I added ISE WebPACK 14.6 to that. Now I have to do all my CPLD development in a VM, but at least it works.

All of this would be understandable if the XC9500 were an obsolete, discontinued chip. Software companies can’t maintain support for legacy products forever. But the XC9500 is still being actively sold and marketed by Xilinx. They sell a product where the required development tools don’t work on any Microsoft OS released after 2009.

 

Are you thinking about upgrading your computer? What’s holding you back? If you’ve recently upgraded, how was the experience? Were any software programs challenging to migrate to the new machine?

Read 15 comments and join the conversation 

Explaining 4K 60Hz Video Through USB-C Hub

USB-C offers exciting new capabilities, including external monitors connected through the USB port. USB-C converters to DisplayPort or HDMI are common and inexpensive. USB-C hubs with external monitor support are also common, but understanding their capabilities and limitations can be extremely confusing. Some are Mac-compatible and some aren’t. Some need driver software. Supported resolutions and refresh rates vary widely. Some are advertised as “not for gaming use”. There are mentions of alt mode and dual mode and more. Prices range from $20 to over $300 for what look like very similar features. What’s going on here?

This is the guide to high-resolution video over USB-C that I wish I’d had. If you’re hoping to connect a high-res external display to your USB-C equipped computer, read on.

 
Forget About HDMI

Lesson 1 is to focus on DisplayPort video connections, and forget about HDMI. You’ll never find a USB-C hub that offers better video capabilities through its HDMI port than through its DisplayPort, but you will find hubs that offer better DisplayPort resolution and refresh rates. I strongly suspect most hubs with an HDMI port are actually implemented internally as a DisplayPort, with an integrated DisplayPort to HDMI converter. This is because DisplayPort video can be carried more efficiently on the USB-C connection than HDMI for the same resolution and refresh rate.

DualMode DisplayPort++ connectors are able to function as HDMI connectors with a simple passive adapter (it does 3.3V to 5V level conversion). Regular DisplayPort connectors can’t do this, and require an active HDMI adapter with more built-in smarts. Otherwise I’m not aware of any difference between these two DisplayPort types.

 
Bandwidth Tradeoffs – It’s All About The Lanes

The 24 pin USB-C connector is the key to understanding. The diagrams below are from techdesignforums.com.

USB-C connectors have four differential pairs called “lanes” for carrying high speed data. There’s also a fifth differential pair D+ and D-, that carries old-style USB 2.0 data.

Let’s look at what happens when DisplayPort is added into the mix:

USB 3.1 Gen 2 only uses two of the four lanes, as shown in the top two rows of this table. The other two lanes are essentially wasted (they will be used by USB 3.2). These two lanes can be repurposed to carry a native DisplayPort signal, using what’s called DisplayPort Alternate Mode, as shown in the middle table rows. In this case the USB-C connector functions like a DisplayPort connector with a different shape and some extra wires for USB data. There’s no loss of USB 3.1 performance. To the computer and the external monitor, this looks exactly like a regular DisplayPort connection.

Two lanes for DisplayPort provide enough bandwidth for one external monitor at up to 4K 30Hz. That’s OK for watching movies, but a 30 Hz Windows or MacOS desktop experience is painful. To keep a 60 Hz refresh rate, you need to step down to 2K or lower resolution.

If you want 4K 60Hz, 5K, or multiple external monitors, then you’ll need to use DisplayPort Alternate Mode with all four lanes for DisplayPort data, as shown in the bottom rows of the table. To the computer and the external monitor, this still looks exactly like a regular DisplayPort connection. But now there are no lanes remaining for USB 3.1 data. There’s only the old D+/D- pair providing slower USB 2.0 data. That means any USB-C hub using this technique for 4K60 video can’t have any USB 3.1 ports on it.

External DisplayPort monitors can also be supported using zero dedicated lanes for DisplayPort Alternate Mode, with one of two approaches. If the computer’s USB-C port has Thunderbolt 3 capability, then DisplayPort data can be encapsulated within the Thunderbolt data stream. The video data becomes just one more type of packetized data multiplexed with everything else. Thunderbolt 3 has enough bandwidth to support multiple 4K60 video connections this way, with enough bandwidth remaining for USB 3.1 data too.

This is great, but Thunderbolt 3 hubs are expensive, and the computer must have Thunderbolt 3 capability, and many computers don’t. This also looks different to the computer – unlike DisplayPort Alternate Mode, there are no native DisplayPort signals and no direct connection to the computer’s GPU. It’s not clear to me whether there’s a performance penalty for treating video this way, or if it’s all handled magically by the chipset with no loss of performance. My hunch is there’s no performance penalty. If you know more, please tell me.

 
DisplayLink

The other method of supporting external monitors with zero dedicated lanes is DisplayLink. This technology compresses the video data on the host side, sends it over a USB 3.1 connection as generic data, and reconverts it to video on the other end using a special chip like the DL-6950. Conceptually it’s like a remote desktop connection for sharing your work computer’s screen when you’re logged in from home, except everything happens locally on your desktop.

DisplayLink is nice for squeezing high-resolution video over a lower-bandwidth connection like USB, or for supporting multiple high-res external monitors without Thunderbolt. But if you have any alternative, I think DisplayLink is best avoided. Here are some disadvantages:

  • Host-side driver software is required. Driver availability and compatibility for Mac/Linux is spotty to non-existent. This is why some USB-C hubs are advertised as not Mac-compatible.
     
  • The driver software can slow your computer. It implements a virtual graphics card performing on-the-fly compression of video data, which adds some CPU overhead.
     
  • When the computer is very busy or there’s a lot of other USB traffic, video artifacts will appear. You’ll see pixelation, stuttering, frame dropouts, and other problems. This is why some USB-C hubs are advertised as “not for gaming use”.

USB-C hubs utilizing DisplayLink work fundamentally differently than the others, but you probably wouldn’t realize that from reading the product descriptions and technical specs on Amazon or Newegg. If you don’t know what you’re looking for, it’s easy to buy a DisplayLink-based hub without realizing it, and suffer its shortcomings unnecessarily.

 
TL;DR – What are the Options?

Putting all this knowledge together, we can group USB-C hubs into four categories based on how they treat video. Here are some examples in each category.

 
4 Lanes for Video

These support external monitors up to 4K60, or possibly 5K, but can only provide USB 2.0 data. That’s not the fastest, but it’s enough for keyboards and mice and basic printers. They should work on any computer that supports DisplayPort Alternate Mode, and typically cost around $30.

Cable Matters 201046 $38 – 1x DisplayPort, power, ethernet, 1x USB2
Cable Matters 201055 $58 – 2x DisplayPort, power, ethernet, 2x USB2
Monoprice 24274 $28 – 1x DisplayPort, power
Cable Matters 201026 $20 – 1x DisplayPort, power
Baseus B07P713FPD $25 – 1x DisplayPort, power

 
2 Lanes for Video

These support external monitors up to 4K30 as well as USB 3.1 data. Many are advertised as simply “4K” without mentioning the refresh rate. They should work on any computer that supports DisplayPort Alternate Mode, and typically cost around $30-$150.

HooToo HT-UC001 $34 – 1x HDMI, 3x USB3, power, card reader
OmniMaster B07KRMRJZD $55 – 1x HDMI, 1x mini DisplayPort, power, ethernet, 2x USB3, card reader, mic
Anker AK-A83310A1 $40 – 1x HDMI, 3x USB3, ethernet
Vava VA-UC006 $45 – 1x HDMI, 3x USB3 Ports, power, ethernet, card reader
StarTech DK30C2DAGPD $114 – 2x DisplayPort (switchable 2 or 4 lanes), power, ethernet, 2x USB2/3

 
0 Lanes for Video – DisplayLink

These support multiple external monitors up to 4K60, or possibly 5K, as well as USB 3.1 data. But they generally are only compatible with Windows computers, not Macs or Linux machines, and they have other performance drawbacks. They cost around $150-$200.

Plugable UD-3900 $89 – includes 1x HDMI, 1x DVI
Plugable UD-ULTC4K $193 – includes 2x DisplayPort, 1x HDMI
Plugable UD-6950H $149 – includes 2x DisplayPort, 2x HDMI
SIIG JUDK0811S1 $199 – includes 2x DisplayPort, 2x HDMI

 
0 Lanes for Video – Thunderbolt 3

These support two external monitors up to 4K60, or possibly 5K, as well as USB 3.1 data. They should work on any computer that has Thunderbolt 3 support. They are the most expensive option, with a typical cost around $250 to $300.

OWC OWCTB3DK12PSG $249 – includes 1x mini DisplayPort, 1x Thunderbolt display
Plugable TBT3-UDV $249 – includes 1x DisplayPort, 1x Thunderbolt display
Cable Matters 107014 $239 – includes 1x HDMI, 1x Thunderbolt display
Kensington SD5200T $239 – includes 1x DisplayPort, 1x Thunderbolt display
Elgato 10DAA4101 $250 – includes 1x DisplayPort, 1x Thunderbolt display
Belkin F4U095tt $296 – includes 1x DisplayPort, 1x Thunderbolt display
CalDigit TS3 $310 – includes 1x DisplayPort, 1x Thunderbolt display

 
The Liars

Finally, we have an interesting category of off-brand USB-C hubs costing around $30 that claim 4K60 video support and USB3.1 data support. Search Amazon and you’ll find quite a few of these. Based on knowledge of USB-C and DisplayPort, we now know this is impossible without using DisplayLink or Thunderbolt 3. These products are all lying about their capabilities! They are very likely DisplayPort Alternate Mode designs using four lanes. They may have blue USB ports labeled “USB 3.1”, but as many of the reviews attest, they only provide USB 2.0 data speeds.

Koopman B07J4XSSXV $24 – 1x HDMI, power, 1x USB
WBPINE HUB3-1 $20 – 1x HDMI, power, 1x USB
Koopman B07M5DMYKY $32 – 1x HDMI, power, 3x USB
NEWPOWER B07PQ5GZK1 $30 – 1x HDMI, power, 3x USB

What’s been your experience with external monitors connected by USB-C? Leave a note in the comments.

 

Read 6 comments and join the conversation 

Older Posts »