Bumblebee Troubleshooting with Linux4.4.33-1 Kernel

Trying to get bumblebee to run on my linux4.4.33-1 system, doing lots or reading up, but if I am missing any key concepts, making mistakes, or just plain wrong, please correct me.

So why do I think Optimus is not working?

$ optirun -v glxgears
[ 7211.898644] [INFO]Configured driver: nouveau
[ 7212.138040] [INFO]Response: No - error: [XORG] (EE) Unknown chipset: NV124

[ 7212.138052] [ERROR]Cannot access secondary GPU - error: [XORG] (EE) Unknown chipset: NV124

[ 7212.138064] [ERROR]Aborting because fallback start is disabled.

Oh dear, unknown chipset NV124, this will become a common theme.

First, proof I have intel and NVidia graphics cards.

$ inxi -G
Graphics:  Card-1: Intel 4th Gen Core Processor Integrated Graphics Controller
           Card-2: NVIDIA GM204M [GeForce GTX 965M]
           Display Server: X.Org 1.18.4 driver: intel Resolution: 1920x1080@60.01hz
           GLX Renderer: Mesa DRI Intel Haswell Mobile GLX Version: 3.0 Mesa 13.0.1

More proof!

$ lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06)
$ lspci | grep -i nvidia
01:00.0 3D controller: NVIDIA Corporation GM204M [GeForce GTX 965M] (rev a1)

I am running free drivers for both my intel and NVidia graphics hardware.

$ mhwd -li
> 0000:00:02.0 (0300:8086:0416) Display controller Intel Corporation:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
video-hybrid-intel-nouveau-bumblebee  2016.01.28         true              PCI

I've tried to gather the packages this mhwd driver installs, is this right?

xf-86-intel
xf-86-nouveau
bumblebee

The package responsible for Optimus graphic card switching is linux44-bbswitch. Is this package installed automatically as part of kernel installation, or does kernel installation detect Optimus capability first and only install if supported?

Command to detect which graphics card is currently being used.

$ cat /proc/acpi/bbswitch
0000:01:00.0 OFF

So if bbswitch is OFF then the intel card is being used, if ON then NVidia card being used. Is this right?

My understanding is bumblebee runs as a service, so did it start at boot?

$ systemctl status bumblebeed
● bumblebeed.service - Bumblebee C Daemon
   Loaded: loaded (/usr/lib/systemd/system/bumblebeed.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2016-11-19 20:43:53 AEDT; 27min ago
 Main PID: 762 (bumblebeed)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/bumblebeed.service
           └─762 /usr/bin/bumblebeed --use-syslog

Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE) Unknown chipset: NV124
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE) Unknown chipset: NV124
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE) No devices detected.
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE)
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE) no screens found(EE)
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE)
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE) Please also check the log file at "/var/log/Xorg.8
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE)
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: [XORG] (EE) Server terminated with error (1). Closing log file
Nov 19 21:01:36 manjaro-msi bumblebeed[762]: X did not start properly

So, X did not start properly. Ouch.

What do the kernel logs say?

$ dmesg | grep nvidia
[ 1065.820126] nouveau 0000:01:00.0: Direct firmware load for nvidia/gm204/fecs_inst.bin failed with error -2

Double ouch.

systemclt tells me to check out the xorg logs, for those who are thinking tl;dr, just skip to the end where nouveau craps itself with an unknown chipset error.

$ cat Xorg.8.log
[  2532.143] 
X.Org X Server 1.18.4
Release Date: 2016-07-19
[  2532.143] X Protocol Version 11, Revision 0
[  2532.143] Build Operating System: Linux 4.5.4-1-ARCH x86_64 
[  2532.143] Current Operating System: Linux manjaro-msi 4.4.33-1-MANJARO #1 SMP PREEMPT Fri Nov 18 18:06:44 UTC 2016 x86_64
[  2532.143] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4-x86_64 root=UUID=2f09b28c-e0db-4475-9f46-4fecbdae7600 rw ipv6.disable=1 quiet splash resume=UUID=7642af70-64b5-4c7c-8df5-55233b1a1a31
[  2532.143] Build Date: 19 July 2016  05:54:24PM
[  2532.143]  
[  2532.143] Current version of pixman: 0.34.0
[  2532.143]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[  2532.143] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[  2532.143] (==) Log file: "/var/log/Xorg.8.log", Time: Sat Nov 19 21:26:02 2016
[  2532.143] (++) Using config file: "/etc/bumblebee/xorg.conf.nouveau"
[  2532.143] (++) Using config directory: "/etc/bumblebee/xorg.conf.d"
[  2532.143] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[  2532.144] (==) ServerLayout "Layout0"
[  2532.144] (**) |-->Screen "Screen0" (0)
[  2532.144] (**) |   |-->Monitor "<default monitor>"
[  2532.144] (==) No device specified for screen "Screen0".
        Using the first device section listed.
