# [nouveau] bumblebeed et le chargement du module (résolu)

## pti-rem

Bonjour

Le portable Asus n73sm (n73sm-tz124v) me pose des problèmes depuis l'achat pour faire fonctionner le système graphique Optimus correctement.

```
gazeau ~ # lspci -s 00:02.0 -vv

00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])

   Subsystem: ASUSTeK Computer Inc. Device 2113

   Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+

   Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-

   Latency: 0

   Interrupt: pin A routed to IRQ 43

   Region 0: Memory at dc400000 (64-bit, non-prefetchable) [size=4M]

   Region 2: Memory at b0000000 (64-bit, prefetchable) [size=256M]

   Region 4: I/O ports at e000 [size=64]

   Expansion ROM at <unassigned> [disabled]

   Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-

      Address: fee00000  Data: 40d1

   Capabilities: [d0] Power Management version 2

      Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)

      Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

   Capabilities: [a4] PCI Advanced Features

      AFCap: TP+ FLR+

      AFCtrl: FLR-

      AFStatus: TP-

   Kernel driver in use: i915

   Kernel modules: i915

gazeau ~ # lspci -s 01:00.0 -vv

01:00.0 VGA compatible controller: NVIDIA Corporation GF108M [GeForce GT 630M] (rev ff) (prog-if ff)

   !!! Unknown header type 7f

   Kernel modules: nouveau, nvidia
```

Le BIOS est à jour (?!) : Asus BIOS 302 2012.10.26 update (BIOS N73SM.302 08/14/2012 au dmesg)

J'ai essayé le pilote nvidia avec NVIDIA Driver with Optimus Laptops ; 

Avec la version adaptée du pilote nvidia à ma GT630M ou alors avec la dernière, et mes nombreux essais n'ont jamais réussi.

J'ai eu des messages d'erreur DSDT et d'autres. Souvent en rapport à l'ACPI et m'indiquant de mettre à jour le firmware. édition : comme désormais,

```
gazeau ~ # dmesg | grep 'ACPI Warning'

[   13.954004] ACPI Warning: SystemIO range 0x000000000000e040-0x000000000000e05f conflicts with OpRegion 0x000000000000e040-0x000000000000e04f (\_SB_.PCI0.SBUS.SMBI) (20140424/utaddress-258)

[   17.247964] ACPI Warning: \_SB_.PCI0.PEGR.GFX0._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)

[   17.268027] ACPI Warning: \_SB_.PCI0.PEGR.GFX0._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95
```

Maintenant, j'utilise le pilote nouveau compilé en module et le module bbswitch dans /proc/acpi/bbswitch (CONFIG_ACPI_PROCFS_POWER=Y) ; L'appel à nouveau est géré par bumblebeed. Je ne sais pas si bbswitch et bumblebeed fonctionneraient avec CONFIG_ACPI_PROCFS_POWER=N comme me demande de configurer mon noyau 3.16.5 sous init systemd.

édition du 29 décembre :

bumblebeed fonctionne avec "# CONFIG_ACPI_PROCFS_POWER is not set" ; C'est /etc/modprobe.d/bbswitch.conf qui définit l'état on / off de la gpu nvidia suivant le chargement / déchargement du module bbswitch. C'est vérifié d'après les capteurs de température et aussi d'après la valeur de /proc/acpi/bbswitch qui est malgré tout présent lorsque le module est chargé.

-

J'ai un VIDEO_CARDS="nouveau intel i915" ; Avec le i915, le résultat de $ glxgears est bon (9258 frames in 5.0 seconds = 1851.596 FPS) et le $ optirun glxgears est moins bon (5748 frames in 5.0 seconds = 1149.554 FPS)

```
rem@gazeau ~ $ glxinfo | grep direct

libGL error: failed to load driver: i965

libGL error: Try again with LIBGL_DEBUG=verbose for more details.

direct rendering: Yes

rem@gazeau ~ $ LIBGL_DEBUG=verbose glxinfo | grep direct

libGL: OpenDriver: trying /usr/lib64/dri/tls/i965_dri.so

libGL: OpenDriver: trying /usr/lib64/dri/i965_dri.so

libGL error: dlopen /usr/lib64/dri/i965_dri.so failed (/usr/lib64/dri/i965_dri.so: cannot open shared object file: No such file or directory)

libGL error: unable to load driver: i965_dri.so

libGL error: driver pointer missing

libGL error: failed to load driver: i965

libGL: OpenDriver: trying /usr/lib64/dri/tls/swrast_dri.so

libGL: OpenDriver: trying /usr/lib64/dri/swrast_dri.so

libGL: driver does not expose __driDriverGetExtensions_swrast(): /usr/lib64/dri/swrast_dri.so: undefined symbol: __driDriverGetExtensions_swrast

libGL: Can't open configuration file /home/rem/.drirc: No such file or directory.

libGL: Can't open configuration file /home/rem/.drirc: No such file or directory.

direct rendering: Yes
```

Si je retire i915 ou alors le laisse et y ajoute i965 dans le make.conf pour mesa, les résultats deviennent très mauvais ($ glxgears à 60 FPS environ)

Pour le moment, j'ignore le USE i965 de mesa. Et le message d'échec de chargement du module.

Pour en venir à ma demande, le module nouveau ne doit pas se charger automatiquement alors que c'est actuellement le cas. C'est le service bumblebeed qui doit le charger et décharger à la demande.

Et bbswitch doit être chargé automatiquement.

Il y a /etc/conf.d/modules et /etc/modprobe.d/*.conf

J'avais les 3 modules pour VirtualBox dans /etc/conf.d/modules (modules="vboxdrv vboxnetadp vboxnetflt") et ils n'étaient jamais chargés.

Pour ce cas précis, j'ai placé /etc/local.d/2_modprobe-vbox.start :

```
/sbin/modprobe -a vboxdrv vboxnetadp vboxnetflt
```

Pour mon souci, je viens de placer /etc/local.d/1_rmmod-nouveau-modprobebbswitch-bumblebeed-re.start :

```
/sbin/rmmod nouveau && /sbin/modprobe bbswitch && systemctl bumblebeed restart
```

Ce n'est pas la bonne méthode mais je n'ai pas trouvé mieux.

Et ça fonctionne : Slim ouvre ma session MATE automatiquement sans que le module nouveau ne soit chargé.

Auriez-vous quelque lecture à me donner pour les modules, leur chargement au démarrage et les paramètres pour l'init systemd ?

```
rem@gazeau ~ $ glxspheres64 

Polygons in scene: 62464

libGL error: failed to load driver: i965

libGL error: Try again with LIBGL_DEBUG=verbose for more details.

Visual ID of window: 0x147

Context is Direct

OpenGL Renderer: Gallium 0.4 on llvmpipe (LLVM 3.3, 256 bits)

25.920603 frames/sec - 28.927393 Mpixels/sec

26.084601 frames/sec - 29.110415 Mpixels/sec

25.914668 frames/sec - 28.920770 Mpixels/sec
```

```
rem@gazeau ~ $ optirun glxspheres64 

Polygons in scene: 62464

libGL error: failed to load driver: i965

libGL error: Try again with LIBGL_DEBUG=verbose for more details.

Visual ID of window: 0x20

Context is Direct

OpenGL Renderer: Gallium 0.4 on NVC1

81.646128 frames/sec - 91.117079 Mpixels/sec

81.541503 frames/sec - 91.000318 Mpixels/sec

82.085025 frames/sec - 91.606888 Mpixels/sec

84.032834 frames/sec - 93.780643 Mpixels/sec
```

Netflix sous google-chrome me pose encore - un peu - des problèmes (séparations horizontales rapides de blocs dans l'image ; espèces de petites saccades) comme liés à :

 *Quote:*   

> [   11.734375] [drm] Wrong MCH_SSKPD value: 0x16040307
> 
> [   11.734380] [drm] This can cause pipe underruns and display issues.
> 
> [   11.734382] [drm] Please upgrade your BIOS to fix this.

 

Netflix sous google-chrome marche mieux sans optirun

Peut-être que j'ai loupé quelque chose, à reproduire les mêmes erreurs dans mes essais mais ce système Optimus semble avoir posé beaucoup de problèmes et avoir mis pas mal de temps pour être gérable.

Je suis épuisé par cette fonctionnalité. Je veux bien réessayer ou améliorer, avec de l'aide.

Il paraît que c'est exprès que ça marche pas bien avec les distros Linux.

Une autre question : suis-je concerné par CONFIG_VGA_SWITCHEROO ?

édition : Je lis sur Wikipédia que la distribution Manjaro gère nativement Optimus, alors j'ai essayé l'iso MATE par défaut (pilotes libres) et aussi avec les pilotes propriétaires ;

Je me retrouve avec davantage d'ACPI Warning et optirun ne fonctionne pas : la nvidia reste éteinte dans les deux cas. J'ai compilé deux fichiers de sorties de commandes pour les deux situations mais je ne donne même pas de lien les pointant, ce n'est pas la peine. Mon bios ne va pas et il n'y a pas grand chose à faire pour ça. Je garde ma configuration actuelle.

Belle journéeLast edited by pti-rem on Mon Dec 29, 2014 10:52 am; edited 2 times in total

----------

## kwenspc

Pour la CG intel HD-3000 c'est i915 qu'il te faut, normal donc que i965 ne fonctionne pas.

Vérifies bien que tu es sur xorg-x11 dans eselect opengl list, glxinfo doit pointer sur mesa

J'utilise pour ma part les drivers nvidia, mais j'ai une gt840m donc nouveau n'en tire pas vraiment parti il me semble.

Je n'ai aucune erreur dans aucunes des sorties de glxinfo.

Tu dois avoir switcheroo dans le noyau oui.

Sinon glxgears est tout sauf un benchmark valide, j'ai un résultat moisi avec une config sur laquelle la 3d tourne au poil.

Pour ce qui est du rendu web, j'aurais tendance à dire que c'est assez normal. La CG intel est très largement suffisante pour ça,

idem pour le rendu video. Je n'utilise la carte nvidia que pour ce qui demande un poil plus de pèche en 3D. 

J'avoue ne pas avoir eu de soucis particulier de mon côté, ça "juste marche".

----------

## pti-rem

J'ai vérifié pour opengl qui est bien sur xorg-x11

Il y des MESA dans la sortie de glxinfo

```
rem@gazeau ~ $ glxinfo | grep MESA

libGL error: failed to load driver: i965

libGL error: Try again with LIBGL_DEBUG=verbose for more details.

    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, 

    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer, 

    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer, 

    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control, 

    GLX_MESA_multithread_makecurrent, GLX_OML_swap_method, 

    GL_MESA_pack_invert, GL_MESA_texture_array, GL_MESA_texture_signed_rgba, 

    GL_MESA_window_pos, GL_MESA_ycbcr_texture, GL_NV_blend_square,
```

J'ai placé switcheroo dans mon noyau

Le rendu web est bon sur le micro serveur avec une Radeon HD 6450 (down de 60Mb/s)

J'ai changé le câble hdmi avec un coup de bombe contact au passage.

Et le rendu est presque aussi bon maintenant  :Smile: 

Je n'ai plus besoin de bumblebeed ni de bbswitch (je ne fais rien en 3D) ; je laisse nouveau gérer tout seul.

La conso électrique de la nvidia sera un peu plus élevée ; c'est de saison. Je verrai si je replace bumblbee plus tard.

Je crois que je suis resté longtemps avec un câble mauvais.

Quel benchmark vidéo on utilise alors ?

Merci kwenspc

édition :

/mavie

J'ai encore du mal à descendre à moins de 23° avec ma Rosières 18076 55 cm nouvellement tubée en 180 mm et qui brûle du bois

\

Je descend de 10° l'ensemble des sensors du portable au repos en plaçant Bumblebee / bbswitch pour éteindre la CG nvidia par rapport à nouveau tout seul.

vus mes usages (Netflix passe très bien sur le n40l en profile low; double clavier / souris) je préfère avoir un portable frais.Last edited by pti-rem on Fri Nov 28, 2014 4:33 am; edited 3 times in total

----------

## kwenspc

 *pti-rem wrote:*   

> 
> 
> Je crois que je suis resté longtemps avec un câble mauvais.
> 
> 

 

Tant que c'est pas le pc c'est bien. Le mien c'est sa prise hdmi qui a des faux contacts,

et la batterie qui a pris 10% en moins en 3 mois...

 *pti-rem wrote:*   

> 
> 
> Quel benchmark vidéo on utilise alors ?
> 
> 

 

Eh eh, j'en sais rien   :Laughing: 

Mais je sais que glxgears est tout sauf un outil de benchmark

----------

## pti-rem

 *kwenspc wrote:*   

> Le mien c'est sa prise hdmi qui a des faux contacts,
> 
> et la batterie qui a pris 10% en moins en 3 mois...

 

C'est moche  :Sad:  Un mauvais choix alors ...

Je fête son troisième anniversaire à mon premier portable le 19 mars prochain. Il est tout le temps sur secteur.

"Portable" ne lui va pas du tout ; il est plié et ne bouge pas, sur patins de carré anti-vibration de machine à laver.

```
gazeau ~ # cat /sys/class/power_supply/BAT0/charge_full*

5117000

5200000
```

Une CG comme ma nvidia (GT 630M) ça n'aide en rien pour l'encodage ?Last edited by pti-rem on Sat Dec 20, 2014 7:49 am; edited 1 time in total

----------

## kwenspc

 *pti-rem wrote:*   

> 
> 
> Une CG comme ma nvidia (GT 630M) ça n'aide en rien pour l'encodage ?

 

Pas que je sache non, les CG fournissent toutes des aides au décodage (instructions et/ou pipelines spécifiques?)

Mais pas pour l'encodage, du moins pas que je sache.

Après les logiciels d'encodages utilisent peut-être une partie de la CG pour certains calculs via CUDA et/ou opencl.

J'avoue j'en sais rien.

----------

