Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Local HDMI console "disabled" after pfSense booted with monitor off

    Scheduled Pinned Locked Moved General pfSense Questions
    8 Posts 2 Posters 1.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jhg
      last edited by

      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?

      pfSense CE on Beelink EQ12 (N100 CPU, dual 2.5Gbe Intel NICs)
      Hitron CODA56 - Comcast 2.5Gb cable

      1 Reply Last reply Reply Quote 0
      • stephenw10S
        stephenw10 Netgate Administrator
        last edited by

        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

        J 1 Reply Last reply Reply Quote 1
        • J
          jhg @stephenw10
          last edited by

          @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.

          pfSense CE on Beelink EQ12 (N100 CPU, dual 2.5Gbe Intel NICs)
          Hitron CODA56 - Comcast 2.5Gb cable

          1 Reply Last reply Reply Quote 0
          • stephenw10S
            stephenw10 Netgate Administrator
            last edited by

            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

            J 1 Reply Last reply Reply Quote 0
            • J
              jhg @stephenw10
              last edited by

              @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.

              pfSense CE on Beelink EQ12 (N100 CPU, dual 2.5Gbe Intel NICs)
              Hitron CODA56 - Comcast 2.5Gb cable

              1 Reply Last reply Reply Quote 0
              • stephenw10S
                stephenw10 Netgate Administrator
                last edited by stephenw10

                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.

                J 1 Reply Last reply Reply Quote 0
                • J
                  jhg @stephenw10
                  last edited by jhg

                  @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, and kldstat -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 this

                  foo_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.

                  pfSense CE on Beelink EQ12 (N100 CPU, dual 2.5Gbe Intel NICs)
                  Hitron CODA56 - Comcast 2.5Gb cable

                  1 Reply Last reply Reply Quote 0
                  • stephenw10S
                    stephenw10 Netgate Administrator
                    last edited by stephenw10

                    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"
                    
                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post
                    Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.