Solved Error `(EE) no screens found (EE)` on intel and vesa xorg drivers

Hello there!

I get a xorg error `(EE) no screens found (EE)` when trying to set up xorg on xf86-video-intel on a very standard system, HP ProDesk 600 G3, which has a Intel i5-7500.

I can run xorg using the xf86-video-scfb driver, but my second screen is not recognized in xrandr.

I thought about it might be possible to run the vesa driver instead, but it returns the same error as the intel driver.

I have searched around for a long time, but I seems to just find very similar answer https://wiki.freebsd.org/Graphics, but I can not seem get any further.

Rasmus
 
There you go :)


rasmus@iselin:~ % pciconf -lv | grep -A4 vgapci
vgapci0@pci0:0:2:0: class=0x030000 card=0x829d103c chip=0x59128086 rev=0x04 hdr=0x00
vendor = 'Intel Corporation'
device = 'HD Graphics 630'
class = display
subclass = VGA
 
Ahh KabyLake, GPU generation 9.5...
Not sure whether this is supported on FreeBSD 12 drm-kmod, as it is said that only up to Gen. 8 is supported on 12 drm-kmod.

Assuming that you run FreeBSD 12, it looks like that you should try to deactivate/disable drm-kmod.
Remove (or uncomment) in /boot/loader.conf and /etc/rc.conf all stuff that loads i915kms.ko and drm-kmod, then kldunload these (or just reboot) so kldstat shows these modules are no longer loaded.

Then try restart Xorg using the xf86-video-intel driver alone, without KMS.
 
Hello again!
In my /boot/loader.conf, i uncommented these lines:
i915kms_load="YES"
kern.vty=vt


In my /etc/rc.conf, i uncommented these lines:
kld_list="/boot/modules/i915kms.ko"

And kldunloaded i915kms, drm, and drm2 ...

And got these xorg loglines...:

[ 10543.367] (--) Using syscons driver with X support (version 2.0)
[ 10543.367] (--) using VT number 9

[ 10543.432] (EE) No devices detected.
[ 10543.432] (EE)
Fatal server error:
[ 10543.432] (EE) no screens found(EE)
[ 10543.432] (EE)


I have a hunch I did this earlier ...
 
rusma, just a general note: modulename_load="YES" in loader.conf(5) and kld_list="... modulename ..." in rc.conf(5) do the same: load a specific kernel module. You don't need to do that twice. It doesn't do any harm, but it's not necessary; doing it twice has the disadvantage that you might forget to disable that in both places when you want to disable it. Furthermore, the commonly accepted general policy is to load from loader.conf(5) only what is necessary to boot the BeaSD, all other stuff goes into rc.conf(5) (use sysrc(8)) and sysctl.conf(5).

Now on your genuine issue: maybe your system is just too new, i.e. the PCI Id of your GPU is not known in 12.2-RELEASE. This is just a guess... You could try with the shiny new 13-RELEASE-rc4?
 
If kldstat confirms that no i915kms and no drm-kmod are loaded, then the problem might be that either Kaby Lake GPUs are indeed not supported by xf86-video-intel without KMS, or there is some other issue with xorg autodetection.

The PCI ID of your GPU is listed in the driver, so I think it should be supported.

As a last resort before moving to (still not mature) 13, I would try making a xorg configuration file, including BusID, to make sure that it is not just some small difficulty with xorg's autodetection.
 
rusma, just a general note: modulename_load="YES" in loader.conf(5) and kld_list="... modulename ..." in rc.conf(5) do the same: load a specific kernel module. You don't need to do that twice. It doesn't do any harm, but it's not necessary; doing it twice has the disadvantage that you might forget to disable that in both places when you want to disable it. Furthermore, the commonly accepted general policy is to load from loader.conf(5) only what is necessary to boot the BeaSD, all other stuff goes into rc.conf(5) (use sysrc(8)) and sysctl.conf(5).

