I have a new Lenovo E540 notebook which comes with UEFI Firmware, Intel Haswell i5-4200M CPU with its integrated HD4600 iGOU and a dedicated discrete nVidia GT 740M GPU. The crappy Lenovo firmware allows me to select for display either "Integrated" or "nVidia Optimus". I checked latter, but also the first doesn't work - this for the record.
Phenomenon:
I can not start, in any case, an accelerated X11 and I have to use x11-drivers/xf86-video-scfb, which is worse than a pain in the ass and unusable, but it delivers at least a graphical shell.
I tried the x11/nvidia-driver version 340.24, 340.32 and even the BETA 343.13. It is always the same:
- The (nvidia) GPU gets detected, not the iGPU HD4600
- Starting the X11 server with the nVidia GPU fails with a blank screen - but I can switch to the vt() console as expected.
- Checking the Xorg.0.log reveals, that there are no display sockets attached to the nVidia GPU, or the driver can not find them. The laptop has at least a built-in display, a Display Port and a VGA-15 socket:
Switching the configuration completely to the Intel HD4600 hardware (enabling in EFI, setting the xorg.conf setting accordingly, loading DRM2 and i915KMS for KMS) doesn't result in anything useful, it seems that even the Xorg's "intel" driver doesn't find and device to open although the driver states that the HD4600 is on the list of supported devices. It seems FreeBSD's kernel is again far behind everything else.
Looking for a solution always points me to nVidias "Optimus" technology, which isn't supported by either Linux or any of the *BSDs. But: The web is full of nicely written Linux articles - but looking for FreeBSD, there is not even something seriously mentioned on the central HUB's website! That's a pity.
Anyway, I has been suggested to deal with ACPI and switching the GPU on or off via an additional kernel module which allows ACPI calls from userland, found in
sysutils/acpi/Call.
Having successfully loaded the kernel module, FreeBSD get lost and have to tag their searches with "Linux" to get any answers. But the Linux ACPI implementations seem to differ from FreeBSD's, but I do not know since I'm a novice in that matter. Anyway, someone wrote me that it is possible to issue a ACPI call to explicitly enable the GPU - but he carefully avoided mentioning how. So I fiddled around a bit and dumped the ACPI code via
So, it seems I'm somehow lost with FreeBSD, even CURRENT. Not to speak of 10/10.1 which are far more behind.
So, if someone has a solution to enable the nVidia GPU or has experiences with Lenovo's E540 hardware as of today, please feel free to share your knowledge.
Phenomenon:
I can not start, in any case, an accelerated X11 and I have to use x11-drivers/xf86-video-scfb, which is worse than a pain in the ass and unusable, but it delivers at least a graphical shell.
I tried the x11/nvidia-driver version 340.24, 340.32 and even the BETA 343.13. It is always the same:
- The (nvidia) GPU gets detected, not the iGPU HD4600
- Starting the X11 server with the nVidia GPU fails with a blank screen - but I can switch to the vt() console as expected.
- Checking the Xorg.0.log reveals, that there are no display sockets attached to the nVidia GPU, or the driver can not find them. The laptop has at least a built-in display, a Display Port and a VGA-15 socket:
Code:
[ 60.053] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[ 60.053] (==) NVIDIA(0): Depth 24, (==) framebuffer bpp 32
[ 60.054] (==) NVIDIA(0): RGB weight 888
[ 60.054] (==) NVIDIA(0): Default visual is TrueColor
[ 60.054] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[ 60.055] (**) NVIDIA(0): Enabling 2D acceleration
[ 60.485] (II) NVIDIA(0): NVIDIA GPU GeForce GT 740M (GK208) at PCI:1:0:0 (GPU-0)
[ 60.486] (--) NVIDIA(0): Memory: 2097152 kBytes
[ 60.486] (--) NVIDIA(0): VideoBIOS: 80.28.25.00.27
[ 60.486] (II) NVIDIA(0): Detected PCI Express Link width: 8X
[ 60.486] (--) NVIDIA(0): Valid display device(s) on GeForce GT 740M at PCI:1:0:0
[ 60.487] (--) NVIDIA(0): none
[ 60.487] (II) NVIDIA(0): Validated MetaModes:
[ 60.487] (II) NVIDIA(0): "NULL"
[ 60.487] (II) NVIDIA(0): Virtual screen size determined to be 640 x 480
[ 60.488] (WW) NVIDIA(0): Unable to get display device for DPI computation.
[ 60.488] (==) NVIDIA(0): DPI set to (75, 75); computed from built-in default
[ 60.488] (--) Depth 24 pixmap format is 32 bpp
[ 60.489] (II) NVIDIA: Reserving 3072.00 MB of virtual memory for indirect memory
[ 60.489] (II) NVIDIA: access.
[ 60.492] (II) NVIDIA(0): Setting mode "NULL"
[ 60.493] (EE) NVIDIA(0): Failed to initiate mode change.
[ 60.493] (EE) NVIDIA(0): Failed to complete mode change
[ 60.553] (II) NVIDIA(0): Built-in logo is bigger than the screen.
Switching the configuration completely to the Intel HD4600 hardware (enabling in EFI, setting the xorg.conf setting accordingly, loading DRM2 and i915KMS for KMS) doesn't result in anything useful, it seems that even the Xorg's "intel" driver doesn't find and device to open although the driver states that the HD4600 is on the list of supported devices. It seems FreeBSD's kernel is again far behind everything else.
Looking for a solution always points me to nVidias "Optimus" technology, which isn't supported by either Linux or any of the *BSDs. But: The web is full of nicely written Linux articles - but looking for FreeBSD, there is not even something seriously mentioned on the central HUB's website! That's a pity.
Anyway, I has been suggested to deal with ACPI and switching the GPU on or off via an additional kernel module which allows ACPI calls from userland, found in
sysutils/acpi/Call.
Having successfully loaded the kernel module, FreeBSD get lost and have to tag their searches with "Linux" to get any answers. But the Linux ACPI implementations seem to differ from FreeBSD's, but I do not know since I'm a novice in that matter. Anyway, someone wrote me that it is possible to issue a ACPI call to explicitly enable the GPU - but he carefully avoided mentioning how. So I fiddled around a bit and dumped the ACPI code via
acpidump -dt
to find out what the name/tag or object name of the nVidia GPU might be, but it is a mess. NPEG0.NGPU seems to be in FreeBSD own boiled beer something like PEG_.XXX and none of the according to the bumblebee project for Linux mentioned methods for setting and enabling the nVidia GPU via ACPI work or can be applied.So, it seems I'm somehow lost with FreeBSD, even CURRENT. Not to speak of 10/10.1 which are far more behind.
So, if someone has a solution to enable the nVidia GPU or has experiences with Lenovo's E540 hardware as of today, please feel free to share your knowledge.