Linux Archive

The trials and tribulations of video decoding on Linux

I like using Linux. I use it on my desktop – especially now that League of Legends runs incredibly well on Linux thanks to the Lutris and League of Linux reddit community. I’d also like to use Linux on my laptop (an XPS 13 9370), but here I run into a major hurdle that despite a lot of trials and tribulations, I have been unable to overcome: playing video. Of course, Linux – in my case, Linux Mint – can play any format under the sun just fine, either locally, on-demand, or streaming, and in my case, it’s YouTube video that matters (720p-1080p). The problem lies not in what desktop Linux can play, but in how it does so. Decoding video on my laptop running Linux is apparently remarkably inefficient, to the point where the processor reaches temperatures of 60-70°C, and since the fan kicks in at around 60°C, watching video on Linux means constant fan noise. When playing the same videos on Windows on the exact same laptop, temperatures stay comfortably below 40°C, without ever even coming close to spinning up a fan. I have tried everything. Here’s an itemised list of things I’ve tried, including multiple different combinations: I’ve installed tlp. This has had no effect. I’ve manually configured my processor – through tlp – to make sure it doesn’t turbo beyond 50%. This has had no effect. I’ve disabled Intel Turbo Boost in UEFI altogether. This has had no effect. I’ve undervolted my CPU. This gives me maybe 1-2 degrees every now and then, so effectively it hasn’t helped. I’ve tried the latest mainline kernel just to see if there’s been improvements in power management or any Intel drivers. This has had no effect. I’ve tried the Chromium builds with VAAPI support to enable hardware acceleration on YouTube video. This has had no effect. I’ve tried downloading YouTube videos with youtube-dl and playing them back locally. This has had no effect. I’ve tried forcing H264 on YouTube. This has had no effect. There’s probably things I’ve tried that I’ve forgotten about and thus aren’t on this list. As you can imagine, my past few days and weeks have been frustrating, to say the least. I even decided to install Linux Mint on my Surface Pro 4 to see if similar problems pop-up there, and lo and behold, that device, too, sees massive temperature spikes when using Linux instead of Windows. I understand and can accept if Linux isn’t as efficient as Windows when it comes to power management and decoding video, and am okay with a few degrees here and there. However, I just cannot understand nor accept a 20-30°C difference with something as elemental as decoding video. After all of this, I can only conclude that desktop Linux has an incredibly bad video decoding pipeline compared to Windows, and considering I’ve been struggling with this several times over the past few years without any noticeable improvement, it seems like it’s not something high on anybody’s list of things to improve. Linux’ inefficient video decoding pipeline won’t be much of an issue on desktop machines – playing video has virtually no material temperature impact on my desktop since my custom watercooled GTX 1070 and i7-7700K are way overkill – but on thermally constrained laptops, the problem becomes massively apparent. It is frustrating. I prefer Linux over Windows, I want to use it on my laptop, but as it stands now, I simply can’t. I’m at my wits’ end.

Writing userspace USB drivers for abandoned devices

I recently found some USB devices on eBay (Epiphan VGA2USB LR) that could take VGA as input and present the output as a webcam. Given that I was keen on the idea of not needing to lug out a VGA monitor ever again and there was claimed Linux support I took the risk and bought the whole job lot for about £20 (25 USD). When they arrived, I plugged one in under the expectation that it would come up as USB UVC Devices but they did not. Was I missing something? Turns out that he was, and that was the start of a rather wild ride.

Tails 4.0 released

We are especially proud to present you Tails 4.0, the first version of Tails based on Debian 10 (Buster). It brings new versions of most of the software included in Tails and some important usability and performance improvements. Tails 4.0 introduces more changes than any other version since years. The list of changes is indeed quite long, and note that it contains quite a number of security fixes too, so you should update as quickly as possible.

Samsung’s ‘Linux on DeX’ project shuts down after just 11 months