Now on your genuine issue: maybe your system is just too new, i.e. the PCI Id of your GPU is not known in 12.2-RELEASE. This is just a guess... You could try with the shiny new 13-RELEASE-rc4?
Thanks for the good advice there Mjölnir. I'll try to update to 13, perhaps it's possible with freebsd-update ;)
 
If kldstat confirms that no i915kms and no drm-kmod are loaded, then the problem might be that either Kaby Lake GPUs are indeed not supported by xf86-video-intel without KMS.

The PCI ID of your GPU is listed in the driver, so I think it should be supported.

As a last resort before moving to (still not mature) 13, I would try making a xorg configuration file, including BusID, to make sure that it is not just some small difficulty with xorg's autodetection.

Yes, I observe infact that i915kms is loaded again after a reboot (with drm and drm2 (?) ... right) but unloading them has no effect. That leaves me with doing a freebsd-update to 13 maybe? ;)

I have not used xorg with a static config before, can I still use xrandr after that for other screens or?
 
  • i915kms_load="YES" in loader.conf was blacklisted the last time is looked @it ( fgrep blacklist /boot/defaults/loader.conf.
  • Usually, a kernel module cannot be loaded twice.
 
Yes, I observe infact that i915kms is loaded again after a reboot (with drm and drm2 (?) ... right) but unloading them has no effect. That leaves me with doing a freebsd-update to 13 maybe? ;)
Even when it is not loaded by neither /boot/loader.conf nor /etc/rc.conf??
That would be really weird...

I have not used xorg with a static config before, can I still use xrandr after that for other screens or?
Afaik yes. xrandr's functionality isn't limited by what is "preconfigured" as far as I can see, at least regarding other monitors/screens.
E.g. you can add more, reconfigure them etc, like changing what you originally set in xorg.conf.
 
  • i915kms_load="YES" in loader.conf was blacklisted the last time is looked @it ( fgrep blacklist /boot/defaults/loader.conf.
Hmm this then means that it is blacklisted from being loaded in the loader stage already, but not being loaded later, via /etc/rc.conf or kldload?
I didn't know that... do you know whether an analog blacklist method exists for later module loading attempts?
 
Hello there!

I get a xorg error `(EE) no screens found (EE)` when trying to set up xorg on xf86-video-intel on a very standard system, HP ProDesk 600 G3, which has a Intel i5-7500.

I can run xorg using the xf86-video-scfb driver, but my second screen is not recognized in xrandr.

I thought about it might be possible to run the vesa driver instead, but it returns the same error as the intel driver.

I have searched around for a long time, but I seems to just find very similar answer https://wiki.freebsd.org/Graphics, but I can not seem get any further.

Rasmus
Hello,

can i see the output of kldstat and /var/log/Xorg.0.log ?

I thought about it might be possible to run the vesa driver instead, but it returns the same error as the intel driver.
Vesa is for legacy boot setups you have then a UEFI setup.
 
Hello,

can i see the output of kldstat and /var/log/Xorg.0.log ?
There you go :)

root@iselin:/usr/home/rasmus # kldstat
Id Refs Address Size Name
1 51 0xffffffff80200000 227ae98 kernel
2 1 0xffffffff8247b000 1e7b0 geom_eli.ko
3 1 0xffffffff8249a000 eed8 aesni.ko
4 2 0xffffffff824a9000 a448 opensolaris.ko
5 1 0xffffffff824b5000 3bad38 zfs.ko
6 1 0xffffffff832fa000 1860 uhid.ko
7 1 0xffffffff832fc000 1a40 wmt.ko
8 1 0xffffffff832fe000 2908 ums.ko
9 1 0xffffffff83301000 acf mac_ntpd.ko
10 1 0xffffffff83302000 7e070 i915kms.ko
11 1 0xffffffff83381000 44438 drm2.ko
12 4 0xffffffff833c6000 3754 iicbus.ko
13 1 0xffffffff833ca000 f98 iic.ko
14 1 0xffffffff833cb000 18a4 iicbb.ko


This is after I rebooted just now, and did not klhunload any modules. Here is the Xorg log:

