[PATCH] brcm: add CLM BLOB files for Luxul devices

Rafał Miłecki zajec5 at gmail.com
Thu Jun 22 04:56:13 PDT 2023

Hi Josh,

I'm OpenWrt developer and those CLM BLOBs have significant meaning for
this project. They allow OpenWrt users to use their devices with full
WiFi support (not limited to some generic fallback setup level).

For that let me speak up regarding this PATCH case.

On 12.06.2023 18:57, Josh Boyer wrote:
> On Mon, Jun 12, 2023 at 11:05 AM Rip Route <riproute at gmail.com> wrote:
>> The files were compiled from source obtained through Luxul's contract manufacturer of these devices.
> OK, it's not clear to me whether we can accept these.  We have no idea
> what your contract specified, what sources were used, what the license
> on them is, or if you had authority to release them at all.  I'm not
> questioning your integrity by any means, but we have very little way
> to know Broadcom is agreeable to these being included in the
> linux-firmware repo.  If Broadcom wants to submit them or provide a
> Signed-off-by statement, we might be able to take them then.

I fully understand your concerns. Those are binary files and it's hard
to tell what they contain at first sight.

It'd be perfect to have Broadcom simply approve them but I'm afraid it's
unlikely. I see linux-wireless@ and Broadcom lists were cc-ed but we
didn't get any feedback. I know some firmware contributions took
Broadcom months or years in the past.

So I'd try to analyze what we have here and try to review it.

First of all: CLM (BLOB) is a binary formatted data. It doesn't contain
any actual CPU-executable code. It gets uploaded to FullMAC (closed
source) firmware and gets parsed by it.

So what we have here is not actual firmware (executable binary) built
from proprietary C sources full of logic and possibly some patent. We
have binary files containing (literally) numbers and strings. They just
use a binary undocumented format.

I actually took a moment to reverse engineer those files and write basic
tools for them.

BLOB is a simple container format with header containing offsets, sizes
and CRC32 sums. I developed "bcmblob" tool for parsing BLOBs and
extracting from them:

CLM BLOB is a BLOB file containing CLM and chipset version. I also
developed absolutely basic tool "bcmclm" for parsing CLM files:

Given that, in my I-am-not-a-lawyer opinion, those files are safe to
accept and distribute.

If I were to compare them to something it'd be an XLS stylesheet file.
It's a binary undocumented format but what it actually contains are
sets of values.

I don't think it raises any concerns to use a custom binary format.
We're clearly fine sharing .xls, .exe or .rar files.

I also don't think you can stop anyone from sharing a list of 2 GHz,
5 GHz or 6 GHz channels. Or their rates. Or flags (like radar etc.).
Or allowed TX power levels. Just numbers in general.

Do you think that with my basic technical summary and Luxul-provided
info you can accept those files?

More information about the openwrt-devel mailing list