Local HDMI console "disabled" after pfSense booted with monitor off
-
I powered up my pfSense system with the HDMI display turned off (by accident). After it had finished booting I turned on the display but nothing shows, and the monitor goes into power-save sleep mode, saying it does not detect an HDMI signal.
The firewall itself is running normally, and I can connect via SSH, only the HDMI console display isn't working.
Is there a way to re-enable the local HDMI console without rebooting?
-
You need to have the full graphics driver installed to allow HDMI hot plug on some chipsets.
See: https://docs.netgate.com/pfsense/en/latest/install/upgrade-guide-versions.html?highlight=i915kms
I would not want to test that on a production system that cannot be rebooted as a way to avoid rebooting it though.
Steve
-
@stephenw10 said in Local HDMI console "disabled" after pfSense booted with monitor off:
https://docs.netgate.com/pfsense/en/latest/install/upgrade-guide-versions.html?highlight=i915kms
So if I understand correctly, if an HDMI monitor is not detected at boot, the appropriate driver isn't loaded and the display will be inactive until the next time the system is booted with a monitor attached. Is this correct?
If so, is it possible to load the driver later, and which driver is it?
Here are a couple of kldstat greps on the system when the display is working:
[2.7.2-RELEASE][redacted]/root: kldstat -v|grep vga 421 nexus/vtvga 671 vgapci/vgapm 670 isa/vga 667 scrndr-vga 653 vgapci/agp_i810 270 pci/vgapci [2.7.2-RELEASE][redacted]/root: kldstat -v|grep 915 [2.7.2-RELEASE][redacted]/root:
This seems to indicate the i915 driver isn't loaded for a simple vga console over HDMI.
-
You need the i915 driver attached to the hardware for it to detect a new device connected via HDMI and re-route the video output to it.
Without that driver the hardware uses it's default output, which usually isn't HDMI, and never switches after boot.
You have to add those loader values manually in order to load the i915 driver.
Steve
-
@stephenw10 I understand what you're saying, but don't see how it applies here. When I boot with the monitor powered on, and everything's working, the i915 driver doesn't show up as being loaded with
kldstat -v
.Also, the only 915 driver on my system is in
/boot/modules/i915kms.ko
(not in/boot/kernel
). All of my Linux experience is on Debian distributions (some CentOS) so the organization of FreeBSD is still new to me. -
When you power up with an active monitor connected the graphics hardware defaults to using that.
If the graphics hardware doesn't see a monitor connected it uses a default output which is often VGA (even if that isn't populated). Without the driver running it will not switch the output after boot so you never see anything.
Add the loader lines to /boot/loader.conf.local as show in the linked doc. It should then work as expected.
-
@stephenw10 OK, then how do I force the correct driver to be loaded at boot? Looking on the web I find articles that say all the necessary drivers are part of something called
drm_kmod
, andkldstat -v|grem drm
returns[2.7.2-RELEASE][redacted]/boot: kldstat -v|grep drm 133 drmn/fbd 577 drm/lkpi_iicbb 576 drmn/lkpi_iicbb 574 drm/lkpi_iic 573 drmn/lkpi_iic
Do I already have the necessary module loaded?
Other references explain how to add a module in
/boot/loader.conf
but provide no guidance on the actual information needed. One site (nixcraft) gives thisfoo_load=”YES” # loads module “foo” foo_name=”realname” # uses “realname” instead of “foo” foo_type=”type” # passes “-t type” to load foo_flags=”flags” # passes “flags” to the module foo_before=”cmd” # executes “cmd” before loading the module foo_after=”cmd” # executes “cmd” after loading the module foo_error=”cmd” # executes “cmd” if load fails
But is silent on the values for type, flags, etc. that I would need for the i915kms module.
This sounds like a possible topic for a help article.
-
Create the file /boot/loader.conf.local. At the command line run:
touch /boot/loader.conf.local
You have to use the .local file so it is not overwritten by the system.Edit that file and add the line:
i915kms_load=YES
From the command line you can use the Easy Editor:
ee /boot/loader.conf.local
That will load the driver and may be sufficient. Deppending on your hardware you may also need one or all of the following lines:
drm.i915.enable_unsupported=1 kern.vt.fb.modes.VGA-1=d kern.vt.fb.default_mode="1024x768"