A bit late summer special. I got a Dell XPS 15 but getting Kali to work on it was a bit rough. Here is the full tutorial.
Dell XPS 15 9560 is a great and powerful machine. In my case it came with Windows 10 Pro installation, but I wished for a Linux distro on it. I tried Ubuntu 18.04 LTS and Kali 2018.2 and the results were not great. Here are the problems I faced, and a ways to resolve them.
I won’t be covering OS installation process – this article will focus only on the problems I faced and a ways I resolved them.
My config is Dell XPS 15 9560 i7-7700HQ, 32GB RAM, 1TB M.2 SSD and 4k display.
Configuration I’ll be covering here is Kali Linux 2018.2
Problems that I faced with Kali 2018.2 on Dell XPS 15 9560 are as follows:
– Unable to boot into Kali Live installation
– After installation – unable to boot into Kali. I would reach login screen, enter username and password and after that I would get either black screen, or gray screen with nothing else.
– Unable to access repositories and install anything to my Kali install.
– Bluetooth doesn’t work
– ACPI giving errors
So let’s begin, problem by problem.
First we need to setup BIOS.
You can enter BIOS on Dell XPS 15 9560 by pressing F2 while machine is booting and DELL logo is depicted.
There are few settings we need to address before getting any further.
Settings | General | Boot Sequence | Boot List Option | I selected UEFI
Settings | General | Adanced Boot Options | I selected Enable Legacy Option ROMs and Enable Attempt Legacy Boot (although not necessary since I booted into UEFI)
Settings | System Configuration | SATA Operation | AHCI
Settings | System Configuration | Drives | M.2 PCIe SSD-0 (since I have M.2 drive in my system)
Settings | Secre Boot | Secure Boot Enable | Disabled
Two most important settings are AHCI and disabled Secure Boot, other are optional and completely up to you.
With BIOS configured this way I managed to boot to Kali and Windows.
If you plan to dual boot, your first installation should be Windows 10 and after that Kali.
Bootable USB Live Kali problem
After I made a bootable Kali installation with RUFUS on Windows and put USB into Dell XPS I was able to get Kali boot menu (pressing F12 while booting Dell XPS, on Dell logo and choosing USB drive on which you put Kali)
I wasn’t able to boot to Live System, I was stuck in the middle of the boot process.
If you wish to boot to the Live System, you need to do following – on boot menu, select Live System – press e on the keyboard
You will be taken to the GRUB section.
At the end of the linux line enter:
“quiet nomodeset”
so the line will look like this
linux /live/vmlinuz-4.15.0-kali2-amd64 boot=live components splash username=root hostname=kali quiet nomodeset
After you entered quiet and nomodeset at the end of the inux line press CTRL+X to boot
You will now be able to boot to the Live System.
Installation/Boot
Installation in my case went fine, but after installation is done I got stuck again on the boot screen of the OS.
I entered username and password and after that got either black screen or blank gray screen.
To get through that part and boot onto system procedure is similar to the one of the Kali Live System.
On the boot screen select Kali GNU/Linux and press e on the keyboard.
On the GRUB boot menu scroll down to the linux line and again enter “quiet nomodeset” at the end of the line.
In my case line looks as follows
linux /vmlinuz-4.15.0-kali2-amd64 root=/dev/mapper/Crypto-root ro quiet nomodeset
After that I was able to boot into Kali.
You need to enter “quiet nomodeset” every time you wish to boot, and until you are done with the Nvidia part of the configuration.
Updating Kali
Should be first step after installing, but in my case I got errors like:
E: Unable to locate package linux-headers…
I checked my network, internet connection, everything was fine.
The thing is I was missing Kali repo in my sources list.
In order to get this done properly we need to execute following:
Open terminal (in case you are nott root, enter sudo -i, your password, and you will became root)
leafpad /etc/apt/sources.list
You will get this screen
Now, go to the https://docs.kali.org/general-use/kali-linux-sources-list-repositories and look for the Kali Rolling Repository
Now enter deb http://http.kali.org/kali kali-rolling main contrib non-free onto the end of the sources.list file
It should look like this – Save and close the file
Go back to the terminal and execute following commands
apt update -y && apt upgrade -y && apt
dist-upgrade
or, If you are like me, you will type multiple commands for that same thing
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get update
apt-get upgrade
After you are done – REBOOT, that is a must do process before continuing.
Don’t forget “quiet nomodeset” command while booting
Installing NVIDIA graphics card
Now, the reason why we have to enter “quiet nomodeset” on every boot is because our graphics subsystem is messed up in Kali.
Let us deal with that:
First we need to verify that we have hybrid graphics card (intel + nvidia combo)
In terminal enter
lspci | grep -E "VGA|3D"
I do have Intel and Nvidia combo
Next step is to diable nouveau. If I understand correctly, nouveau are free/libre NVIDIA drivers for linux.
Be aware that after entering this command your XPS will immediately reboot
echo -e "blacklist nouveau\noptions nouveau modeset=0\nalias nouveau off" > /etc/modprobe.d/blacklist-nouveau.conf update-initramfs -u && reboot
After reboot enter
lsmod |grep -i nouveau
If it doesn’t return anything, nouveau is disabled.
Now, next step is Nvidia drivers installation.
I will install from Kali repo, you have also option to install by downloading directly from Nvidia.
apt-get install nvidia-driver nvidia-xconfig
Confirm dialogs during installation, and wait for the finish.
For the next steps it is important that we find out BUS ID on which our Nvidia card is located.
nvidia-xconfig --query-gpu-info | grep 'BusID : ' | cut -d ' ' -f6
PCI:1:0:0 is in my case.
Our next step will be to create /etc/X11/xorg.conf file
leafpad /etc/X11/xorg.conf
Paste following into new document that just opened (change BusID “PCI:1:0:0” line into the value you got)
Section "ServerLayout"
Identifier "layout"
Screen 0 "nvidia"
Inactive "intel"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "nvidia"
Device "nvidia"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Device"
Identifier "intel"
Driver "modesetting"
EndSection
Section "Screen"
Identifier "intel"
Device "intel"
EndSection
This is how a file looks in my case. Save it.
Next step is to create two scripts. Since my Kali is default GDM I created two files
/usr/share/gdm/greeter/autostart/optimus.desktop
/etc/xdg/autostart/optimus.desktop
leafpad /usr/share/gdm/greeter/autostart/optimus.desktop
leafpad /etc/xdg/autostart/optimus.desktop
Paste following into both files and save them
[Desktop Entry]
Type=Application
Name=Optimus
Exec=sh -c "xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto"
NoDisplay=true
X-GNOME-Autostart-Phase=DisplayServer
Now, we need to reboot. This time we should be able to boot without adding “quiet nomodeset” to the grub.
Check once again everything you done, make sure you entered everything into files and reboot).
My XPS rebooted successfully and I done everything via this tutorial.
Now, onto the final part of the Nvidia graphics driver installation.
After reboot, install mesa-utils if you haven’t done that already
apt-get install mesa-utils
Next command is
glxinfo | grep -i "direct rendering"
Last step is to install cuda toolkits and drivers
apt install -y ocl-icd-libopencl1 nvidia-driver nvidia-cuda-toolkit
Now, we need to verify that everything is running correctly, and we will do that by running nvidia-smi
nvidia-smi
Everything is ok in my case.
Now, last thing before we wrap up the Nvidia graphics driver part is screen tearing issue.
Fix for this goes as follows:
Verify than PRIME is disabled
xrandr --verbose|grep PRIME
In my case it is – PRIME Synchronization: 0
First line marks active display.
We need to edit /etc/default/grub
leafpad /etc/default/grub
add nvidia-drm.modeset=1 into GRUB_CMDLINE_LINUX_DEFAULT=”quiet” line so that it looks like this:
Save file and run
update-grub
Reboot after updating grub.
After reboot run again
xrandr --verbose|grep PRIME
Everything is ok now.
With this step we finished Nvidia driver setup and now we should be able to boot without “quiet nomodeset” addition to the grub.
Bluetooth
WiFi in my case works out of the box, but bluetooth is a problem. In my XPS WiFi/Bluetooth is Killer N1535 chip. I searched through the internet about this, and people are not satisfied with Killer N1535 chip and many of them are changing chip to the Intel 8265. I decided to try and work with this one, and see where I’ll get.
So, Bluetooth doesn’t work, it is always off, no matter how I set toggle.
During boot period there is also error (I assume it has to do something with this chip):
ath10k_pci 0000:02:00.0: firmware: failed to load ath10k/pre-cal-pci-0000:02:00.0.bin (-2)
ath10k_pci 0000:02:00.0: firmware: failed to load ath10k/cal-pci-0000:02:00.0.bin (-2)
I don’t know if it has to do anything with this error, since I’m not (yet) advanced Linux user.
Anyway, back to the Bluetooth problem.
We need to confirm that we have N1535 chip, to do so, type following into terminal (you need to be root)
lspci | grep -i qca6174
Ok, confirmed and now we can go further
Download the latest firmware from https://codeload.github.com/kvalo/ath10k-firmware/zip/master and extract it to the same folder (usually Downloads) and then navigate to the QCA6174 folder
Now, as a root, start Nautilus from the terminal
After Nautilus starts navigate to /lib/firmware/ath10k
Now, delete QCA6174 folder from the /lib/firmware/ath10k we just opened
Now navigate to the folder where you downloaded ath10k from the internet and unpacked it. Copy QCA6174 from it to the /lib/firmware/ath10k
Now, navigate to the /lib/firmware/ath10k/QCA6174/HW3.0 and rename firmware-4.bin_WLAN.RM.2.0-00180-QCARMSWPZ-1 to firmware-4.bin
Well, for me after reboot same thing, wifi is working, but no bluetooth.
Let us try one more thing to get it to work.
Open terminal (as root) and type following command:
lsmod | grep bluetooth
Result should be as follows
systemctl enable bluetooth.service
systemctl start bluetooth.service
With these commands we enabled bluetooth start on every boot and also started service right away.
It works and I managed to connect my mouse immediately.
Bluetooth issue – solved.
Conclusion
Now, after all these steps I have machine that works great in Kali 2018.2.
One downside is that I still have quick battery discharge (maybe two hours of full charge).
During boot I get few ACPI Exceptions “ACPI Exception: AE_NOT_FOUND” that I wasn’t able to resolve.
If you by any chance have a resolution for this, please let me know. I will try the solution and update this article accordingly.
Beside that issue, everything is working as it should.