[  2532.144] (**) |   |-->Device "Device1"
[  2532.144] (==) No monitor specified for screen "Screen0".
        Using a default monitor configuration.
[  2532.144] (**) Option "AutoAddDevices" "false"
[  2532.144] (**) Not automatically adding devices
[  2532.144] (==) Automatically enabling devices
[  2532.144] (==) Automatically adding GPU devices
[  2532.144] (==) Max clients allowed: 256, resource mask: 0x1fffff
[  2532.144] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/100dpi/".
[  2532.144]    Entry deleted from font path.
[  2532.144]    (Run 'mkfontdir' on "/usr/share/fonts/100dpi/").
[  2532.144] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/75dpi/".
[  2532.144]    Entry deleted from font path.
[  2532.144]    (Run 'mkfontdir' on "/usr/share/fonts/75dpi/").
[  2532.144] (==) FontPath set to:
        /usr/share/fonts/misc/,
        /usr/share/fonts/TTF/,
        /usr/share/fonts/OTF/,
        /usr/share/fonts/Type1/
[  2532.144] (==) ModulePath set to "/usr/lib/xorg/modules"
[  2532.144] (==) |-->Input Device "<default pointer>"
[  2532.144] (==) |-->Input Device "<default keyboard>"
[  2532.144] (==) The core pointer device wasn't specified explicitly in the layout.
        Using the default mouse configuration.
[  2532.144] (==) The core keyboard device wasn't specified explicitly in the layout.
        Using the default keyboard configuration.
[  2532.144] (II) Loader magic: 0x821d40
[  2532.144] (II) Module ABI versions:
[  2532.144]    X.Org ANSI C Emulation: 0.4
[  2532.144]    X.Org Video Driver: 20.0
[  2532.144]    X.Org XInput driver : 22.1
[  2532.144]    X.Org Server Extension : 9.0
[  2532.144] (--) using VT number 1

