External Monitor Not Detected After macOS 26 Upgrade

I have a MacBook Pro (M4) connected to an external monitor via a USB-C to USB-C cable. It was working fine until I upgraded the OS to macOS 26 earlier today. However, the external monitor is no longer detected, even after I restarted the MacBook Pro.

MacBook Pro 14″, macOS 26.0

Posted on Sep 15, 2025 1:05 PM

Reply
Question marked as Top-ranking reply

Posted on Oct 10, 2025 5:26 PM

Macbook Pro M4 Max 128GB RAM, OS 26.0.1. -> Kensington TB4 Docking Station, LG 49W-L59C Monitor (attached via USBC to Docking Station).


With me everything Thunderbolt (I have a Thunderbolt 4 Dock by Kensington that has been the MBP's primary companion since I brought it home) takes random dumps flapping disconnect/connect after upgrading to OS 26. As others say, undesired behavior stops if you reboot with the TB4 dock connected, or if you leave it alone for a while with the lid open and just wait it out for a *very* long time (1/2h or more, every flap seemingly "lasting longer" on until I feel I can finally close the lid). Open or closed lid doesn't matter (though closed lid goes to sleep eventually).


It flaps all my TB peripherals back and forth as well, so it's the connection dock-Macbook, not USBC monitor-dock. It's insane and it was all working perfectly before the upgrade.


Setup works well with other devices including an non-upgraded Macbook Air M2 I also own.


You can claim "now we perfect video with no dropped frames" all you want, but graceful degradation on regular usage really is table steaks expected behavior in 2025 (and that it "eventually fixes itself" with lid open suggests a software bug, not cables). Submitted a bug and everyone who can reproduce should as well.


I write software (but not Kernel stuff). Here's a log around one of the flip-flaps (filtered by IOThunderboltSwitch) in case interested Apple devs see this.


default	16:31:54.565680-0700	kernel	130796819157us IOThunderboltSwitch(0@1)::finalize - terminate device: Kensington TB4 Docking Station (047d:809b:01) (8087:0b26:03)
default	16:31:55.780139-0700	kernel	130798033610us IOThunderboltSwitch(0@0)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x0 port = 2 plug = 1
default	16:31:55.780402-0700	kernel	130798033873us IOThunderboltSwitch(0@0)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x0 port = 1 plug = 1
default	16:31:55.895400-0700	kernel	130798148869us IOThunderboltSwitch(0@1)::syncTargetAndNegotiatedWidth - port (0@0:2) - bonding took 0 ms
default	16:31:55.895863-0700	kernel	130798149332us IOThunderboltSwitch(0@0)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x0 port = 2 plug = 0
default	16:31:55.907162-0700	kernel	130798160632us IOThunderboltSwitch(0@1)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x1 port = 2 plug = 0
default	16:31:55.960740-0700	kernel	130798214209us IOThunderboltSwitchIntelJHL8440(0@1)::overrideSupportedCLxStates - clx = 0x00000000
default	16:31:55.961412-0700	kernel	130798214881us IOThunderboltSwitch(0@1)::configureCLx - (0x1 -> 0x1) supported = 0x7 common = 0x0 parent = 0x7 child = 0x0 options = 0x0 enable = 1 current = 0x0 target = 0x0 status = 0x00000000
default	16:31:55.993346-0700	kernel	130798246815us IOThunderboltSwitchIntelJHL8440(0@1)::overrideSupportedCLxStates - clx = 0x00000000
default	16:31:55.994040-0700	kernel	130798247510us IOThunderboltSwitch(0@1)::configureCLx - (0x1 -> 0x1) supported = 0x7 common = 0x0 parent = 0x7 child = 0x0 options = 0x0 enable = 1 current = 0x0 target = 0x0 status = 0x00000000
default	16:31:56.004702-0700	kernel	Sandbox: ThunderboltAccessoryUpdaterServi(1256) allow iokit-get-properties iokit-class:IOThunderboltSwitchType7 property:Router ID
default	16:31:56.144109-0700	kernel	130798397578us IOThunderboltSwitchIntelJHL8440(0@1)::overrideSupportedCLxStates - clx = 0x00000000
default	16:31:56.144807-0700	kernel	130798398275us IOThunderboltSwitch(0@1)::configureCLx - (0x1 -> 0x1) supported = 0x7 common = 0x0 parent = 0x7 child = 0x0 options = 0x0 enable = 1 current = 0x0 target = 0x0 status = 0x00000000
default	16:31:56.594343-0700	kernel	130798847808us IOThunderboltSwitch(0@1)::processPlugEvent - Thunderbolt HPD packet for rid = 0 route = 0x1 port = 13 plug = 1
default	16:31:56.691675-0700	kernel	130798945140us IOThunderboltSwitchIntelJHL8440(0@1)::overrideSupportedCLxStates - clx = 0x00000000
default	16:31:56.692414-0700	kernel	130798945879us IOThunderboltSwitch(0@1)::configureCLx - (0x1 -> 0x1) supported = 0x7 common = 0x0 parent = 0x7 child = 0x0 options = 0x0 enable = 1 current = 0x0 target = 0x0 status = 0x00000000


While cable changes may work for others, it hasn't been the case for me. My cables are new T5/80Gb cables (I already paid for a maxed out M4 Max, what's a TB cable?)


