question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Mac mini 12+ DCP initialization fails with some monitors

See original GitHub issue

I have two monitors: An iiyama ProLite E2473HDS (1080p) and a Philips 279P1 (4K). They do not work with m1n1 from a 12.1 Mac mini (connected over HDMI). When m1n1 starts, the 1080p monitor wakes up from sleep (power LED turns blue), and a few seconds later displays “No signal” and goes back to sleep. m1n1 logs (including the DCP syslog messages) indicate nothing out of the ordinary; the display is correctly recognized at the correct resolution/refresh rate. In fact, the log is identical to the one produced when the mini is connected to a 1080p capture card. The 4K monitor does not seem to even wake up.

I’ve messed with m1n1’s display init code (mostly with the 1080p monitor since it’s not my primary display) and found out the following:

  • The monitor wakes up from sleep when dcp_ib_swap_begin is called.
  • Calling dcp_ib_set_mode after dcp_ib_swap_begin does not change anything at that point.
  • Calling dcp_ib_get_hpd in a loop after dcp_ib_swap_begin shows that connected goes back to 0 after 1-2 seconds, then goes back to 1 after ~400ms.
  • Calling dcp_ib_set_mode after connected is back to 1, then completing the swap (dcp_ib_swap_set_layer/dcp_ib_swap_end) makes the monitor work correctly; it will actually show m1n1 logo/console. It still takes a couple of seconds after completing the swap for the image to actually appear.
  • When rebooting, the situation is messier; after the call to dcp_ib_swap_begin, the monitor will still disconnect/reconnect, but after 5-6 seconds, not 1-2 seconds. It is, however, not necessary to wait for the disconnection: calling dcp_ib_set_mode a couple of seconds after dcp_ib_swap_begin seems to prevent the disconnection, and the monitor works afterwards.

I managed to make both my monitors work by making these changes: wait up to 5 seconds for the display to disconnect; if it does, wait for it to reconnect and call dcp_ib_set_mode; if it doesn’t, call dcp_ib_set_mode anyway.

This has the obvious issue of slowing down startup by at least 5 seconds on all monitors; it also seems very fragile and timing-dependent. I’m guessing there must be a better solution, since the monitors work (most of the time) in m1n1 with 11.6 iBoot, and it doesn’t seem to wait 5 seconds for the monitor to disconnect/reconnect… (I’ve tried to measure the time iBoot takes before starting m1n1, and it seems 11.6 is only slower than 12.1 by 900ms)

Issue Analytics

  • State:open
  • Created 2 years ago
  • Reactions:3
  • Comments:45 (21 by maintainers)

github_iconTop GitHub Comments

4reactions
alyssarosenzweigcommented, Mar 27, 2022

Once Linux has a real display driver it will work like macOS.

coughs it works for me

3reactions
marcancommented, Mar 27, 2022

None of these displays “work” under macOS because Apple disabled iBoot display output entirely since 12.0 😉

There is no display output until the OS driver loads, which means no verbose boot, no iBoot messages, no Apple logo and no progress bar until the kernel is half booted, etc. In fact, you get those features back if you chainload macOS under m1n1 and the display was initialized properly.

Once Linux has a real display driver it will work like macOS. The problem we’re trying to solve in this bug is bootloader display output, which is handicapped by the iBoot-mode interface that Apple provides for it. That’s why we’re having so much trouble with modes and timeouts and such.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Mac Mini Dual Display issue - Apple Support Communities
There is a known issue for DVI monitors using an adapter. Try connecting your Mini to a different monitor direct using HDMI. I...
Read more >
M2 is here! July 2022 Release & Progress Report - Asahi Linux
DCP, please! The Mac Mini (and now Mac Studio) have long had reliability issues with their HDMI output and certain monitors, during the...
Read more >
U3821DW, DDM for macOS not working - Dell Community
I have the same error on my Macbook Pro (M1), BigSur 11.6 and Monitor Dell U4021QW. The Macbook is over USB-C (Original Cable)...
Read more >
Users Report External Monitor Issues After ... - MacRumors
Some users have also reported problems when using two external monitors with their Mac. The issue of only one external display being recognized ......
Read more >
USB - Wikipedia
Universal Serial Bus (USB) is an industry standard that establishes specifications for cables, connectors and protocols for connection, communication and ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found