The desktop environment that turns your Samsung phone or tablet into a PC when connected to an external display, nicknamed ‘DeX,’ has been around for a while now. Nearly a year ago, Samsung introduced the Linux on DeX beta, which could run a full Linux OS on top of DeX. Sadly, the project seems to have been discontinued. Samsung is sending out an email to testers explaining that the beta program has ended, and that Linux on DeX will not be supported on devices running Android 10. That’s definitely a bit of a shame. While I haven’t yet tried Dex on my brand new Note 10+, the idea of messing around with a full Linux distribution running on my phone was a neat and interesting concept.

Linux From Scratch stable version 9.0 released

Linux From Scratch (LFS), a project that provides you with step-by-step instructions for building your own custom Linux system, has released a new version of their book in two versions (without and with systemd): The Linux From Scratch community announces the release of LFS Version 9.0. Major changes include toolchain updates to glibc-2.30, and gcc-9.2.0. In total, 33 packages were updated since the last release. Changes to the text have also been made throughout the book. The Linux kernel has also been updated to version 5.2.8. You can read the book online, or download to read locally. In coordination with this release, a new version of LFS using the systemd package is also being released. This package implements the newer systemd style of system initialization and control and is consistent with LFS in most packages. You can read the systemd version of the book online at LFS-systemd, or download-systemd to read locally. The Beyond Linux From Scratch (BLFS) project, which extends the LFS project by providing “instructions for installing and configuring various packages on top of a base LFS system”, such as server and desktop software and libraries, also announced an accompanying release: The BLFS Team is proud to present version 9.0 of Beyond Linux From Scratch. This version includes approximately 1000 packages beyond the base Linux From Scratch Version 9.0 book. The book has 850 updates from the previous version plus many other text and formatting changes. The System V version of the book now has added Gnome as an additional desktop environment in addition to the previous KDE/plasma, xfce, and lxde environments. This is a coordinated release with BLFS-9.0-systemd. You can view the 9.0 version at online or download to read locally. You can view the 9.0 systemd version at online systemd or download-systemd to read locally. I’ve been wanting to set up an LFS system as a learning experience for almost two decades now. I really have to stop putting it off.

How and why EasyOS is different

EasyOS is designed from scratch to support containers. Any app can run in a container, in fact an entire desktop can run in a container. Container management is by a simple GUI, no messing around on the commandline. The container mechanism is named Easy Containers, and is designed from scratch (Docker, LXC, etc are not used). Easy Containers are extremely efficient, with almost no overhead — the base size of each container is only several KB. This is just one of the details of EasyOS, an experimental Linux distribution that really does things differently.

Linux 5.3 released

Linux 5.3 has been released. This release includes support for AMD Navi GPUs; support for the umwait x86 instructions that let processes wait for short amounts of time without spinning loops; a ‘utilization clamping’ mechanism that is used to boost interactivity on power-asymmetric CPUs used in phones; a new pidfd_open(2) system call that completes the work done to let users deal with the PID reuse problem; 16 millions of new IPv4 addresses in the 0.0.0.0/8 range are made available; support for Zhaoxin x86 CPUs; support Intel Speed Select for easier power selection in Xeon servers; and support for the lightweight hypervisor ACRN, built for embedded IoT devices. As always, many other new drivers and improvements can be found in the changelog.

Knoppix 8.6 first wide public release to abandon systemd

Version 8.6 of the popular Debian-derived Linux distribution Knoppix was released on Sunday, rebasing the distribution on Debian 10 (Buster)—released on July 9—with select packages from Debian’s testing and unstable branches to enable support for newer graphics hardware. Knoppix is among the first Linux distributions that can be run live from a DVD, and continues to enjoy a great deal of popularity among Linux enthusiasts. Knoppix 8.6 is notable for being the first publicly-released version of the distribution to abandon systemd, an init system built by Red Hat’s Lennart Poettering intended to replace sysvinit. While adoption of systemd was the subject of considerable controversy and criticism, it is the mainstream default, used by Knoppix’s upstream Debian, as well as other Debian forks such as Ubuntu and Mint; RHEL, CentOS, and Fedora; openSUSE and SLES, as well as Mageia, and by default in Arch. I stay far away from the systemd debate – mostly because I honestly have no clue – but I was actually kind of surprised Knoppix was still around. It’s one of the oldest Linux live CDs around, and somehow I find it comforting that it’s still seeing development.

