We are a manufacturer of CNC controllers devices (computer numerical control): this is a special type of computer designed to control Mills, Lathes, etc. We would like to add a new range of devices with Linux at it core.
The CNC controller would be sold as a whole: the hardware with Linux and our proprietary software which include a driver.
It might be worth mentioning that the device is sold as a specific purpose embedded system, where the user mostly only interacts with our GUI, BUT, it can be connected to the Internet, a mouse, a keyboard, and eventually, the software could be upgraded.
The Kernel of Linux seems to be (at least some of the Kernel Modules API) under GPLv2 (partially with a syscall-note), this seems like a full blocker for proprietary drivers. However, I can see several companies selling proprietary drivers (NVidia, Google...), so I am not sure how is this achieved.
I am a big fan of open-source, but unfortunately, making our software public is not a possibility (and is not under my decision).
My question is:
How can a proprietary driver be installed with a Linux system and provided with a device?
Different points of view
To explain a little bit more about why all this is so confusing to me:
Binary blobs When I read about proprietary drivers on Linux, the solution usually pops as "Binary blobs", which I understand to be a compiled version of the driver's proprietary code, loaded at runtime by a minimalist GPLv2 driver.
If this is correct, how is this different than LGPL loading dynamically a library? (1)
Shipment of proprietary with GPLv2 If the limitation is that the blob shall not be provided together with the GPLv2 driver: is this a blocker to selling a device with Linux and the driver installed? (2)
Syscall-note Some sources mention that the only use of the syscall API (with Tovald syscall-note in the license) is legal. If this is true, it is not clear to me why some companies are having all those concerns making binary blobs, and why the mechanism of tainted kernels exists. (3)
Limit between firware and software Finally, some texts mention that the limit between firmware and software is about the possibility to upgrade or install software on the device. Does this mean that we shall make it not possible (or at least not trivial) to upgrade our device in order to be compliant with Linux Kernel GPLv2 license? (4)