Pagaliau veikia NVIDIA Optimus [F16]

Pagaliau veikia NVIDIA Optimus [F16]

Standartinė MKas » 2012-02-07 00:34:07

1. Atsiųskite naujausią bumblebee išeities kodą (3.0) iš
https://github.com/Bumblebee-Project/Bumblebee/downloads

2. Atsisiųskite naujausią bbswitch išeities kodą (0.4.1)
https://github.com/Bumblebee-Project/bbswitch/downloads

3. Įrašykite libbsd-devel, dkms jei dar neįrašytas ir NVIDIA tvarkykles
Kodas: Pasirinkti visus
yum install libbsd-devel dkms akmod-nvidia


Po akmod-nvidia įrašymo panaikinkite /etc/X11/xorg.conf, /etc/X11/xorg.conf.d/00-nvidia.conf ir /etc/modprobe.d/blacklist-nouveau, kad toliau naudotumėtės nouveau tvarkykle kaip numatyta.
Kodas: Pasirinkti visus
sudo rm /etc/X11/xorg.conf
sudo rm /etc/X11/xorg.conf.d/00-nvidia.conf
sudo rm /etc/modprobe.d/blacklist-nouveau


Aš taip pat panaikinau "nouveau.modeset=0 rd.blacklist=nouveau" branduolio nustatymus iš /etc/grub2.cfg dabartiniame branduolyje.

4. Sukompiliuokite ir įrašykite bbswitch su DKMS
Iš katalogo kur atsisiuntėte bbswitch:

Kodas: Pasirinkti visus
tar xvzf bbswitch-0.4.1.tar.gz
sudo cp -Rv  bbswitch-0.4.1 /usr/src
sudo dkms add -m bbswitch -v 0.4.1
sudo dkms build -m bbswitch -v 0.4.1
sudo dkms install -m bbswitch -v 0.4.1


5. Atsisiųskite ir įrašykite naujausią VirtualGL RPM iš čia:
http://www.virtualgl.org/DeveloperInfo/PreReleases

6. Sukompiliuokite ir įrašykite bumblebee

Kodas: Pasirinkti visus
tar xvzf bumblebee-3.0.tar.gz
cd bumblebee-3.0
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo cp scripts/systemd/bumblebeed.service /lib/systemd/system


Atverkite /lib/systemd/system/bumblebeed.service:
7 eilutę pakeiskite į:
Kodas: Pasirinkti visus
ExecStart=/usr/sbin/bumblebeed --config /etc/bumblebee/bumblebee.conf


Atverkite /etc/bumblebee/bumblebee.conf ir pakeiskite:
Kodas: Pasirinkti visus
Driver=nvidia


ir skiltyje [driver-nvidia]:
Kodas: Pasirinkti visus
KernelDriver=nvidia


Atverkite /etc/bumblebee/xorg.conf.nvidia ir pridėkite tai pradžioje:
Kodas: Pasirinkti visus
Section "Files"
   ModulePath   "/usr/lib64/xorg/modules/extensions/nvidia"
   ModulePath   "/usr/lib64/xorg/modules"
EndSection


ir šiuos pabaigoje:
Kodas: Pasirinkti visus
Section "Screen"
   Identifier "Screen1"
   Device "Device1"
EndSection


Sukurkite bumblebee grupę ir pridėkite save prie jos:
Kodas: Pasirinkti visus
sudo groupadd bumblebee
sudo usermod -a -G bumblebee $USER


Įjunkite ir paleiskite bumblebee servisą:
Kodas: Pasirinkti visus
sudo systemctl enable bumblebeed.service
sudo systemctl start bumblebeed.service


