Haiku does not boot on Lenovo Thinkbook 14

Hi everyone,

as a Mac User I have always used Haiku thorugh VirtualBox. Now I have bought a Lenovo Thinkbook 14 Gen2 (Intel Core i5, Iris Xe graphics) as a second machine to tinker with alternative OSes. Naturally I also wanted to give Haiku a try hoping I could benefit from the new hardware and faster speed compared to the VM. Unfortunately I had little success booting Haiku from a USB flash drive. Booting hangs on the last icon (rocket). When I used debug output I get a message from the app_server that it tries to set the screen resolution but then nothing happens. I have attached a screenshot below (sorry for the bad quality).
IMG_6102

I have tried to set different screen resultions from the boot menu and also the fail-safe video driver. All without success. Is there anything else I can do to get it booting? It seems to be so close…

I am curious to hear what all the Haiku wizards think :slight_smile:

best, m

Have you tried other boot options? Options like “dont call bios” or vesa mode, safe mode…?

https://www.haiku-os.org/docs/userguide/en/bootloader.html

https://besly.de/index.php/en/systemstartup/blacklist-ignore-problematic-hardware

https://besly.de/index.php/en/systemerror/syslog-save-error-information-after-system-crash

Bug reports should be report to the haiku Bug tracker

https://besly.de/index.php/en/systemerror/report-system-or-program-error

Thank you lelldorin,

Yes, I have tried the different boot options, but there is no “don’t call bios option”. Also different combinations of options, all without success.

I have not tried blacklisting hardware yet, I also would not know which component I should blacklist. Do you have any tips?

Also I don’t have the option in my menu to save the syslog to another location.

I will probably file a bug report, but I wanted to check first if there is anything I can do.

Fail safe boot options - do mit call bios iirc

Is this a BIOS/MBR/Legacy boot or an UEFI one? Possibly that option is not available in UEFI boot (yet).

“Don’t call the BIOS” I think is only for the very early boot process. The report here says that the boot already goes all the way to app_server, so it probably won’t make a difference anyway.

It looks like the VESA driver is trying 1024x768, then 800x600, but both of these video modes fail. Then it tries some strange resolution (2576x1118? not sure because the picture is a bit small here).

Have you tried selecting a specific video mode from the boot menu? Did that help?

3 Likes

No unfortunately setting it to a specific resolution did not help either. I have tried several different ones. I was also surprised to see that it tries to use such a strange resolution. Without the debug mode enabled, the haiku logo and boot icons look just fine, which is why I assumed that the resolution is fine though.

I think it is app-server trying modes, it does similar crazy mode tries with no vesa modes listed, due to hidpi being higher frequency being above some max frequency that probably made sense in early 2000.

I have investigated this further to try to nail down where this happens more precisely. I downloaded the source code and built my own haiku images with some added-in debug code. It looks like the call of
status = SetMode(mode); in Screen::SetBestMode never returns a status. The Screen::SetMode function, gets till status_t status = fHWInterface->SetMode(mode); but this never finished.

I have determined the refresh rate as well (60) and tried to modify the used mode by hardcoding in typical values (1920x1080x32). However the result is always the same and the fHWInterface->SetMode call never returns. This behavior is the same for the standard and fail save video mode.

1 Like

This sounds similar to https://dev.haiku-os.org/ticket/17163

Are you using the latest source code?

1 Like

yes, downloaded yesterday

1 Like

DISREGARD this. It’s not a pointer that is passed to SetMode().
Sorry.
In Screen.cpp, Screen::SetBestMode()
I would try moving
delete[] modes;
to right before
return status;

It looks wrong to me to delete modes, then pass a pointer to one of them to SetMode()

1 Like

IMG_20210822_182127305
https://dev.haiku-os.org/ticket/17201

Similar problem