[  2532.144] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
[  2532.145] (II) xfree86: Adding drm device (/dev/dri/card1)
[  2532.145] (II) xfree86: Adding drm device (/dev/dri/card0)
[  2532.145] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
[  2532.146] (--) PCI:*(0:1:0:0) 10de:13d9:1462:1134 rev 161, Mem @ 0xf6000000/16777216, 0xe0000000/268435456, 0xf0000000/33554432, I/O @ 0x0000e000/128, BIOS @ 0x????????/524288
[  2532.146] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
[  2532.146] (II) LoadModule: "glx"
[  2532.146] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[  2532.147] (II) Module glx: vendor="X.Org Foundation"
[  2532.147]    compiled for 1.18.4, module version = 1.0.0
[  2532.147]    ABI class: X.Org Server Extension, version 9.0
[  2532.147] (==) AIGLX enabled
[  2532.147] (II) LoadModule: "nouveau"
[  2532.147] (II) Loading /usr/lib/xorg/modules/drivers/nouveau_drv.so
[  2532.147] (II) Module nouveau: vendor="X.Org Foundation"
[  2532.147]    compiled for 1.18.4, module version = 1.0.13
[  2532.147]    Module class: X.Org Video Driver
[  2532.147]    ABI class: X.Org Video Driver, version 20.0
[  2532.147] (II) LoadModule: "mouse"
[  2532.147] (II) Loading /usr/lib/xorg/modules/input/mouse_drv.so
[  2532.147] (II) Module mouse: vendor="X.Org Foundation"
[  2532.147]    compiled for 1.18.4, module version = 1.9.2
[  2532.147]    Module class: X.Org XInput Driver
[  2532.147]    ABI class: X.Org XInput driver, version 22.1
[  2532.147] (II) LoadModule: "kbd"
[  2532.147] (II) Loading /usr/lib/xorg/modules/input/kbd_drv.so
[  2532.147] (II) Module kbd: vendor="X.Org Foundation"
[  2532.147]    compiled for 1.18.4, module version = 1.9.0
[  2532.147]    Module class: X.Org XInput Driver
[  2532.147]    ABI class: X.Org XInput driver, version 22.1
[  2532.147] (II) NOUVEAU driver 
[  2532.147] (II) NOUVEAU driver for NVIDIA chipset families :
[  2532.147]    RIVA TNT        (NV04)
[  2532.147]    RIVA TNT2       (NV05)
[  2532.147]    GeForce 256     (NV10)
[  2532.147]    GeForce 2       (NV11, NV15)
[  2532.147]    GeForce 4MX     (NV17, NV18)
[  2532.147]    GeForce 3       (NV20)
[  2532.147]    GeForce 4Ti     (NV25, NV28)
[  2532.147]    GeForce FX      (NV3x)
[  2532.147]    GeForce 6       (NV4x)
[  2532.147]    GeForce 7       (G7x)
[  2532.147]    GeForce 8       (G8x)
[  2532.147]    GeForce GTX 200 (NVA0)
[  2532.147]    GeForce GTX 400 (NVC0)
[  2532.147] (II) [drm] nouveau interface version: 1.3.1
[  2532.147] (EE) Unknown chipset: NV124
[  2532.147] (II) [drm] nouveau interface version: 1.3.1
[  2532.147] (EE) Unknown chipset: NV124
[  2532.147] (EE) No devices detected.
[  2532.147] (EE) 
Fatal server error:
[  2532.147] (EE) no screens found(EE) 
[  2532.147] (EE) 
Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 

Triple ouch.

This is where ambition exceeds current knowledge levels. I don't really know where to go from here.

I'll start with the bumblebee configuration.

$ ll /etc/bumblebee
total 32
drwxr-xr-x   3 root root  4096 Aug 25 22:49 .
drwxr-xr-x 104 root root 12288 Nov 19 20:40 ..
-rw-r--r--   1 root root  2930 Aug 25 22:49 bumblebee.conf
drwxr-xr-x   2 root root  4096 May 29 01:12 xorg.conf.d
-rw-r--r--   1 root root   359 Aug 25 22:49 xorg.conf.nouveau
-rw-r--r--   1 root root  2860 May 29 01:12 xorg.conf.nvidia
$ cat bumblebee.conf
# Configuration file for Bumblebee. Values should **not** be put between quotes

## Server options. Any change made in this section will need a server restart
# to take effect.
[bumblebeed]
# The secondary Xorg server DISPLAY number
VirtualDisplay=:8
# Should the unused Xorg server be kept running? Set this to true if waiting
# for X to be ready is too long and don't need power management at all.
KeepUnusedXServer=false
# The name of the Bumbleblee server group name (GID name)
ServerGroup=bumblebee
# Card power state at exit. Set to false if the card shoud be ON when Bumblebee
# server exits.
TurnCardOffAtExit=false
# The default behavior of '-f' option on optirun. If set to "true", '-f' will
# be ignored.
NoEcoModeOverride=false
# The Driver used by Bumblebee server. If this value is not set (or empty),
# auto-detection is performed. The available drivers are nvidia and nouveau
# (See also the driver-specific sections below)
Driver=nouveau
# Directory with a dummy config file to pass as a -configdir to secondary X
XorgConfDir=/etc/bumblebee/xorg.conf.d
# Xorg binary to run
XorgBinary=Xorg

