10.03.21

On Nvidia Cards and GNU/Linux: Why You Should Make Sure Your Next PC Doesn’t Have an Nvidia Card

Posted in GNU/Linux, Hardware at 8:05 am by Guest Editorial Team

Guest post by Ryan, reprinted with permission from the original

Back in the days, nobody made a good GNU/Linux graphics solution that had an open source driver stack.

In fact, even today 15 or 20 years later, AMD and Intel do not have drivers that are fully open or Free (as in Freedom). All of the big three require at least signed binary-only firmware modules to be downloaded into the cards, or else they don’t expose their 3d engines to the operating system, and without that, you won’t be doing much of anything.

But Nvidia has been a longtime thorn in the side of the GNU/Linux desktop user. On one hand, there’s the argument that when you load their proprietary driver, you get great performance. I’m not here to argue this point because nobody is saying you won’t.

“Since Nvidia’s driver is not supported by Linux, it may run, but nobody will know how to help you when it causes problems.”What I will argue, instead, is the maintainability problems and the ethical side of the debate.

When you choose Nvidia, instead of funding hardware companies that put working drivers into the Linux kernel, X11, Wayland, and Mesa3d (an open source implementation of OpenGL and Vulkan 3d graphics APIs), you give money to a company that bypasses the GNU/Linux driver stack and tosses a large “blob” of code that’s literally just a Windows driver that they ported over with a “kernel glue layer”.

Many people consider it to be illegal to ship an operating system with this driver included, which is why most of them make you go get it somehow, and bolt it on after the fact. The process isn’t even consistent because there’s as many ways to do it as there are distributions you could install it on.

Although Nvidia’s license doesn’t disallow it, Linux is under the GNU General Public License, which says that anything that is linked to the kernel and distributed with it is a derived work.

“Nvidia likes to refuse to implement standard programming interfaces and then demand that unpaid (by Nvidia, at least) Free Software developers instead port their project to Nvidia’s alternative facts.”Therefore, if a distribution ships Nvidia’s proprietary driver in a way that you don’t have to do anything in order to get it, they’re a GPL violator. Plain and simple. The Linux maintainers probably won’t enforce it, but it’s still wrong.

Debian and many other distributions warn (in neutral language, but most people have no reason to use the proprietary AMD driver since the open source one is fine) that if you get the Nvidia driver straight from Nvidia’s website, and install it, it will only work for the kernel you installed it with.

As soon as your distribution ships a new kernel, it will have a different application binary interface, and even if somehow it does not, Nvidia’s generic installer package isn’t set up to where it would place a new module into the new kernel. In fact, even if you do get Nvidia’s driver from a source that rebuilds it automatically, you have to wait until dkms rebuilds it each time you get a new kernel. That doesn’t happen a lot with Debian, but new kernels arrive all the time in Fedora. It also adds complexity, and something that might fail.

Also, I think that with Microsoft’s “Security Theater Boot” turned on, you can’t actually install Nvidia’s package directly. It needs to be from your distribution so they can sign it. Not that this will stop Nvidia’s installer from saying it succeeded, but when you reboot you’ll see a security policy violation instead of your OS booting. Lovely.

I don’t know exactly how badly this would break these days, because I got tired of Nvidia and was one of the earliest adopters of AMD’s Evergreen series (Radeon HD 5xxx) when they announced an open source solution. At the time I last saw, the kernel would boot the broken configuration Nvidia left it in and then X11 wouldn’t start because the settings referenced a driver setup that no longer existed.

Further, Nvidia would overwrite the system’s OpenGL drivers, so if you removed their driver and installed a competitor’s product, it wouldn’t function properly if it used Mesa3d to provide OpenGL, at least unless you knew how to fix it, or until your operating system installed an update that replaced Mesa3d’s missing libGL.so library. It also left behind deliberately misconfigured settings files all over the OS.

The Romans used to call this “poisoning the well”. If they couldn’t hold territory that they invaded, nobody else could have it either.

Since Nvidia’s driver is not supported by Linux, it may run, but nobody will know how to help you when it causes problems.

Loading the Nvidia module “taints” the kernel, so that you can’t file bug reports. Every kernel developer I’ve talked to was fed up with wasting their time when the Nvidia driver causes bugs all over the kernel tree, including sometimes in the printing system, the file system, and the input devices, or causes an internal structure to become corrupt resulting in a system crash.

Hey, why would you want stability anyway?

So they fixed the problem on their end by ignoring bug reports from people with this driver loaded. Since they can’t fix the driver, and you can’t ask them to, go talk to Nvidia. But Nvidia doesn’t always care. Like most companies, if they can hide behind the fact that you can’t “prove it” or at least that you have no power to compel them to fix it, they will, and things stay broken.

Since Nvidia doesn’t implement standard GNU/Linux, X, Wayland, and Mesa interfaces, sometimes their users don’t get features that the rest of us do for years, or at all.

Nvidia likes to refuse to implement standard programming interfaces and then demand that unpaid (by Nvidia, at least) Free Software developers instead port their project to Nvidia’s alternative facts.

This is sleazy because it abuses the Free Software developers and forces them to do unpaid work for Nvidia to keep their users happy. In the case of GNOME, you couldn’t use the Wayland session at all on Nvidia cards for years. Then it loaded but was too broken to use for years. And I think you can use it now.

Not because Nvidia fixed anything, but because Red Hat implemented a nasty hack that got “XWayland” to run, and you need that for a ton of software, even today, including Wine (to run Windows programs).

But you’ll get used to nasty hacks soon enough if you use proprietary drivers. In fact, most vendors aren’t even as “good” as Nvidia about ever updating them again.

Did I tell you the story about my Avermedia TV Tuner Card that only worked on 32-bit Ubuntu 8.04 and never got updated again? It crashed the kernel too. Cool story, right? I know.

In the past, Nvidia wrote a very slow 2d-only driver called NV.

The only reason it existed was so that X11 would have something to load so you could load the proprietary driver. Today, the “stub” (although on older cards it usually works well enough to keep) usually ends up being nouveau.

If you have an old Nvidia card, nouveau (a reverse engineered open source driver) might run it satisfactorily, but almost certainly won’t if the card is new.

Early on, I was excited for nouveau because they were reverse engineering the card’s firmware too, which meant you didn’t need anything from Nvidia to make the supported cards work.

Then Nvidia announced that they would enforce firmware signing. Allegedly for security reasons, but really because they don’t want anyone to know how their cards work. At all. Not on the driver level, but especially not in firmware.