What sucks is that every other laptop including my Linux laptops of a huge range of versions and generations all work and behave beautifully with this exact setup... but what's by far the most expensive machine I've ever bought, decides to take random dumps now. It's just frustrating and makes me feel like I wasted my money here (when I know a crappy bus implementation when I use one; I mean, I have windows machines too).


I really hope they fix this. Soon. It's not okay since it hits me at least 2x/day as I move around with my laptop as one does.


Good luck everyone, hope any of this helps.

84 replies

Sep 28, 2025 12:27 PM in response to hlsu

Hey everyone, I've also just experienced this issue after upgrading to macOS 26. So a few things. I am nearly certain this is not due to the cable. Everything was working as it should before the upgrade. The issue appears to occur with USB-C connected monitors, particularly when using a docking station.


Here's how I reproduce the issue. When I use my Mabook in clamshell mode, it functions as expected. Now, if I unplug the dock and then use the laptop with nothing else connected, it works. But when I replug the Dock into the computer, that's where I get issues.


A few things I've tested: unplugging and replugging the monitors - no go.

Unplugging the Dock and replugging that in, no go. Plugging in the USB-C monitor directly to my MacBook Pro M1 Max, and still no go.

** In that Dock, I have an external USB HD connected, as well as other USB components, and if the monitors don't come into play, the drives do not show up either, so nothing is recongnized.


A few things that work, and a tentative solution until Apple resolves this issue. Plugging the monitor directly into the MacBook Pro M1's HDMI port works flawlessly. Additionally, for me, rebooting the Mac resolves the issue until I perform the above step, which is unplugging, which I do because I work at different locations.

I'm not an Engineer, nor do I play one on the Internet, but somehow the signal that checks if something is connected to USB after waking from sleep has a hiccup in it. The issue only occurs when I remove the USB-C cable, use the computer, and then reinsert it into the system.


Oh, before someone asks, I've tried all three of the USB-C connectors on my MacBook Pro. I've tried it without the Dock, and I have also tried it with other monitors I have connected to my other Mac in my home office. This issue occurs only on my MacBook Pro and only when I switch from clamshell (or open) mode to using only the laptop screen, then back to the external monitors. (And as I said, my bandaid fix is to reboot, but what a pain in the you know where)


Now that I can reproduce it, I'm writing up a bug report for Apple. Good luck, everyone!

Nov 13, 2025 3:35 AM in response to hlsu

🛑 RESOLVED: M3 Pro (macOS Tahoe) HDMI Port Not Detecting External Monitor (ViewSonic VX3276-MHD-3)

Setup: MacBook Pro 14" M3 Pro (Built-in HDMI port) → ViewSonic VX3276-MHD-3 Monitor

macOS Version: macOS 26.1 (Tahoe)

Problem: After upgrading to macOS Tahoe, the built-in HDMI port failed to detect the external monitor. The monitor showed a black screen despite working perfectly fine on the previous OS version (Sequoia). Standard troubleshooting failed to resolve the issue.



Part 1: What DID NOT Work (Do NOT Waste Your Time)

The core issue is a highly sensitive driver protocol in the M3 Pro's HDMI 2.1 port under macOS Tahoe, which rejects the handshake with older/standard HDMI 1.4 monitors when corrupted display preference files are present.