root@iselin:/usr/home/rasmus # cat /var/log/Xorg.0.log
[ 1337.035]
X.Org X Server 1.20.9
X Protocol Version 11, Revision 0
[ 1337.035] Build Operating System: FreeBSD 12.2-RELEASE-p4 amd64
[ 1337.035] Current Operating System: FreeBSD iselin 12.2-RELEASE-p4 FreeBSD 12.2-RELEASE-p4 GENERIC amd64
[ 1337.035] Build Date: 25 February 2021 10:59:29AM
[ 1337.035]
[ 1337.035] Current version of pixman: 0.40.0
[ 1337.035] Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
[ 1337.035] Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[ 1337.035] (==) Log file: "/var/log/Xorg.0.log", Time: Sat Mar 27 15:50:41 2021
[ 1337.036] (==) Using config directory: "/usr/local/etc/X11/xorg.conf.d"
[ 1337.036] (==) Using system config directory "/usr/local/share/X11/xorg.conf.d"
[ 1337.036] (==) No Layout section. Using the first Screen section.
[ 1337.036] (==) No screen section available. Using defaults.
[ 1337.036] (**) |-->Screen "Default Screen Section" (0)
[ 1337.036] (**) | |-->Monitor "<default monitor>"
[ 1337.036] (==) No device specified for screen "Default Screen Section".
Using the first device section listed.
[ 1337.036] (**) | |-->Device "Card0"
[ 1337.036] (==) No monitor specified for screen "Default Screen Section".
Using a default monitor configuration.
[ 1337.036] (==) Automatically adding devices
[ 1337.036] (==) Automatically enabling devices
[ 1337.036] (==) Not automatically adding GPU devices
[ 1337.036] (==) Max clients allowed: 256, resource mask: 0x1fffff
[ 1337.036] (==) FontPath set to:
/usr/local/share/fonts/misc/,
/usr/local/share/fonts/TTF/,
/usr/local/share/fonts/OTF/,
/usr/local/share/fonts/Type1/,
/usr/local/share/fonts/100dpi/,
/usr/local/share/fonts/75dpi/,
catalogue:/usr/local/etc/X11/fontpath.d
[ 1337.036] (==) ModulePath set to "/usr/local/lib/xorg/modules"
[ 1337.036] (II) The server relies on udev to provide the list of input devices.
If no devices become available, reconfigure udev or disable AutoAddDevices.
[ 1337.036] (II) Loader magic: 0x434a80
[ 1337.036] (II) Module ABI versions:
[ 1337.036] X.Org ANSI C Emulation: 0.4
[ 1337.036] X.Org Video Driver: 24.1
[ 1337.036] X.Org XInput driver : 24.1
[ 1337.036] X.Org Server Extension : 10.0
[ 1337.036] (--) PCI:*(0@0:2:0) 8086:5912:103c:829d rev 4, Mem @ 0x1ff0000000/16777216, 0x1fe0000000/268435456, I/O @ 0x00003000/64, BIOS @ 0x????????/65536
[ 1337.036] (II) LoadModule: "glx"
[ 1337.036] (II) Loading /usr/local/lib/xorg/modules/extensions/libglx.so
[ 1337.037] (II) Module glx: vendor="X.Org Foundation"
[ 1337.037] compiled for 1.20.9, module version = 1.0.0
[ 1337.037] ABI class: X.Org Server Extension, version 10.0
[ 1337.037] (II) LoadModule: "intel"
[ 1337.037] (II) Loading /usr/local/lib/xorg/modules/drivers/intel_drv.so
[ 1337.037] (II) Module intel: vendor="X.Org Foundation"
[ 1337.038] compiled for 1.20.9, module version = 2.99.917
[ 1337.038] Module class: X.Org Video Driver
[ 1337.038] ABI class: X.Org Video Driver, version 24.1
[ 1337.038] (II) intel: Driver for Intel(R) Integrated Graphics Chipsets:
i810, i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G,
915G, E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM,
Pineview G, 965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33,
GM45, 4 Series, G45/G43, Q45/Q43, G41, B43
[ 1337.038] (II) intel: Driver for Intel(R) HD Graphics
[ 1337.038] (II) intel: Driver for Intel(R) Iris(TM) Graphics
[ 1337.038] (II) intel: Driver for Intel(R) Iris(TM) Pro Graphics
[ 1337.038] (--) Using syscons driver with X support (version 2.0)
[ 1337.038] (--) using VT number 9

