I recently installed Manjaro Linux with full disk encryption using LUKS. I generally leave my laptop hooked up to external monitors with the lid closed, and everything has been working great. However, when I reboot, I need to be able to enter the LUKS password. This only shows up on the integrated monitor, so I have to open it up to get past this. Not a huge deal, but it would be nice if I could configure initial output to go to all screens, not just the integrated monitor. Similarly, it would be great if I could get into the UEFI via the external monitor as well, just for ease of use when needed.
Is there some way I can configure that? My google-fu hasn’t come up with anything. My external setup is via USB-C to a dock that has two HDMI ports (one going to each of a KVM, and ultimately to two monitors). I have tried plugging the USB-C both into the dedicated dGPU port as well as one of the rear-most USB-C ports on the side (in hopes it was a dGPU/iGPU issue). Any pointers or thoughts on how to configure it would be greatly appreciated!
Linux monitor output is generally driven by the “amdgpu” driver (except early in the boot process when it uses the provided UEFI frame buffer). I recommend adding “amdgpu” to the “MODULES” section of “mkinitcpio.conf” because that will ensure that it gets loaded before the LUKS encryption items go off. You might also need to research the “amdgpu” kernel driver options to determine the right sequence of kernel parameters. I also add “tpm_crb” to the modules list because my LUKS scheme depends on TPM2 shenanigans for a more “Bitlocker” like experience.
As far as I know, there’s no way to change the UEFI frame buffer output destination. Changing it would likely require a Frameworks sponsored engineering project to implement.
(on the plus side, this actually picked up my new 6.8 kernel that somehow didn’t get loaded when I installed it the other day).
But in any case, no change in behavior. I did try moving from the GPU’s dedicated port to one of the standard ports. No change (in both cases, when it is connected to the dedicated port, I don’t get any output to the monitors until I log in, but when I connect to the standard port, I get output after I get past LUKS).
I thought about doing a TPM2 setup, but I personally prefer requiring a password be entered in order to decrypt. I haven’t gone through a Secure Boot setup yet, and it probably doesn’t make much sense until then.
If there is a USB-C dock involved, there are probably some other kernel modules that need to be preloaded with “amdgpu”. You might be able to use “lsmod” while the system is running from the dock to figure out what module is missing.
Not sure if it indicates an issue, but at a minimum I think this is saying that it is selecting the iGPU framebuffer. When I plug my dock directly into the dGPU USB-C port, I only get output after login. If I plug it in to the back USB-C port, it shows up earlier (after GRUB, but before login).
Not sure if it indicates an issue, but at a minimum I think this is saying that it is selecting the iGPU framebuffer. When I plug my dock directly into the dGPU USB-C port, I only get output after login. If I plug it in to the back USB-C port, it shows up earlier (after GRUB, but before login).
I am not certain how Linux selects the active frame buffer device. The documentation might offer more clues here.
AFAIK: Linux only supported hybrid display mode via the IGPU at this point. The hardware is capable of switching to DGPU exclusive mode but the Linux driver does not support that feature yet.