9

I have a MacBook Pro with Apple M1 Chip used for the software development. I want to use two external displays to connect with my MacBook. But according to Apple documentation, Apple M1 chip only supports one external displays.

I have searched many materials, which told me that Apple M1 only has one monitor for the external display in addition to the one for the built-in display. So I guess M1 supports two displays? And I only need to use my MacBook with lid closed, which means I only need two displays.

So I wonder that with XNU kernel modification, can supporting two external displays on Apple M1 be achieved? I think there are two prerequisites. The one is that my MacBook can recognize two external displays simultaneously, and the other is that the monitor used for the built-in display can be used for an external display. I am looking forward to some precious suggestions. Thanks.

By the way, I have searched and found a solution, which uses DisplayLink and creates a software monitor for the external display. But I don't think it is a proper solution because of the high overhead and power cost. I hope a better solution.

2
  • 1
    It's a physical bandwidth limitation. You can't 'get round it' -- except by the software methods that DisplayLink uses.
    – benwiggy
    Commented Aug 20, 2023 at 11:25
  • M1 and M2 were built on the processors used in the phone and tablet space. Because of this, they have real physical limitations. While two displays are supported, the built-in display takes up one of those spots regardless is the lid is closed or not. The Pro/Max/Ultra versions of the chip are required for more displays. Commented Aug 21, 2023 at 13:55

6 Answers 6

14

DisplayLink is your only choice on base M1 and M2.

I have a website section that could help understand how to do this, what to buy, and also how to get brightness control if you may need that: Macbook M1/M2 Dual Monitor Setup

A kernel modification would not work because the M1 has one of the Display Coprocessor chips (DCP) connected to the builtin display in hardware.

On the Mac Mini for example, that same DCP is hardware connected to the HDMI port, which is why it allows for two external monitors.


DisplayLink explanation

DisplayLink is not sending raw video data from the Mac Thunderbolt port → down through the cable → into the monitor port (as it usually happens with normal monitors).

There’s a special chip inside those hubs, which receives compressed video data as USB packets from the Mac, decompresses it and sends it as raw video to the monitor.

On the MacBook you need a DisplayLink driver software that knows how to create a virtual display and stream its contents to the hub. (CGVirtualDisplay for curious devs around here)

The CPU overhead comes from the software driver having to constantly stream and compress 60Hz video.

Virtual Displays have a lot of limitations:

  • No color control (NightShift, Gamma, TrueTone, profile calibration etc. will not work)
  • No DDC (you won’t be able to adjust the real brightness/volume of the monitor through an app like Lunar, software dimming through a dark overlay is the only way to dim brightness)
  • Max 60Hz refresh rate
  • Rotation and resolution have to be supported by the chip and the driver separately, macOS can’t help you with that
2
  • 1
    You describe DisplayLink as sending video to the Mac "(just like a webcam would do)". This make no sense to me. DisplayLink is for sending video from the Mac to an external display. Commented Aug 21, 2023 at 11:47
  • @DavidAnderson indeed, the direction is reversed, but the communication is similar. The webcam captures video data, encodes it as an MJPEG or H264 stream and sends it as USB packets to the Mac. With DisplayLink, the Mac creates a virtual display, streams it with a proprietary encoding, and sends it as USB packets to the DisplayLink adapter. I was referring to the USB communication + lossy encoded video that is similar, not the direction. Commented Aug 22, 2023 at 11:36
1

You cannot with a XNU modification make for example an M1 MacBook Air support two external monitors.

The best solution at the moment for that is using DisplayLink. A dock with DisplayLink will make it possible to connect two external displays, and have you desktop spanned over those two displays.

As you mention there is overhead and power cost associated with that. However, most with external displays also have access to power while plugged into your displays, so that you're not running on battery - thus the power cost becomes less of a disadvantage.

For software development, the overhead involved is typically much less than when for example compared with gaming. I doubt you'll even notice the overhead on an M1 Mac running for example Xcode.

0

I have never found any explanation of how exactly DisplayLink works. I believe space is reserved in internal memory for one or more additional displays. When installing he DisplayLink software, you have to give permission for the software to record the video sent to this reserved internal display memory. The recorded video is then compressed and sent by USB (or perhaps Thunderbolt 3/4) to the DisplayLink chip contained in the external adaptor or dock. The DisplayLink chip (and perhaps additional hardware) then converts the compressed video into HDMI or DisplayPort signals which can be sent to one or more connected monitors. The bottom line is that the CPU instead of the GPU is used to send the video signals.

At least one user here at Ask Different has reported the DisplayLink software has high CPU usage.

Another consideration would be if get an adaptor uses DisplayLink and has USB ports. Transfers between the Mac and a fast SSD plugged into an USB port on the adaptor could be slowed if the USB is being shared by both DisplayPort and the SDD.

If you want two displays, about the only options you have is to use DisplayLink (or similar product) or get a different Mac.

0

You can check how many displays your laptop supports by finding it in this list and scrolling down to "Display Support". I have a 2021 14" MBP which supports "up to two" external displays.

In my case, I was able to get two working by plugging one into the built-in HDMI port and a second into a USB-C port via a USB-C to HDMI adapter. I believe it also depends on the exact specs of your monitors.

1
  • 1
    14" MBPs have a more powerful chip (M1 Pro, M1 Max, M2 Pro, or M2 Max) which has native support for more displays than a non-suffixed M1.
    – 8bittree
    Commented Aug 21, 2023 at 13:45
0

For a workaround, you could consider using AirPlay. Connecting an Apple TV (or other AirPlay video device) to a display with HDMI and then using extended desktop mode with AirPlay is one such way. You will have several limitations but it is worthwhile considering it.

0

It might be your graphics card. I've been running two Dell HD monitors (P2715Q) for years on my MBPs (Intel and M1). I use two USB-C to DisplayPort cables to run both external displays while also using the native display.

Never had any issues, even when I swap out the MBPs. Both rigs will run the two displays at 60hz in full resolution.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .