Saturday, June 6, 2026

turdles to the left of me, turdles to the right

The Intel NUC8 Graphics Post-Mortem: Why Linux Fails Where Windows Succeeds

If you are attempting to run a standard Linux distribution (like Ubuntu, Xubuntu, Mint, or Debian) on an Intel NUC8 (Beanstalk/Coffee Lake generation, featuring Intel Iris Plus Graphics 655) using the built-in HDMI port, you are likely walking into a technical trap.

This summary breaks down the systemic architectural failure that causes these machines to black out, freeze, and lock users out of the console during boot, and provides the definitive roadmap to fix it.

1. The Root Cause: The Invisible Hardware Lie

The fundamental issue is an architectural mismatch between how standard operating systems assume a computer monitor is connected and how the NUC8 physically routes its video signal.

  • The LSPCON Bridge: The Intel Iris Plus 655 GPU does not natively speak HDMI; it only outputs DisplayPort signals. To provide an HDMI port, Intel soldered an independent middleman chip onto the motherboard—a MegaChips LSPCON (Level Shifter / Protocol Converter). The operating system cannot see past this chip; it believes it is talking directly to a native DisplayPort interface (DP-1).

  • The Boot Race Condition: When Linux boots, it initializes incredibly fast. The display manager fires off a resolution command (a modeset) the millisecond the graphics driver loads. However, the LSPCON chip requires several seconds to wake up, initialize its own internal firmware, and complete "link training" (handshaking) with your monitor.

  • The Silent Driver Failure: Because the LSPCON chip itself is awake, it falsely signals to the Linux kernel graphics driver (i915) that the port is ready. Linux sends the video data, but the signal hits a brick wall because the monitor handshake hasn't finished. The driver misinterprets this silent failure as a success, locks down the video pipeline, stops trying to initialize the port, and leaves the monitor with zero data signal.

2. Linux vs. Windows 11: Why One Breaks and One Works

It is common to assume a hardware defect is at fault because Windows 11 handles the exact same machine flawlessly. The divergence comes down to radically different driver philosophies:

Windows 11 (Intel DCH Drivers)

The native Intel driver for Windows is explicitly programmed to anticipate unstable digital ports and active protocol bridges. If a video handshake fails during a state change (like a cold boot or waking from sleep), the Windows driver aggressively monitors the Hot Plug Detect (HPD) line. It executes an instantaneous background loop, repeatedly resetting the video link until the monitor wakes up and catches the signal.

Linux (Direct Rendering Manager & X11)

The standard Linux graphics stack operates on rigid transitions. Under legacy setups, the system triggers a single, early-boot modeset configuration. If the hardware isn't ready at that exact microsecond, the system fails to adapt. It leaves the display pipeline jammed in a broken state, resulting in a permanent black screen.

3. The Graphic Stack Divide: Xorg (X11) vs. Wayland

How catastrophic this failure is depends entirely on your display server architecture.

Legacy Xorg (Used by Xubuntu, Mint, and older distros)

X11 utilizes a rigid, blocking architecture. When a display manager like LightDM initializes early in the boot sequence, it takes a global system monopoly over the Linux virtual terminals (VT) and input handlers.

  • When the i915 driver deadlocks on the uninitialized LSPCON chip, the entire X11 server freezes.

  • This freeze traps your input stack along with it. Your keyboard goes completely dead, making it physically impossible to press Ctrl+Alt+F2 to drop into a rescue terminal (TTY2). The system becomes a brick until hard-rebooted.

Modern Wayland (Used by standard Ubuntu, Fedora, etc.)

Wayland eliminates the X11 middleman. The display server and window manager are unified into a single compositor that communicates directly with the kernel's Kernel Modesetting (KMS) API.

  • Input Isolation: Wayland handles hardware input via an entirely separate kernel layer (libinput).

  • If the LSPCON chip fails its handshake under Wayland, your screen will still go black, but your system will not freeze. Your keyboard remains fully alive. You can instantly press Ctrl+Alt+F2 to drop into a crisp, responsive text console to rescue the machine, restart services, or review clean logs.

4. The Definitive Fixes for NUC8 Owners

If you own this hardware and want a stable, high-performance Linux experience, do not waste time editing Xorg configuration files or rewriting user-space cleanup scripts. Use one of these three architectural solutions:

Fix A: The Thunderbolt Port (The Best Solution)