[ 1337.051] (EE) No devices detected.
[ 1337.051] (EE)
Fatal server error:
[ 1337.051] (EE) no screens found(EE)
[ 1337.051] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
[ 1337.051] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 1337.051] (EE)
[ 1337.051] (EE) Server terminated with error (1). Closing log file.


Vesa is for legacy boot setups you have then a UEFI setup.
... even more info I did not know about. Yes, this is on a UEFI setup.

Also, my user rasmus is in the video group, don't worry hehe :)
 
You are loading both i915kms.ko and drm2.ko.

Remove the one entry from /boot/loader.conf if its still there and only keep kld_list with /boot/modules/i915kms.ko in /etc/rc.conf.

Can you also show your xorg configuartion file?
 
Just a note to clarify. You probably already know this:

# kldload i915kms.ko

is the same thing as # kldload /boot/kernel/i915kms.ko

This is not the one you want. It is legacy and no longer works properly (the high resolution console works but not X11).

You probably want # kldload /boot/modules/i915kms.ko instead. I use an old x61 Thinkpad and even that seems to use this more modern KMS driver. I think only the very old Intel GMA cards use the non-kms Intel driver.

rusma, just a general note: modulename_load="YES" in loader.conf(5) and kld_list="... modulename ..." in rc.conf(5) do the same: load a specific kernel module.
Mjölnir is absolutely correct. However for now if you could do it manually just using kldload after boot (i.e remove all of these entries from your /boot/loader.conf and /etc/rc.conf. I noticed on just one of my machines the /boot/loader.conf method didn't work (it worked fine on all my others) so I suspect some hardware specific race condition was happening. Lets just make sure you aren't experiencing similar.
 
You probably want # kldload /boot/modules/i915kms.ko instead.
Yes! This is the one I want. Now i3 seems to run perfectly on my two screens. How can I make this permanently. Again, I have at this point no extra options in my /etc/rc.conf and /boot/loader.conf ...
 
You are loading both i915kms.ko and drm2.ko.

Remove the one entry from /boot/loader.conf if its still there and only keep kld_list with /boot/modules/i915kms.ko in /etc/rc.conf.

Can you also show your xorg configuartion file?

Yes, kldunload i915kms and kldload /boot/modules/i915kms.ko seems to be the radical change here. So having kld_list="/boot/modules/i915kms.ko" in /etc/rc.conf is the way to make this permanent? My xorg config is nothing special, just two simple files (with a bunch of commented lines) in /usr/local/etc/X11/xorg.conf.d/*:

root@iselin:/usr/home/rasmus # cat /usr/local/etc/X11/xorg.conf.d/driver-intel.conf
Section "Device"
# ### Available Driver options are:-
# ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
# ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
# ### <percent>: "<f>%"
# ### [arg]: arg optional
# #Option "Accel" # [<bool>]
# #Option "AccelMethod" # <str>
# #Option "Backlight" # <str>
# #Option "CustomEDID" # <str>
# #Option "DRI" # <str>
# #Option "Present" # [<bool>]
# #Option "ColorKey" # <i>
# #Option "VideoKey" # <i>
# #Option "Tiling" # [<bool>]
# #Option "LinearFramebuffer" # [<bool>]
# #Option "HWRotation" # [<bool>]
# #Option "VSync" # [<bool>]
# #Option "PageFlip" # [<bool>]
# #Option "SwapbuffersWait" # [<bool>]
# #Option "TripleBuffer" # [<bool>]
# #Option "XvPreferOverlay" # [<bool>]
# #Option "HotPlug" # [<bool>]
# #Option "ReprobeOutputs" # [<bool>]
# #Option "XvMC" # [<bool>]
# #Option "ZaphodHeads" # <str>
# #Option "VirtualHeads" # <i>
# #Option "TearFree" # [<bool>]
# #Option "PerCrtcPixmaps" # [<bool>]
# #Option "FallbackDebug" # [<bool>]
# #Option "DebugFlushBatches" # [<bool>]
# #Option "DebugFlushCaches" # [<bool>]
# #Option "DebugWait" # [<bool>]
# #Option "BufferCache" # [<bool>]
Identifier "Card0"
Driver "intel"
# Option "AccelMethod" "sna"
# Driver "scfb"
# Driver "vesa"
# BusID "PCI:0:2:0"
EndSection
root@iselin:/usr/home/rasmus # cat /usr/local/etc/X11/xorg.conf.d/driver-keyboard.conf
Section "InputClass"
Identifier "Keyboard Defaults"
MatchIsKeyboard "on"
Option "XkbLayout" "no"
# Option "XkbLayout" "no,us"
# Option "XkbOptions" "grp:alt_shift_toggle"
EndSection
 
Hmm... looks pretty good so far, does the modesetting driver work?

To load the modesetting driver, please move your intel config to a safe place and create a new configuartion with

Code:
Section "Device"

Identifier "Card0"

Driver "modesetting"

EndSection

Also can you post a log of dmesg? (Just to verify that your card got loaded sucessfully)
 
So having kld_list="/boot/modules/i915kms.ko" in /etc/rc.conf is the way to make this permanent?
Yep, that should do it.

You shouldn't need to touch your xorg.conf[.d] at all (i.e remove the file). It should use the correct driver by default (possibly the same as the "modesetting" driver?).
As far as I know only the NVIDIA binary blob driver needs to be explicitly specified in xorg.conf (or it defaults to the nv driver).
 
Ok, so after adding kld_list="/boot/modules/i915kms.ko" to /etc/rc.conf my kldstat looks like this:

Id Refs Address Size Name
1 53 0xffffffff80200000 227ae98 kernel
2 1 0xffffffff8247b000 eed8 aesni.ko
3 1 0xffffffff8248a000 3bad38 zfs.ko
4 2 0xffffffff82845000 a448 opensolaris.ko
5 1 0xffffffff82850000 1e7b0 geom_eli.ko
6 1 0xffffffff832fa000 12bf6c i915kms.ko
7 1 0xffffffff83426000 75e10 drm.ko
8 4 0xffffffff8349c000 12d30 linuxkpi.ko
9 3 0xffffffff834af000 13f30 linuxkpi_gplv2.ko
10 2 0xffffffff834c3000 6d0 debugfs.ko
11 1 0xffffffff834c4000 241d i915_kbl_dmc_ver1_04_bin.ko
12 1 0xffffffff834c7000 1860 uhid.ko
13 1 0xffffffff834c9000 1a40 wmt.ko
14 1 0xffffffff834cb000 2908 ums.ko
15 1 0xffffffff834ce000 acf mac_ntpd.ko


So somehow the i915_kbl_dmc_ver1_04_bin.ko lives there beside i915kms.ko, and gets selected my modesetting? I uncommented the lines in /usr/local/etc/X11/xorg.conf.d/driver-intel.conf I showed earlier (and modesetting is used??), X seems to load faster (somehow it was really slow when having specified intel there before -- legacy code ??) Wow, this was confusing. Thanks for the help all of you kind souls out there :D
 
Wow, this was confusing. Thanks for the help all of you kind souls out there :D
Glad you got it working. It really is about as clear as mud! This is one area that FreeBSD currently borrows heavily from Linux and it really does show. Future tasks with FreeBSD you should generally find much easier to solve :)

(Also, perhaps make sure to write this down. I tend to forget and every ~6 months I have to work it all out again XD)
 
Back
Top