Difference between revisions of "Bumblebee (Italiano)"

From ArchWiki
Jump to: navigation, search
(aggiunto paragrafo)
(pagina allineata)
Line 30: Line 30:
 
Sono disponibili diversi pacchetti per un setup completo :
 
Sono disponibili diversi pacchetti per un setup completo :
  
* {{pkg|bumblebee}} (o {{aur|bumblebee-git}}) -il pacchetto principale che fornisce il demone e programmi client.
+
* {{pkg|bumblebee}} - Il pacchetto principale che fornisce il demone e programmi client.
* (opzionale) {{pkg|bbswitch}} (o {{pkg|bbswitch-dkms}}) -consigliato per il risparmio energetico disabilitando la scheda Nvidia
+
* (opzionale) {{pkg|bbswitch}} (o {{pkg|bbswitch-dkms}}) -Consigliato per il risparmio energetico disabilitando la scheda Nvidia
 
* (opzionale ) Se si desidera più di un semplice risparmio energetico, per un rendering di programmi sulla scheda Nvidia dedicata, è inoltre necessario:
 
* (opzionale ) Se si desidera più di un semplice risparmio energetico, per un rendering di programmi sulla scheda Nvidia dedicata, è inoltre necessario:
 
** Un driver per la scheda Nvidia. Il driver open-source [[nouveau (Italiano)|Nouveau]] o il driver proprietario [[NVIDIA (Italiano)|Nvidia]]. Vedere la sottosezione.
 
** Un driver per la scheda Nvidia. Il driver open-source [[nouveau (Italiano)|Nouveau]] o il driver proprietario [[NVIDIA (Italiano)|Nvidia]]. Vedere la sottosezione.
 
** Un bridge per il rendering e la visualizzazione. Attualmente sono disponibili due pacchetti che sono in grado di farlo, {{pkg|primus}} e {{pkg|virtualgl}}. Solo uno di loro è necessario, ma possono essere installati ugualmente entrambi.
 
** Un bridge per il rendering e la visualizzazione. Attualmente sono disponibili due pacchetti che sono in grado di farlo, {{pkg|primus}} e {{pkg|virtualgl}}. Solo uno di loro è necessario, ma possono essere installati ugualmente entrambi.
  
{{Note|Se si desidera eseguire una applicazione a 32 bit su un sistema a 64 bit è necessario installare le opportune librerie lib32-* per il programma. inoltre è necessario anche installare {{pkg|lib32-virtualgl}} o {{pkg|lib32-primus}} (o {{AUR|lib32-primus-git}}), in base a cosa avete scelto per effettuare il bridge del rendering. Basta fare in modo di eseguire {{ic|primusrun}} invece di {{ic|optirun}} se si decide di utilizzare bridge Primus per il rendering.}}
+
{{Note|Se si desidera eseguire una applicazione a 32 bit su un sistema a 64 bit è necessario installare le opportune librerie lib32-* per il programma. inoltre è necessario anche installare {{pkg|lib32-virtualgl}} o {{pkg|lib32-primus}}, in base a cosa avete scelto per effettuare il bridge del rendering. Basta fare in modo di eseguire {{ic|primusrun}} invece di {{ic|optirun}} se si decide di utilizzare bridge Primus per il rendering.}}
  
 
=== Installare Bumblebee con Intel/Nvidia ===
 
=== Installare Bumblebee con Intel/Nvidia ===
  
 
* Installare {{pkg|intel-dri}}, {{pkg|xf86-video-intel}}, {{pkg|bumblebee}} e {{pkg|nvidia}}.
 
* Installare {{pkg|intel-dri}}, {{pkg|xf86-video-intel}}, {{pkg|bumblebee}} e {{pkg|nvidia}}.
 
# pacman -S intel-dri xf86-video-intel bumblebee nvidia
 
  
 
Se si desidera eseguire applicazioni a 32-bit (come i giochi su wine) su sistemi a 64-bit, è necessario il pacchetto addizionale  {{pkg|lib32-nvidia-utils}}.
 
Se si desidera eseguire applicazioni a 32-bit (come i giochi su wine) su sistemi a 64-bit, è necessario il pacchetto addizionale  {{pkg|lib32-nvidia-utils}}.
  
{{Nota|Non installare lib32-nvidia-libgl ! Bumblebee troverà le giuste librerie lib32 nvidia senza di esso.}}
+
{{Nota|Non installare lib32-nvidia-libgl! Bumblebee troverà le giuste librerie lib32 nvidia senza di esso.}}
  
 
=== Installare Bumblebee con Intel/Nouveau ===
 
=== Installare Bumblebee con Intel/Nouveau ===
  
