Kali Linux on a Dell XPS 15, 9550

I recently decided to change my laptop over to Kali Linux. The Dell XPS 15 is a great laptop, but it has had a number of issues running Linux over the last few months. This time around it seems there have been enough upstream changes that you can get Linux running smoothly enough for everyday use.

 

Before you start

You need to change the following two settings in the BIOS. Now is a good time to set a BIOS password if you haven’t already.

  • BIOS > Secure Boot > Disabled
  • BIOS > System Configuration > SATA Operation > Switch RAID to AHCI

You can still upgrade the BIOS using the boot menu and a flash stick, but versions 1.2.10 through 1.2.16 of the firmware have been associated with a series of bugs, so if you are going to update, make sure it’s to 1.2.18.

 

Installation

Install Kali Linux with a USB. I used rufus on Windows to DD a copy of the amd64 ISO directly onto the USB stick. I chose to use the whole disk – I’ll virtualize Windows rather than dual boot it.
Whilst installing, you will get a request for additional firmware – brcmfmac43602-pcie.txt, which I’ve been unable to find. Some guides reference using brcmfmac43602-pcie.bin instead, but the installer doesn’t accept that in place of the .txt file. Regardless, wireless works fine, so I’ll figure that out later.
After the initial installation, make sure your installation is up to date.

This will take some time, and it’s worth rebooting afterwards.

Optimus

Since this laptop has an intel and nvidia graphics card, installing optimus will allow you to access the nvidia card for those programs that require it. Reboot after installing. In my case I had to reboot twice – it failed to boot the first time for some reason.

Once that’s done, it’s time to update some config files. Firstly, edit /etc/bumblebee/bumblebee.conf and change line 22 from:

Then run ‘lspci | grep NVIDIA’ to get your graphics card’s BusID. Mine is:

Then edit /etc/bumblebee/xorg.conf.nvidia, uncomment the BusID line, and update it if yours is different.

This should get everything working. You can see the two cards working by running:

If you run glxgears with both, you’ll notice the performance is about the same, which isn’t right. To fix this, install VirtualGL, which has to be downloaded separately. Go to https://sourceforge.net/projects/virtualgl/files/ and download the latest amd64.deb, and install it:

After that, you can run glxgears / optirun glxgears, and you should see a noticeable difference. If you have an everyday user account you want to use in a similar fashion, you’ll need to add it to the bumblebee group. This now gives you the ability to use the nvidia card for password cracking, but note that in most cases, offloading password cracking to a cloud instance is a better approach than running it on a laptop.

 

Fans

So that the OS can tell the temperature it’s operating at, and control the fans, you will need to install lm-sensors, and activate them

When sensors-detect asks if you want to make changes to /etc/modules automatically, say yes.

Scaling

The hidpi display is readable in its initial state, but I prefer some scaling. Open up gnome-tweak, go to fonts and set the scaling to 1.25, then windows and set the scaling to 2.

In a similar vein, to avoid a tiny GRUB screen, edit /etc/default/grub, and add GRUB_GFXMODE=640×480. Once that’s done, run sudo update-grub. Higher resolutions are available, but they don’t look great.

QT programs, such as VLC will also render with tiny controls. You can improve this by creating a script in /etc/profile.d/, called qt-hidpi.sh. In that file, put:

The end result isn’t perfect, but it’s very usable. See this article for more info.

 

Everyday user

Some programs (VLC, Google Chrome, Visual Studio Code, etc.) object to being run as root, and I want to use different programs depending on what I’m doing, so I create a normal user for daily use.

 

And that’s it! Kali should be ready to fill with your preferences and utilities of choice. If I run into any further issues, I’ll update this article.
 

References:

6 comments

  1. Thanks for this article! Was looking for something like this for a while.

    The last time i tried installing Kali on my 9550 the WiFi would not work. Did you have this problem? How did you go about solving it? Sorry if the answer is already in here ^. Havent had a chance to test this out.

    1. From what I’ve seen, the 9550 comes with at least two options for wifi card. I haven’t had any problems installing with Kali, Debian or KDE Neon. Fedora didn’t boot, but then I’ve found it to be pretty touchy when it comes to laptop hardware. The references listed in the article have a lot more troubleshooting information, but they don’t mention wifi issues (except one where the guy replaced his card with an intel one). Good luck!

  2. Hi,
    thanks for this article, It was really helpful.

    I have got a problem actually with my GPU. I cannot swap. it’s always the Nvidia. How can I switch ?
    The Nvidia GPU is powerful but the video is pretty bad, I can’t look a movie without some boring bad display.

    Do you meet it before ?

    (I’m sorry about my bad english :p)

    Greetings

    1. If you are always getting the nvidia display, it’s likely that something has gone wrong with your installation, and you are either still using nouveau, or you have the mainline nvidia drivers installed – not the nvidia-primus ones. Once nvidia-primus is installed, the operating system will always default to the intel chip, which should be sufficient for watching video. Maybe try a clean install?

  3. Can you please print out the output of lm_sensors? I want to know what sensors exist on this system, and also if we can control the fan using fancontrol script. Thank you.

    1. I don’t have kali on this laptop anymore, so I can’t print that out for you, but the only sensor found was the one in the CPU. You don’t need a fancontrol script, unless you have a specific purpose in mind. You just need to load the coretemp module (modprobe coretemp), which sensors-detect will do for you. Once that is loaded, the kernel will instruct the fan to match the heat of the CPU, rather than being on full all the time.

Leave a Reply