Microsoft wants exFAT in the Linux kernel

Microsoft ♥ Linux – we say that a lot, and we mean it! Today we’re pleased to announce that Microsoft is supporting the addition of Microsoft’s exFAT technology to the Linux kernel. It’s important to us that the Linux community can make use of exFAT included in the Linux kernel with confidence. To this end, we will be making Microsoft’s technical specification for exFAT publicly available to facilitate development of conformant, interoperable implementations. We also support the eventual inclusion of a Linux kernel with exFAT support in a future revision of the Open Invention Network’s Linux System Definition, where, once accepted, the code will benefit from the defensive patent commitments of OIN’s 3040+ members and licensees. Microsoft has been using its exFAT patents to bat Linux companies over the head with for close to two decades, and it was an important pillar of Microsoft’s strategy of extracting patent licensing fees from all kinds of entities using Linux. Seeing this finally come to a complete and non-negotiable end is a sight to behold, but it does make me wonder – was it really all necessary? Was it worth it? It seems like to me it really wasn’t – in fact, it’s been a catastrophic failure. Linux is now the single most popular operating system in the world, shipping on more devices and hardware than any other. No amount of silly troll patents were going to stop that.

Moving the Linux desktop to another reality

Today, we are very excited to announce a new open source project which enables interaction with traditional desktop environments, such as GNOME and KDE, in VR. Sponsored by Valve, xrdesktop makes window managers aware of VR and is able to use VR runtimes to render desktop windows in 3D space, with the ability of manipulating them with VR controllers and generating mouse and keyboard input from VR. At least the time Valve isn’t spending on making the Steam client not suck or, you know, games, is spent on something worthwhile – improving often neglected aspects of the Linux world.

Extending the Linux kernel with built-in kernel headers

Linux kernel headers are the unstable, constantly-changing, internal API of the kernel. This includes internal kernel structures (for example, task_struct) as well as helper macros and functions. Unlike the UAPI headers used to build userspace programs that are stable and backward-compatible, the internal kernel headers can change at any time and any release. While this allows the kernel unlimited flexibility to evolve and change, it presents some difficulties for code that needs to be loaded into the kernel at runtime and executed in kernel context. My solution to the problem is to embed the kernel headers within the kernel image itself and make it available through the sysfs virtual filesystem (usually mounted at /sys) as a compressed archive file (/sys/kernel/kheaders.tar.xz). This archive can be uncompressed as needed to a temporary directory. This simple change guarantees that the headers are always shipped with the running kernel. This change has been added to version 5.2 of the Linux kernel.

Unikernels: the next stage of Linux’s dominance

Unikernels have demonstrated enormous advantages over Linux in many important domains, causing some to propose that the days of Linux’s dominance may be coming to an end. On the contrary, we believe that unikernels’ advantages represent the next natural evolution for Linux, as it can adopt the best ideas from the unikernel approach and, along with its battle-tested codebase and large open source community, continue to dominate. In this paper, we posit that an up-streamable unikernel target is achievable from the Linux kernel, and, through an early Linux unikernel prototype, demonstrate that some simple changes can bring dramatic performance advantages. A scientific paper on the subject.

Digging into the new features in OpenZFS post-Linux migration

ZFS on Linux 0.8 (ZoL) brought tons of new features and performance improvements when it was released on May 23. They came after Delphix announced that it was migrating its own product to Linux back in March 2018. We’ll go over some of the most exciting May features (like ZFS native encryption) here today. For the full list—including both new features and performance improvements not covered here—you can visit the ZoL 0.8.0 release on Github. (Note that ZoL 0.8.1 was released last week, but since ZFS on Linux follows semantic versioning, it’s a bugfix release only.)