The onboard LSPCON chip only controls the physical HDMI port. The Thunderbolt 3 / USB-C port bypasses this chip entirely and is wired directly out of the CPU's native display lanes.

  • By using a native USB-C to DisplayPort cable (or a high-quality external USB-C to HDMI adapter), you eliminate the hardware race condition entirely.

  • The i915 driver can communicate directly with your monitor, the standard Linux gating mechanisms function perfectly, and you can boot straight into your desktop with full GPU hardware acceleration out of the box.

Fix B: Migrate to a Wayland-Native Desktop

If you must use the physical HDMI port, do not use an X11-dependent distro like Xubuntu or Mint. Install standard Ubuntu (GNOME/Wayland) or migrate your system via the command line:

Bash
sudo apt-get update && sudo apt-get install ubuntu-desktop -y
# Select 'gdm3' as your default display manager when prompted

Even if the HDMI port drops its initial sync, GDM3 and Wayland will prevent the system from deadlocking your keyboard, allowing you to access virtual terminals or rely on Wayland's dynamic hot-plugging to wake the monitor up after boot.

Fix C: Flash the LSPCON Motherboard Firmware

Intel released a targeted firmware patch for the NUC8 motherboard to address this specific chip-level latency issue.

  • Warning: The updater utility is a low-level kernel application that cannot be run through Wine or Proton without risking a permanent brick of your video output.

  • You must burn a temporary Windows To Go live environment to a USB thumb drive using Rufus, boot natively into a Windows kernel, and execute Intel’s official HDMI Firmware Update Tool to permanently update the chip's microcode timing parameters.

    !!! To be absolutely clear, and to make sure anyone reading this post-mortem doesn't chase a false hope: Fix C is absolutely NOT a guarantee for Linux.

    If you are using the built-in HDMI port on Linux, flashing the firmware is merely a gamble on microsecond timings. It does not structurally rewrite how the Linux kernel handles the hardware.

    Here is the unfiltered truth about why Fix C is a roll of the dice:

    1. The Underlying Race Condition Remains Intact

    The firmware update adjusts the motherboard chip's internal microcode so that it powers on and runs its link-training loops a fraction of a second faster.

    However, the core software flaw in Linux doesn't change: the driver still checks the interface too early, the LSPCON still returns a premature "Ready" signal before the actual monitor is fully awake, and X11 still fires a single, unverified modeset command into a blind pipeline.

    2. It Depends Heavily on Your External Hardware

    When someone on a forum says, "The firmware update fixed my Linux black screen!" what they really mean is: "The update made the chip fast enough to beat the Linux boot timer when paired with my specific monitor and my specific HDMI cable."

    If you take that same updated NUC8 and plug it into a different brand of monitor (especially a high-resolution ultrawide or a 4K TV that takes an extra second to cycle its internal power state), or use a lower-grade HDMI cable with different electrical impedance, the handshake will lag again. The split-second it lags, the Linux boot timer wins the race, the driver jams, and you are right back to a pitch-black screen and a frozen keyboard.

    The Takeaway for Anyone Frustrated

    ⚠️ Warning to NUC8 Linux Users: Flashing the LSPCON firmware under Windows changes the motherboard's timing coefficients, not its architecture. It shifts the odds in your favor, but it is not a definitive software fix.

    If you want a machine that works flawlessly every single time—regardless of what monitor or cable you plug into—Fix A (The Thunderbolt port) is the only true, bulletproof engineering solution for Linux. It drops the unreliable middleman entirely and forces the Linux operating system to communicate honestly with your display hardware.

     

dog turdles all the way down

it took a lot of back-and-forth with Claude before this "solution" was figured out.

The Year of the Linux Desktop, my ass.

 

Intel NUC8 (i3-8109U) — i915 Display Fix for Linux

Hardware

  • Device: Intel NUC8 (NUC8i3BEH / NUC8i3BEK or similar)
  • CPU/GPU: Intel Core i3-8109U with Iris Plus Graphics 655 (Coffee Lake GT3e)
  • PCI Device ID: 8086:3ea5
  • Display output: HDMI (internally routed through an LSPCON — a DisplayPort-to-HDMI Level Shifter/Protocol Converter)
  • No discrete GPU

OS

  • Ubuntu 26.04 (kernel 7.0.0-22-generic)
  • X11 with LightDM
  • Intel DDX driver (xserver-xorg-video-intel) using SNA acceleration

The Problem

The Iris Plus 655 (device ID 3ea5) is not in the i915 driver's default probe list and requires i915.force_probe=3ea5 to load. Once loaded, the driver initializes correctly — firmware loads, the GPU is recognized, and the framebuffer is created.

However, the NUC's HDMI port is not a direct HDMI output. It is wired through an LSPCON chip that converts DisplayPort to HDMI. The display therefore appears as DP-1 to the kernel and X11, not HDMI-A-1.

