My History with Linux, and Linux’s History with Hardware
I’ve been dabbling in the world of Linux for a long time. My first experience with Linux was in 1997/1998 with the release of RedHat 5.0. That was the first Linux distribution I saw for sale in a retail setting. It came with both 3.5″ floppy disk as well as CD-ROM installation media, ran the XVWM95 window manager, but came with very early versions of both KDE and Gnome as installation options. Back then, hardware options in the consumer market were fairly basic, and fairly limited in number.
3D accelerator cards like the Voodoo 2 were just coming out, but of course I couldn’t could afford them being a freshman in high school. XGA graphics were fairly standard, SXGA if you were lucky, but most games ran at 320×240 in DOS or 640×480/800×600 in Windows. Un-accelerated 2D Windows games and DOS games were where it was at back then. Sound Blaster-compatible sound cards were the norm, and there was no Wi-Fi or specialized onboard chipsets to deal with. Largely, motherboard chipsets were based on either Intel BX, or some Cyrix- or AMD-based Intel-compatible equivalent. Just about every expansion port was either PS/2 or a D-sub serial and parallel port. USB was a luxury (at a blazing 1.5 Mbps). Nothing was really special, nothing was really complex, and hardly anything required a special driver, so Linux just worked.
Shortly after that things began to get complicated. OpenGL was a fairly open standard, but Microsoft’s Direct X was not. Direct X was very easy to program for, so it was widely adopted (Hell, I even learned to program in 2D in DirectDraw and DirectSound in high school and I wasn’t a great programmer). Other proprietary 3D programming API’s like 3DFX’s Glide were also in the mix, but they fell off quickly. Support for Linux from most hardware manufacturers wasn’t a priority, because most gamers in the PC world ran Windows, and so Windows is where the manufacturers directed their focus. Gaming on computers has always driven the bleeding edge in the consumer space. You don’t need a GPU with 4098 cores to run Word. It makes business sense, I get it, but it sucked if you wanted to use the latest performance devices in Linux.
Up until even a few years ago when I’d do a web search for games on Linux, I’d still get top 10 lists that included Tux Racer. For those who haven’t seen it, Tux Racer is a 3D game where you guide the Linux mascot penguin Tux down a snowy hill on his belly.
The game was written in 2000, looks like a 3D game written in 2000, and was – if those lists are to be believed – one of the best games that Linux had to offer until recently. That’s very sad. Not to take anything away from Tux Racer… it was an impressive game at the time for an independent developer, especially since it was a decade before “indy gaming” took off as a thing. Sure games like DOOM and Quake were ported, but mainstream gaming support was one thing that Linux did not enjoy.
Gaming wasn’t the only place Linux fell flat in terms of usability. More and more hardware was being released with closed-source proprietary drivers, and with no open-source alternative. This meant that if you intended to run Linux and wanted all of your stuff to work, you had one choice – research hardware before purchasing it and make sure it was compatible. If it wasn’t, you may have been able to get buggy support via a hacked driver, a driver that ran on some sort of Windows compatibility layer, or the hardware just wouldn’t work at all. This usually meant that bleeding edge hardware was off the table. Want that latest graphics card to work? Too bad. Want the fastest, newest Wi-Fi card to work? Maybe if you were lucky (and definitely not if Realtek made the chipset in it).
You still see threads about this on forums and sites like Reddit to this day, especially with hardware that is very specialized and non-modular like Microsoft’s Surface devices, Macbooks, and the never-ending stream of “Ultrabooks.”
Hardware Then vs Hardware Now
In 2018 I’m fairly comfortable in saying that Linux has caught up with hardware. This is due to two things, I’ve noticed. The first is that Linux is coming in more and more devices as standard, so hardware manufacturers are now forced to support their chipsets in these devices. The second is that the explosive technology growth in hardware has slowed down tremendously, and in some instances has even taken a step backwards. Let me explain.
To the first point, Linux is everywhere. Whether you see it or not, it’s everywhere. Take a look in the manual that came with your TV or even your car and you’re sure to find a list of GNU tools that are in use on that device. The infotainment system that Mazda uses is Linux. You can literally enable Wi-Fi and get a shell on the device. They don’t condone it, but don’t try much to stop you either. All of my Samsung TVs as well as the LG TV I use as a PC monitor run Linux. Android runs a modified Linux kernel, and how many pockets is that in right now? The Chrome OS runs the same Kernel as Android, and how many schools are packed full of Chromebooks?
To the second point, everything has really slowed. There are only a handful of manufacturers in the world that make RAM, display panels, chipsets, and CPUs. X86/64 and ARM are basically the only two processor choices. Nearly every peripheral bus except USB has died off, with the exception of Thunderbolt being recently introduced. For graphics you basically have three choices – ATI, nVidia and Intel – the former two being the biggest challenge with Linux traditionally, but they both now support it whole-hog. Everyone is moving to standards, and a lot of the proprietary stuff is gone.
As we’ve began to consolidate and standardize hardware, we’ve actually gone a bit backwards. Not in terms of performance, but in terms of how powerful our hardware is versus how powerful we need it to be. Most of what any desktop or mobile user needs to do real-world work can be done on a processor no more powerful than what’s in our cell phones. In fact, as is the case with things like RISC-based Chromebooks and even tablets, you’re basically getting a cell phone architecture in a larger package and it works well for both content consumption and creation.
There are still special use cases for very advanced and specialized hardware. Gaming, engineering, design and architecture work, the list goes on, but for most users something like an iPad, a Chromebook, or even their phones is enough to get real work and play done in 2018.
Most of the “apps” those users use every day are basically web pages, thinly disguised.
- Any social media “app” (Facebook, Pinterest, Instagram, Twitter, LinkedIn)
- Any video “app” (Netflix, YouTube, Amazon Prime Video, Hulu, etc.)
- Any email application (including Outlook)
- Applications like SSH/FTP/RDP/VNC clients
- Hosted storage (OneDrive, Dropbox, Google Drive)
- Web media creation engines (WordPress, WIX)
- Streaming audio services (Spotify, Deezer, Pandora)
- The full Microsoft Office and Apple iWork suite
All of these can run in an HTML5 browser. You don’t need to download and install anything for any of them. It’s pretty amazing if you think about it.
Linux and Hardware in 2018
Everything above taken in to consideration, this places Linux in a good spot as a full desktop replacement in 2018. Unless you’re running an exotic piece of hardware, or a piece of hardware with some very proprietary component (Apple Touchbar I’m looking at you), chances are very good that all of your hardware will be supported straight out of the box. The stagnation and consolidation of hardware helps with this out-of-the-box functionality, the adoption of open standards by several manufacturers contributes to it, and the increased number and skill of Linux developers (who are seldom compensated for their hard work) contributes to it. It sort of all came together as the perfect storm.
I built my current PC late last year. It’s not a hardware marvel by any means. I think I spent around $1500 and re-used some of the components from a previous build. Specs as follows:
- AORUS Z270X Gaming 5 Motherboard (Intel Z270 chipset)
- Intel Core i7-7700K CPU, Thermaltake Riing RGB liquid cooler
- 32GB of Corsair DDR4 RAM
- GeForce GTX 1070 8GB GPU
- Samsung EVO 960 NVME SSD, 512GB
- Western Digital 4TB SATA HDD
- Native Instruments Komplete Audio 6 USB audio device (I need balanced audio outputs)
- Edimax AC1200 PCI-E 802.11ac Wi-Fi adapter
It’s not going to win any awards for speed, but it’s a solid system built in fairly common components. It games well and I use it for AV and photo editing without a problem. It works for me, basically.
Before I go any further I should say that I’m fairly OS-agnostic. I switch back and forth between PC and macOS fairly often. I like Apple’s hardware very much (although their new keyboards are awful), and more than that I really love macOS, and much prefer it to Windows. Still I understand though that for gaming, macOS is awful, and in 2018 sees even less love by game developers than does Linux. Given how many games were made for Macs in the 80s and 90s, I bet nobody though that they’d see the day when more of their personal games library (Steam today) supports Linux over Mac’s OS offering.
I was shocked to see that given the few distributions that I’ve tried so far, all of my hardware was completely supported out of the box. Ticking the checkbox during install that asked if I wanted proprietary drivers installed even downloaded and installed the latest video drivers from nVidia themselves. Not a special “Linux-only” buggy driver, but a rock-solid full-featured current-version driver, the same version that they have listed for download for Windows. I thought that maybe my Native Instruments Komplete 6 audio interface device or the weird Edimax PCI-E Wi-Fi card would be a problem, but all worked out of the box. All of the inputs and outputs on the NI Komplete were recognized and work.
I don’t game a lot on PC, and I’ve had Steam since it was required for Half-Life 2 back in 2004. Much to my surprise, installation on Linux was as simple as a Windows install and of my 171 game library, 54 games are supported, including some of my HTC Vive games. The last time I installed Steam in macOS only around 20 games from my library were supported. Is roughly a third of the overall library being supported amazing? Not really, but it’s much more than I thought would be. It is good to see that of the games that are supported, most of them are the newer titles, and most are from indy developers, which tend to be my favorite games as of late.
I played Cities Skylines today in full 4K 60 Hz resolution for most of the day, and it ran without a stutter. No glitches, no crashing, and my frame rates were higher than when I play it in Windows – even with a massive city and thousands of buildings on screen at once. I’m not going to lie, this made me breathe a sigh of relief knowing that I wasn’t going to have to relegate my nice video card to desktop-only duty or Tux Racer.
I’m slowly finding alternatives for my Windows applications as well. Kdenlive is a good replacement for Premier Pro for non-linear video editing. I’m sure it doesn’t support all of the features of Premier Pro, but it does everything I need it to. I admit that I’m not the biggest fan of GIMP when compared to Photoshop (though it has gotten much better over the years), but it should do what I need it to, and if it doesn’t I always have the option of running Photoshop in a VM. Darktable is a pretty great replacement for Lightroom, though the UI will take some getting used to. Not a huge deal though since when I do use Lightroom my workflow usually takes me to my 12″ iPad Pro, since my camera syncs to it via Wi-Fi and the display is so nice on that device.
Conclusion? There isn’t one yet. I’m still in the test phase. I use my desktop infrequently enough that it should be fairly easy to make the full-time switch to Linux. Casual gaming, some Photoshop or Premier work here and there (less since I’ve stopped doing YouTube content creation), and some “work stuff” – which can largely be accomplished via Remote Desktop Services anyway.
I like the fact that I have such a powerful command line and that most of the “apps” and services I use are either directly built-in or can be accessed from a curated package manager. I still have access to some of my Steam library, and I have access to a full backlog of console and arcade games via emulators that I still need to get to, so gaming here is a non-issue. PCSX2 is supported on Linux as well, so you can emulate all the way up to PS2. I’ve got a small backlog there too, so seeing a Linux port of that was nice.
I’d be lying if I said everything was roses. I’m on a 4K monitor (LG TV) so scaling is a little weird. Various distributions support it in various different ways. I first tried KDE Plasma, which I liked other than the fact that scaling seemed to break the UI in a lot of applications. That wasn’t usable. Linux Mint has been much better in that regard, but still only offers the option of 1X or 2X scaling. A 1.5X would be nice given my display size, since 2X is too big. It was remedied by reducing on screen font sizes but it’s still not perfect. To be fair Windows still sucks at display scaling for high DPI monitors too. It seems that macOS is the only OS I’ve seen that’s good/consistent at it.
I also have no supported way of controlling the RGB on my motherboard, liquid cooler, or keyboard. I found a Github project for the liquid cooler, but haven’t tried it yet. A quick search for the RGB on my specific motherboard didn’t yield anything but I have to admit I didn’t search too long. Also, half of the blue LEDs on my RGB Logitech G410 are burned out, so I have the back lighting disabled on that device anyway.
All in all it’s been a fairly great experience so far. Surprisingly smooth and stable. I look forward to continuing the experiment.
If you enjoyed this tutorial and would like to see more, please feel free to share this article on social media, comment below letting me know what else you’d like to see, and follow me on Twitter @JROlmstead.