# VLC + Bumblebeed: scheda NVIDIA accesa in automatico

## pierino_89

Ciao a tutti,

mi stavo per godere un video su VLC quando improvvisamente mi appare un popup avvisandomi dell'accensione della scheda discreta. Ora io ovviamente NON ho lanciato VLC con  "primusrun" o con "optirun", perché sarebbe un assurdo spreco di batteria. Tuttavia, la scheda appare accesa:

```
$ cat /proc/acpi/bbswitch 

0000:01:00.0 ON

```

e mi risulta impossibile scaricare il modulo fino a chiusura del programma. Ho provato a frugare, ed ho scoperto che VLC dalla versione 2.2 usa di predefinito l'uscita accelerata con VDPAU, quindi ho ricompilato con "-vdpau" e il problema si è risolto. Tuttavia i dubbi restano:

- come fa a sapere che ho una scheda NVIDIA se è spenta?

- per quale oscuro motivo un programma dovrebbe poter decidere in autonomia di accendere la scheda discreta?

- ma soprattutto, come gli impedisco di farlo?

Ovviamente posso impostare globalmente "-vdpau" ma, metti caso che un giorno mi serva avviare vlc sulla scheda discreta, vorrei evitare di dover ricompilare tutto.

----------

## djinnZ

Credo che dipenda da X non da vlc.

Vlc, se non usi l'apposita opzione per disabilitare l'accelerazione hardware o forzare Xv fa una richiesta al server e lui tenta di chiamare l'odiosa nvidia.

Sarebbe da aprire un bug per chiedere che sia migliorata questa faccenda.

Nel frattempo potresti risolvere usando uno script per chiamare vlc che disabiliti l'accelerazione hardware quando è attiva la grafica integrata.

----------

## pierino_89

 *djinnZ wrote:*   

> Credo che dipenda da X non da vlc.
> 
> Vlc, se non usi l'apposita opzione per disabilitare l'accelerazione hardware o forzare Xv fa una richiesta al server e lui tenta di chiamare l'odiosa nvidia.

 

Che io sappia i comandi "primusrun" e "optirun" avviano un altro X server sulla scheda discreta e poi riportano il contenuto nel server X corrente, quindi il primo non dovrebbe saperne nulla. Hai trovato della documentazione che io non conosco?   :Confused: 

 *Quote:*   

> 
> 
> Nel frattempo potresti risolvere usando uno script per chiamare vlc che disabiliti l'accelerazione hardware quando è attiva la grafica integrata.

 

Eh, il problema è che se disabilito l'accelerazione hw mi disabilita anche "vaapi" sulla intel, cosa che invece vorrei evitare.

----------

## djinnZ

Cerca sul forum di vlc. Dovrebbe essere in lavorazione una soluzione.

Per quel che so al momento sceglie da solo la più alta disponibile.

----------

## djinnZ

Visto che dovrei avere lo stesso problema sul laptop (che al momento è senza sistema linux quindi prove non ne posso fare) dove non uso mai la radeon ma sempre e solo la intel e quindi ho cercato un altro poco.

Sembra che il problema sia di mesa (ma eselect opengl list cosa riporta?) che tra l'altro se hai una intel superiore alla 4500 dovrebbe tentare di avviare lo stesso l'accelerazione vdpau anche se poi il sistema tende a schiantarsi.

Di certo se hai abilitato gallium è implicita l'attivazione di vpdau.

Potresti provare con eselect ad impostare classic per il software render e per intel.

Fai sapere.

----------

## pierino_89

```
eselect opengl list

Available OpenGL implementations:

  [1]   nvidia

  [2]   xorg-x11 *

```

Anche perché non fosse così impostato non mi funzionerebbe il direct rendering   :Razz: 

Per il resto in effetti ho "gallium" abilitato su mesa, dovrei disabilitarlo? Ricordo tempo fa di averlo inserito per via di una catena di dipendenze, ma effettivamente non ho idea di cosa sia e a cosa serva. La intel dovrebbe essere una 4000, dato che ho un i7-3610QM.

----------

## djinnZ

eselect mesa list cosa riporta?

Prova con eselect a disabilitare gallium e vedi se smette di rompere.

la prova per te non la posso fare visto che ho solo ati ed uso solo gli open.

----------

## pierino_89

Quindi metto su "classic" la parte del software render?

```
# eselect mesa list

64bit i915 (Intel 915, 945)

64bit i965 (Intel GMA 965, G/Q3x, G/Q4x, HD)

  [1]   classic *

64bit r300 (Radeon R300-R500)

64bit r600 (Radeon R600-R700, Evergreen, Northern Islands)

64bit sw (Software renderer)

  [1]   classic

  [2]   gallium *

32bit i915 (Intel 915, 945)

32bit i965 (Intel GMA 965, G/Q3x, G/Q4x, HD)

  [1]   classic *

32bit r300 (Radeon R300-R500)

32bit r600 (Radeon R600-R700, Evergreen, Northern Islands)

32bit sw (Software renderer)

  [1]   classic

  [2]   gallium *

```

----------

## djinnZ

Si. Dovrebbe smettere di scocciare, in teoria. Gallium implica l'uso di default di vdpau che viene rilevato ma non è attivo. Ovviamente quando usi la discreta devi averlo attivo invece. Sempre che così funzioni l'accelerazione vaapi. Se le disabilita entrambe non è una soluzione.

Prova e vedi cosa combina.

----------

## pierino_89

"Ni". Nel senso, quando apro VLC mi impazzisce la barra delle notifiche informandomi che la scheda è stata accesa e spenta 5 volte al secondo, ma 

```
cat /proc/acpi/bbswitch
```

 mi dice che è spenta. L'unico modo che ho trovato per far tacere le notifiche è fare il logout e rientrare, il che mi fa supporre che in realtà la scheda sia stata accesa e spenta tipo un milione di volte in un istante e che le notifiche siano state messe in buffer e distribuite con calma.

Le notifiche vengono generate da questa regola di udev:

```
# /etc/udev/rules.d/99_bumblebee.rules

DEVPATH=="/module/nvidia", ACTION=="add", RUN+="/usr/local/sbin/nvidia_event.sh on"

DEVPATH=="/module/nvidia", ACTION=="remove", RUN+="/usr/local/sbin/nvidia_event.sh off"
```

Lo script citato si occupa di mandare con "notify-send" un messaggio a tutti gli utenti loggati.

Al di là di questo posso dire che la scheda rimane sì spenta, ma "ci prova lo stesso". Per ora usare "-vdpau" su vlc per ora resta l'opzione migliore.

----------