## Client options. Will take effect on the next optirun executed.
[optirun]
# Acceleration/ rendering bridge, possible values are auto, virtualgl and
# primus.
Bridge=auto
# The method used for VirtualGL to transport frames between X servers.
# Possible values are proxy, jpeg, rgb, xv and yuv.
VGLTransport=proxy
# List of paths which are searched for the primus libGL.so.1 when using
# the primus bridge
PrimusLibraryPath=/usr/lib/primus:/usr/lib32/primus
# Should the program run under optirun even if Bumblebee server or nvidia card
# is not available?
AllowFallbackToIGC=false

# Driver-specific settings are grouped under [driver-NAME]. The sections are
# parsed if the Driver setting in [bumblebeed] is set to NAME (or if auto-
# detection resolves to NAME).
# PMMethod: method to use for saving power by disabling the nvidia card, valid
# values are: auto - automatically detect which PM method to use
#         bbswitch - new in BB 3, recommended if available
#       switcheroo - vga_switcheroo method, use at your own risk
#             none - disable PM completely
# https://github.com/Bumblebee-Project/Bumblebee/wiki/Comparison-of-PM-methods

## Section with nvidia driver specific options, only parsed if Driver=nvidia
[driver-nvidia]
# Module name to load, defaults to Driver if empty or unset
KernelDriver=nvidia
PMMethod=auto
# colon-separated path to the nvidia libraries
LibraryPath=/usr/lib/nvidia:/usr/lib32/nvidia
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path
XorgModulePath=/usr/lib/nvidia/xorg/,/usr/lib/xorg/modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

## Section with nouveau driver specific options, only parsed if Driver=nouveau
[driver-nouveau]
KernelDriver=nouveau
PMMethod=auto
XorgConfFile=/etc/bumblebee/xorg.conf.nouveau
$ ll /etc/bumblebee/xorg.conf.d
total 12
drwxr-xr-x 2 root root 4096 May 29 01:12 .
drwxr-xr-x 3 root root 4096 Aug 25 22:49 ..
-rw-r--r-- 1 root root    0 May 29 01:12 10-dummy.conf
-rw-r--r-- 1 root root  186 May 29 01:12 10-ignore-devices.conf

10-dummy.conf is an empty file and ignore devices doesn't seem relevant to this issue.

 $ cat /etc/bumblebee/xorg.conf.d/10-ignore-devices.conf
Section "InputClass"
    Identifier  "IgnoreDevices"
    MatchDevicePath "/dev/input/event*|/dev/input/mouse*|/dev/input/js*|/dev/input/mice*"
    Option      "Ignore" "true"
EndSection
$ cat xorg.conf.nouveau
##
## Generated by mhwd - Manjaro Hardware Detection
##

Section "ServerLayout"
    Identifier     "Layout0"
    Screen         "Screen0"
    Option         "AutoAddDevices" "false"
EndSection

Section "Device"
        Identifier  "Device1"
        Driver      "nouveau"
EndSection
 
Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
EndSection

Is /etc/X11/xinit/xinitrc relevant? Didn't look relevant, but what do I know?

Firstly, anything stand out as configured incorrectly, thus causing nouveau failure?

Secondly, where else should I be looking?

Thirdly, be gentle, I am still learning, albeit having fun doing it... :slight_smile:

Okay, after a good night's sleep time to take another look at this.

Firstly, is there anyone else running video-hybrid-intel-nouveau-bumblebee? If so what happens when you attempt to use the nvidia card through nouveau by running the command?

optirun -v glxgears

Is bumblebeed loading? What is the output for

systemctl status bumblebeed

In https://wiki.archlinux.org/index.php/Nouveau it states

check that you do not have Nouveau disabled using any modprobe blacklisting technique

So I got checking in /etc/modprobe.d/

$ ll /etc/modprobe.d
total 32
drwxr-xr-x   2 root root  4096 Aug 25 22:49 .
drwxr-xr-x 104 root root 12288 Nov 20 00:37 ..
-rw-r--r--   1 root root    79 Feb 12  2016 blacklist-pcspkr.conf
-rw-r--r--   1 root root   105 Aug 25 22:49 mhwd-bbswitch.conf
-rw-r--r--   1 root root    58 Aug 25 22:49 mhwd-gpu.conf
-rw-r--r--   1 root root    78 Aug 25 22:49 mhwd-nouveau.conf