Štai tvarkingas dmesg išrašas:
[ 188.463666] bumblebeed[3258]: [INFO]/usr/sbin/bumblebeed 3.0 started
[ 188.463783] bbswitch: disabling discrete graphics
[ 188.463947] bbswitch: Result of Optimus _DSM call: 11000059
[ 188.474687] pci 0000:01:00.0: power state changed by ACPI to D3
[ 272.960916] SELinux: initialized (dev fuse, type fuse), uses genfs_contexts
[ 289.008321] bbswitch: enabling discrete graphics
[ 289.532094] pci 0000:01:00.0: power state changed by ACPI to D0
[ 289.532103] pci 0000:01:00.0: power state changed by ACPI to D0
[ 289.532131] pci 0000:01:00.0: restoring config space at offset 0xc (was 0x0, writing 0xf7000000)
[ 289.532138] pci 0000:01:00.0: restoring config space at offset 0x9 (was 0x10430b01, writing 0xe001)
[ 289.532143] pci 0000:01:00.0: restoring config space at offset 0x7 (was 0x4200000c, writing 0xf000000c)
[ 289.532149] pci 0000:01:00.0: restoring config space at offset 0x5 (was 0xc, writing 0xe000000c)
[ 289.532153] pci 0000:01:00.0: restoring config space at offset 0x4 (was 0x1000000, writing 0xf6000000)
[ 289.532157] pci 0000:01:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x10)
[ 289.532162] pci 0000:01:00.0: restoring config space at offset 0x1 (was 0x100003, writing 0x100007)
[ 289.532181] pci 0000:01:00.0: power state changed by ACPI to D0
[ 289.532184] pci 0000:01:00.0: power state changed by ACPI to D0
[ 289.532193] pci 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 289.532197] pci 0000:01:00.0: setting latency timer to 64
[ 298.700976] nvidia 0000:01:00.0: power state changed by ACPI to D0
[ 298.700981] nvidia 0000:01:00.0: power state changed by ACPI to D0
[ 298.700989] nvidia 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 298.700997] nvidia 0000:01:00.0: setting latency timer to 64
[ 298.701024] vgaarb: device changed decodes: PCI:0000:01:00.0,olddecodes=none,decodes=none:owns=none
[ 298.701130] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 290.10 Wed Nov 16 17:39:29 PST 2011
[ 321.064203] nvidia 0000:01:00.0: PCI INT A disabled
[ 321.066495] bbswitch: disabling discrete graphics
[ 321.066743] bbswitch: Result of Optimus _DSM call: 11000059
[ 321.077049] pci 0000:01:00.0: Refused to change power state, currently in D0
[ 321.077308] pci 0000:01:00.0: power state changed by ACPI to D3


7. Paleiskite programas su NVIDIA GPU naudodami optirun
Pvz:
optirun glxgears

Dėkojame Bumblebee Projekto kūrėjams
Išversta iš http://duxyng.wordpress.com/2012/01/26/finally-working-nvidia-optimus-on-fedora-16/

Mano pastebėjimai:
Man viskas veikia iki perkraunu kompiuterį. Po kompiuterio perkrovimo Gnome pasileidžia į "saugų" rėžimą ir niekaip negalėjau to sutvarkyti. Panašu, kad NVIDIA tvarkyklės kažkaip sugeba užgožti intel ir nouveau, nors lsmod rodo, kad jie yra. Tad ištryniau NVIDIA tvarkykles ir padariau, kad bumblebee naudotų nouveau tvarkykles:
Atverkite /etc/bumblebee/bumblebee.conf ir pakeiskite:
Kodas: Pasirinkti visus
Driver=nouveau

Šis variantas veikia truputėlį geriau nei intel (bet visgi kelis kartus prasčiau nei su NVIDIA tvarkyklėmis)
Taip pat apsidžiaugiau, kad bbswitch programa išjungia NVIDIA GPU. Todėl baterija laiko ~2,5x ilgiau (nenaudojant optirun).

Būtų malonu išgirsti jūsų atsiliepimus ar pavyko tvarkingai įsirašyti.
Vartotojo avataras
MKas
Site Admin
 
Pranešimai: 109
Užsiregistravo: 2010-08-09 13:49:06
Miestas: Lithuania, Vilnius

Grįžti į Fedora

Dabar prisijungę

Vartotojai naršantys šį forumą: Registruotų vartotojų nėra ir 0 svečių

cron

x