SOLVED: MacBook Pro 16" in clamshell mode is HOT & NOISY with a 1440p external monitor!

Alex Xu
5 min readMay 22, 2021

--

Update: this was resolved by macOS Monterey 12.3. But if you still have issues, this article or my others may help debug.

TLDR: My 2019 Macbook Pro 16" 5300M gets hot and noisy when connected to a 2560x1440p60 monitor, even when idle and the lid is closed. This article outlines a partial solution that enables silent operation.

This Medium article itself has gotten 45K+ views, 300+ upvotes/comments on Hacker News, and 450+ upvotes on Reddit, and many comments confirming that this solution worked for other people.

The 2019 MacBook Pro 16" with base 5300M GPU has a problem.

If you connect models with this specific GPU to an external monitor with an extremely specific (but common) resolution, many users report that their MacBook gets really hot and the fans spin up really loudly, even if they close the screen lid.

It is documented in this nearly 200 page MacRumors thread and the first comment on this Hacker News thread.

Specifically, many users report extremely loud fans when connected to 2560x1440p60 monitors. The problem is with this specific resolution and 5300M GPU combination. Tons of users in the comments report no problems when using 1080p or 4K monitors or with the upgraded 5500M/5600M GPUs.

I even tried with a 2560x1440p75 monitor. The issue is specific to 60 Hz monitors.

The solution to this problem, however, is just force enabling HiDPI mode for the monitor (instructions later). Unfortunately though, this solution requires the MacBook lid to be closed. I haven’t found any solution that fixes the problem while also keeping the lid open.

DISCLAIMER: This article only considers a 2019 MacBook Pro 16" on Big Sur 11.3.1 with 5300M graphics connected to a single external 32 inch 2560x1440p60 display. If you have a different setup, no guarantee this will work, since this issue might be a bug with exactly this GPU/resolution combination. I’ve seen many reports of no issues on the 5600M, and mixed reports on the 5500M.

Before, when connected to a 32 inch 1440p monitor, my MacBook Pro 16 inch reports 18–20W of power draw from the GPU. This is regardless of whether or not the Macbook lid is closed.

% system_profiler SPDisplaysDataType  | grep -C1 Resolution
S32D850:
Resolution: 2560 x 1440 (QHD/WQHD)
UI Looks like: 2560 x 1440 @ 60.00Hz
I switched to “Scaled” for demonstration purposes, but I typically just use “Default for Display”.

When I look at the GPU power draw, I see:

Measured using free OSS Stats. Source screenshot was 2560x1440. The equivalent statistic on iStat Menus is Radeon High Side.

This is insane power draw for a laptop at idle. It doesn’t take long for all this extra power to heat up the laptop and cause the fans to start roaring, even with nothing running, just idle.

Moreover, I noticed that after 50 battery cycles my battery health is already at 90%

Rocketing fans at nearly 100%

But if you force enable HiDPI mode (instructions later) for your external monitor while the lid is closed, this is what happens:

For demonstration purposes, when you look at “Scaled”, you get HiDPI options. When I actually use it, I use “Default for Display”
% system_profiler SPDisplaysDataType  | grep -C1 Resolution
S32D850:
Resolution: 5120 x 2880 (5K/UHD+)
UI Looks like: 2560 x 1440 @ 60.00Hz

Now when I look at the GPU power draw, I see:

Source screenshot was 5120x2880, due to HiDPI.

What exactly is HiDPI mode? Well, it’s basically forcing macOS to internally render at 2x resolution. So in the case of a 2560x1440p monitor, macOS is internally rendering at 5120x2880p. (Which happens to be the resolution of the 27" iMac). You can tell, since the new screenshots are twice as sharp.

Now the MacBook is drawing a much more reasonable 6W and stays silent during normal operation, as it should! Now it feels like a Pro machine!

Seeing as how it makes no sense that rendering at 2x resolution cause 1/3 of the power draw, this is most likely a GPU driver bug on Apple or AMD’s end, and a temporary solution could be force enabling HiDPI mode for 1440p monitors in the next release of macOS.

Note, these power draw settings only work if you keep the MacBook lid closed.

Moreover, I noticed that my battery health stayed the same after 25 more cycles with this fix applied.

Basically silent fans

You can force enable HiDPI mode yourself by following the instructions in this GitHub repo: https://github.com/xzhih/one-key-hidpi

This is not my repo, FYI. There are probably other 3rd party tools that can do this too.

I ran the 3rd party script with the lid closed, and it looked like:

% bash -c "$(curl -fsSL https://raw.githubusercontent.com/xzhih/one-key-hidpi/master/hidpi.sh)"

_ _ _____ _____ _____ _____
| | | | |_ _| | __ \ | __ \ |_ _|
| |__| | | | | | | | | |__) | | |
| __ | | | | | | | | ___/ | |
| | | | _| |_ | |__| | | | _| |_
|_| |_| |_____| |_____/ |_| |_____|

============================================

(1) Enable HIDPI
(2) Enable HIDPI (with EDID)
(3) Disable HIDPI

Enter your choice [1~3]: 1

-------------------------------------
|********** Display Icon ***********|
-------------------------------------

(1) iMac
(2) MacBook
(3) MacBook Pro
(4) LG Display
(5) Pro Display XDR
(6) Do not change

Enter your choice [1~6]: 6

------------------------------------------
|********** resolution config ***********|
------------------------------------------
(1) 1920x1080 Display
(2) 1920x1080 Display (use 1424x802, fix underscaled after sleep)
(3) 1920x1200 Display
(4) 2560x1440 Display
(5) 3000x2000 Display
(6) Manual input resolution

Enter your choice: 4
Enabled, please reboot.
Rebooting the logo for the first time will become huge, then it will not be

Please note, MacBooks can get pretty loud after restarting. Just wait a few minutes for it to quiet down. You’ll see the GPU is barely being used.

Also, don’t forget to set the resolution to “Default for display” in settings.

So welcome to having a silent MacBook when plugged into a monitor now! As it should be!

Footnote: in the first example, before running the script, selecting 1080p also reduces GPU usage to ~6W, but 1080p on a 1440p display looks terrible.

--

--

Alex Xu
Alex Xu

Written by Alex Xu

Tinkering around with things

Responses (7)