About eight years ago I installed Ubuntu Intrepid Ibex, which I believe was Ubuntu 8.10. I had a Dell desktop at work and they just rolled out, "Trusted Desktop". The original intention of trusted desktop is simply to ensure an end-user's workstation is safe, free of viruses, and has the most recent security updates. This helps to keep malware and attackers out of the corporate network when users plug in to it daily.
The problem for me is that because the corporation was so large, they did not ask or care about the developer's needs. The first version of trusted desktop they rolled over top of Windows XP completely removed Administration capability, as well as installed several incompatible drivers and encryption software combinations. Eventually these systems began showing the "Blue screen of death", and crawling to a halt under the poorly designed implementation of trusted platform computing.
At this point I saw where Windows was going with my company and discovered they would "allow" employees to use Linux if they signed a waiver and ensured they implemented a compliant disk encryption policy. So I was off, installing Ubuntu, Virtualbox and Windows XP VM to support Windows specific work software I needed to use. In this case it was mostly Microsoft Office and the ActiveID client drivers for my smartcard to work with the VPN software.
I didn't need wireless because this was a desktop plugged in at work. However I did have two outputs on my video card and hoped I would be able to run a similar dual head/monitor display, the way I had been doing on XP for a couple of years. I quickly had flashbacks of trying to get wireless drivers working on Mandrake Linux, circa 2004. It was only a bit painful getting Ibex to use my Radeon correctly, but after all of this I was content for about a year.
Unfortunately, a year later support for 8.10 died out, and it was time to upgrade to 9.04, Jaunty. In that release, support for my old ATI Radeon GPU was dropped in favor of the newest version of X that was shipping w/ Jaunty. I felt betrayed by the Linux community for leaving my crappy old GPU behind. I had no idea how to write my own driver then, had my own work to do, and so I gave up and went back to Windows XP and then 7 for a long time. Of course, later I would provide systems support for about fifty developers running Ubuntu 14.04 LTS, but this topic would cause us to digress as I usually do.
Well, this past week I have gone back to Linux, this time choosing Debian Jessie 8. I chose Debian because I am feeling unsure about where Canonical will be taking Ubuntu in the future, and I wanted something I was already familiar with in regard to package management. For example, I have recently used a Slackware 10 distribution on an old laptop I have, but it leaves much to be desired in regard to community support for the latest hardware.
After choosing Debian for my OS, I got a new Dell Precision 7710 laptop. This thing really packs a punch with:
- Intel® Core™ i7-6820HQ CPU @ 2.70GHz
- Intel Skylake GPU w/ CPU
- Nvidia® Quadro® M3000M w/4GB GDDR5
- 32GB (4x8GB) 2133MHz DDR4 SDRAM, Non-ECC
- Hynix 512GB M.2 PCIe NVMe Class 40 Solid State Drive
You can imagine my disappointment when after 8 years passing since I ran Linux on Dell for my personal system, my desktop booted with a notification that my Cinnamon desktop was being rendered in software mode. Furthermore, my wireless interface was nowhere to be found.
The first issue was with a feature in the BIOS being enabled called Optimus. I don't want to make this entire post about Optimus, so I'll use a reference from Wikipedia. "Nvidia Optimus is a computer GPU switching technology created by Nvidia which, depending on the resource load generated by client software applications, will seamlessly switch between two graphics adapters within a computer system in order to provide either maximum performance or minimum power draw from the system's graphics rendering hardware."
Apparently the Dell supported version of Ubuntu knows how to handle configuration this correctly. However, Debian Jessie out of the box could not. I chose not to attempt to enable Optimus (Optimux would have been a better name.) support on Debian, but found some interesting work here, https://nouveau.freedesktop.org/wiki/Optimus/ that may assist if you choose to do so. For me, I have simply disabled the setting in the BIOS, and have opted for the NVidia GPU to be my primary display adapter. Perhaps later I will investigate Optimus further.
However this led me to my next issue, in that my GPU is not yet supported by Nouveau. The Quadro M3000M is part of the Maxwell-2 series.
|NVIDIA Quadro Mobile Specification Comparison (High-End)|
|Quadro M5000M||Quadro M4000M||Quadro M3000M|
|Memory Clock||5GHz GDDR5||5GHz GDDR5||5GHz GDDR5|
|Memory Bus Width||256-bit||256-bit||256-bit|
|Architecture||Maxwell 2||Maxwell 2||Maxwell 2|
A quick review of the list at https://nouveau.freedesktop.org/wiki/CodeNames/ will show you that this GPU is not supported. So, I had to install the bundle available from Nvidia. The important thing to remember when bundling the manufacture's driver is to ensure DKMS (Dynamic Kernel Module Support) is installed and that Nvidia uses DKMS to manage the kernel module between kernel updates.
So with my GPU now working, it was time to figure out the issue with my wireless. A quick `lspci | grep Wireless` resolved,
02:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)
The firmware for Intel wireless adapters generally ends up in a package called, 'iwlwifi' and once installed on most systems, will match the vendor id on your hardware during modprobe, and load the correct module. As luck would have it, this card's module was not added/patched until November 2015.
This means my driver doesn't really show up until the November 2015 timeframe, which is kernel 4.3. Turns out Debian has backports up to Kernel 4.6! So, upgrading with the backports should include the firmware for my wifi card. Backports warns you to only update a package if you NEED it, and encourages you not to upgrade everything. However, so much depends on the Linux kernel, that upgrading that specific package creates a dependency for many other backport requied packages. As a result, I ended up using backports for pretty much all of my software. Which is Virtualbox, X, and Gnome3.
To perform this upgrade, first gloss over, https://backports.debian.org/Instructions/. Then, after you have added the backports repo, run the following,
$ sudo apt-get -t jessie-backports install linux-image-amd64
Once this is complete, rebooting your PC should prompt you for the latest kernel at the Debian GRUB screen, in my case this is 4.6+74~bpo8+1. If I understand this naming convention correctly, it means
"Linux Kernel 4.6, Build number 74, Backport for 8.0 Build 1". Which is quite the mouthful.
As a bonus, the above kernel will also include support for the latest bluetooth adapter! The end result of all this work was a bleeding edge opensource operating system using Virtualbox 5.0 (from backports) which has USB 3.0 support and 3D acceleration!