So they made their binary-only firmware redistributable, but mostly don’t contribute to the nouveau driver. So you would have the same firmware situation (binary-only, redistributable) as with the other drivers, only without an open source operating system-level driver to run the card correctly once it was initialized. The worst possible outcome.

If you need high performance graphics, the AMD open source driver is good. If you just need acceptable graphics in a laptop, Intel’s graphics are at least alright, and both have open source drivers you don’t ever have to configure or think about.

If you install a new operating system component that relates to the drivers, you get a newer version of that component, and it all happens behind the scenes while you use the computer normally.

In software development, there’s a term called technical debt, where a solution that is “fast and easy” at first becomes a snowballing burden that causes more work for you to maintain than having just done things right the first time.

Nvidia will cause you more work and problems than they are worth, even if their products are a bit faster than the competing ones in the lineup.

Right, but how bad can Nvidia be?

I gave away my last Nvidia card and forked the Linux kernel and brought in updated Mesa3d packages before there was a proper release working with my AMD Evergreen card to get early access to AMD’s code. This was somehow more pleasant than dealing with a crashing unstable system due to the Nvidia driver.

Today, over a decade later, you obviously wouldn’t even need to do that, if you want an AMD card, because the infrastructure is mature.

Nvidia does nasty things to Windows users too.

They do market segmentation and use their driver to selectively cripple the hardware. At one point, last year I think, they used the driver to limit bitcoin mining, but Nvidia ultimately proved themselves to be too stupid to enforce that when they accidentally leaked a driver that didn’t enforce the hash rate limiter.

Most of the “updates” to make particular applications work “better” just disable features in the program that their hardware doesn’t get along well with and which is making them look bad. Then the framerate goes up. It doesn’t actually make the game or application any better.

In fact, it may look worse. Speed cheats have been around in proprietary video drivers for a long time. ATI even did it with Quake. At that point in time, it was so crude that if you wanted to cause the driver not to load the hacks, I believe you just needed to rename the executable file for the game.

Nvidia has a history of killing companies that do innovate.

When they bought 3dfx and shut them down, for example. 3dfx had better products, but had run into financial dire straits, and so Nvidia bought them simply to acquire patents, eliminate a competitor, and then keep pushing Nvidia junk on us.

Like most companies, they use others, but they don’t contribute.

Like Microsoft not paying taxes, but getting government contracts anyway, Nvidia treats the organizations that make it possible to run their products at all on GNU/Linux badly.

Recently, the Xorg maintainers have lamented the fact that nobody in the industry wants to step up and even be a stable release branch maintainer. For a long time, the stable release branch maintainer was Apple, which at least needed a working X Server, for XQuartz (similar to XWayland in concept), but now Xorg is basically bit rotting, while companies that make serious bank off of GNU/Linux business, such as Nvidia, let it happen, and won’t even lift a finger to assist in making bugfix releases to this thing that’s almost in mothball development mode.

IBM/Red Hat’s solution to Xorg rotting away is to try to take the next step away from it on GNU/Linux and just abandon the pieces that Wayland doesn’t use. Even Debian 11 with GNOME doesn’t strictly need all of Xorg in order to run properly these days. With Wayland-compatible graphics, you could run a system with no Xorg, only XWayland, but I think we’re still a couple of years off from ditching Xorg. Ubuntu still defaults to it for reasons, and some of those reasons are Nvidia won’t help make their cards work well in Wayland, but also won’t help maintain Xorg.

Giving money to Nvidia helps them harm us and set us back.

Funding Nvidia is similar in concept, I think, to funding hostile countries that have oil that sponsor terror and politicians who deny global warming instead of having public transportation.

Okay, well, maybe it’s not THAT bad, but you get my point. That it takes money that could go to a company that actually supports us and minimizes the overall harm to the computing ecosystem that we all benefit from, and sends it to a company hostile to all things Free and Open Source, which makes massive profits, and then won’t support the infrastructure.

Nvidia is riding high on a Bitcoin Bubble.

I really hope, for many reasons, this crashes, hard and fast, someday soon, and that it completely hoses Nvidia when it does. We would be better off with Nvidia in bankruptcy than churning out products that are this harmful and corrosive to our cause.

But you can help, a little, in your individual capacity, by not buying anything that has an Nvidia logo on it.

When I was critical of Nvidia in the Fedora support channels, I was warned that I violated their Code of Conduct by “insulting” a company. This is just one of the many reasons I won’t use Fedora anymore. Their community is gone, their other desktop spins are horrible, their main spin doesn’t work all that well these days and the people making the decisions do bizarre and incomprehensible things, but the idea that you can’t speak openly, and honestly, and not even in a profane manner about Nvidia… And how do you insult a company anyway, and why would anyone honestly care if you did?

Fedora’s position is “These Nvidia devices are out there and you can’t avoid them, especially on laptops.”. I have three laptops and zero Nvidia chips in them. It must be because that’s impossible.

Lenovo Ships ThinkBook 15 Gen2 ITL Series Full of UEFI BIOS ACPI Bugs, Releases Half a Dozen BIOS Updates, and Doesn’t Fix the Bugs

Posted in GNU/Linux, Hardware, Lenovo, Microsoft at 5:28 am by Dr. Roy Schestowitz

Guest post by Ryan, reprinted with permission from the original

For those who wonder what an OEM like Lenovo actually ships in their uEFI firmware, and what Microsoft Windows simply works around and helps them hide, take a gander at the Linux kernel’s log below.

Linux works around the bugs too, but Windows actually hides them from you!

Here’s a Google search from some of LOL NO VO’s other satisfied customers, with their “business grade” solution.

Lenovo’s “support” people in the forums don’t know anything, but they mostly deal with crap like Windows and tell people how to turn it off and back on again.

Here’s an Ubuntu bug and what a Ubuntu developer has to say about at least some of this. (The person in question has a Lenovo Legion Y540-15IRH according to his DMI Decode dump. Which suggests these errors affect more than one of their product lines.)

But they slapped an Ubuntu Certified label on this ThinkBook 15 Gen2 ITL model I use, and other than this damned mess I had to sort out with the AX210 Wifi chip, it’s an okay laptop.

I just wish it wouldn’t shove all of this garbage in my face every time I boot it up. It appears right before the Debian bootsplash, and although LOL NO VO Ubuntu Certified this thing with some sort of Linux 5.6-OEM kernel that Ubuntu 20.04 autodetects, I can’t imagine that it could work very well with that kernel. The Wifi is still touch and go and you have to put it in AC only mode and cherry pick Linux 5.10.70 out of Debian-Proposed (or wait until Debian 11.1 to install it, but you can probably make it work okay until you can cherry pick the newer kernel. Just remember to turn off fast boot in Windows and shut the system down to fully clear the Windows driver out of the chipset’s memory first!).

Now, I will directly quote the Ubuntu developer, Alex Hung:

“There are two types of ACPI errors observed: AE_ALREADY_EXISTS and AE_NOT_FOUND

The former, AE_ALREADY_EXISTS, usually happens

1) when BIOS loads multiple SSDTs (in /sys/firmware/acpi/tables) that contains the objects with the same names (and usually the same functions too). Naming conflicts prevent kernel to load all of them correctly.

2) BIOS’s ACPI methods are not serialized and multiple calls the same methods occur.

I would guess we are seeing scenario 1 here. They are usually harmless because a copy of working SSDT is loaded while duplicated ones are discarded.

The later, AE_NOT_FOUND, is the opposite. This occurs when BIOS does NOT load SSDTs and therefore kernel is not able to get information and perform accordingly.

Neither types of error messages can be fixed without BIOS fixes.

Fortunately, all of the failing ACPI methods are optional, and there are good chances that Linux / Ubuntu will work without them. There are three types of devices *might* be affected according to the error messages:

1. USB (\_SB.PCI0.XHC.RHUB…)- but USB ports and devices should just-work without BIOS code, which are usually for OEM customization.

2. Touchpad (\_SB.PCI0.I2Cx…) – error messages are reported for i2c-2 and i2c-3, but it is likely the touchpad is connected to i2c-1. Please check whether you are experience problems with your touchpad.

3. Switchable graphics (\_SB.PCI0.PEG0…)- but error messages are “AE_ALREADY_EXISTS”. lspci also shows no discrete VGA present on this system, and nothing to worry about.”

In other words:

Lenovo has made a damned mess, but left it there because of reasons, including the fact that operating systems don’t generally use uEFI drivers for anything because operating systems have their own, they perform better, and if I’m remembering the gist of this, once you exit boot services, you can’t use the ones from the system firmware anyway. Everything on this laptop works fine, including the HDMI port. The only exception is the fingerprint scanner built into the power button, but who cares?

Errors for touchpad devices that don’t even exist where it’s printing the error message for? My touchpad works fine. So, whatever I guess. I use a bluetooth mouse anyway.

“Regardless, I think Techrights needs to add this to why uEFI is no good.”Switchable (hybrid) graphics errors. I don’t have hybrid graphics on this system. In fact, when laptops usually ship with that, they tend to use an Nvidia “card” for the high performance chip, and I’ve had enough of Nvidia’s proprietary driver for 10 life times already. In fact, there _may_ be a BIOS option regarding hybrid graphics in my firmware setup. I may look there at some point and see if I can shut it up. Lenovo may have just left the setting on/off for laptops they ship like that?

Of course, some people on Gigabyte motherboards, as well as Dell and Acer laptops, seem to have these problems and some that actually affect the operation of the computer. So I guess Lenovo isn’t the absolute worst.

Regardless, I think Techrights needs to add this to why uEFI is no good. These are the same class of problems, and then some, that the buggiest of Legacy PC BIOS systems were known to sometimes have, and we were lied to and told that Microsoft and Intel would clean up that mess with uEFI, and they obviously didn’t. Windows is just the fridge that the equally proverbial cockroaches hide under.

However harmless some of these errors are, in practice, to a person who didn’t know better, they make Linux appear broken when it’s not.

But this behavior isn’t new at Microsoft.

What the user is supposed to do is feel uncomfortable, and when he has bugs, suspect that the problem is [the competitor’s product], and then go buy [our product].

Former Microsoft Senior Vice President Brad Silverberg

Regardless, here’s the eyesore I get to read about on my screen when my system is booting. Thanks, Lenovo.


[ 0.175571] ACPI: Added _OSI(Module Device)
[ 0.175571] ACPI: Added _OSI(Processor Device)
[ 0.175571] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.175571] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.175571] ACPI: Added _OSI(Linux-Dell-Video)
[ 0.175571] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[ 0.175571] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
[ 0.223165] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.TXHC.RHUB.SS01._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223171] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223173] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223174] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.TXHC.RHUB.SS01._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223177] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223178] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223180] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.TXHC.RHUB.SS02._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223183] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223184] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223185] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.TXHC.RHUB.SS02._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223187] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223188] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223190] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.TXHC.RHUB.SS03._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223192] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223194] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223195] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.TXHC.RHUB.SS03._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223197] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223198] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223200] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.TXHC.RHUB.SS04._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223202] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223204] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223205] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.TXHC.RHUB.SS04._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223207] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223208] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223210] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS01._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223212] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223213] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223214] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS01._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223217] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223218] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223337] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS02._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223340] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223341] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223342] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS02._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223344] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223346] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223347] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS03._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223349] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223351] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223352] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS03._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223354] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223355] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223407] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS04._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223409] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223411] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223412] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS04._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223414] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223415] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223417] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS05._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223419] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223421] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223422] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS05._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223424] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223425] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223427] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS06._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223429] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223430] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223431] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS06._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223433] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223435] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223436] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS07._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223438] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223440] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223441] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS07._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223443] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223444] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223446] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS08._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223448] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223450] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223450] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS08._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223453] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223454] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223572] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS09._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223574] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223576] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223577] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS09._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223579] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223580] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223698] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS10._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223700] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223702] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223703] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.HS10._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223705] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223706] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223824] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS01._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223826] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223827] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223828] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS01._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223830] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223832] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223833] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS02._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223836] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223837] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223838] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS02._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223840] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223842] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223843] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS03._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223845] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223847] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223848] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS03._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223850] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223851] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223853] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS04._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223855] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223856] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223857] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS04._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223859] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223861] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223862] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS05._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223864] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223866] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223867] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS05._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223869] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223870] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223872] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS06._UPC], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223874] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223875] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.223876] ACPI BIOS Error (bug): Failure creating named object [_SB.PC00.XHCI.RHUB.SS06._PLD], AE_ALREADY_EXISTS (20200925/dswload2-326)
[ 0.223878] ACPI Error: AE_ALREADY_EXISTS, During name lookup/catalog (20200925/psobject-220)
[ 0.223880] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0014)
[ 0.224477] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PC00.I2C0.TPD0], AE_NOT_FOUND (20200925/dswload2-162)
[ 0.224480] ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20200925/psobject-220)
[ 0.224481] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0010)
[ 0.224500] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PC00.I2C0.TPL1], AE_NOT_FOUND (20200925/dswload2-162)
[ 0.224502] ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20200925/psobject-220)
[ 0.224503] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0010)
[ 0.225016] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PCI0], AE_NOT_FOUND (20200925/dswload2-162)
[ 0.225018] ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20200925/psobject-220)
[ 0.225020] ACPI: Skipping parse of AML opcode: OpcodeName unavailable (0x0010)
[ 0.225234] ACPI: 19 ACPI AML tables successfully acquired and loaded
[ 0.225830] ACPI Error: AE_NOT_FOUND, While resolving a named reference package element – ^SPI1.SPFD.CVFD (20200925/dspkginit-438)
[ 0.225833] ACPI Error: AE_NOT_FOUND, While resolving a named reference package element – ^SPI1.SPFD.CVFD (20200925/dspkginit-438)
[ 0.225836] ACPI Error: AE_NOT_FOUND, While resolving a named reference package element – ^XHCI.RHUB.HS04.VI2C (20200925/dspkginit-438)
[ 0.225845] ACPI Error: AE_NOT_FOUND, While resolving a named reference package element – ^XHCI.RHUB.HS04.VI2C (20200925/dspkginit-438)

10.02.21

Microsoft Secure Boot and Intel VMD Pointless on GNU/Linux and Lenovo’s Documentation Recommends That You Turn Them Off

Posted in Deception, GNU/Linux, Hardware, Microsoft, Security at 2:32 pm by Guest Editorial Team

Guest post by Ryan, reprinted with permission from the original

Secure Boot is Microsoft trash that was designed to paper over some of the reputation of Windows as a malware plaything.

The problem is that Secure Boot doesn’t actually work. uEFI firmware has been so horrendously bad from its inception that there’s always a Secure Boot escape.

Microsoft introduced the Windows RT (ARM, not the standard x86 instruction set CPU) devices, based on Windows 8, and there was a Secure Boot escape almost immediately. It was necessary to escape Secure Boot were there to be any other operating systems for these devices, because there was no option to turn it off. Something that may be coming with new “Windows 11” PCs, since Secure Boot is required or else Windows will refuse to load.

“Sometime they lose billions of dollars and quietly write it down.”Someone got Grub (the bootloader program commonly used with GNU/Linux) to work on the Surface RT, but GNU/Linux was never ported to these things due to lack of interest at the time. Nobody bought the product and it was just another Microsoft FAIL. They have many of them, like Windows Phone. Sometime they lose billions of dollars and quietly write it down.

GNU/Linux has never had a big malware problem. Microsoft pays the “tech media” to imply otherwise, but it always turns out to be a bald-faced lie. More propaganda. More Microsoft bullshit!

In these churnalism articles, EVERYTHING with an open source license inevitably becomes “Linux”, even if it has the same problem on Windows. Even if it’s a part of Windows (like OpenSSL is). In some cases, when they refer to “Linux malware”, they mean malware that runs on Windows if you use the fake Linux (virtual machine with bad performance) in Windows, called WSL/WSL2.

And frankly, I’m getting sick and damned tired of Microsoft paying for this crap to be typed up and then Googlebombing Linux as part of their most recent smear campaign.

In South Park, Mr. Garrison, as a stand in for Donald Trump, defined something called DARVO, wherein the bully denies their bad behavior, then goes on the attack by reversing the victim and offender.

““Get The Facts”, “GPL is Communism”, and “Linux is a cancer”, never stopped. They just changed the signaling.”It’s hard to come up with a better description of what Microsoft has been doing for the past two decades. “Get The Facts”, “GPL is Communism”, and “Linux is a cancer”, never stopped. They just changed the signaling.

And of course, it’s easier to try to imply that GNU/Linux has problems than it is to fix your own Windows mess.

In the past 20 years, GNU/Linux has had fewer viruses and worms than you can count on your fingers which were even worth mentioning. None of them “just happened”, either. You had to defy GNU/Linux best practices of getting signed packages from your distribution or other trusted source, and grab random unsigned software from some internet site and jam it in somehow.

Grabbing random things from the Internet and hoping for the best is how most software gets installed on Windows.

In fact, according to most antivirus companies, Windows gets that in under a typical hour.

They don’t even try to keep up with detection patterns for most specific threats because they can’t. So, antivirus on Windows becomes mostly a guessing game except for the very most prevalent threats.

And when this happens, many threats are missed.

“Grabbing random things from the Internet and hoping for the best is how most software gets installed on Windows.”That’s why you hear about Ransomware attacks that mean no gasoline on the eastern seaboard of America or how a poultry plant can’t process chickens. The media, bribed by Microsoft money, never mentions Windows.

Windows Security is so godawful that they add tons and tons of fake security bullet points that are trivially bypassed and probably don’t do much except break legitimate applications that are just too old to anticipate them, or need to write somewhere and aren’t automatically allowed to.

Did you enable Controlled Folder Access to “protect against Ransomware” and now LibreOffice can’t save your documents?

Congratulations. Even though there are 4 ways to use the Windows system to evade this protection, and malware authors will do it, your LibreOffice broke.

“Disable Secure Boot and turn off Intel VMD.”What’s more telling is that Lenovo’s documentation on how to install GNU/Linux recommends changing uEFI (BIOS) settings.

Specifically, they tell you to do what I did when I changed over to Debian 11 GNU/Linux on this PC.

Disable Secure Boot and turn off Intel VMD. (VMD was previously called RST. Which is pointless under Linux, hides the storage from Linux and makes it impossible for you to install and use GNU/Linux until you figure out that this is why.)

Here’s some images from their PDF for installing Ubuntu on several of their notebooks.

Ubuntu setup
Ubuntu setup manual

VMD
VMD

Secure boot
‘Secure’ boot

Secure Boot is a bandaid for Windows.

Lenovo knows it. They support GNU/Linux on some of their models and probably don’t want their customers calling in when something like this inevitably happens again.

The uEFI key revocation problem struck me a while back when I had been running Kubuntu on my Lenovo Yoga 900-ISK2 (older laptop) and then went to boot Fedora. Ubuntu had “updated the dbx” and ended up revoking Microsoft’s permission (yes, you heard this right) for Fedora to run on MY LAPTOP.

“Moreover, with the mess that uEFI and Secure Boot have been over the last decade plus, why would I enable this antifeature when all it will cause is more problems for me?”So, it was at that point I disabled Secure Boot, which the Fedora Wiki said to do for the time being, as well as resetting the Secure Boot system in the BIOS, although I never turned it on again for obvious reasons. Why exactly, the hell, should Microsoft have any say over what I do with my laptop, which doesn’t even run their OS, ever?

Moreover, with the mess that uEFI and Secure Boot have been over the last decade plus, why would I enable this antifeature when all it will cause is more problems for me?

This is another reason why dual booting with Windows is unwise and you should just let GNU/Linux completely take over the PC. Not only does Windows ultimately end up hosing Grub and causing both systems to fail, but these key revocations can be pushed by Windows Update with total disregard for whether GNU/Linux will boot up again.

It’s bad enough that this Microsoft/Intel trash, uEFI, completely screwed up the relative simplicity of installing and using operating systems that the “Legacy BIOS” provided for, but it didn’t even improve anything.

Right before uEFI became common, I bought the best computer I could afford at the time, a quad core Phenom II based system, with a Legacy BIOS, expecting early uEFI to be a disaster, and it was.

“And even years later, there are killer pokes when operating systems use uEFI interfaces, and it’s becoming apparent that this situation is uEFI Groundhog Day. It’s always going to be broken.”Right off the bat, many OEMs permanently walled off the native interface and had it expose itself to the OS in (Legacy) BIOS mode because they knew their own native uEFI interfaces were too bad to trust, and the BIOS CSM sort of acted like a condom to filter what the OS was doing with the firmware, to prevent a “killer poke” that left the computer unusable.

And even years later, there are killer pokes when operating systems use uEFI interfaces, and it’s becoming apparent that this situation is uEFI Groundhog Day. It’s always going to be broken.

Ubuntu introduced the intel-spi driver in one release (I think it was an LTS, but don’t quote me.), and inadvertently caused the Yoga 900-ISK2’s settings to become read-only as soon as the pointless (to most people) driver was loaded. At the time, I was spared because it was part of the -staging tree for known bad drivers and ones that are not high enough quality to merge yet, and Fedora wasn’t building it. Many people booted Ubuntu after the new kernel went out and had to figure out how to fix their firmware after just booting the OS up even once!

“This is touted by people like Linux saboteur Matthew Garrett, who implemented Security Theater Boot in Linux as if it were an improvement.”Plus, there were/are still numerous cases where operating systems use a native uEFI interface as documented and the computer never boots again.

This is touted by people like Linux saboteur Matthew Garrett, who implemented Security Theater Boot in Linux as if it were an improvement.

It’s an improvement if we rewrite the dictionary to say that a convicted software monopolist that hates Linux and wants you to have problems with it, who sponsored Garrett indirectly to put it in the kernel, and succeeded, has improved the situation. I think my computer potentially not booting because of this rat’s nest is not an improvement, but what do I know, right?

“They don’t get any pushback ever since they started using their money to corrupt many organizations including the Linux Foundation.”Regardless, I think Lenovo’s advice of just shutting it off…. Look, you’re probably only going to hear me say this once or twice in my life. Listen to Lenovo!

All I can say is that the Free Software Foundation must be truly hopeless if it mostly gives awards to treacherous scumbags these days, and this is at least the second major incident. The first was when they gave Miguel de Icaza one for implementing the patent mess called Microsoft .NET Runtime on Linux. His company was bought by Microsoft as a golden parachute after Novell (his former employer, a Microsoft collaborator) went under.

In closing…

I’d like to summarize that this is a small taste of the bad behavior that continues at Microsoft. They don’t get any pushback ever since they started using their money to corrupt many organizations including the Linux Foundation.

Linus Torvalds has been put on mute even though he used to say things about Microsoft and Intel in particular that were not family-friendly.

Is there really any hope for the future of the x86 PC or are people who want their computing to work going to have to abandon it entirely in the era of Windows Vista 11?

Comments welcome.

07.18.21

A Longtime Reader’s Thoughts About Valve and Steamdeck (and What That Means to GNU/Linux)

Posted in DRM, GNU/Linux, Hardware at 5:57 pm by Dr. Roy Schestowitz

Video games fan
Versatility and general-purpose computing through a Trojan horse of sorts?

Summary: Another person’s interpretation of Valve’s strategy and motivations/ambitions

IN OUR Daily Links we continue to post additional news picks regarding last week’s big news from Valve, as noted in yesterday's post. It’s a bit of an ongoing story because additional details are gradually being revealed. In the next batch of Daily Links we’ll include some focus on Arch Linux and the response from Epic, which is a competitor. Microsoft isn’t even commenting. They seem to be somewhat rattled by the whole thing, as it devastates them on multiple fronts at the same time. It also seems like a good uplift for GNU/Linux on desktops and laptops — a frontier long sought by the loudest Free software enthusiasts.

Our reader Daniel sent us some thoughts, which are based partly on his personal experiences (I myself never used Steam and don’t intend to, either) and partly on what he read/saw. Daniel split that into 5 parts, as follows (with mild corrections in the English text as Daniel’s native tongue is Spanish):

