Pi4 black screen after splash

Have you tried another HDMI cable or another display?

After spending the last few hours manically installing various osmc versions in hopes of seeing something after the splash screen, I finally got the language selection screen after installing OSMC_TGT_rbp4_20210808.img.gz from this website.
I don’t think it’s the specific osmc version that did it though. The first time I had this issue I was installing all the possible versions from the installer, only for it to work on my second try with one of the 2022 versions (think it was 2022.10-1). The fact that it suddently worked on 2021-08-08 is probably just a coincidence. Because of that, I won’t be updating either anytime soon to prevent it from breaking again.

It’ll probably stop working again soon anyway.
(Not marking as solution as I don’t believe the underlying issue has been solved)

I came to report that switching from kms driver to fkms, has resolved the issue, which is leading me think that somehow the (updated?) KMS driver is having issues with the TV’s EDID. I have also modified the cmdline.txt by appending snd-bcm2835.enable_compat_alsa=1 to the end of the line.

Below are the contents that I have for the config.txt configurations:

/boot/config.txt contents

[pi4]
dtoverlay=vc4-fkms-v3d,cma-512
dtoverlay=rpivid-v4l2
arm_64bit=1
kernel=kernel.img

[all]
dtoverlay=vc4-fkms-v3d,cma-512
disable_overscan=1
start_x=1
#disable_splash=1
disable_fw_kms_setup=1
hdmi_ignore_cec_init=1
include config-user.txt
#include config-override.txt

[pi02]
dtoverlay=vc4-kms-v3d,cma-256

[board-type=0x0e]
dtoverlay=vc4-kms-v3d,cma-256

/boot/config-user.txt contents

#sdtv_aspect=1
#start_x=1

# Custom Values vvv
hdmi_edid_file=1
hdmi_force_hotplug=1
hdmi_group=1
hdmi_mode=16
hdmi_drive=2

dtoverlay=disable-bt
dtoverlay=disable-wifi
dtoverlay=
dtparam=audio=on
#force_turbo=1
gpu_mem=128

Was your Pi able to detect audio devices through HDMI when using fkms?

Yes however it’s forced audio. It just sends the audio over HDMi regardless of whether there’s something to accept it or not. Even the audio on EmulationStation/RetroPie (which is installed on the same RPI with OSMC) is working.

After updating OSMC to a recent release (I had a really old one before) I encountered a similar problem: on starup OSMC logo appeared but then screen went black. Hardware is very similar to Colorman’s situation: RPi4 connected via HDMI to an old Panasonic plasma TV. I managed to get things working again with the following fix:

  • opened file “cmdline.txt” on SD card
  • added native resolution of my TV at the end of the line, in my case:
video=HDMI-A-1:1280x720M@50D

This might not be a complete solution to the problem as I presume it will get overwritten next time OSMC updates, but at least it works for now.

Trying to run OSMC on the Pi 4, I was having the same problem as what @Colorman reported. This led me to test the same changes they made to config.txt and config-user.txt.

This worked for me as far as getting OSMC to boot. However, the problem I am having now is that I am not able to run OSMC at my TV’s full resolution of 1080p. The highest resolution available through Kodi’s display settings is 1024x1068. I have no issue running the Pi 4 at 1080p with Raspberry Pi OS installed.

I tried adding video=HDMI-A-1:1920x1080M@60 to “cmdline.txt” but it did not seem to make a difference. My logs are available at https://paste.osmc.tv/jobutucivi.

Thanks for any help getting this fixed.

You added “hdmi_edid_file=1” that tells it to load values from a file instead of taking them from your display, but did you add the edid file that goes along with that command that tells the RPi what modes are supported?

I had not realized that I needed the additional file. I just tried removing the line hdmi_edid_file=1 and rebooting but it did not seem to make a difference. Would you recommend trying to track down the EDID file for my TV?

I can’t recommend anything here as I didn’t look into it enough to know what this file even looks like. I just browsed over a few of the settings you changed and googled a couple I was not familiar with. When I got to that line I saw that another file was needed and posted back here. I assumed you could track down the details of what was needed as easy as I. It also made sense that this could be your issue as if you stop loading of EDID from the TV and didn’t supply a replacement it makes sense that there would be a fallback like a single resolution.

That makes sense. I will see if I can acquire the EDID file. It seems like a bit of a shot in the dark though, so, if anyone has any other suggestions, please let me know.

Thanks @darwindesign for your help.

1 Like

Just to follow up, I tried running sudo /opt/vc/bin/tvservice -d /boot/edid.dat and including hdmi_edid_file=1 in config-user.txt but it did not seem to make a difference.

I seem to have found a solution!

I had Raspberry Pi OS working on a different SD card so I was comparing it’s config.txt with the default one for OSMC.

It seems that what was causing the issue in OSMC was the line disable_fw_kms_setup=1 in the default config.txt. Commenting out that line allows me to boot at full resolution and everything else seems to be working fine as well. No other changes to the original config.txt or config-user.txt were needed.

I just have one last question. I know we are supposed to edit config-user.txt rather than config.txt. Because of this, I tried adding disable_fw_kms_setup=0 to config-user.txt and leaving the original config.txt untouched so that it still had the line disable_fw_kms_setup=1. However, this does not seem to work. Since the line include config-user.txt appears after the line disable_fw_kms_setup=1 in config.txt, I thought that the option disable_fw_kms_setup=0 would override the option disable_fw_kms_setup=1 but that does not seem to be the case.

Is there a correct way to override the setting disable_fw_kms_setup=1?

1 Like

Some settings can’t be modified with an includes file and config.txt itself has to be modified unfortunately. Your changes will only be overridden if OSMC updates that file, not just because you updated generally, and that file does not get updated very often at all.

Nice work on finding the solution BTW.

Well I can settle for possibly having to comment out that line after updates.

Thanks for your help @darwindesign! I am really glad to have this up and running.

1 Like

I have a 3b+ with a refresh load from osmc’s website today and I also had the same issue. I had to change my driver to fkms like RiggidNoodle suggested and that fixed my problem.

For completeness I should mention that after this it ran completely fine and even went through multiple system upgrades with no issues whatsoever, but I never touched the HDMI cable. I’ve recently gotten a newer Samsung “Smart” TV and have had flawless performance since. In conclusion, I guess the best solution is to upgrade TV! :upside_down_face: