-
Notifications
You must be signed in to change notification settings - Fork 214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mac mini 12+ DCP initialization fails with some monitors #159
Comments
I have an ACER G247HL which never worked with iBoot or m1n1's display initialization. This patch gets it working properly. For the record, it says it waited 400ms to connect, 1400 ms to disconnect, then 300ms to connect again. When I chainload, it says it waited 0ms for connection, but didn't disconnect again. I also have an HP LA2205wg which worked sometimes, but had timing issues so I would have to reset the monitor often. This patch gets it to work all the time. On that one it says it waited 700ms to connect, but did not disconnect again. This does introduce a 5 second delay on chainloading which is somewhat annoying. But it does mean I can actually reliably see things now! Thank you for your investigation. |
Now that we have m1n1 chainloading from the ESP, I think the right solution here is to both make stage 2 always re-probe the display (that gives it a second chance to work for everyone) and then offer a m1n1 option to both configure the display mode and optionally introduce a longer timeout. That will allow people with problematic monitors to make it work, without unconditionally increasing boot times for everyone. |
"option to ... configure the display mode": I like that idea. With my 4k display, currently the only available resolution is 1920x2160, which is distorted enough that I wouldn't want to use it for any length of time. |
I didn't realize it did 2:1 scaled modes like that... I can fix that in the m1n1 mode selection. Pushed as 8af401a for the future (won't help you until we make stage2 also do this and I cut a release and you enable it though). |
Oh god while looking into this I just realized why sometimes displays don't init sometimes. We're treating the HPD flag as 32 bits but it's actually just a bool, 8 bits. The rest is uninitialized, though I didn't notice it can be nonzero until now. If the top bit of the 32 happens to be set, it gets cast to signed later and interpreted as an error, and then m1n1 thinks no monitor is connected. |
Okay, for the folks with issues: please make a backup of Let me know if that improves things by default, for folks with no display output at all. Then, if you want to set the mode:
You can also use 1920x1080@60 to set the rate, or even 1920x1080@59.94 for fractional rates (but the parser is really dumb, always use two decimals). You can also do:
And that will re-invoke the mode autoconfig logic (@pat42smith this should help with your 4K issue). Obviously only do the By the way, the framebuffer size is limited and currently unchecked, so 4K modes may not work / may make everything crash. You've been warned. You can restore the boot.bin from macOS if this breaks things, as long as you backed up boot.bin inside /boot/efi, since macOS can access that FAT32 partition. |
Just tested on my Lenovo L27m-28 (both default and with display setting) and no luck. Can confirm the file works fine otherwise on my Dell U4320Q @ 1920x1080. One thing I did notice is that the Lenovo does have a very aggressive sleep mode (~ 2 sec) - so not sure if that is a factor. |
I have the same problem with my Xiaomi Curved Monitor 34". I tried all variations but it doesn't help: cd /boot/efi/m1n1
sudo su
cp boot.bin boot.bin.bkp
rm boot.bin
wget https://mrcn.st/t/boot_display-test.bin
# first try
cp boot_display-test.bin boot.bin
reboot
# 2.
cp boot_display-test.bin boot.bin
echo display=1920x1080 >> /boot/efi/m1n1/boot.bin
reboot
# 3.
cp boot_display-test.bin boot.bin
echo display=1920x1080@60 >> /boot/efi/m1n1/boot.bin
reboot
# 4.
cp boot_display-test.bin boot.bin
echo display=1920x1080@59.94 >> /boot/efi/m1n1/boot.bin
reboot
# 5.
cp boot_display-test.bin boot.bin
echo display=auto >> /boot/efi/m1n1/boot.bin
reboot |
The modified
It looks like the chainload is so fast, the monitor hasn’t started its reset cycle yet ( @tpwrules @rockinrobstar @patlux Something you can try (It seems to work in my case): Turn off the Mac, hold the power button until the boot menu shows up, and select Asahi Linux. The Mac reboots when you do this, but in my case the monitor doesn’t have the time to fully go to sleep, so the DCP initialization by m1n1 works. |
@VinDuv tried the steps you described but it didn't helped. Neither with nor without display=auto. |
Some monitors disconnect when getting out of sleep mode; they rely on the OS hotplug support to work properly. To make them work properly in m1n1, it is necessary to: 1. Wait for DCP to detect the monitor. 2. Set the mode and start a swap. This causes the monitor to start getting out of sleep mode. 3. Wait for the monitor to disconnect. Unfortunately this step takes close to 10 seconds. 4. Wait for the monitor to reconnect. 5. Set the mode again; from this point the monitor will stay up. 6. Finish the swap. Since this process delays boot for 10 seconds on monitors that don’t disconnect, it is not enabled by default. To enable it, use the following boot parameter: display=wait To specify the resolution: display=wait,1980x1080 (The parameters cannot be swapped) Should fix AsahiLinux#159. Signed-off-by: Vincent Duvert <vincent@duvert.net>
@VinDuv really nice work. Now it works but now it freezes at the „Running proxy“ line. /edit: maybe it has something to do with the installation of docker previously. I will reinstall Asahi linux to be sure.. |
@patlux Don’t reinstall! This is normal behavior. The |
This works for me, but only if I append |
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. |
Once Linux has a real display driver it will work like macOS.
*coughs* it works for me
|
@marcan: Setting the display mode to 1920x1080 with your modified boot.bin works, thanks! Setting 3840x2160 partially works - the top 2/3 of the screen seem fine, but the bottom 1/3 is just black. On startup blankness - what I'm seeing is that often after a reboot (including 'shutdown -r now' in Linux), the screen will stay blank. Not always, but often. The only pattern I'm seeing is that the only times it didn't stay blank were when I had the display mode set with the new boot.bin. But even then, sometimes it stayed blank. So I don't know. On the other hand, every time I completely shutdown the system and then restart it, the display works. Including one reinstall where I got to the "press enter to reboot" prompt inside Mac Recovery, I instead shut down the system from the apple menu. So for me at least, this is not a showstopper. |
marcan's patch lets me set my HP LA2205wg to its native resolution and get rid of the obnoxious nag, and for that I am grateful. But it doesn't fix the Acer. I did find on the HP that configuring it in its setup menu to always use the DVI input and disable auto-searching made it work 100% of the time, so if your monitor lets you do that it may help. @VinDuv it would probably be good for your patch to add a configurable delay AND resolution Maybe once DCP lands in Linux, this can be a configurable option somewhere. GRUB/U-boot being invisible in some circumstances on first boot would be unfortunate, but probably not a showstopper, even for USB boot. The user could then fix things for their particular setup once booted. |
4K is not currently supported since the framebuffer is not big enough to support that mode on the Mini. |
Some monitors disconnect when getting out of sleep mode; they rely on the OS hotplug support to work properly. Since stage1 m1n1 initializes the display, the monitor is already getting out of sleep mode when stage2 m1n1 starts execution. For the display to work, stage2 m1n1 has to wait for the monitor to disconnect (which unfortunately can take close to 10 seconds), wait for reconnection, and then proceed as normal. Since this process delays boot for 10 seconds on monitors that don’t disconnect, it is not enabled by default. To enable it, use the following boot parameter: display=wait To specify the resolution: display=wait,1980x1080 (The parameters cannot be swapped) Should fix AsahiLinux#159. Signed-off-by: Vincent Duvert <vincent@duvert.net>
Some monitors disconnect when getting out of sleep mode; they rely on the OS hotplug support to work properly. Since stage1 m1n1 initializes the display, the monitor is already getting out of sleep mode when stage2 m1n1 starts execution. For the display to work, stage2 m1n1 has to wait for the monitor to disconnect (which unfortunately can take close to 10 seconds), wait for reconnection, and then proceed as normal. Since this process delays boot for 10 seconds on monitors that don’t disconnect, it is not enabled by default. To enable it, use the following boot parameter: display=wait To specify the wait delay (in seconds): display=wait:5 To specify the resolution (can also include an explicit wait delay): display=wait,1980x1080 (The parameters cannot be swapped) Should fix AsahiLinux#159. Signed-off-by: Vincent Duvert <vincent@duvert.net>
@patlux can you try boot_display_wait.bin? It should wait for the monitor to come up and then boot Linux.
@Skirmisher if you’re interested, you can download m1n1_1280_modes.bin that will dump all the timing modes that the DCP thinks are supported by the monitor (after setting it to 1280x1024). On my monitor it detects some resolutions that are probably not supported (3840x2160 on a 1080p monitor…), and I guess it’s the same in your case… |
Yeah, you could say that...
(I'm assuming the last line is just the manually-set mode) |
It works :) Thank you! |
@VinDuv: your boot_display_wait.bin fixed the issue I was seeing with the screen sometimes staying blank after a reboot. |
For higher resolutions like 4k the framebuffer has to be reallocated. I have work in progress branches for that in https://github.com/jannau/m1n1/tree/display_fb_alloc and https://github.com/jannau/m1n1/tree/display_fb_alloc2 |
Hello everyone. First of all thanks so much marcan and Alyssa and everyone else for getting this kickass distro off the ground so quickly! My monitor is a Samsung, most easily found with this name: LU32J590UQNXZA. I opened an issue about the blank screen once Asahi is initialized, didn't see this one. While I haven't tried any of the suggested fixes yet, I can get Asahi to output graphics more or less as expected by setting the monitor into picture-in-picture mode, (annoyingly needing to use another machine to activate the monitor before turning on my Mini) -- but that's a small temporary price to pay. Great work, everyone. When trying to run normally on a dedicated HDMI input, I can't get the monitor to wake up from its 'sleep' mode, either, similar to the person that opened this issue. Let me know if there is any additional helpful information I can provide. |
@GitHuhl That sounds like the same issue then; your monitor likely goes through a hotplug cycle when it wakes up. Using PiP mode keeps it awake and stops it from doing that. Looks like we'll have to add an option to the installer to pre-configure m1n1 with a higher display time-out, for folks with this issue. I wonder if we can make this automagic; maybe m1n1 can report whether such a hotplug happened / the safe display init time in the device tree somehow. Then the installer can initially configure it with a large time-out, and the firstboot script can drop it down to something faster if it detects a safe monitor... |
I like the idea of auto-configuration, but I think it will be tricky to implement. My monitors temporarily disconnect upon waking up only if they have been asleep for a few seconds. (I guess they need to disconnect only to get out of “deep sleep”, and they don’t “deep sleep” immediately upon losing signal from the computer?) So I think the only way to have an auto-detection working would be to have a special “display check” mode in m1n1 that would:
That would probably work, but having the display go to sleep in m1n1 for 10 seconds (probably more) would be worrying for the user, I think. Maybe a better alternative would be to do the detection in the installer, from macOS? This would also require temporarily turning off the display, but at least the installer could warn about it beforehand… I’ve done some preliminary testing and it looks like it’s possible to turn the display off (with |
Update: I wrote a Python script that detects, from macOS, if a monitor disconnects when getting out of sleep mode. It also detects the monitor native resolution. I’d like to confirm that it works with other people’s hardware before attempting to integrate it into the installer, so if you can, please run it and give me the results :) The script is here and requires Python 3 to be installed in macOS. If you haven’t Python installed, you can use the following Terminal command that will download Python (from the Asahi Installer) and run the script directly:
The script doesn’t require any special privileges; you can run it from a guest account. You can also run it directly from the recovery environment. Thanks! |
I'm one of the guys who needs "boot_display_wait.bin". My results are:
|
@VinDuv: My screen was often staying blank after a reboot (but was ok after
shutdown & start up). Running your display-info.py produces:
Mac model: Macmini9,1
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
dispext0,t8103: external, disconnected
There is only one attached display, connected by HDMI as reported in the
disp0 line. The resolution is correct.
…On Sat, May 7, 2022 at 1:50 AM VinDuv ***@***.***> wrote:
Update: I wrote a Python script that detects, from macOS, if a monitor
disconnects when getting out of sleep mode. It also detects the monitor
native resolution.
I’d like to confirm that it works with other people’s hardware before
attempting to integrate it into the installer, so if you can, please run it
and give me the results :)
The script is here <https://vincent.duvert.net/dropbox/display-info.py>
and requires Python 3 to be installed in macOS. If you haven’t Python
installed, you can use the following Terminal command that will download
Python (from the Asahi Installer) and run the script directly:
curl https://vincent.duvert.net/dropbox/display-info.sh | sh
The script doesn’t require any special privileges; you can run it from a
guest account. You can also run it directly from the recovery environment.
Thanks!
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADC4GHKJBEXR64GPLI33ZLTVIYVGJANCNFSM5NDCJG7Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Okay, so it looks like the test didn’t detect the disconnection :-/ Weird.
|
|
From display-info.py 5 10 30:
Mac model: Macmini9,1
Sleep duration: 5.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
dispext0,t8103: external, disconnected
Detection in progress, please wait…
Test results:
Mac model: Macmini9,1
Sleep duration: 10.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 3875ms for 409ms
dispext0,t8103: external, disconnected
Detection in progress, please wait…
Test results:
Mac model: Macmini9,1
Sleep duration: 30.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
dispext0,t8103: external, disconnected
(leaves me wondering if the disconnection happens by pure random chance?)
I tried again at multiples of 2 seconds. The results, showing just the
changing lines:
Sleep duration: 2.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 4.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 9848ms for 426ms
Sleep duration: 6.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 7872ms for 368ms
Sleep duration: 8.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 5822ms for 411ms
Sleep duration: 10.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 12.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 1799ms for 470ms
Sleep duration: 14.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 16.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 18.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 20.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 22.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 24.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 26.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 28.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
Sleep duration: 30.0
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
I noticed one more thing, that may not matter. Most of the time the test
was running, I just left my system alone and didn't really watch as the
screen repeatedly blanked and came back. But once (I think during the 24
sec test) I noticed the terminal window was displaying a message along the
lines of "Displays should be blank now. Are they?". I moved the mouse, but
the on screen cursor did not move. Then I typed "y" and the message went
away.
…On Sun, May 8, 2022 at 10:11 AM VinDuv ***@***.***> wrote:
Okay, so it looks like the test didn’t detect the disconnection :-/ Weird.
Some things I though about:
- Maybe the display actually disconnects after the test completes. The
test duration was 10 seconds, I changed it to 20.
- My displays only disconnect on wakeup if they were asleep for more
than ~10 seconds. The test currently waits 20 seconds, but maybe some
displays need more? (In @pat42smith <https://github.com/pat42smith> ’s
case, it looks like it’s the reverse: the display only disconnects if it
has been sleeping for a small duration, which only happens during reboots).
To check this, I made the sleep delay configurable:
- If the script is started without arguments, it will prompt for
the duration (with a default of 20 seconds).
- The script can be started with one or more duration arguments,
and will run the test for all the durations specified. For instance, display-info.py
5 10 30 will perform the test after sleeping the display for 5
seconds, then perform it again after sleeping for 10 seconds, etc. To do
this from curl, add the -s option to sh:
curl https://vincent.duvert.net/dropbox/display-info.sh | sh -s 5
10 30.
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADC4GHILWC6TC24S3I4BGBLVI7YVHANCNFSM5NDCJG7Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Mac model: Macmini9,1 |
@DarkShadow44: okay, looks like the script successfully detected the disconnection at 10 seconds, which is a bit weird because it should have worked the first time you tried it… Maybe there are some timing issues. Could you run the test multiple times with a 11 second delay and check if it says “disconnected after XXXX” every time? @pat42smith The “Displays should be sleeping now” message is printed just before display sleep, and erased just after display wake-up. If you can see it on your monitor it means the monitor isn’t sleeping when it should, and that means the Regarding your test results, they look a bit inconsistent but they seem to confirm that your display only disconnects after short sleeps. Maybe try to run the test multiple times with a small delay (3 seconds) and see if it consistently says “disconnected after XXXX”? @vtsingaras Thanks for your test result! It looks like your monitor starts disconnecting very late, close to the 10 seconds mark, so I’ll probably extend the wait delay a bit in the m1n1 patch. |
Seems to disconnect consistently now... Tried 10 times with 11s. |
@VinDuv Regarding the "should be sleeping now" message: I was deliberately
not using the keyboard or mouse during the test. But as I recall, I was
doing a bit of writing on the same table - so the table might have moved a
bit, causing the mouse to register a movement. I don't know, but it seems
plausible.
Result of 10 tests at 3 seconds:
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10835ms for 449ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10919ms for 351ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10933ms for 351ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10840ms for 429ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10931ms for 331ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10826ms for 453ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10911ms for 370ms
10 tests at 4 seconds:
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 9823ms for 459ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 9828ms for 453ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 9842ms for 431ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 9853ms for 412ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 9813ms for 461ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 9886ms for 392ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 9944ms for 340ms
The display has a feature to blank the screen when no one is sitting in
front of it. I disabled that feature and tried again 10 times at 3 seconds:
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10906ms for 330ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10825ms for 465ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10900ms for 371ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10864ms for 398ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10846ms for 414ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10903ms for 363ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 10890ms for 398ms
Finally, 10 tests at 2 seconds:
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 11939ms for 340ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 11845ms for 438ms
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, did not disconnect
disp0,t8103: external (VP2785 SERIES), connected, HDMI transport,
3840x2160, disconnected after 11916ms for 362ms
I really don't know what to make of all this. Maybe the install script
should offer the option to shutdown instead of reboot?
…On Sat, May 14, 2022 at 2:47 AM DarkShadow44 ***@***.***> wrote:
Seems to disconnect consistently now... Tried 10 times with 11s.
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADC4GHLO5FCPFQ62VIH4G4DVJ5ZEDANCNFSM5NDCJG7Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
How can it disconnect after > 10s when your test time 4, 3, and 2? |
Here are the results for my two monitors:
It's worth nothing that the first monitor (the LA2205) I can get to stop disconnecting by turning off auto source switching in its menu. It is also a 1680x1050 native panel, but m1n1 currently detects it as 1920x1080. It can render that resolution fine, but it displays an unremovable dialog box whining of a non-optimal resolution. Please be sure to have a way for the user to select the monitor's resolution in the installer. |
A better solution to the disconnect problem was recently found: It basically disables the display controller once the display settings have been configured, so if the monitor disconnects and reconnects, it will still receive data. |
@VinDuv: I installed your new boot.bin and rebooted a few times. It appears
this fixed my "blank screen after reboot" problem. Thanks!
…On Sat, Jun 4, 2022 at 10:21 AM VinDuv ***@***.***> wrote:
A better solution to the disconnect problem was recently found: It
basically disables the display controller once the display settings have
been configured, so if the monitor disconnects and reconnects, it will
still receive data.
This removes the need to wait for disconnection and speeds up booting. It
also makes input switching work on all monitors.
This has been integrated into m1n1 (714420a
<714420a>)
but has not yet been released; if you want to test it, you can download
this boot.bin <https://drop.duvert.net/boot.bin> and put it in your EFI
partition.
Note that the current solution may still have issues if the monitor
disconnects at a very specific time; a fix for this is in the works.
If your monitor’s resolution is less than 1920x1080, you will still need
to add a display=<res> line at the end of the boot.bin file. I’m
currently working on a patch for the installer to do this automatically
(and allow changing a previous setting).
—
Reply to this email directly, view it on GitHub
<#159 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ADC4GHIKVBSCAHR5UYQLE3DVNOGCRANCNFSM5NDCJG7Q>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Thanks for all these pointers. Finally managed to get 4K output to my monitor! |
Dear all, I tried the Thank you, |
@xfim: this thread is old, that boot.bin does not match newer setups and the related changes have already been merged in the latest m1n1. Did you backup the original boot.bin? use that one instead and also keep an original copy. Restore the boot.bin from your backup and append For anyone else here trying to use old boot.bin files linked here, please don't! |
OK, understood @janrinze , thank you for the clarification. |
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:
dcp_ib_swap_begin
is called.dcp_ib_set_mode
afterdcp_ib_swap_begin
does not change anything at that point.dcp_ib_get_hpd
in a loop afterdcp_ib_swap_begin
shows thatconnected
goes back to0
after 1-2 seconds, then goes back to1
after ~400ms.dcp_ib_set_mode
afterconnected
is back to1
, 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.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: callingdcp_ib_set_mode
a couple of seconds afterdcp_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, calldcp_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)
The text was updated successfully, but these errors were encountered: