AFAICT, the BLE code is provided as a binary blob. https://github.com/OpenSiFli/SiFli-SDK/tree/6c82a9b15db49871...
Which isn't a problem. But, I wish if something is described as "open source", you could read the source code for it.
AFAICT, the BLE code is provided as a binary blob. https://github.com/OpenSiFli/SiFli-SDK/tree/6c82a9b15db49871...
Which isn't a problem. But, I wish if something is described as "open source", you could read the source code for it.
Now one might say that's the fault of the person doing the modifications/manipulations, but regulations in various countries require the device to prevent these manipulations.
(N.B. I'm not in the exact business, but that's my take away from looking into the topic some time ago)
Technically they could publish the source in that case but I think some patents would prevent them from doing this. Radio stuff is riddled with patents. Also most likely the "why would we" reason. There is no benefit for the manufacturer.
If it's concerning their own patents, no need to hide the source code. A patent is literally "letters patent" or public description of an invention. Trade secrets on the other hand I could understand.
I'm surprised how much they were able to open source as-is. I think part of that is that the SoCs powering the raspberry are kinda 'old news', definitely not the bleeding edge kind of embedded tech. The first raspberry basically happened because Broadcom had a whole bunch of old chips they weren't able to sell. Only when it took off they started making some actually for the purpose.
> Seems like security by obscurity.
There are legal standards to meet around protecting the system from users modifying things like output power. They don’t literally say that the source code must be private, of course, but keeping it closed source makes it much easier to demonstrate that you were not making it easy for people to exceed the regulatory limits.
If you document the registers for setting output power (for example) then you’re giving the end user a roadmap for changing output power.
There were a few more reasons too, at least at the time. The companies in the space didn't have a culture of open sourcing, and there's probably no perceived commercial upside to releasing code for a chip like that.
Then again, lots of Wi-Fi-enabled devices support simply changing their region setting and will happily let you use different Wi-Fi bands or increase signal power.
On software-defined radios you can often use them way out of spec, way more so than using a forbidden channel. But in a totally different band. A good example is the RTL-SDR stick which was designed to be a TV received but can be used as a wideband SDR these days. That's a receive-only device so it's not that critical to regulators. Once you can transmit, it becomes more of a problem.
An example of a more problematic transmission device is the Raspberry Pi PWM pin. That's been used to transmit all sorts of stuff on many bands. Because it was never designed to transmit anything, it causes all kinds of weird harmonics and artifacts. It's a really bad idea to use it for that. Most people just do it under controlled circumstances.
"We say it's open source because we expect the reader to know that we're not telling the truth"
should be replaced by
"It's open source except for the BLE firmware blob, which can't be open source due to regulatory reasons."
To be fair, the article just repeated the claims made on the GitHub page for the SDK.
The Bluetooth SIG requires that you qualify your device if you advertise that you use Bluetooth IP, similar to what is required for the cellular space. Do you have to do this if you’re just “Bluetooth compatible?” Maybe not. Whatever the case you have to conduct FCC part 15C testing (intentional radiator).
Maybe soon you won’t.
The device needs to operate in spec and if someone reflashes it with out of spec firmware, that's no different than someone soldering a different resistor onto the PCB or feeding the output of the chip into an amplifier and large antenna. It's a modification by the user and so the user is liable for operating out of spec. And all of this really unrelated to source code, just to reflashablitiy. The code could easily be open, but the productions device could be made unflashable if the law really required it. Yet this is not what we see here.
It's IP reasons, and that's fine, but let's not make up additional excuses for them.
Excellent point. Many people (myself included) do assume that open source = redeployable, as in GPL3. I guess an e-fuse for read-only is perfectly OK, both from regulatory standpoint, and for ensuring you're running the same code as what you have the source for. That would be cool.