The blacklist-pcspkr.conf is allegedly for muting console beeps or something. Not relevant here.

$ cat /etc/modprobe.d/mhwd-bbswitch.conf
##
## Generated by mhwd - Manjaro Hardware Detection
##

options bbswitch load_state=0 unload_state=0

I gather this sets bbswitch initially OFF.

Mhwd basically generated only comments in mhwd-gpu.conf,but mhwd-nouveau.conf looks odd.

$ cat /etc/modprobe.d/mhwd-nouveau.conf
##
## Generated by mhwd - Manjaro Hardware Detection
##
  
blacklist nouveau

Why is nouveau module modprobe blacklisted and effectively disabled? Can any of the Manjaro team/devs/experts explain why this blacklist is here?

Is the nouveau module only loaded on demand by bumblebee when optirun is executed? Or does this mean nouveau can be loaded at boot time, but not dynamically loaded using modprobe?

If I comment out this blaclisting could this cause harm, or render the system non booting?

Reading https://nouveau.freedesktop.org/wiki/Optimus/ which when this is run

$ xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x49 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 6 associated providers: 0 name:Intel

I should get two providers (see link). So it seems my starting position should be to get nouveau loading correctly at boot, make sure xrandr --listproviders list both intel and nvidia, and make sure bumblebeed services starts properly.

Confusing.

I cleared the kernel logs using dmesg -c to reduce clutter, rebooted and attempted to invoke Optimus.

No nouveau references after a clean boot, but relevant nouveau kernel log entries created after running optirun -v glxgears.

Here are the relevant kernel logs.

[  108.126910] bbswitch: enabling discrete graphics
[  108.297464] MXM: GUID detected in BIOS
[  108.297516] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[  108.297549] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[  108.297728] pci 0000:01:00.0: optimus capabilities: enabled, status dynamic power, hda bios codec supported
[  108.297730] VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.PEG0.PEGP handle
[  108.297783] nouveau 0000:01:00.0: NVIDIA GM204 (124190a1)
[  108.451047] nouveau 0000:01:00.0: bios: version 84.04.29.00.1b
[  108.451279] nouveau 0000:01:00.0: gr: using external firmware
[  108.453033] nouveau 0000:01:00.0: Direct firmware load for nvidia/gm204/fecs_inst.bin failed with error -2
[  108.453037] nouveau 0000:01:00.0: gr: failed to load fecs_inst
[  108.479520] nouveau 0000:01:00.0: fb: 2048 MiB GDDR5
[  108.479581] nouveau 0000:01:00.0: priv: HUB0: 10ecc0 ffffffff (1a40822c)
[  108.480903] vga_switcheroo: enabled
[  108.481023] [TTM] Zone  kernel: Available graphics memory: 8179090 kiB
[  108.481025] [TTM] Zone   dma32: Available graphics memory: 2097152 kiB
[  108.481026] [TTM] Initializing pool allocator
[  108.481029] [TTM] Initializing DMA pool allocator
[  108.481037] nouveau 0000:01:00.0: DRM: VRAM: 2048 MiB
[  108.481038] nouveau 0000:01:00.0: DRM: GART: 1048576 MiB
[  108.481040] nouveau 0000:01:00.0: DRM: Pointer to TMDS table invalid
[  108.481051] nouveau 0000:01:00.0: DRM: DCB version 4.1
[  108.481052] nouveau 0000:01:00.0: DRM: Pointer to flat panel table invalid
[  108.664242] nouveau 0000:01:00.0: DRM: MM: using COPY for buffer copies
[  108.664256] [drm] Initialized nouveau 1.3.1 20120801 for 0000:01:00.0 on minor 1
[  114.345915] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[  114.346223] ACPI: \_SB_.PCI0.PEG0.PEGP: failed to evaluate _DSM
[  114.346227] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20150930/nsarguments-95)
[  114.346435] nouveau 0000:01:00.0: DRM: evicting buffers...
[  114.346437] nouveau 0000:01:00.0: DRM: waiting for kernel channels to go idle...
[  114.346453] nouveau 0000:01:00.0: DRM: suspending client object trees...
[  114.352650] nouveau 0000:01:00.0: DRM: suspending kernel object tree...