Why Linux on Desktop ‘Failed’: A discussion with Mark Shuttleworth

In an interesting video interview, Canonical founder Mark Shuttleworth shares his thoughts on desktop Linux. Some of his most prominent statements include: “I think the bigger challenge has been that we haven’t invented anything in the Linux that was like deeply, powerfully ahead of its time” and, “if in the free software community we only allow ourselves to talk about things that look like something that already exists, then we’re sort of defining ourselves as a series of forks and fragmentations.”

Linux distributions without systemd

If you are reading this post you’re very much likely not a fan of systemd already. So we won’t preach on why systemd is bad, but today we’ll focus more on what are the alternatives out there. Our approach is obviously not for settling for less but for changing things for the better. We have started the world after systemd project some time ago and the search isn’t over. So what are the non-systemd distros out there? I’ll be honest and say that I completely missed the systemd controversy back when it happened, and while I’ve tried reading up on the criticism of systemd, I clearly lack the technical acumen to say anything meaningful about it either way. But hey, for those of you out there who don’t like systemd – this one’s for you.

The 101 of ELF files on Linux: understanding and analysis

Some of the true craftsmanship in the world we take for granted. One of these things is the common tools on Linux, like ps and ls. Even though the commands might be perceived as simple, there is more to it when looking under the hood. This is where ELF or the Executable and Linkable Format comes in. A file format that used a lot, yet truly understood by only a few. Let’s get this understanding with this introduction tutorial! Some light reading for the weekend.

All Chromebooks will also be Linux laptops going forward

At Google I/O, Google quietly announced that “all devices launched this year will be Linux-ready right out of the box.” A ZDNet article has more details. Earlier, you could run Debian, Ubuntu and Kali Linux on Chrome OS using the open-source Crouton program in a chroot container. Or, you could run Gallium OS, a third-party, Xubuntu Chromebook-specific Linux variant. But it wasn’t easy. Now? It’s as simple as simple can be. Just open the Chrome OS app switcher by pressing the Search/Launcher key and then type “Terminal”. This launches the Termina VM, which will start running a Debian 9.0 Stretch Linux container.

Linux 5.1 released

Linux 5.1 released has just been released. The main feature in this release is io_uring, a high-performance interface for asynchronous I/O. There are also improvements in fanotify to provide a scalable way of watching changes on large file systems, and it adds a method to allow safe delivery of signals in presence of PID reuse. Persistent memory can be used now as hot-plugabble RAM, Zstd compression levels have been made configurable in Btrfs, and there is a new cpuidle governor that makes better power management decisions than the menu governor. In addition, all 32 bit architectures have added the necessary syscalls to deal with the y2038 problem; and live patching has added support for creating cumulative patches. There are many other features and new drivers in the KernelNewbies changelog.

Reasons to abandon Windows for Linux

Had enough of Windows 10’s hassles? Unless you plan to install Windows 7, which is going to lose support from Microsoft on January 14, 2020, or have the cash to spare for an Apple device, there aren’t many other options for a computer operating system except some flavor of Linux. Although you can expect a learning curve when changing platforms, Windows users who are curious about the state of Linux for mainstream computing might come away surprisingly satisfied after finding a suitable distribution for their machine and spending time getting familiar with the new environment. Here are five-plus reasons why you could easily wind up preferring Linux instead of Windows as the default operating system on your desktop or laptop. Regardless of any preferences you think you might have, assuming you have the means to do so, it is always a good idea set some time apart every now and then and take a good look at the system you’re using, possible alternatives, and how difficult it would be to switch. This fosters the kind of thinking that prevents you from being locked into a platform or ecosystem too easily.

Linux desktop setup

My software setup has been surprisingly constant over the last decade, after a few years of experimentation since I initially switched to Linux in 2006. It might be interesting to look back in another 10 years and see what changed. A quick overview of what’s running as I’m writing this post. A detailed overview of a terminal-oriented Linux software setup. There’s obviously countless setups like this, but this post is quite detailed and possibly contains some ideas for others.