Installare i driver [https://www.archlinux.org/packages/?sort=&q=nouveau nouveau] e i pacchetti richiesti:
+
Installare:
 
+
# pacman -S xf86-video-nouveau nouveau-dri mesa
+
  
 
* {{Pkg|xf86-video-nouveau}} driver sperimentale con accelerazione 3D  
 
* {{Pkg|xf86-video-nouveau}} driver sperimentale con accelerazione 3D  
Line 66: Line 62:
 
dove {{ic|$USER}} è il nome di login dell'utente da aggiungere. Ri-effettuare il login per rendere effettive le modifiche.
 
dove {{ic|$USER}} è il nome di login dell'utente da aggiungere. Ri-effettuare il login per rendere effettive le modifiche.
  
Successivamente per avviare automaticamente Bumbleebee all'avvio abilitare il servizio {{ic|bumblebeed}}:
+
{{suggerimento|Si consiglia di abilitare il servizio di [[systemd (Italiano)|Systemd]] '''bumblebeed'''.}}
 
+
# systemctl enable bumblebeed
+
  
 
Ora riavviare il sistema e utilizzare il programma {{ic|[[#Utilizzo|optirun]]}} da un terminale per usufruire della tecnologia Optimus NVIDIA per il rendering.
 
Ora riavviare il sistema e utilizzare il programma {{ic|[[#Utilizzo|optirun]]}} da un terminale per usufruire della tecnologia Optimus NVIDIA per il rendering.
Line 85: Line 79:
  
 
Per avviare un'applicazione utilizzando la scheda grafica dedicata:
 
Per avviare un'applicazione utilizzando la scheda grafica dedicata:
{{bc|$ optirun [options] <application> [application-parameters]}}
+
 
 +
$ optirun [opzione] ''application'' [parametri-applicazione]
  
 
Alcuni esempi:
 
Alcuni esempi:
Line 91: Line 86:
 
Avviare applicazioni Windows con Optiumus
 
Avviare applicazioni Windows con Optiumus
  
  $ optirun wine <windows application>.exe
+
  $ optirun wine ''windows application''.exe
  
 
Utilizzare NVIDIA Settings con Optimus
 
Utilizzare NVIDIA Settings con Optimus
Line 97: Line 92:
 
  $ optirun -b none nvidia-settings -c :8  
 
  $ optirun -b none nvidia-settings -c :8  
  
Per un elenco di opzioni per {{ic|optirun}} vedere la sua pagina man:
+
Per un elenco di opzioni per {{ic|optirun}} vedere la sua pagina man.
+
$ man optirun
+
  
 
Un nuovo programma in futuro diventerà la scelta predefinita, poichè apporta migliori prestazioni, vale a dire primus. Attualmente è necessario eseguire il programma a parte (che non accetta le opzioni a differenza di {{ic|optirun }}), ma in futuro sarà avviato automaticamente da optirun.  
 
Un nuovo programma in futuro diventerà la scelta predefinita, poichè apporta migliori prestazioni, vale a dire primus. Attualmente è necessario eseguire il programma a parte (che non accetta le opzioni a differenza di {{ic|optirun }}), ma in futuro sarà avviato automaticamente da optirun.  
Line 119: Line 112:
 
Per usare un metodo di compressione per una singola applicazione:
 
Per usare un metodo di compressione per una singola applicazione:
  
  $ optirun -c <metodo-di-comppressione> applicazione
+
  $ optirun -c ''metodo-di-comppressione'' applicazione
  
 
I metodi di compressione influiscono sulle prestazioni di utilizzo della CPU/GPU. I metodi compressi (come {{ic|jpeg}}) caricheranno al massimo la CPU e al minimo possibile la GPU; i metodi non compressi caricheranno più la GPU mentre la CPU avrà il minor carico possibile.
 
I metodi di compressione influiscono sulle prestazioni di utilizzo della CPU/GPU. I metodi compressi (come {{ic|jpeg}}) caricheranno al massimo la CPU e al minimo possibile la GPU; i metodi non compressi caricheranno più la GPU mentre la CPU avrà il minor carico possibile.
Line 127: Line 120:
 
Metodi non compressi sono: {{ic|proxy}}, {{ic|xv}}
 
Metodi non compressi sono: {{ic|proxy}}, {{ic|xv}}
  
Per impostare un metodo di compressione per tutte le applicazioni impostare il valore {{ic|VGLTransport}} con il {{ic|<metodo-di-compressione>}} preferito in {{ic|/etc/bumblebee/bumblebee.conf}}:
+
Per impostare un metodo di compressione per tutte le applicazioni impostare il valore {{ic|VGLTransport}} con il {{ic|''metodo-di-compressione''}} preferito in {{ic|/etc/bumblebee/bumblebee.conf}}:
  
{{hc|/etc/bumblebee/bumblebee.conf|<nowiki>
+
{{hc|/etc/bumblebee/bumblebee.conf|2=
 
[...]
 
[...]
 
[optirun]
 
[optirun]
 
VGLTransport=proxy
 
VGLTransport=proxy
 
[...]
 
[...]
</nowiki>}}
+
}}
  
 
Si può anche fare in modo che VirtualGL legga i pixel dalla vostra scheda grafica. Impostare la variabile di ambiente {{ic|VGL_READBACK}} in {{ic|pbo}} dovrebbe aumentare le prestazioni. In confronto:
 
Si può anche fare in modo che VirtualGL legga i pixel dalla vostra scheda grafica. Impostare la variabile di ambiente {{ic|VGL_READBACK}} in {{ic|pbo}} dovrebbe aumentare le prestazioni. In confronto:
Line 155: Line 148:
 
Impostare le opzioni dei moduli {{ic|load_state}} e {{ic|unload_state}} in base alle vostre esigenze (si veda la [https://github.com/Bumblebee-Project/bbswitch documentazione di bbswitch]).
 
Impostare le opzioni dei moduli {{ic|load_state}} e {{ic|unload_state}} in base alle vostre esigenze (si veda la [https://github.com/Bumblebee-Project/bbswitch documentazione di bbswitch]).
  
{{hc|/etc/modprobe.d/bbswitch.conf|<nowiki>
+
{{hc|/etc/modprobe.d/bbswitch.conf|2=
 
options bbswitch load_state=0 unload_state=1
 
options bbswitch load_state=0 unload_state=1
</nowiki>}}
+
}}
  
 
==== Abilitare la scheda NVIDIA durante lo spegnimento ====
 
==== Abilitare la scheda NVIDIA durante lo spegnimento ====
  
 +
{{Out of date|rc.d ??}}
 
La scheda NVIDIA non viene inizializzata correttamente durante la fase di boot se la scheda è stata spenta quando il sistema è stato arrestato l'ultima volta. Una soluzione è impostare l'opzione {{ic|TurnCardOffAtExit&#61;false}} in {{ic|/etc/bumblebee/bumblebee.conf}}, tuttavia questo consentirà alla scheda di fermare ogni volta il demone Bumblebee, anche se fatto manualmente. Per assicurare che la scheda NVIDIA rimanga sempre accesa durante l'arresto, aggiungere il seguente [[Arch_Boot_Process_%28Italiano%29#Hook_personalizzati|hook personalizzato]] (se state utilizzando {{pkg|bbswitch}}):
 
La scheda NVIDIA non viene inizializzata correttamente durante la fase di boot se la scheda è stata spenta quando il sistema è stato arrestato l'ultima volta. Una soluzione è impostare l'opzione {{ic|TurnCardOffAtExit&#61;false}} in {{ic|/etc/bumblebee/bumblebee.conf}}, tuttavia questo consentirà alla scheda di fermare ogni volta il demone Bumblebee, anche se fatto manualmente. Per assicurare che la scheda NVIDIA rimanga sempre accesa durante l'arresto, aggiungere il seguente [[Arch_Boot_Process_%28Italiano%29#Hook_personalizzati|hook personalizzato]] (se state utilizzando {{pkg|bbswitch}}):
  
{{hc|/etc/rc.d/functions.d/nvidia-card-enable|<nowiki>
+
{{hc|/etc/rc.d/functions.d/nvidia-card-enable|2=
 
nvidia_card_enable() {
 
nvidia_card_enable() {
 
  BBSWITCH=/proc/acpi/bbswitch
 
  BBSWITCH=/proc/acpi/bbswitch
Line 178: Line 172:
  
 
add_hook shutdown_poweroff nvidia_card_enable
 
add_hook shutdown_poweroff nvidia_card_enable
</nowiki>}}
+
}}
  
 
=== Monitor multipli ===
 
=== Monitor multipli ===
  
{{Nota|Questa configurazione è valida solo per i portatili, dove è cablato l 'uscita supplementare per la scheda intel. Purtroppo questo non è il caso per alcuni (o più?) computer portatili, in cui l'uscita HDMI è cablato alla scheda NVIDIA. In questo caso non esiste soluzione ideale, come qui mostrato. Ma potete impostare la vostra uscita supplementare per essere utilizzabile con le istruzioni Bumblebee [https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup wiki page].}}
+
==== Uscite collegate al chip Intel ====
  
È possibile impostare più monitor con xorg.conf. Si possono impostarli per utilizzare la scheda Intel, ma con Bumblebee è ancora possibile utilizzare la scheda NVIDIA. Un esempio di configurazione, qui di seguito, mostra l'uso di due schermi identici con risoluzione 1080p e con connessione HDMI.
+
Se la porta (DisplayPort/HDMI/VGA) è collegato al chip Intel, è possibile impostare più monitor con xorg.conf. Si possono impostarli per utilizzare la scheda Intel, ma con Bumblebee è ancora possibile utilizzare la scheda NVIDIA. Un esempio di configurazione, qui di seguito, mostra l'uso di due schermi identici con risoluzione 1080p e con connessione HDMI.
  
{{hc|/etc/X11/xorg.conf|<nowiki>
+
{{hc|/etc/X11/xorg.conf|2=
 
Section "Screen"
 
Section "Screen"
 
     Identifier    "Screen0"
 
     Identifier    "Screen0"
Line 244: Line 238:
 
     BusID "PCI:0:1:0"
 
     BusID "PCI:0:1:0"
 
EndSection
 
EndSection
</nowiki>}}
+
}}
  
 
Probabilmente sarà necessario cambiare il BusID in base alle vostre esigenze sia per la Intel e la scheda Nvidia.
 
Probabilmente sarà necessario cambiare il BusID in base alle vostre esigenze sia per la Intel e la scheda Nvidia.
Line 253: Line 247:
  
 
In questo esempio il BusID è 0:2:0
 
In questo esempio il BusID è 0:2:0
 +
 +
==== Uscite collegate al chip NVIDIA ====
 +
 +
Su alcuni notebook, l'uscita video digitale ( HDMI o DisplayPort ) è cablato al chip NVIDIA. Se si desidera utilizzare tutti i display su un tale sistema simultaneamente, è necessario eseguire due server X. La prima prevede di utilizzare il driver Intel per il pannello notebook e un display collegato a VGA. Il secondo sarà avviato attraverso optirun sulla scheda NVIDIA, e al driver per il display digitale.
 +
 +
Attualmente ci sono diverse istruzioni sul web come una tale impostazione può essere fatta funzionare. Uno può essere trovato sul [https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup wiki] di Bumblebee.  Un altro approccio è descritto in seguito.
 +
 +
===== xf86-video-intel-virtual-crtc e hybrid-screenclone =====
 +
{{translateme}}
 +
This method uses a patched Intel driver, which is extended to have a VIRTUAL Display, and the program hybrid-screenclone which is used to copy the display over from the virtual display to a second X Server which is running on the NVIDIA card using Optirun. Credit goes to [http://judsonsnotes.com/notes/index.php?option=com_content&view=article&id=673:triple-head-monitors-on-thinkpad-t520&catid=37:tech-notes&Itemid=59 Triple-head monitors on a Thinkpad T520] which has a detailed explanation on how this is done on a Ubuntu system.
 +
 +
For simplicity, DP is used below to refer to the Digital Output (DisplayPort). The instructions should be the same if the notebook has a HDMI port instead.
 +
 +
* Set system to use NVIDIA card exclusively, test DP/Monitor combination and generate xorg.nvidia.conf. This step is not required, but recommended if your system Bios has an option to switch the graphics into NVIDIA-only mode. To do this, first uninstall the bumblebee package and install just the NVIDIA driver. Then reboot, enter the Bios and switch the Graphics to NVIDIA-only. When back in Arch, connect you Monitor on DP and use startx to test if it is working in principle. Use Xorg -configure to generate an xorg.conf file for your NVIDIA card. This will come in handy further down below.
 +
 +
* Reinstall bumlbebee and bbswitch, reboot and set the system Gfx back to Hybrid in the BIOS.
 +
* Install {{AUR|xf86-video-intel-virtual-crtc}}, and replace your xf86-video-intel package with it
 +
* Download [https://github.com/liskin/hybrid-screenclone hybrid-screenclone] and build it using "make".
 +
* Change these bumblebee.conf settings:
 +
{{hc|/etc/bumblebee/bumblebee.conf|2=
 +
KeepUnusedXServer=true
 +
Driver=nvidia
 +
}}
 +
{{Note|Leave the PMMethod set to "bumblebee". This is contrary to the instructions linked in the article above, but on arch this options needs to be left alone so that bbswitch module is automatically loaded}}
 +
* Copy the xorg.conf generated in Step 1 to {{ic|/etc/X11}} (e.g. {{ic|/etc/X11/xorg.nvidia.conf}}). In the [driver-nvidia] section of {{ic|bumblebee.conf}}, change {{ic|XorgConfFile}} to point to it.
 +
* Test if your {{ic|/etc/X11/xorg.nvidia.conf}} is working with {{ic|startx -- -config /etc/X11/xorg.nvidia.conf}}
 +
* In order for your DP Monitor to show up with the correct resolution in your VIRTUAL Display you might have to edit the Monitor section in your {{ic|/etc/xorg.nvidia.conf}}. Since this is extra work, you could try to continue with your auto-generated file. Come back to this step in the instructions if you find that the resolution of the VIRTUAL Display as shown by xrandr is not correct.
 +
** First you have to generate a Modeline. You can use the tool [http://amlc.berlios.de/ amlc], which will genearte a Modeline if you input a few basic parameters.
 +
 +
::Example:  24" 1920x1080 Monitor
 +
::start the tool with {{ic|amlc -c}}
 +
{{bc|Monitor Identifier: Samsung 2494
 +
Aspect Ratio: 2
 +
physical size[cm]: 60
 +
Ideal refresh rate, in Hz: 60
 +
min HSync, kHz: 40
 +
max HSync, kHz: 90
 +
min VSync, Hz: 50
 +
max VSync, Hz: 70
 +
max pixel Clock, MHz: 400}}
 +
 +
This is the Monitor section which {{ic|amlc}} generated for this input:
 +
{{bc|Section "Monitor"
 +
    Identifier    "Samsung 2494"
 +
    ModelName      "Generated by Another Modeline Calculator"
 +
    HorizSync      40-90
 +
    VertRefresh    50-70
 +
    DisplaySize    532 299  # Aspect ratio 1.778:1
 +
    # Custom modes
 +
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149            # 174.83 MHz,  68.94 kHz,  60.00 Hz
 +
EndSection  # Samsung 2494}}
 +
 +
Change your {{ic|xorg.nvidia.conf}} to include this Monitor section. You can also trim down your file so that it only contains ServerLayout, Monitor, Device and Screen sections. For reference, here is mine:
 +
{{hc|/etc/X11/xorg.nvidia.conf|
 +
Section "ServerLayout"
 +
        Identifier    "X.org Nvidia DP"
 +
        Screen      0  "Screen0" 0 0
 +
        InputDevice    "Mouse0" "CorePointer"
 +
        InputDevice    "Keyboard0" "CoreKeyboard"
 +
EndSection
 +
 +
Section "Monitor"
 +
    Identifier    "Samsung 2494"
 +
    ModelName      "Generated by Another Modeline Calculator"
 +
    HorizSync      40-90
 +
    VertRefresh    50-70
 +
    DisplaySize    532 299  # Aspect ratio 1.778:1
 +
    # Custom modes
 +
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149            # 174.83 MHz,  68.94 kHz,  60.00 Hz
 +
EndSection  # Samsung 2494
 +
 +
Section "Device"
 +
        Identifier  "DiscreteNvidia"
 +
        Driver      "nvidia"
 +
        BusID      "PCI:1:0:0"
 +
EndSection
 +
 +
Section "Screen"
 +
        Identifier "Screen0"
 +
        Device    "DiscreteNvidia"
 +
        Monitor    "Samsung 2494"
 +
        SubSection "Display"
 +
                Viewport  0 0
 +
                Depth    24
 +
        EndSubSection
 +
EndSection
 +
}}
 +
* Plug in both external monitors and startx. Look at your {{ic|/var/log/Xorg.0.log}}. Check that your VGA Monitor is detected with the correct Modes there. You should also see a VIRTUAL output with modes show up.
 +
* Run {{ic|xrandr}} and three displays should be listed there, along with the supported modes.
 +
* If the listed Modelines for your VIRTUAL display doesn't have your Monitors native resolution, make note of the exact output name. For me that is {{ic|VIRTUAL1}}. Then have a look again in the Xorg.0.log file. You should see a message: "Output VIRTUAL1 has no monitor section" there. We will change this by putting a file with the needed Monitor section into {{ic|/etc/X11/xorg.conf.d}}. Exit and Restart X afterward.
 +
{{hc|/etc/X11/xorg.conf.d/20-monitor_samsung.conf|
 +
Section "Monitor"
 +
    Identifier    "VIRTUAL1"
 +
    ModelName      "Generated by Another Modeline Calculator"
 +
    HorizSync      40-90
 +
    VertRefresh    50-70
 +
    DisplaySize    532 299  # Aspect ratio 1.778:1
 +
    # Custom modes
 +
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149            # 174.83 MHz,  68.94 kHz,  60.00 Hz
 +
EndSection  # Samsung 2494
 +
}}
 +
* Turn the NVIDIA card on by running: {{ic|sudo tee /proc/acpi/bbswitch <<< ON}}
 +
* Start another X server for the DisplayPort monitor: {{ic|sudo optirun true}}
 +
* Check the log of the second X server in {{ic|/var/log/Xorg.8.log}}
 +
* Run xrandr to set up the VIRTUAL display to be the right size and placement, eg.: {{ic|xrandr --output VGA1 --auto --rotate normal --pos 0x0 --output VIRTUAL1 --mode 1920x1080 --right-of VGA1 --output LVDS1 --auto --rotate normal --right-of VIRTUAL1}}
 +
* Take note of the position of the VIRTUAL display in the list of Outputs as shown by xrandr. The counting starts from zero, i.e. if it is the third display shown, you would specify {{ic|-x 2}} as parameter to {{ic|screenclone}}
 +
* Clone the contents of the VIRTUAL display onto the X server created by bumblebee, which is connected to the DisplayPort monitor via the NVIDIA chip:
 +
: {{ic|screenclone -d :8 -x 2}}
 +
 +
Thats it, all three displays should be up and running now.
  
 
== Effettuare lo switch da una scheda integrata all'altra come in Windows==
 
== Effettuare lo switch da una scheda integrata all'altra come in Windows==
Line 260: Line 364:
 
Per imitare questo comportamento in Linux , è possibile utilizzare {{AUR|libgl-switcheroo-git}}. Dopo l'installazione, è possibile aggiungere quanto segue in basso nel vostro {{ic|.Xprofile}}:
 
Per imitare questo comportamento in Linux , è possibile utilizzare {{AUR|libgl-switcheroo-git}}. Dopo l'installazione, è possibile aggiungere quanto segue in basso nel vostro {{ic|.Xprofile}}:
  
{{hc|~/.xprofile|<nowiki>
+
{{hc|~/.xprofile|2=
 
mkdir -p /tmp/libgl-switcheroo-$USER/fs
 
mkdir -p /tmp/libgl-switcheroo-$USER/fs
 
gtkglswitch &
 
gtkglswitch &
 
libgl-switcheroo /tmp/libgl-switcheroo-$USER/fs &
 
libgl-switcheroo /tmp/libgl-switcheroo-$USER/fs &
</nowiki>}}
+
}}
  
A tal fine, è necessario aggiungere quanto segue alla shell da cui si intende avviare le applicazioni (ho semplicemente aggiungerlo al file  .xprofile) {{bc|<nowiki>export LD_LIBRARY_PATH=/tmp/libgl-switcheroo-$USER/fs/\$LIB${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH</nowiki>}}
+
A tal fine, è necessario aggiungere quanto segue alla shell da cui si intende avviare le applicazioni (ho semplicemente aggiungerlo al file  .xprofile)  
 +
 
 +
export LD_LIBRARY_PATH=/tmp/libgl-switcheroo-$USER/fs/\$LIB${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH
  
 
Una volta che questo è stato fatto tutto , ogni applicazione che si avvia da questo shell aprirà una finestra GTK chiedendo con quale scheda si desidera eseguire (potete anche aggiungere un programma alla whitelist nella configurazione). La configurazione si trova in {{ic|$ XDG_CONFIG_HOME/libgl-switcheroo.conf}}, di solito {{ic|~/.config/libgl-switcheroo.conf}}.
 
Una volta che questo è stato fatto tutto , ogni applicazione che si avvia da questo shell aprirà una finestra GTK chiedendo con quale scheda si desidera eseguire (potete anche aggiungere un programma alla whitelist nella configurazione). La configurazione si trova in {{ic|$ XDG_CONFIG_HOME/libgl-switcheroo.conf}}, di solito {{ic|~/.config/libgl-switcheroo.conf}}.
Line 284: Line 390:
 
Questo è un problema noto con VirtualGL . Come con bumblebee 3.1, fintanto che lo avete installato, è possibile utilizzare Primus come ponte di rendering :
 
Questo è un problema noto con VirtualGL . Come con bumblebee 3.1, fintanto che lo avete installato, è possibile utilizzare Primus come ponte di rendering :
  
  $ optirun -b primus wine <windows program>.exe
+
  $ optirun -b primus wine ''windows program''.exe
  
 
Se questo non funziona, una soluzione alternativa a questo problema è quanto segue:
 
Se questo non funziona, una soluzione alternativa a questo problema è quanto segue:
  
 
  $ optirun bash
 
  $ optirun bash
  $ optirun wine <windows program>.exe
+
  $ optirun wine ''windows program''.exe
  
 
Se state utilizzando il driver NVIDA, una soluzione a questo problema è quello di modificare {{ic|/etc/bumblebee/xorg.conf.nvidia}} e cambiare l'opzione {{ic|ConnectedMonitor}} su {{ic|CRT-0}}.
 
Se state utilizzando il driver NVIDA, una soluzione a questo problema è quello di modificare {{ic|/etc/bumblebee/xorg.conf.nvidia}} e cambiare l'opzione {{ic|ConnectedMonitor}} su {{ic|CRT-0}}.
Line 299: Line 405:
 
In alcuni casi, l'esecuzione di optirun ritorna il seguente errore:
 
In alcuni casi, l'esecuzione di optirun ritorna il seguente errore:
  
{{bc|
+
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected.
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected.
+
[ERROR]Aborting because fallback start is disabled.
 
+
[ERROR]Aborting because fallback start is disabled.}}
+
  
 
In questo caso sarà necessario spostare il file {{ic|/etc/X11/xorg.conf.d/20-intel.conf}} da qualche altra parte, o rimuoverlo se non utilizzato. Riavviare il demone bumblebeed e l'errore non dovrebbe più ripresentarsi. Se si ha bisogno di modificare alcune caratteristiche su modulo Intel , una soluzione è spostare il vostro {{ic|/etc/X11/xorg.conf.d/20-intel.conf}} in {{ic|/etc/X11/xorg.conf}}.
 
In questo caso sarà necessario spostare il file {{ic|/etc/X11/xorg.conf.d/20-intel.conf}} da qualche altra parte, o rimuoverlo se non utilizzato. Riavviare il demone bumblebeed e l'errore non dovrebbe più ripresentarsi. Se si ha bisogno di modificare alcune caratteristiche su modulo Intel , una soluzione è spostare il vostro {{ic|/etc/X11/xorg.conf.d/20-intel.conf}} in {{ic|/etc/X11/xorg.conf}}.
Line 325: Line 429:
 
Se ottenete un errore simile nella console:
 
Se ottenete un errore simile nella console:
  
{{bc|
+
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to assign any connected display devices to X screen 0
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to assign any connected display devices to X screen 0
+
[ERROR]Aborting because fallback start is disabled.
[ERROR]Aborting because fallback start is disabled.
+
 
}}
+
  
 
Potete cambiare questa linea in {{ic|/etc/bumblebee/xorg.conf.nvidia}} da:
 
Potete cambiare questa linea in {{ic|/etc/bumblebee/xorg.conf.nvidia}} da:
  
{{bc|
+
Option "ConnectedMonitor" "DFP"
Option "ConnectedMonitor" "DFP"
+
}}
+
  
 
a
 
a
  
{{bc|
+
Option "ConnectedMonitor" "CRT"
Option "ConnectedMonitor" "CRT"
+
}}
+
  
 
=== ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored ===
 
=== ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored ===
Line 354: Line 453:
 
Problemi di tearing video sono piuttosto comuni utilizzando Bumblebee. Per risolvere il problema, è necessario attivare {{ic|vsync}}. Dovrebbe essere abilitato per impostazione predefinita sulla scheda Intel, ma verificarlo dai log di Xorg. Per verificare se sia o non sia abilitato per nvidia, eseguire:  
 
Problemi di tearing video sono piuttosto comuni utilizzando Bumblebee. Per risolvere il problema, è necessario attivare {{ic|vsync}}. Dovrebbe essere abilitato per impostazione predefinita sulla scheda Intel, ma verificarlo dai log di Xorg. Per verificare se sia o non sia abilitato per nvidia, eseguire:  
  
{{bc|optirun nvidia-settings -c :8 }}
+
$ optirun nvidia-settings -c :8
  
 
Le voci {{ic|1=X Server XVideo Setings -> Sync to VBlank}} e {{ic|1=OpenGL Settings -> Sync to VBlank}} dovrebbero essere entrambi attivati.  
 
Le voci {{ic|1=X Server XVideo Setings -> Sync to VBlank}} e {{ic|1=OpenGL Settings -> Sync to VBlank}} dovrebbero essere entrambi attivati.  

Revision as of 20:11, 2 June 2013

Tratto da Bumblebee's FAQ:

"Bumblebee è una soluzione per rendere la tecnologia di Nvidia Optimus, presente sui computer portatili predisposti, disponibile nei sistemi GNU/Linux. Tale caratteristica coinvolge due schede grafiche con due differenti profili di consumo di alimentazione, che collegati in modo stratificato condividono un singolo framebuffer."

Bumblebee: Tecnologia Optimus per Linux

La Tecnologia Optimus è un'implementazione grafica ibrida senza hardware multiplexer. La GPU integrata gestisce il display, mentre la GPU dedicata gestisce il rendering più impegnativo ed invia il risultato alla GPU integrata per la visualizzazione. Quando il portatile è alimentato a batteria, la GPU dedicata si spegne per risparmiare energia e aumentare l'autonomia.

Bumblebee è un'implementazione software composta di due parti:

  • Il rendering di programmi off-screen sulla scheda video dedicata e visualizzati sullo schermo utilizzando la scheda video integrata. Questo bridge è fornito da VirtualGL o primus (leggere di seguito) e si connette a un server X avviato per la scheda video dedicata.
  • Disattivare la scheda video dedicata quando non è in uso (si veda il paragrafo Gestione energetica).

Si cerca di imitare il comportamento della tecnologia Optimus, utilizzando la GPU dedicata per il rendering quando necessario e spegnerlo quando non in uso. Le versioni attuali supportano solo il rendering su richiesta, l'avvio automatico di un programma con la scheda video dedicata in base al carico di lavoro non è implementata.

Attenzione: Bumblebee è un attualmente ancora in fase di sviluppo. Ogni aiuto per il suo sviluppo è il benvenuto.

Installazione

Prima di procedere all'installazione di Bunblebee controllare il vostro BIOS e attivare l'opzione Optimus (nei vecchi computer portatili è chiamato "switchable"), se disponibile (non tutti i BIOS forniscono questa possibilità), e assicurarsi di installare il driver Intel per la scheda video secondaria.

Sono disponibili diversi pacchetti per un setup completo :

  • bumblebee - Il pacchetto principale che fornisce il demone e programmi client.
  • (opzionale) bbswitch (o bbswitch-dkms) -Consigliato per il risparmio energetico disabilitando la scheda Nvidia
  • (opzionale ) Se si desidera più di un semplice risparmio energetico, per un rendering di programmi sulla scheda Nvidia dedicata, è inoltre necessario:
    • Un driver per la scheda Nvidia. Il driver open-source Nouveau o il driver proprietario Nvidia. Vedere la sottosezione.
    • Un bridge per il rendering e la visualizzazione. Attualmente sono disponibili due pacchetti che sono in grado di farlo, primus e virtualgl. Solo uno di loro è necessario, ma possono essere installati ugualmente entrambi.
Note: Se si desidera eseguire una applicazione a 32 bit su un sistema a 64 bit è necessario installare le opportune librerie lib32-* per il programma. inoltre è necessario anche installare lib32-virtualgl o lib32-primus, in base a cosa avete scelto per effettuare il bridge del rendering. Basta fare in modo di eseguire primusrun invece di optirun se si decide di utilizzare bridge Primus per il rendering.

Installare Bumblebee con Intel/Nvidia

Se si desidera eseguire applicazioni a 32-bit (come i giochi su wine) su sistemi a 64-bit, è necessario il pacchetto addizionale lib32-nvidia-utils.

Nota: Non installare lib32-nvidia-libgl! Bumblebee troverà le giuste librerie lib32 nvidia senza di esso.

Installare Bumblebee con Intel/Nouveau

Installare:

Avviare Bumblebee

Per poter utilizzare Bumblebee è necessario innanzitutto aggiungere il proprio utente (anche altri eventuali utenti) al gruppo Bumblebee:

# gpasswd -a $USER bumblebee

dove $USER è il nome di login dell'utente da aggiungere. Ri-effettuare il login per rendere effettive le modifiche.

Suggerimento: Si consiglia di abilitare il servizio di Systemd bumblebeed.

Ora riavviare il sistema e utilizzare il programma optirun da un terminale per usufruire della tecnologia Optimus NVIDIA per il rendering.

Se si desidera semplicemente disabilitare la scheda nvidia, questo dovrebbe essere tutto ciò che è necessario, oltre ad avere bbswitch installato. Il demone bumblebeed, per impostazione predefinita, istruisce bbswitch per spegnere la scheda quando viene avviato. Vedi anche la sezione Gestione energetica.

Utilizzo

La riga di comando programma optirun fornito con Bumblebee è il vostro migliore amico per l'esecuzione di applicazioni sulla scheda NVIDIA Optimus.

È possibile testare Bumblebee con questo comando:

$ optirun glxgears -info

Se il programma viene eseguito con successo e il terminale fornisce informazioni sulla scheda NVIDIA, allora significa che Optimus con Bumblebee è funzionante.

Per avviare un'applicazione utilizzando la scheda grafica dedicata:

$ optirun [opzione] application [parametri-applicazione]

Alcuni esempi:

Avviare applicazioni Windows con Optiumus

$ optirun wine windows application.exe

Utilizzare NVIDIA Settings con Optimus

$ optirun -b none nvidia-settings -c :8 

Per un elenco di opzioni per optirun vedere la sua pagina man.

Un nuovo programma in futuro diventerà la scelta predefinita, poichè apporta migliori prestazioni, vale a dire primus. Attualmente è necessario eseguire il programma a parte (che non accetta le opzioni a differenza di optirun ), ma in futuro sarà avviato automaticamente da optirun.

Utilizo:

$ primusrun glxgears

Configurazione

È possibile configurare alcune variabili nel file /etc/bumblebee/bumblebee.conf.

Ottimizzare la velocità quando si utilizza VirtualGL come bridge

Bumblebee gestisce il rendering dei fotogrammi per la scheda NVIDIA Optimus in un server X invisibile con VirtualGL e li trasporta di nuovo al vostro Server X visibile.

I Frames saranno compressi prima di essere trasportati - ciò consente di risparmiare larghezza di banda e può essere utilizzato per l'ottimizzazione della velocità di Bumblebee.

Per usare un metodo di compressione per una singola applicazione:

$ optirun -c metodo-di-comppressione applicazione

I metodi di compressione influiscono sulle prestazioni di utilizzo della CPU/GPU. I metodi compressi (come jpeg) caricheranno al massimo la CPU e al minimo possibile la GPU; i metodi non compressi caricheranno più la GPU mentre la CPU avrà il minor carico possibile.

Metodi compressi sono: jpeg, rgb, yuv

Metodi non compressi sono: proxy, xv

Per impostare un metodo di compressione per tutte le applicazioni impostare il valore VGLTransport con il metodo-di-compressione preferito in /etc/bumblebee/bumblebee.conf:

/etc/bumblebee/bumblebee.conf
[...]
[optirun]
VGLTransport=proxy
[...]

Si può anche fare in modo che VirtualGL legga i pixel dalla vostra scheda grafica. Impostare la variabile di ambiente VGL_READBACK in pbo dovrebbe aumentare le prestazioni. In confronto:

# PBO dovrebbe essere più veloce
VGL_READBACK=pbo optirun glxspheres
#Il valore predefinito è sync
VGL_READBACK=sync optirun glxspheres
Note: CPU frequency scaling influisce direttamente sulle prestazioni rendering

Gestione energetica

L'obiettivo di gestione dell'alimentazione è quello di spegnere la scheda NVIDIA quando non viene utilizzata da nessuna applicazione, e riaccenderla quando è necessario. Se bbswitch è installato, verrà rilevato automaticamente quando si avvia il demone Bumblebee. Nessuna configurazione aggiuntiva è necessaria.

Risparmio energetico predefinito della scheda NVIDIA con bbswitch

Il comportamento predefinito di bbswitch è di lasciare lo stato di alimentazione della scheda invariata. bumblebeed non fa altro che disabilitare la scheda quando viene avviato, in tal modo, quanto segue è necessario solo se si utilizza bbswitch senza bumblebeed .

Impostare le opzioni dei moduli load_state e unload_state in base alle vostre esigenze (si veda la documentazione di bbswitch).

/etc/modprobe.d/bbswitch.conf
options bbswitch load_state=0 unload_state=1

Abilitare la scheda NVIDIA durante lo spegnimento

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: rc.d ?? (Discuss in Talk:Bumblebee (Italiano)#)

La scheda NVIDIA non viene inizializzata correttamente durante la fase di boot se la scheda è stata spenta quando il sistema è stato arrestato l'ultima volta. Una soluzione è impostare l'opzione TurnCardOffAtExit=false in /etc/bumblebee/bumblebee.conf, tuttavia questo consentirà alla scheda di fermare ogni volta il demone Bumblebee, anche se fatto manualmente. Per assicurare che la scheda NVIDIA rimanga sempre accesa durante l'arresto, aggiungere il seguente hook personalizzato (se state utilizzando bbswitch):

/etc/rc.d/functions.d/nvidia-card-enable
nvidia_card_enable() {
 BBSWITCH=/proc/acpi/bbswitch

 stat_busy "Enabling NVIDIA GPU"

 if [ -w ${BBSWITCH} ]; then
  echo ON > ${BBSWITCH}
  stat_done
 else
  stat_fail
 fi
}

add_hook shutdown_poweroff nvidia_card_enable

Monitor multipli

Uscite collegate al chip Intel

Se la porta (DisplayPort/HDMI/VGA) è collegato al chip Intel, è possibile impostare più monitor con xorg.conf. Si possono impostarli per utilizzare la scheda Intel, ma con Bumblebee è ancora possibile utilizzare la scheda NVIDIA. Un esempio di configurazione, qui di seguito, mostra l'uso di due schermi identici con risoluzione 1080p e con connessione HDMI.

/etc/X11/xorg.conf
Section "Screen"
    Identifier     "Screen0"
    Device         "intelgpu0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    SubSection "Display"
        Depth          24
        Modes          "1980x1080_60.00"
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "intelgpu1"
    Monitor        "Monitor1"
    DefaultDepth   24
    Option         "TwinView" "0"
    SubSection "Display"
        Depth          24
        Modes          "1980x1080_60.00"
    EndSubSection
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    Option         "Enable" "true"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    Option         "Enable" "true"
EndSection

Section "Device"
    Identifier     "intelgpu0"
    Driver         "intel"
    Option         "XvMC" "true"
    Option         "UseEvents" "true"
    Option         "AccelMethod" "UXA"
    BusID          "PCI:0:2:0"
EndSection

Section "Device"
    Identifier     "intelgpu1"
    Driver         "intel"
    Option         "XvMC" "true"
    Option         "UseEvents" "true"
    Option         "AccelMethod" "UXA"
    BusID          "PCI:0:2:0"
EndSection

Section "Device"
    Identifier "nvidiagpu1"
    Driver "nvidia"
    BusID "PCI:0:1:0"
EndSection

Probabilmente sarà necessario cambiare il BusID in base alle vostre esigenze sia per la Intel e la scheda Nvidia.

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)

In questo esempio il BusID è 0:2:0

Uscite collegate al chip NVIDIA

Su alcuni notebook, l'uscita video digitale ( HDMI o DisplayPort ) è cablato al chip NVIDIA. Se si desidera utilizzare tutti i display su un tale sistema simultaneamente, è necessario eseguire due server X. La prima prevede di utilizzare il driver Intel per il pannello notebook e un display collegato a VGA. Il secondo sarà avviato attraverso optirun sulla scheda NVIDIA, e al driver per il display digitale.

Attualmente ci sono diverse istruzioni sul web come una tale impostazione può essere fatta funzionare. Uno può essere trovato sul wiki di Bumblebee. Un altro approccio è descritto in seguito.

xf86-video-intel-virtual-crtc e hybrid-screenclone

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Bumblebee (Italiano)#)

This method uses a patched Intel driver, which is extended to have a VIRTUAL Display, and the program hybrid-screenclone which is used to copy the display over from the virtual display to a second X Server which is running on the NVIDIA card using Optirun. Credit goes to Triple-head monitors on a Thinkpad T520 which has a detailed explanation on how this is done on a Ubuntu system.

For simplicity, DP is used below to refer to the Digital Output (DisplayPort). The instructions should be the same if the notebook has a HDMI port instead.

  • Set system to use NVIDIA card exclusively, test DP/Monitor combination and generate xorg.nvidia.conf. This step is not required, but recommended if your system Bios has an option to switch the graphics into NVIDIA-only mode. To do this, first uninstall the bumblebee package and install just the NVIDIA driver. Then reboot, enter the Bios and switch the Graphics to NVIDIA-only. When back in Arch, connect you Monitor on DP and use startx to test if it is working in principle. Use Xorg -configure to generate an xorg.conf file for your NVIDIA card. This will come in handy further down below.
  • Reinstall bumlbebee and bbswitch, reboot and set the system Gfx back to Hybrid in the BIOS.
  • Install xf86-video-intel-virtual-crtcAUR, and replace your xf86-video-intel package with it
  • Download hybrid-screenclone and build it using "make".
  • Change these bumblebee.conf settings:
/etc/bumblebee/bumblebee.conf
KeepUnusedXServer=true
Driver=nvidia
Note: Leave the PMMethod set to "bumblebee". This is contrary to the instructions linked in the article above, but on arch this options needs to be left alone so that bbswitch module is automatically loaded
  • Copy the xorg.conf generated in Step 1 to /etc/X11 (e.g. /etc/X11/xorg.nvidia.conf). In the [driver-nvidia] section of bumblebee.conf, change XorgConfFile to point to it.
  • Test if your /etc/X11/xorg.nvidia.conf is working with startx -- -config /etc/X11/xorg.nvidia.conf
  • In order for your DP Monitor to show up with the correct resolution in your VIRTUAL Display you might have to edit the Monitor section in your /etc/xorg.nvidia.conf. Since this is extra work, you could try to continue with your auto-generated file. Come back to this step in the instructions if you find that the resolution of the VIRTUAL Display as shown by xrandr is not correct.
    • First you have to generate a Modeline. You can use the tool amlc, which will genearte a Modeline if you input a few basic parameters.
Example: 24" 1920x1080 Monitor
start the tool with amlc -c
Monitor Identifier: Samsung 2494
Aspect Ratio: 2
physical size[cm]: 60
Ideal refresh rate, in Hz: 60
min HSync, kHz: 40
max HSync, kHz: 90
min VSync, Hz: 50
max VSync, Hz: 70
max pixel Clock, MHz: 400

This is the Monitor section which amlc generated for this input:

Section "Monitor"
    Identifier     "Samsung 2494"
    ModelName      "Generated by Another Modeline Calculator"
    HorizSync      40-90
    VertRefresh    50-70
    DisplaySize    532 299  # Aspect ratio 1.778:1
    # Custom modes
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149             # 174.83 MHz,  68.94 kHz,  60.00 Hz
EndSection  # Samsung 2494

Change your xorg.nvidia.conf to include this Monitor section. You can also trim down your file so that it only contains ServerLayout, Monitor, Device and Screen sections. For reference, here is mine:

/etc/X11/xorg.nvidia.conf
Section "ServerLayout"
        Identifier     "X.org Nvidia DP"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Monitor"
    Identifier     "Samsung 2494"
    ModelName      "Generated by Another Modeline Calculator"
    HorizSync      40-90
    VertRefresh    50-70
    DisplaySize    532 299  # Aspect ratio 1.778:1
    # Custom modes
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149             # 174.83 MHz,  68.94 kHz,  60.00 Hz
EndSection  # Samsung 2494

Section "Device"
        Identifier  "DiscreteNvidia"
        Driver      "nvidia"
        BusID       "PCI:1:0:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "DiscreteNvidia"
        Monitor    "Samsung 2494"
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection
  • Plug in both external monitors and startx. Look at your /var/log/Xorg.0.log. Check that your VGA Monitor is detected with the correct Modes there. You should also see a VIRTUAL output with modes show up.
  • Run xrandr and three displays should be listed there, along with the supported modes.
  • If the listed Modelines for your VIRTUAL display doesn't have your Monitors native resolution, make note of the exact output name. For me that is VIRTUAL1. Then have a look again in the Xorg.0.log file. You should see a message: "Output VIRTUAL1 has no monitor section" there. We will change this by putting a file with the needed Monitor section into /etc/X11/xorg.conf.d. Exit and Restart X afterward.
/etc/X11/xorg.conf.d/20-monitor_samsung.conf
Section "Monitor"
    Identifier     "VIRTUAL1"
    ModelName      "Generated by Another Modeline Calculator"
    HorizSync      40-90
    VertRefresh    50-70
    DisplaySize    532 299  # Aspect ratio 1.778:1
    # Custom modes
    Modeline "1920x1080" 174.83 1920 2056 2248 2536 1080 1081 1084 1149             # 174.83 MHz,  68.94 kHz,  60.00 Hz
EndSection  # Samsung 2494
  • Turn the NVIDIA card on by running: sudo tee /proc/acpi/bbswitch <<< ON
  • Start another X server for the DisplayPort monitor: sudo optirun true
  • Check the log of the second X server in /var/log/Xorg.8.log
  • Run xrandr to set up the VIRTUAL display to be the right size and placement, eg.: xrandr --output VGA1 --auto --rotate normal --pos 0x0 --output VIRTUAL1 --mode 1920x1080 --right-of VGA1 --output LVDS1 --auto --rotate normal --right-of VIRTUAL1
  • Take note of the position of the VIRTUAL display in the list of Outputs as shown by xrandr. The counting starts from zero, i.e. if it is the third display shown, you would specify -x 2 as parameter to screenclone
  • Clone the contents of the VIRTUAL display onto the X server created by bumblebee, which is connected to the DisplayPort monitor via the NVIDIA chip:
screenclone -d :8 -x 2

Thats it, all three displays should be up and running now.

Effettuare lo switch da una scheda integrata all'altra come in Windows

Su Windows, Nvidia Optimus funziona in maniera tale che è possibile avere una whitelist di applicazioni che richiedono l'utilizzo di Optimus, ed è anche possibile aggiungere le applicazioni in questa whitelist se necessario. Quando si avvia l'applicazione, viene deciso automaticamente quale scheda video usare.

Per imitare questo comportamento in Linux , è possibile utilizzare libgl-switcheroo-gitAUR. Dopo l'installazione, è possibile aggiungere quanto segue in basso nel vostro .Xprofile:

~/.xprofile
mkdir -p /tmp/libgl-switcheroo-$USER/fs
gtkglswitch &
libgl-switcheroo /tmp/libgl-switcheroo-$USER/fs &

A tal fine, è necessario aggiungere quanto segue alla shell da cui si intende avviare le applicazioni (ho semplicemente aggiungerlo al file .xprofile)

export LD_LIBRARY_PATH=/tmp/libgl-switcheroo-$USER/fs/\$LIB${LD_LIBRARY_PATH+:}$LD_LIBRARY_PATH

Una volta che questo è stato fatto tutto , ogni applicazione che si avvia da questo shell aprirà una finestra GTK chiedendo con quale scheda si desidera eseguire (potete anche aggiungere un programma alla whitelist nella configurazione). La configurazione si trova in $ XDG_CONFIG_HOME/libgl-switcheroo.conf, di solito ~/.config/libgl-switcheroo.conf.

CUDA senza Bumblebee

Non vi è una chiara documentazione in proposito, ma non è necessario che Bumblebee utilizzi CUDA e può funzionare anche su macchine in cui non riesce optirun. Per una guida su come farlo funzionare con il Lenovo IdeaPad Y580 (che utilizza il GeForce 660M), si veda: https://wiki.archlinux.org/index.php/Lenovo_IdeaPad_Y580#NVIDIA_Card . Queste istruzioni molto probabilmente funzioneranno anche con altre macchine (ad eccezione della parte acpi-manico-hack , che non può essere tralasciata).

Risoluzione dei problemi

Note: Si prega di riportare i bugs al Bumblebee-Project il GitHub tracker come descritto nel Wiki.

[VGL] ERROR: Could not open display :8

Esiste un problema noto con alcune applicazioni che vengono lanciate con wine che si biforcano e uccidono il processo padre senza tenere traccia del problema (per esempio la sessione libera di gioco on-line di "Runes of Magic").

Questo è un problema noto con VirtualGL . Come con bumblebee 3.1, fintanto che lo avete installato, è possibile utilizzare Primus come ponte di rendering :

$ optirun -b primus wine windows program.exe

Se questo non funziona, una soluzione alternativa a questo problema è quanto segue:

$ optirun bash
$ optirun wine windows program.exe

Se state utilizzando il driver NVIDA, una soluzione a questo problema è quello di modificare /etc/bumblebee/xorg.conf.nvidia e cambiare l'opzione ConnectedMonitor su CRT-0.

[ERROR]Cannot access secondary GPU

Nessun dispositivo rilevato

In alcuni casi, l'esecuzione di optirun ritorna il seguente errore:

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected.
[ERROR]Aborting because fallback start is disabled.

In questo caso sarà necessario spostare il file /etc/X11/xorg.conf.d/20-intel.conf da qualche altra parte, o rimuoverlo se non utilizzato. Riavviare il demone bumblebeed e l'errore non dovrebbe più ripresentarsi. Se si ha bisogno di modificare alcune caratteristiche su modulo Intel , una soluzione è spostare il vostro /etc/X11/xorg.conf.d/20-intel.conf in /etc/X11/xorg.conf.

Potrebbe anche essere necessario commentare la linea riguardante il driver nel file /etc/X11/xorg.conf.d/10-monitor.conf.

Se si sta utilizzando il driver nouveau si potrebbe provare a passare al driver nVidia.


Potrebbe essere necessario definire la scheda nvidia da qualche parte, (ad esempio un file in /etc/X11/xorg.conf.d), e ricordarsi di cambiare il BusID usando lspci.

Section "Device"
    Identifier "nvidiagpu1"
    Driver "nvidia"
    BusID "PCI:0:1:0"
EndSection

NVIDIA(0): Failed to assign any connected display devices to X screen 0

Se ottenete un errore simile nella console:

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) NVIDIA(0): Failed to assign any connected display devices to X screen 0
[ERROR]Aborting because fallback start is disabled.


Potete cambiare questa linea in /etc/bumblebee/xorg.conf.nvidia da:

Option "ConnectedMonitor" "DFP"

a

Option "ConnectedMonitor" "CRT"

ERROR: ld.so: object 'libdlfaker.so' from LD_PRELOAD cannot be preloaded: ignored

Probabilmente si desidera avviare una applicazione a 32 bit con bumblebee su un sistema a 64 bit. Si veda la "nota" nella sezione Installazione

Fatal IO error 11 (Risorsa temporaneamente non disponibile) sul server X

Cambiare KeepUnusedXServer in /etc/bumblebee/bumblebee.conf da false a true. Bumblebee non era in grado di riconoscere i vostri programmi forzati in background.

Video tearing

Problemi di tearing video sono piuttosto comuni utilizzando Bumblebee. Per risolvere il problema, è necessario attivare vsync. Dovrebbe essere abilitato per impostazione predefinita sulla scheda Intel, ma verificarlo dai log di Xorg. Per verificare se sia o non sia abilitato per nvidia, eseguire:

$ optirun nvidia-settings -c :8

Le voci X Server XVideo Setings -> Sync to VBlank e OpenGL Settings -> Sync to VBlank dovrebbero essere entrambi attivati. La scheda Intel ha in generale meno problemi di tearing, in questo modo potrebbe essere utilizzata per la riproduzione video. In particolare utilizzando VA-API per la decodifica video (ad esempio mplayer-vaapi e con il parametro -vsync). Fare riferimento all'articolo Intel su come risolvere i problemi di tearing sulla scheda Intel. Se non è ancora risolto, provate a disabilitare il compositing dal proprio ambiente desktop. Una ulteriore soluzione , potrebbe essere quella di disabilitare il triple buffering.

Bumblebee non può collegarsi al Socket

Si potrebbe ottenere qualcosa di simile:

$ optirun glxspheres
[ 1648.179533] [ERROR]You've no permission to communicate with the Bumblebee daemon. Try adding yourself to the 'bumblebee' group
[ 1648.179628] [ERROR]Could not connect to bumblebee daemon - is it running?

Se siete già nel gruppo bumblebee ($ groups | grep bumblebee), si può provare a rimuovere il socket /var/run/bumblebeed.socket.

Ulteriori risorse

Potete unirvi al canale #bumblebee su freenode.net