Here are the fixes that failed:

  1. Standard Reboots/Re-plugging: (Obvious, but still failed).
  2. OSD Settings: Disabling Adaptive Sync, FreeSync, or HDR on the ViewSonic monitor.
  3. Basic Software Workarounds: Holding Option (⌥) while clicking "Detect Displays" in System Settings.
  4. Display Management Software (BetterDisplay): Even forcing redetection, reinitialization, and creating a Virtual Screen failed because the system was likely blocking the necessary permissions or corrupted files prevented a clean driver launch.
  5. Initial Cable Upgrade: The original HDMI cable, even at 1.5m, was insufficient due to lack of certification/quality.


Part 2: The Final, Successful Solution

The solution required a combination of the highest-quality hardware and a deep-level software reset to purge the display configuration cache.


1. Hardware(Cable) Upgrade (Essential Prerequisite)

The M3 Pro's new port requires an absolutely clean signal. The old cable was not good enough.

  • Action: Replaced the original HDMI cable with a Certified Ultra High Speed HDMI 2.1 Cable.
  • Successful Cable Used: Zebronics HAA2021 (HDMI 2.1, 48 Gbps, 2M).
  • Why it worked: This cable provides the high signal integrity required by the M3 Pro's HDMI 2.1 port, eliminating hardware failure as a possibility.


2. Deep System Reset (The Critical Step)

Even with the new cable, the Mac still failed to connect until the corrupted display files (.plist files) were forcibly removed from the operating system.

🚨 WARNING: Proceed with caution. These commands remove system display settings and require a restart. Do not attempt this unless you have exhausted all other options.

Disconnect the Monitor: Ensure the new HDMI cable is unplugged from the MacBook Pro.

Open Terminal: Go to FinderApplicationsUtilitiesTerminal.

Run the Commands: Execute the following three commands sequentially, pressing Enter after each one. The system will prompt you for your admin password for the sudo commands.

rm -f ~/Library/Preferences/ByHost/com.apple.windowserver.displays*.plist

sudo rm -f /Library/Preferences/com.apple.windowserver*.plist

sudo killall Dock

Restart the Mac: Immediately go to the Apple menu () and select Restart.

Reconnect: Once the Mac has fully rebooted and you are logged back in, plug the new HDMI cable back into the M3 Pro's built-in HDMI port.



Final Result:

The external monitor was instantly detected and showed the picture correctly for the first time since the macOS Tahoe upgrade. The Display Settings pane correctly showed both the MacBook and ViewSonic monitors.

I hope this detailed guide saves other M3 Pro users the extensive time and frustration I experienced.

Nov 13, 2025 7:56 AM in response to abhiraj_chatterjee

Thank you for your excellent, detailed report. I expect to send other users to read it for guidance.


for those who are Terminal-averse, those preference files CAN be accessed through Finder.


To access the folder using Finder for the system-wide preference

Copy and paste this string into:

Finder > Go menu > Go to Folder


/Library/Preferences


then find and delete this file:

/Library/Preferences/com.apple.windowserver


-AND- To access the folder for your-user preference

Copy and paste this string into:

Finder > Go menu > Go to Folder


~/Library/Preferences


then find and delete whichever of these two files you find:

~/Library/Preferences/com.apple.windowserver.<UUID>.plist -OR-

~/Library/Preferences/ByHost/com.apple.windowserver.<UUID>.plist


-- where [~] tilde is an active abbreviation for "current user"

-- and <UUID> is a string of hexadecimal numbers unique to your system, grouped as 8-4-4-4-8 hexadecimal digits


Restart REQUIRED after these deletions.


Nov 20, 2025 6:51 AM in response to hlsu

SOLVED by reducing the refresh rate


After upgrade to 26.1 my two displays connected via a docking station to the Mac mini didn't work anymore. When disconnecting one of the cables the other one started to work. Replacing cables didn't resolve the problem.


What did resolve it for me was the following:


  1. Connected one display to the Mac mini
  2. Connected one display to the docking station
  3. In the system configuration -> display, both screens show 2560 x 1440 @ 165 Hz
  4. I changed the refresh rate of the displays from to 2560 x 1440 @ 60 Hz
  5. Connected both displays to the docking station
  6. All is working fine
  7. Increased the refresh rate of both monitors
  8. If still worked with 165 Hz for one and 144 Hz for the other, it failed the moment I put both to 165 Hz
  9. Restarted the above process and put both on 2560 x 1440 @ 144 Hz
  10. All is working fine


So not sure what exactly has changed with the 26.1 release, but at least I can use the docking station again.

External Monitor Not Detected After macOS 26 Upgrade

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.