GPUs that don't happen to share the silicon with the CPU like on most mobile SoCs are a lot more independent. In the case of NVidia that means integral parts like clocks are locked behind signed firmware and open source drivers are forever stuck running them in their "just enough to show a boot logo" mode.
Would it not be possible to distribute a program that downloads the proprietary Nvidia driver, extracts the firmware and loads it into the running kernel?
IIRC there was a Debian installer for Sun's JDK/JRE that did precisely that.
I am glad they didn't manage to acquire ARM. Worst company ever to be allowed such control over computing. Having to deal with their GPU drivers and CUDA blobs is bad enough already. Pure evil.
> Nvidia's TOS forbids doing that or publishing any software that does that for others.
IANAL, but just because TOS claims something doesn't mean it is enforcable in all jurisdictions, and could potentially fall against certain interoperability or other provisions.
I'll bite. Has anyone traced the initialization of the NVIDIA binary driver and figured out what is so special for reclocking and/or reproduced it without the binary driver? If you do not want to reply publicly email is in profile.
> Has anyone traced the initialization of the NVIDIA binary driver and figured out what is so special for reclocking and/or reproduced it without the binary driver?
From what I understand [1], the chip itself will check if the running firmware has been signed by NVIDIA and refuse to run at higher clock speeds if not.
Exactly. Maxwell and later Nvidia architectures contain internal CPU cores that manage parts of the GPU and I believe even job scheduling. They refuse to run anything not signed by Nvidia, so developing an open source high performance driver would require obtaining their root keys. If someone does that and can't prove they did it by brute force or some other vulnerability in Nvidia's software, they're going to be in a world of hurt.
Yeah but my point was to develop a tool to extract NVIDIAs proprietary signed firmware, make nouveau capable of interfacing with said firmware, and distribute the extractor tool as part of a Linux distribution.
That way you'd have both high-speed acceleration and an as-far-as-possible open source driver.
Why should I as an author of a piece of downloader/extractor software be liable for what others do with my software? As the author, I'm not bound for EULAs I never agreed to.
Alternatively to downloads, I could also make a software that asks the user to supply the NVIDIA installer binary and extracts the firmware out of it.
I imagine once they notice and decide to care, they sue you for copyright infringement or breaking a contract (I'm really not a lawyer; I know using a piece of software without a license is something you can sue over, but not details).
EULA; I know it's not a "sign on the dotted line" contract, but it still has some legal power, probably, in the USA at least. If you don't accept the EULA then you're "just" breaking copyright law, I think. (Again, IANAL, I know I'm not doing great at details, but I'm fairly sure it works roughly this way)
Were there any cases of a EULA being actually upheld in a court? I mean, a video card is something you buy to own. It's a device for highly parallelized number crunching. The manufacturer deliberately interferes with your ability to use the device you bought with your choice of operating system. It feels like such behavior should be illegal and NVidia would be at fault, not the person who has merely defeated their shitty lock-in tech.
Also you technically don't agree to a EULA when you download an installer via direct link and unpack it to extract the files required to initialize the thing you own. You never run the installer and never click the "agree" button.
Yes, particularly aggressive companies have had their EULAs upheld in court (in the US).
Circumventing the EULA prompt is considered agreement to the EULA terms in the US. If you fight that too much in court, it would then be considered software piracy.
The way things tend to be enforced is that while you own the physical piece of hardware, you do not own or necessarily have any rights to the software on it, or for it.
Thing is, you could usually reverse engineer a piece of hardware enough to write your own software for it, as described in the OP article. That's fully legal. But NVidia designed their hardware on purpose such that you're required to use their proprietary blob to initialize it and you can't substitute it with something open-source. So hardware is effectively useless unless you send it this particular Highly Proprietary™ sequence of bytes that NVidia won't let you have without way too many strings attached.
I guess one way would be to write a driver that does this exact thing this thread suggests, and release it under a license that forbids its distribution into and within the US. And of course never ever host any parts of it on any infrastructure located in the US or owned by a US company.
I mean, good luck. The internal CPU core you have to initialize will only execute signed code for the most part, so any open source high performance driver for the card would have to get a hold their root keys. And doing that is covered by quite a few international laws, so whoever did it would be pretty screwed.
The open source nouveau driver has existed for years, the problems with it are mainly caused by nvidia; not releasing signed firmware for use by nouveau, not releasing specifications etc.
What about writing a tool to extract that signed firmware from the proprietary drivers and just using it? I think with some additional reverse engineering it's probably possible to automate this, assuming NVIDIA will not start changing the drivers specifically to fight this.
People might actually start doing similar things if nVidia starts dropping support in their proprietary driver for cards that can't otherwise be usefully supported by nouveau. At that point, it'll be easy to rely on the observation that such actions are necessary for interoperability, hence justified as fair use. Not sure if we're at that point just yet.
Nvidia cards below the 800 series are unsupported by the 495 driver, which adds support for GBM, which is necessary for most Wayland compositors to have hardware acceleration. I'd say we're basically at that point.
The actual firmware issues seem to have started with the Maxwell series, which apparently still gets proper support. Nouveau might behave badly with lower-series cards, but not due to lack of signed firmware.
what if you wanted to use linux with an nvidia card on a cpu that their driver does not support (e.g. risc)? That would presumably also fulfill the interoperability requirement, right?
As far as I know nouveau is not limited by reverse engineering respurces as much as actual security measures put in place by Nvidia. IIRC you need some kind of key to clock the card up to a reasonable frequency.
What an asshole company. I think they have displaced Oracle from the number one spot. I wish the people who thought this idea of locked hardware to have a terrible diarrhea.
The nouveau is buggy and has poor performance, sometimes getting blacklisted by various software as well because of this (Example: Chromium - https://news.ycombinator.com/item?id=18834715). It doesn't help that NVIDIA is basically doing nothing to help the nouveau team to do a better job, and that their own driver is also buggy and has poor performance.