The core issue is a boot-time race condition: when the display manager (LightDM) starts during early boot and performs its initial modeset, the LSPCON chip has not yet completed link training. The modeset fails silently — X11 logs show a successful configuration, but the monitor receives no signal. The screen remains blank.

Key observations that led to diagnosing the race condition:

  • The i915 driver loads and initializes without errors.
  • X11 starts, reads the monitor's EDID, selects the correct mode (3440x1440@60), and reports success — yet the monitor shows no signal.
  • Manually restarting LightDM from a text console always works.
  • Switching to a VT (Ctrl+Alt+F2) and back reliably resets the display link.
  • Using video=DP-1:1920x1080@60e or video=DP-1:3440x1440@60e in the kernel command line results in User-defined mode not supported errors in dmesg — the LSPCON isn't ready to accept modesets that early.
  • chvt over SSH does not produce the same link reset as a physical VT switch or a console-initiated VT switch.

The Fix

Kernel Parameters

In /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="i915.force_probe=3ea5 i915.enable_psr=0 i915.enable_dc=0 i915.enable_guc=0 acpi_osi=Linux"

These disable Panel Self Refresh (PSR), Display C-states (DC), and GuC firmware submission, all of which can cause additional instability with this device. Apply with:

sudo update-grub

X11 Driver

Install the Intel DDX driver instead of relying on the generic modesetting driver. It has dedicated LSPCON handling code:

sudo apt install xserver-xorg-video-intel

Create /etc/X11/xorg.conf.d/20-intel.conf:

Section "Device"
    Identifier "Intel"
    Driver "intel"
    Option "AccelMethod" "sna"
    Option "DRI" "3"
EndSection

Boot Workaround — rc.local VT Switch

The workaround exploits the fact that switching virtual terminals forces the LSPCON to retrain its link. By performing a VT switch late in the boot process (after the hardware has settled), then starting the display manager, the modeset succeeds reliably.

Create /etc/rc.local:

#!/bin/bash
sleep 15
/usr/bin/chvt 2
sleep 1
/usr/bin/chvt 1
sleep 2
/bin/systemctl start lightdm
exit 0

Make it executable:

sudo chmod +x /etc/rc.local

Set the boot target to multi-user (text mode) so LightDM doesn't start before the VT switch:

sudo systemctl set-default multi-user.target

Reboot. The system will boot to a text console, rc.local will execute the VT switches after 15 seconds, and LightDM will start with a working display.

Why This Works

The VT switch (chvt 2, then chvt 1) triggers a full display pipeline teardown and re-initialization at the kernel level. This forces the LSPCON to perform a fresh link training sequence. By the time rc.local runs (15+ seconds into boot), the LSPCON hardware is fully powered and ready to negotiate, so the subsequent LightDM startup modeset succeeds.

Notes

  • The 15-second sleep may be reducible on faster-booting systems, but err on the side of caution.
  • If a future kernel adds 3ea5 to the i915 probe list and fixes LSPCON init timing, this workaround may become unnecessary.
  • This issue affects NUC8 models with the i3-8109U / i5-8259U / i7-8559U (Coffee Lake GT3e with eDRAM). NUC models with GT2 GPUs (no LSPCON) are not affected.

 

Friday, June 5, 2026

2026

from what i hear,

this is still not quite yet

The Year of the Linux Desktop 

Tuesday, June 2, 2026

hardly loving grace

Probably 80%+ of the time, I find any online sites to be just broken and awful. And most are either some kind of 3rd party thing (e.g. contractor who is using intuit quikbooks) or probably was paid for once to some web consultancy (e.g. some international community group i volunteer with that has required online training). They all are immediately obviously bad, broken, dumb, wrong, unhelpful, misleading, and plain stupid. The kicker being that since they are 3rd party, nobody has the leverage or money or time to actually fix things. Like, not even basic bugs, let alone the overall UX.

And of course the other usual places to experience horrible UX have not gotten any better. When the insurance company said they would call me back later, and they did, the IVR hung up on me when I pressed "1" to accept. It did this twice. And the process of even getting to that point was a nightmare itself.

To some degree there isn't enough regulatory or competitive reason for any of these things to actually get any better, 'natch. 

Monday, June 1, 2026

technology apologists

should kind of sort of be you know pilloried at the stake.

like: WSL2 is such a bunch of crap, at least for my use cases.

i know: dog playing chess, and all that. 

Saturday, April 25, 2026

unsurprised

JUST HOW EFFING BAD ALL UI UX ABOUT RUNNING LLMS LOCALLY IS, JUST UTTER DOG POOP