All seemed to be going well, bbswitch enabled, Optimus detected, correctly identifies the NVidia card version, but then it fails to load the firmware

[  108.453033] nouveau 0000:01:00.0: Direct firmware load for nvidia/gm204/fecs_inst.bin failed with error -2
[  108.453037] nouveau 0000:01:00.0: gr: failed to load fecs_inst

Where is this external firmware loaded from?

[  108.297783] nouveau 0000:01:00.0: NVIDIA GM204 (124190a1)
[  108.451047] nouveau 0000:01:00.0: bios: version 84.04.29.00.1b
[  108.451279] nouveau 0000:01:00.0: gr: using external firmware

I am attempting to use Arch wiki to help, but it is proving little help as MHWD abstracts what is actually going on and muddies the water for noobs like me. MHWD is great, but when it doesn't work properly it is confusing to diagnose the reasons why.

EDIT: Firmware is attempting to be loaded from /lib/firmware/nvidia/gm204/gr

$ ll /lib/firmware/nvidia/gm204/gr
total 24
drwxr-xr-x 2 root root 4096 Oct 24 15:18 .
drwxr-xr-x 4 root root 4096 Apr 30  2016 ..
lrwxrwxrwx 1 root root   26 Oct  5 21:35 fecs_bl.bin -> ../../gm200/gr/fecs_bl.bin
-rw-r--r-- 1 root root 1968 Oct  5 21:35 fecs_data.bin
lrwxrwxrwx 1 root root   28 Oct  5 21:35 fecs_inst.bin -> ../../gm200/gr/fecs_inst.bin
-rw-r--r-- 1 root root   76 Oct  5 21:35 fecs_sig.bin
lrwxrwxrwx 1 root root   27 Oct  5 21:35 gpccs_bl.bin -> ../../gm200/gr/gpccs_bl.bin
-rw-r--r-- 1 root root 2056 Oct  5 21:35 gpccs_data.bin
lrwxrwxrwx 1 root root   29 Oct  5 21:35 gpccs_inst.bin -> ../../gm200/gr/gpccs_inst.bin
-rw-r--r-- 1 root root   76 Oct  5 21:35 gpccs_sig.bin
lrwxrwxrwx 1 root root   33 Oct  5 21:35 sw_bundle_init.bin -> ../../gm200/gr/sw_bundle_init.bin
lrwxrwxrwx 1 root root   25 Oct  5 21:35 sw_ctx.bin -> ../../gm200/gr/sw_ctx.bin
lrwxrwxrwx 1 root root   33 Oct  5 21:35 sw_method_init.bin -> ../../gm200/gr/sw_method_init.bin
lrwxrwxrwx 1 root root   28 Oct  5 21:35 sw_nonctx.bin -> ../../gm200/gr/sw_nonctx.bin

Bit the firmware are actually symbolic links back to /lib/firmware/nvidia/gm200/gr

$ ll /lib/firmware/nvidia/gm200/gr
total 92
drwxr-xr-x 2 root root  4096 Oct 24 15:18 .
drwxr-xr-x 4 root root  4096 Apr 30  2016 ..
-rw-r--r-- 1 root root   576 Oct  5 21:35 fecs_bl.bin
-rw-r--r-- 1 root root  1968 Oct  5 21:35 fecs_data.bin
-rw-r--r-- 1 root root 16271 Oct  5 21:35 fecs_inst.bin
-rw-r--r-- 1 root root    76 Oct  5 21:35 fecs_sig.bin
-rw-r--r-- 1 root root   576 Oct  5 21:35 gpccs_bl.bin
-rw-r--r-- 1 root root  2056 Oct  5 21:35 gpccs_data.bin
-rw-r--r-- 1 root root  9768 Oct  5 21:35 gpccs_inst.bin
-rw-r--r-- 1 root root    76 Oct  5 21:35 gpccs_sig.bin
-rw-r--r-- 1 root root  7616 Oct  5 21:35 sw_bundle_init.bin
-rw-r--r-- 1 root root  5592 Oct  5 21:35 sw_ctx.bin
-rw-r--r-- 1 root root 10800 Oct  5 21:35 sw_method_init.bin
-rw-r--r-- 1 root root  1440 Oct  5 21:35 sw_nonctx.bin

