Using binary blob driver in OpenWrt

I have a Asus RT-N18U using BCM4360. There is no wifi driver for it in OpenWrt. But there is a driver in DD-WRT. Kernel version is 4.4.241.

DD-WRT has a license agreement and NDA in place with Broadcom that allow usage of better, proprietary, closed source wireless drivers (binary blobs) which they are not allowed to redistribute freely.

I want to do this only for my own router. I will not distribute the resulting binaries.

  1. Is it possible to configure a recent OpenWrt kernel to be able to load that older module?
    or
  2. Can I build a customized OpenWrt with that kernel version, so I can load the DD-WRT module? Maybe even menuconfig OpenWrt to use the DD-WRT kernel sources directory?
    or
  3. Can I extract the broadcom blob from DD-WRT sources and make a package to be built together with my OpenWrt?
    or
  4. The router has USB. Can I boot DD-WRT kernel and then mount or pivot to a OpenWrt root, keeping only the kernel modules from DD-WRT?

If any of this is possible, will Luci / uci work with it, or will it need manual configuration using some other tools?

I have some experience building OpenWrt from source, using kernel_menuconfig and making OpenWrt packages (but not drivers). Any advice where to start?

Thanks!

not what you want to hear, but get a device supported by openwrt :wink:

I already have a Linksys WRT1900ACv1. I'm just trying to reduce electronic waste. Yes, you can argue that BCM is mostly electronic waste...

1 Like

I agree, you could buy used/refurbed network equipment, that's what I've been doing for the last 10 years, one Netgear multi gig switch excluded ...

Have you tried DD-WRT? Perhaps it fits your needs. If not, I would sell it with as is, probably better as with stock firmware.

1 Like

I did and I'll use it with DD-WRT if OpenWrt doesn't work. But I still want to try.

If I sell it I won't get much. Maybe 15€. There are dozens of them listed on my local ebay-like site.

The blob they are using is very likely to have been compiled for the ddwrt kernel only.

You could attempt to match kernel version but there’s still no guarantee it would work, as the ddwrt kernel is customised.

Or you can force load it and live with instability.

For Broadcom based routers you can also try FreshTomato .

https://wiki.freshtomato.org/doku.php?id=hardware_compatibility