LEDE point of view on proprietary drivers

Since we have proprietary drivers included from Broadcom, would it be acceptable to add Ralink drivers, without source code, but let's say as *.ko files to be used in the SDK and/or image builder stable build obviously due kernel version.

This, like for Broadcom, to give (power)users the option to swap to a proprietary alternative (at least until we have a bug free, stable ralink open source alternative.

(By no means trying to criticize the efforts to make this driver. I realize this is not an easy task without support from Ralink/Mediatek)

From a purely technical point of view you can't include prebuilt kernel modules, even if you'd manage to get them working at all, they will explode with the next kernel update. Trying to keep binary modules working would tie you to a specific kernel version (and more or less configuration as well) forever, which is impossible to maintain for >720 devices and ~45 targets.

1 Like

@drbrains
What kind of platform ?

Platform: ramips. Reason: I have them.

Kernel versions I understand, this I why I said for the stable release SDK/image builder. For the rolling build the source would be required, but is proprietary, so we could not.

It's more a political question. Would LEDE allow or do we want LEDE to be fully open source, and possibly drop the Broadcom binaries. ThIs would be in line with stating that it's secure: full disclosure of source, security holes will be patched fast/easy.

Mostly ramips uses Ralink/Mediatek radio devices.

The big problem with OOT drivers and binary ones as a very special case;
If they are changes within the kernel you must rebuild the driver or you stuck on the old kernel.
And currently they are some API changes in mac80211 going into v4.12 kernel.

The other thing :
most vendor drivers uses cfg80211/wireless-ext and not mac80211.

I appreciate the kernel rebuild problem and I am not trying to promote using closed source code. But, given the choice between being stuck on an old 4.4 or maybe 4.9 kernel using a stable build, or using a slightly newer kernel 4.12 with (at the moment) a more buggy driver, what would the user base of LEDE choose??

How many of us using LEDE/OpenWRT/DD-WRT really know the difference between 4.4 and 4.9 kernel. I think the user base (speculation on my side), want a little more control then the standard firmware. Maybe have the option to add some functionality. But I think most want this all from the convenience of the Luci Website.

The rest of us, using snapshot builds, understanding that something might be broken. They are willing to (help) fix and are not afraid to reflash and again and again. Including setting up there specific network needs. For those I could offer the source, but doing so on a personal note and not officially support by LEDE. They "can't", or at least "should not", regarding the source code, right?

cfg80211 / nl80211 is current, righ? The wireless-ext is depreciated? So I should patch the vendors code?

cfg80211/nl80211 yes
wireless-ext is deprecated and drivers using this API find their home in
drivers/staging

I don't know what you are doing because you messed up your first post.
Broadcom compared to Ralinki/Mediatek

I don't think I messed up the post. You added a statement about the API. This made it sound like you know a lot about the topic and suggested to me that it was a lost cause to even try to get a proprietary ralink/Mediatek driver working on a 4.4/4.9 kernel.

I almost have a MT76x2e driver running on kernel 4.4. So the originall question remains: would it be possible to add the package to the stable version SDK/Image builder in LEDE. Not as an outside package, but "included" in LEDE stable?

Please look in
package/kernel/mt76
and
kmod_mt76*
of current LEDE
for mt76x2(e) this uses already mac80211

mt76 is one of the drivers getting a lot of attention from the bufferbloat and make-wifi-fast projects, so if you have hardware that supports it, it should be a very good choice to use.

I understand I should use the MT76 driver(s) for both my MT7628A and MT7621A devices. (MT7612E for 5 Ghz n/ac). However we are still seeing a lot of bugs/kernel panics on these drivers, so at the moment it is not stable enough as "production" router.

I am following the driver (issues) on github and if I can help the project, I am more than willing to test the driver on my device(s).

I skimmed through some of the issues ..
There are only a few real errors.
You must compare this with the stock/vanilla driver from Realtek

If "only a few errors" generate kernel panics and reboots...

It seems that the 7602 is getting stable. The 7612 is not rebooting, still throws kernel errors/warnings. The 7603 is still unstable. Looks like some issues are there long time, so it seems to me that these "few errors" are not that easy to iron out.

Again: nothing against all of the people trying hard to make the MT76 work, but for myself (possible a lot of "normal" users) I prefer a stable proprietary driver over crashes. Hence the question, could we provide compiled (as in: without source due legal reasons), with a stable release. With stable release, to avoid kernel variations.

as someone who has been using Linux a long time (0.99 kernel), I've been burned
so many times by proprietary drivers that can't be updated to new kernel
versions, that I sure hope that LEDE doesn't fall into that trap.

I don't object to binary blobs that are firmware to be executed on the various
chips, but anything that prevents kernel updates always comes back to bite
you.

David Lang

1 Like

For my POV there is no stable version at all !
You have some point in time with a version you can call stable, because only bug fixes are added to userspace.But if you add code to the kernel you get a new minor version, thus you need a new proprietary driver binding to this kernel.
So no luck here.
Read on lwn, how Sony handles kernel development
https://lwn.net/Articles/647524/
they are ~1800 patches ahead, which is crazy.

Someone from a big AV company has said
The easiest way (and sometime to only) to update your phone, is to buy a new one.

In a sense I agree with the statement: to improve buy a new one. However: from a simple consumer point of view: I just bought a new one. A router in this case. This router happens to have a MT762x SOC. It might not be enterprise grade, but it has a dual core processor, 16MB flash, 512MB ddr2 RAM, gigabit Ethernet, dual band B/AC wifi, a USB port and a mini PCIe connector to add (as option) a WWAN Card (LTE maybe). As a consumer I want this new device more or less at the latest standard. Nothing bleeding edge, but a stable device that I might use and possibly update over the next few years.

Unboxing this device, the vendor put a 3.x kernel and proprietary drivers. Why, cause the latest will upset consumers. So if we can give consumers the choice by offering a kernel 4.4 / 9 device with the choice to use a proprietary driver or an open source version I think the user base will grow.

After all, it's this what we are doing with the Broadcom drivers? Include a binary-only version to have more devices run LEDE? Because the Open source version is still lacking features consumer expect to be standard in this time and age?

If the answer is: we want the (almost) latest kernel, latest version of any package, then I think we should define our target audience. Cause let's be honest. In that environment you don't really want all kinds of newbies bricking their devices.

But...that should be a different topic. I guess I got my answer. If I manage to get the drivers property ported to our current kernel, I will keep it in the "community build" area.

[quote="drbrains, post:17, topic:3820, full:true"]
This router happens to have a MT762x SOC. It might not be enterprise grade, but it has a dual core processor, 16MB flash, 512MB ddr2 RAM, gigabit Ethernet, dual band B/AC wifi, a USB port and a mini PCIe connector to add (as option) a WWAN Card (LTE maybe).

After all, it's this what we are doing with the Broadcom drivers?[/quote]
So you have a Mediatek SoC with a Broadcom Wifi card ??

This is whats confuses me in the first place.
Broadcom is known to be (very ?) bad in GPL code for their devices.

They are project like DD-WRT, I think, they have signed a NDA to get the sources from Broadcom and can create drivers with updated kernel.
But LEDE wont go this track, maybe some people have signed a NDA to work on a GPL driver.
Also Qualcoms ath10 driver is a result of some NDA assignment

I have 2 devices I'm playing with at the moment. One based on a MT7628A, with MT7603 on the SOC and a MT7612e for 5Ghz AC.
An other with a MT7621A. This has a separate MT7603 on the PCIe bus and the same MT7612e.

The comparison with Broadcom is purely for the proprietary part. The binary blob is included in LEDE, but not for and Mediatek/Ralink.

In another thread, someone is already advising against getting a Mediatek based router, because of unstable wifi. So unless we get the MT76 working properly, any OpenWRT, LEDE or similar will be atheros only. Which is why I'm trying to get the driver from the MTK SDK to work on a Kernel 4.4.

If this is from LEDE, this is normal.
LEDE builds all drivers for all devices, regardless if this usable on $platform

Again I don't think vendor drivers are best (for all ?)
If the driver is ready to ship, they do.

Sometimes vendors do rework their driver, but sometimes don't.
For my drivers I'm working on (some USB 802.11ac dongles)