Which seems to contain the actual firmware binaries, including the one attempting to be loaded on my system fecs_inst.bin.

Now I suppose I have to try and hunt down what an error code of -2 refers to when the firmware fails to load correctly. I am assuming this is a nouveau error code.

Snippets from /var/log/Xorg.8.log

[   108.688] (II) LoadModule: "nouveau"
[   108.688] (II) Loading /usr/lib/xorg/modules/drivers/nouveau_drv.so
[   108.689] (II) Module nouveau: vendor="X.Org Foundation"
[   108.689]    compiled for 1.18.4, module version = 1.0.13

It appears the driver loaded here, /usr/lib/xorg/modules/drivers/nouveau_drv.so, may be incorrect.

My card, NVIDIA GM204M [GeForce GTX 965M], doesn't seem to be referenced in the supported chipsets for this nouveau driver.

[   108.689] (II) NOUVEAU driver 
[   108.689] (II) NOUVEAU driver for NVIDIA chipset families :
[   108.689]    RIVA TNT        (NV04)
[   108.690]    RIVA TNT2       (NV05)
[   108.690]    GeForce 256     (NV10)
[   108.690]    GeForce 2       (NV11, NV15)
[   108.690]    GeForce 4MX     (NV17, NV18)
[   108.690]    GeForce 3       (NV20)
[   108.690]    GeForce 4Ti     (NV25, NV28)
[   108.690]    GeForce FX      (NV3x)
[   108.690]    GeForce 6       (NV4x)
[   108.690]    GeForce 7       (G7x)
[   108.690]    GeForce 8       (G8x)
[   108.690]    GeForce GTX 200 (NVA0)
[   108.690]    GeForce GTX 400 (NVC0)
[   108.690] (II) [drm] nouveau interface version: 1.3.1
[   108.690] (EE) Unknown chipset: NV124
[   108.690] (II) [drm] nouveau interface version: 1.3.1
[   108.690] (EE) Unknown chipset: NV124
[   108.690] (EE) No devices detected.
[   108.690] (EE) 

Which would explain the error when trying to load it.

So, after all this faffing about, it seems my GeForce GTX 965M card has a chipset of NV124 which is not supported by nouveau.

This assertion seems to be supported here.

https://nouveau.freedesktop.org/wiki/CodeNames/
https://nouveau.freedesktop.org/wiki/FeatureMatrix/

Turns out I have a Maxwell card, and the nouveau feature matrix confirms it is not really supported yet.

So, if I want to use Bumblebee with my dedicated NVidia GPU I need to go down the proprietary driver route, which I assume is video-hybrid-intel-nvidia-bumblebee.

My other option is to only use the NVidia proprietary driver, which kinda concerns me as if a dodgy driver is released by NVidia my system probably won't boot.

How stable is the proprietary driver for Maxwell Cards? Is there much to configure to get it working effectively?

If I run the following what will happen?

sudo mhwd -a pci nonfree 0300

I assume the bumblebee-nouveau-intel driver will be uninstalled, but will the bumblebee-nvidia-intel driver be installed or the standalone nvidia driver?

I have a headache.

Working.

sudo mhwd -r pci video-hybrid-intel-nouveau-bumblebee
sudo mwhd -i pci video-hybrid-intel-nvidia-bumblebee

Reboot.

$ optirun -v glxgears
[   31.734040] [INFO]Configured driver: nvidia
[   33.704394] [INFO]Response: Yes. X is active.

[   33.704407] [INFO]Running application using primus.
299 frames in 5.0 seconds = 59.785 FPS
primus: warning: dropping a frame to avoid deadlock
XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
      after 32 requests (32 known processed) with 0 events remaining.
primus: warning: dropping a frame to avoid deadlock
primus: warning: timeout waiting for display worker

Not sure what the warnings at the end mean, but at least now it works.

That was a convoluted journey to end up with a pretty simple solution, hate being this green around the gills.

I'll ask again, how stable is the NVidia driver for Maxell cards? Recommeded?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by