3

I have an Asus GL553 with Intel 560 and Nvidia GTX 1050 and I'm tried to configure my hybrid cards with nvidia-prime. I installed Ubuntu Gnome 17.04 then installed nvidia-381 and ran prime-select intel I had to hard reboot and when I tried to login the system freezes. I have researched and read all these topics but I can't find a solution.

Has anyone could configure nvidia properly?

0

I finally did it.

1.- Make a folder to store the SSDT files. Then extract it from the ACPI tables (run this part as root):

# mkdir dsdt
# cd dsdt
# SSDT_FILES=`ls /sys/firmware/acpi/tables/ | grep SSDT`
# for file in $SSDT_FILES ; do cat "/sys/firmware/acpi/tables/$file" > "$file.dat"; done
# cat /sys/firmware/acpi/tables/DSDT > DSDT.dat

2.- Make sure you have IASL installed. On ubuntu, sudo apt install iasl should suffice. I downloaded the source and compiled it myself to get the latest version, but I don't think thats necessary.

3.- There's a duplicate definition in one SSDT file which won't let us dissassemble it. Find out which one it is and delete it:

# grep PRT0 *.dat
Binary file DSDT.dat matches
Binary file SSDT1.dat matches
# mv SSDT1.dat SSDT1.bak

So in my case it is SSDT1. Replace it with whatever you get. Do not touch DSDT.dat

4.- Next, we find the SSDT file with the code we need to change. We look for the file with both "NVID" and "OSYS" are present: (There's probably a better way to do this in grep)

# grep NVID *.dat
Binary file SSDT10.dat matches
Binary file SSDT3.dat matches
# grep OSYS SSDT10.dat
# grep OSYS SSDT3.dat
Binary file SSDT3.dat matches

So in my case it was SSDT3, if its different you replace all further instances of SSDT3 with whatever you get.

5.- Disassemble!

# iasl -e *.dat -d SSDT3.dat

6.- Hopefully you don't see any errors at this point. Replace all instances of OSYS except the declaration with the constant for Windows 7, and bump the definition block number by one:

# sed -i '/^ *External/! s/OSYS/0x07D9/g' SSDT3.dsl
# sed -i '/^ *DefinitionBlock/ s/0x00001000/0x00001001/g' SSDT3.dsl

If you have a different BIOS, the Definition Block number might not be 1000. Just open SSDT3.dsl in a text editor and look for DefinitionBlock. Whatever number you see on that line, increment it by one.

7.- Compile everything and hope there are no errors.

# iasl -ve -tc -p SSDT3 SSDT3.dsl

8.- Make an image:

# mkdir -p kernel/firmware/acpi
# cp SSDT3.aml kernel/firmware/acpi/ssdt3.aml
# find kernel | cpio -H newc --create > acpi_gpufix

8.- All the following instructions corresponding to Ubuntu and GRUB2. Copy it to the boot folder. the initrd.img it's your default img from boot folder:

# cp acpi_gpufix /boot/

you can permanently add it to your GRUB by editing /etc/grub.d/10_linux. I had to change the line initrd ${rel_dirname}/${initrd} to initrd ${rel_dirname}/acpi_gpufix ${rel_dirname}/${initrd}. Then run update-grub2.

UPDATE: Now GRUB support extra initrd: GRUB_EARLY_INITRD_LINUX_CUSTOM=acpi_gpufix.img to your /etc/default/grub

9.- To check if it works:

$ dmesg | grep ACPI | grep override
[    0.000000] ACPI: Table Upgrade: override [SSDT-PegSsd- PegSsdt]
[    0.000000] ACPI: SSDT 0x000000007A715080 Physical table override, new table: 0x0000000079493000

Now you can change the GPU wihtout freezes

source:

https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-306543064 https://devtalk.nvidia.com/default/topic/1012369/linux/laptop-freezes-changing-video-cards

  • I have the same laptop facing the same issues, and was following the steps. Everything was exactly the same, until 7.- Compile everything and hope there are no errors. where I get SSDT3.dsl 109: External (\SGMD, 0x00, 0x00) Error 6126 - ^ syntax error, unexpected PARSEOP_INTEGER (and a lot of similar errors). Where can I find further info to debug? Thanks! – Facundo Farias Jun 27 '17 at 16:56
  • Please show me the output of this command: "sudo apt install inxi -y && inxi -F && dmesg | grep -i error" (without quotes) and copy it in pastebin or another online file – Glats Jun 29 '17 at 13:42
  • here are the details! pastebin.com/750cNjST Thanks! – Facundo Farias Jun 30 '17 at 12:16
  • Are you sure did you follow the steps very carefully? Show me the errors in step 7 and upload it in pastebin please. Thanks. – Glats Jun 30 '17 at 15:05
  • All the steps (including 7 with the errors): pastebin.com/v8gBGLY3 The only difference is my system is in Spanish, but everything else (the files that match in GREP) is exactly the same. – Facundo Farias Jun 30 '17 at 15:19
-1

A long ago i used to have an nvidia laptop, and have similar issues with gnome. The only that worked for me was to uninstall gnome and used KDE instead. But i repeat that was long ago 10~ version i guess.

You can start on command mode to do that:

To boot into single user mode you edit the boot instructions for the GRUB menu entry you wish to boot and add the kernel parameter/option single. Brief instructions for how to do this are below.

  • Hold down the left Shift key while rebooting to bring up GRUB menu
  • Select (highlight) the GRUB boot menu entry you wish to use.
  • Press e to edit the GRUB boot commands for the selected boot menu entry.
  • Look near the bottom of the list of commands for lines similar to

    linux /boot/vmlinuz-3.2.0-24-generic root=UUID=bc6f8146-1523-46a6-8b\ 6a-64b819ccf2b7 ro quiet splash initrd /boot/initrd.img-3.2.0-24-generic

  • Change the middle line in (4) by adding the kernel boot parameter single to the end of the line (i.e. after ro quiet splash).

For this example you would change:

6a-64b819ccf2b7 ro  quiet splash

to

6a-64b819ccf2b7 ro  quiet splash single
  • Press either Ctrl+X or F10 to boot using these kernel options.

Note: These changes are not persistent. Any change to the kernel boot options made this way will only affect the next boot and only if you start that boot by pressing either Ctrl+X or F10 while still in GRUB edit mode.

  • But this doesn't solved my issue. Actually I can login setting up prime-select nvidia. The issue is that I can't turn off my discrete card. – Glats Jun 2 '17 at 20:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.