1. You say “its [Valve's] successor to efforts like Proton, SteamOS (Debian), and Steam Machines that never quite materialised”.
I’m not sure if you mean “Steam Machines never materialized”, or “[all of that stuff are past efforts that] never materialized”.
The former is mostly right, whereas the latter mostly wrong. The device does use Proton (it’s pretty much alive and well, even without this device), and uses SteamOS (v3, Arch based, as they got away from Debian some time ago).
But this point wasn’t about correcting you (which I believe wasn’t necessary), but about focusing on your mention of the “efforts”. What are they doing these efforts for? It’s just about money?

The part about materialising was about Steam Machines alone. I’m not the first to point this out, as at least 2 more publications did the same. We included them in Daily Links.

The point is, for the uninitiated at least, Valve hoped to work with hardware partners on computers that have the Debian-based SteamOS preinstalled. That never quite happened at the end, perhaps because Steam surveyed the market, in the same way Palm did with “Foleo”.

This time will be different as the strategy is inherently different in a number of ways. Daniel continues:

2. You also say in the article’s summary: “Valve has chosen GNU/Linux for its power, not for its freedom”.
This is a typical interpretation from Free Software activists — and one that can ultimately be generalized in this way: “either they go fully Free software, or they have other interests — different from freedom”.
Of course I agree with that interpretation: Valve does have other interests, most likely reduced to just simply power and money.
But the thing I don’t like about that interpretation is the implicit binary narrative about freedom.
You see, part of the idea behind this thing they’re doing is this: “It’s a PC. You can do with it whatever you do with a PC. We don’t believe in restricting it.”
That is actually huge. I struggle to make people understand their computing devices (mobile phones, modern gaming consoles, smart TVs, and so on) are artificially-limited computers.
That point is actually about freedom.
They even actually say you can install on there stuff from their rivals (like EA or Microsoft), which contradicts the idea of them “simply wanting power and money”.
They clearly want to establish a hegemony. But that hegemony happens to be kinda OK to me (not the DRM part, of course).
My point: is not “simple” what they’re doing, in fact it is complicated, and so it also involves explicit increased degrees of freedom (specially in contrast with what the gaming ecosystem offers to people).
So I’m not so sure about your lecture. I believe freedom is one of the reasons behind the GNU/Linux choice. It’s not a binary choice between power and freedom, nor any other binary choice. And maybe not be exactly the freedom Free Software activists talk about. But it is partly about freedom, and a significant part of it.

Up to a certain point in time Sony did something similar with PS3. That was a very long time ago. Later came Google with Android (wherein freedom is being lessened over time). Valve would not be the first. This is mostly connected to the “general-purpose computing” battle, which is connected to “right to repair” more than Free (as in freedom) software. It’s the idea that people can do as they please with devices that they have purchased and therefore assume they own.

3. Remember also Steam’s history.
At first, it was revolutionary somehow inside the Windows ecosystem, at the cost of DRM.
Before involving GNU/Linux, gaming on Windows was already full of problems that Steam solved.
It was basically the same effect Netflix had on pirating [sic] movies, but for games: by giving comfort to the people by centralizing problem-solving, they got everybody on the boat.
That’s deeply problematic from a Free software point of view. But it is actually a happy event from a people’s experience perspective. People are just ignorant or unaware of the freedom they’re giving away, and so they have no problem with it.
To that point in history, Valve and Netflix are basically the same shit. However, at the gates of Windows 8, Steam declared war on Windows and went to GNU/Linux, even saying that Windows was a disaster for gaming.
Then “Steam for Linux” came out, and from that day on they never stopped pushing GNU/Linux gaming, even when we’re <2% of their user base 10 years later. And they keep working and keep on pushing GNU/Linux, no matter what “the market” says about it. If you also see that you can buy games without DRM and add them to Steam (so, Steam acts then as a CDN and not a DRM provider/encloser), that they allow stuff like sharing games, that they actually added code to drivers and software layers, and that they even make GNU/Linux-first hardware, they’re very far away from Netflix.
Valve has shown ideals. I doubt you or me will share those ideals any day soon. But they’re certainly not a two-bit power and money-hungry bunch of people like Microsoft or Netflix are. This is different.

Steam comes from a person who once worked for Microsoft. So he seems to be aware of how much of a danger they pose; GNU/Linux reduces Microsoft’s control over his company. Recall what Microsoft did to RealPlayer (and Networks).

As Daniel puts it:

4. Microsoft is their enemy, on various fronts. But it is not their only enemy.
With Steamdeck, Valve is also explicit about the goal of opening the door to other people doing hardware like this. It is not about buying their hardware but about changing the relationship people have with devices.
And so this hardware, strangely cheap for the product and at the same time strangely up-to-date, is also a declaration of war on the hardware front.
Valve is no longer a declared enemy of Microsoft and Windows, but WINTEL itself.
The time was perfect for striking a punch to Intel. And also a strong blow to Nintendo and Sony.
And with stuff like “this is a PC” they’re also taking distance from Apple, not just Microsoft: those bastards try to set “PC” as another word for “Windows”, and “Mac” as something different; Valve says otherwise, and not just by wordsmithing but by embracing GNU/Linux.

That’s an excellent point actually. They also embraced KDE and a distro (as base) not many expected to see (like Google picking Gentoo).

About the distro crafted by Valve, Daniel says:

I saw a few videos the day the news went wild, and every time they showed SteamOS v3 it looked very much like Windows 10.

Minute 04:19 here: To be honest, I don’t use KDE and have not used it since some brief 2008 tests, so I don’t know what it looks like these days.
And the same goes for Windows 10 — an OS that I barely touched, exclusively because of job-related tasks.
But if I’m reading this right, they tuned the UI, making it look like Windows 10.
So… add wine/proton over that, and they’re also bringing back LINDOWS from the grave!
I know there were several attempts at something like that: but if Valve publishes the recipe for it, and back it over time with money and work, they’re making a Windows replacement everybody can clone without using Valve’s trademarks. I mean: Dell, HP, Lenovo, or whatever hardware maker can just copy-paste the proper bits of configs to deploy their own brand (an important detail in business world) instead of using “SteamOS”. And of course there will be community forks.
The point being: this is a poisoned dagger against Windows. Valve is really making a Windows killer here, from ALL fronts at the same time (hardware, software, community, and corporate world), and using gaming as vector.
If I’m right about this, we should REALLY let them play their game, at least for a while.

Finally, Daniel says:

With all of this in mind, my conclusion:
Valve certainly does things we don’t like, and most likely that will never change: it’s hard to think of Valve leaving behind DRM and some questionable practices with devs. But they also seem sincere about the consumer’s interests (or at least their experiences), they’ve showed a stronger commitment to GNU/Linux than most other big tech players (specially in gaming), they show a vision (at least compared with players like Microsoft or Apple), and while they seem as pragmatic and money-based as any business, they also insist in pushing costly long-term ideas like a GNU/Linux based SteamOS or PC-based hardware replacing artificially-limited options.
So, Valve is not our enemy. It’s just that they’re not free software activists either: they’re a business. I was about to compare them with Canonical, but I believe the case is different: Canonical is more like hypocrites, Valve is more sincere. Valve is not about GNU/Linux: they’re just embracing it. And in exchange for the power GNU/Linux gives, Valve also gives stuff back. That doesn’t seem like a parasitic relationship to me, even when the thing Valve gives back may not exactly be software freedom.
If Valve ever wins these gaming wars, they will most likely end up being another Mozilla or Canonical. But Valve does not claim to be a Free software activist organization: they’re not even “not for profit” as Mozilla was. And if they win these wars, the gaming world will be completely different, most likely better for GNU/Linux. So I believe that, if we can’t be Valve supporters, we also shouldn’t be too vocal a critics either, as they’re the closest thing we have to a powerful friend in the gaming world: we should let Microsoft try to fight Valve the wrong way, while we find ways to make more freedom around the software Valve already brings to GNU/Linux ecosystem.

We might revisit this subject some other day because no doubt it’s a game-changer, if you pardon the pun…

07.02.21

HP Products Are Faulty and They Try to Censor Evidence of the Defects

Posted in Deception, Hardware at 7:25 am by Dr. Roy Schestowitz

Summary: HP seems to be operating a censorship army in social control media, working to hide evidence of HP products having severe and chronic problems

Over the past hour I’ve not managed to get anything done as my laptop is failing. It’s not an old laptop, either. But this is typical HP!

Minutes ago I posted (though I can barely type): “Avoid HP keyboards or any HP device that has a key on it. Only on HP devices (3 in a row!) I always have keyboard issues. Keys stop working. This flimsy crap is not acceptable! Never again! Never HP!! Now my MAIN laptop. AGAIN.”

Watch what happened next (within a few minutes):

hp-censorship

It has gotten worse since. So I wrote (after the latest message above): “Over the past hour I went from 2 defective HP keyboard keys to 3 and now 4. Not even connected keys, quite far apart. This shit is coming apart. #HP now trying to censor me. (!!)”

I will update this post as this blunder progresses. I should note that I never had any such issue with any other brand of laptop (we have 5 laptops working at work, only one is HP).

05.23.21

Using a Single-Board Computer to Monitor IPFS

Posted in Hardware at 10:34 am by Dr. Roy Schestowitz

IPFS lights-based monitoring on self-hosted SBC
IPFS lights-based monitoring on self-hosted SBC (blue is for status, green and red for upstream and downstream payloads)

Summary: IPFS is light and simple enough to run from one’s home, even on a low-voltage machine, and the code below can be used as a baseline for monitoring IPFS activity 24/7


#!/usr/bin/python3
# 2019-04-22
# 2020-11-07

from blinkt import set_pixel, show
from random import randint,random,shuffle,randrange
from time import sleep
import argparse
import signal

def solid(r,g,b,s):
    while True:
        for pixel in range(8):
            set_pixel(pixel, r, g, b)
            show()
            sleep(0.1)
            
def random_lights3():
    while True:
        for pixel in range(8):
            r = randint(0, 255)
            g = randint(0, 255)
            b = randint(0, 255)
            set_pixel(pixel, r, g, b)
            show()
            sleep(0.1)
            
def random_lights2():
    while True:
        p=range(8)
        p=sorted(p, key=lambda x: random())
        for pixel in p:
            r = randrange(0, 255, 16)
            g = randrange(0, 255, 16)
            b = randrange(0, 255, 16)
            set_pixel(pixel, r, g, b)
            show()
            sleep(0.1)
            
def random_lights1():
    while True:
        p=range(8)
        p=sorted(p, key=lambda x: random())
        for pixel in p:
            r = randrange(0, 255, 8)
            g = randrange(0, 255, 8)
            b = randrange(0, 255, 8)
            set_pixel(pixel, r, g, b)
            show()
            sleep(0.1)
            
def spacer(r,g,b,seconds):
    while True:
        for pixel in range(8):
            set_pixel(pixel, r, g, b)
            next = (pixel+1)%8
            set_pixel(next, 0, 0, 0)
            show()
            sleep(seconds)
                            
def reversed_spacer(r,g,b,seconds):
    while True:
        for pixel in reversed(range(8)):
            set_pixel(pixel, r, g, b)
            prev = (pixel-1)%8
            set_pixel(prev, 0, 0, 0)
            show()
            sleep(seconds)
            

def cylon(r,g,b,seconds):
    while True:
        for pixel in reversed(range(8)):
            set_pixel(pixel, r, g, b)
            prev = (pixel-1)%8
            if prev < pixel:
                set_pixel(prev, 0, 0, 0)
            show()
            sleep(seconds)
        for pixel in range(8):
            set_pixel(pixel, r, g, b)
            next = (pixel+1)%8
            if next > pixel:
                set_pixel(next, 0, 0, 0)
            show()
            sleep(seconds)

def pulsed_bar(r,g,b,seconds):
    steps=8
    while True:
        for fade in reversed(range(steps)):
            r2=r*(fade+1)/steps
            g2=g*(fade+1)/steps
            b2=b*(fade+1)/steps
            # print (fade)
            for pixel in range(8):
                set_pixel(pixel, r2, g2, b2)

            show()
            sleep(seconds)
        for fade in range(int(steps/1)):
            r2=r*(fade+1)/steps
            g2=g*(fade+1)/steps
            b2=b*(fade+1)/steps
            for pixel in range(8):
                set_pixel(pixel, r2, g2, b2)

            show()
            sleep(seconds*0.5)

def ipfs(r,g,b,seconds):
    steps=4  # how many stages in gradient
    brightness=0.5 # how bright the lights will get
    bluebright=100 # the brightness of the blue light in the middle (0-255), albeit overriden by input
    dim=1 # increase to dim down the lights
    run = 0 # running count for periodic file access
    while True: # run always (until interruption)
      run=run+1    
    # first, open from files the required values, which change over time
      if (int(run) % 50 == 1):
        with open(r'~/RateIn', 'r') as f:   # open from file the IN value
            # print(r)
            lines = f.read().splitlines()
            r=int(lines[-1]) # read the value
    # r=int(map(int, f.readline().split())) # prototype, for multiples (stale)

        with open(r'~/RateOut', 'r') as f: # open from file OUT value
            # print(g) # show values, debugging
            lines = f.read().splitlines()
            g=int(lines[-1]) 

        with open(r'~/Swarm', 'r') as f: # open from file Swarm value
            # print(g) # show values, debugging
            lines = f.read().splitlines()
            bluebright=int(lines[-1])/2
            # print(bluebright) 

      for fade in reversed(range(steps)):  # fade in effect
#            print(g2) # show values again, debugging
#            print(r2)
            r2=r*(fade+1)/steps/dim
            g2=g*(fade+1)/steps/dim
            b2=b*(fade+1)/steps/dim

            # print(g2) # show values again, debugging
            # print(r2)

            # print (fade)
            for pixel in range(3):  # first 3 LED lights
                set_pixel(pixel, r2/20, (g2*brightness)+(pixel*1), b2/20)

            for pixel in range(5,8): # the other/last 3 lights
                set_pixel(pixel, (r2*brightness)+(pixel*1), g2/20, b2/20)
            if  (bluebright==0):
                set_pixel(3, 255, 255, 255)
                set_pixel(4, 255, 255, 255)
            else:
                set_pixel(3, 0, 0, 0)
                set_pixel(4, 0, 0, bluebright)

            show()
            sleep(seconds/r*r+0.1)
      for fade in range(int(steps/1)): # fade out effect
            r2=r*(fade+1)/steps/dim
            g2=g*(fade+1)/steps/dim
            b2=b*(fade+1)/steps/dim
                
            for pixel in range(3):    
                set_pixel(pixel, r2/20, (g2*brightness)+(pixel*1), b2/20)

            for pixel in range(5,8):  
                set_pixel(pixel, (r2*brightness)+(pixel*1), g2/20, b2/20)
            set_pixel(3, 0, 0, bluebright)
            set_pixel(4, 0, 0, 0)
            show()
            sleep(seconds/g*g+0.1)



def flashed_bar(r,g,b,seconds):
    while True:
        for half in range(4):
            set_pixel(half,r,g,b)
        for half in range(4,8):
            set_pixel(half,0,0,0)
        show()
        sleep(seconds)
        for half in range(4,8):
            set_pixel(half,r,g,b)
        for half in range(4):
            set_pixel(half,0,0,0)
        show()
        sleep(seconds)

def handler(signum, frame):
    print("\nSignal handler called with signal", signum)
    exit(0)
        
signal.signal(signal.SIGTERM, handler)
signal.signal(signal.SIGINT,  handler)

# read run-time options

parser = argparse.ArgumentParser(description="Drive 'blinkt' 8-pixel display.")
parser.add_argument("pattern", help="name of light pattern: \
random[1-3], spacer, reversed_spacer, cylon, pulsed_bar, flashed_bar")
parser.add_argument("r", metavar="r", type=int, help="red channel, 0-255")
parser.add_argument("g", metavar="g", type=int, help="green channel, 0-255")
parser.add_argument("b", metavar="b", type=int, help="blue channel, 0-255")
parser.add_argument("timing", metavar="s", type=float, \
                    help="rate of binking in seconds")
options = parser.parse_args()

pattern = options.pattern.lower()
r = options.r
g = options.g
b = options.b
s = options.timing

if pattern == "solid":
    solid(r,b,g,s)
elif pattern == "random3":
    random_lights3()
elif pattern == "random2":
    random_lights2()
elif pattern == "random1" or pattern == "random":
    random_lights1()
elif pattern == "spacer":
    spacer(r,g,b,s)
elif pattern == "reversed_spacer":
    reversed_spacer(r,g,b,s)
elif pattern == "cylon":
    cylon(r,g,b,s)
elif pattern == "pulsed_bar":
    pulsed_bar(r,g,b,s)
elif pattern == "ipfs":
    ipfs(r,g,b,s)
elif pattern == "flashed_bar":
    flashed_bar(r,g,b,s)
else:
    print("Unknown pattern")
    exit(1)

exit(0)

Example runtime: run-blinkt-ipfs.py ipfs 0 0 0 0.00

Based on or derived from baseline blinkt scripts; requires the hardware and accompanying libraries being installed on the system.

For the code to run properly in the above form, given that it takes input from files, the IPFS values need to be periodically written to disk/card, e.g. for every minute of the day:

* * * * * ipfs stats bw | grep RateIn | cut -d ‘ ‘ -f 2 | cut -d ‘.’ -f 1 >> ~/RateIn
* * * * * ipfs stats bw | grep RateOut | cut -d ‘ ‘ -f 2 | cut -d ‘.’ -f 1 >> ~/RateOut
* * * * * ipfs swarm peers | wc -l >> ~/Swarm

These lists of numbers can, in turn, also produce status reports to be shown in IRC channels. When our git repository becomes public it’ll be included (AGPLv3).

05.17.21

Richard Stallman Refers to Intel’s Management Engine (ME) — or a Back Door — as ‘Master’, and the Processor Intel Lets Us Use as ‘Slave’

Posted in Deception, Free/Libre Software, Hardware at 4:42 pm by Dr. Roy Schestowitz

Video download link

Summary: “The president and founder of the Free Software Foundation will speak about pressing issues in free software today, and will present the winners of the 2018 Free Software Awards,” says the summary (this was 3 years ago, i.e. before the purge of language, with a prominent role played by Intel)

IN HINDSIGHT, or in sight/light of recent news, more people understand that Dr. Stallman was wrongly maligned, maybe even used as somewhat of a scapegoat/sacrificial lamb to distract from what Bill Gates had done in MIT.

“Racism will go away when we get rid of racist companies like the I’s (IBM and Intel, which actively harmed black people, collectively).”In any event, it’s worth reminding people of the message of Stallman on technical and ethical issues, setting aside all the political stuff that he’s being blasted for.

Listen to the above video and pay attention to what he said about 3 minutes into this talk. It’s a subject that I spoke to him about in the past. It’s about microprocessors coming with back doors (more of them over time; it’s not limited to Intel anymore).

Richard Stallman in 2018What I found curious, personally at least, is the fact he used “master” and “slave” as metaphors. That was 3 years ago.

Nowadays the very same companies he’s criticising in his talk are trying to dilute or narrow down our vocabulary, making it harder to express or explain the relationship between us and those abusive corporations that work for the government (their master), not for customers/users (slaves). Racism will go away when we get rid of racist companies like the I’s (IBM and Intel, which actively harmed black people, collectively). Those companies are big contributors to racial injustice. Banning or “eradicating” — as they put it — a bunch of supposedly ‘offensive’ words will accomplish almost nothing in practice.

Photo source and licence: CC BY-SA 4.0

05.14.21

Nathan Proctor: Right to Repair and the DMCA

Posted in DRM, Hardware at 9:26 pm by Dr. Roy Schestowitz

Video download link

LibrePlanet 2019 video. Original here. Slides here.

« Previous entries Next Page » Next Page »

RSS 64x64RSS Feed: subscribe to the RSS feed for regular updates

Home iconSite Wiki: You can improve this site by helping the extension of the site's content

Home iconSite Home: Background about the site and some key features in the front page

Chat iconIRC Channels: Come and chat with us in real time

New to This Site? Here Are Some Introductory Resources

No

Mono

ODF

Samba logo






We support

End software patents

GPLv3

GNU project

BLAG

EFF bloggers

Comcast is Blocktastic? SavetheInternet.com



Recent Posts