
The community tends to pop a cork when a hardware vendor tosses open-source license stickers on their board schematics and leaves it at that. I’ve been there myself—raising a glass to what sure looked like another win for openness. Then I actually boot the device and smack straight into a proprietary bootloader, standing guard like some mute bouncer. The good mood evaporates. If the board is open, why is the very first code that runs on it locked inside a binary blob? This isn’t a minor paperwork slip. It’s a foundational crack that empties the whole open-hardware promise of meaning.
I’m Arjun Mehta. My work sits at the ugly crossroads of firmware security and hardware design. I’ve spent years peeling apart boot sequences, auditing silicon init code, and watching one vendor after another make the same basic error: they treat the bootloader like an afterthought, not the root of trust. The product ends up technically open but functionally opaque. In this piece I’m going to walk through why proprietary bootloaders aren’t just a nuisance. They’re a standing security risk, a long-term maintenance drag, and, bluntly, a betrayal of what open hardware claims to stand for.
The Bootloader as the First Line of Code
Every computer follows a chain of trust that kicks in long before any OS. The bootloader—usually split into stages, with a first-stage loader (FSBL) tucked in ROM or flash—brings up memory controllers, plants clock trees, and hands off to whatever comes next. On a board that wears the open-hardware badge, you would expect that code to be as see-through as the PCB layout. Instead, plenty of vendors ship a precompiled binary, often signed with keys you can’t even look at, let alone swap out.
This matters because the bootloader draws the real security boundary. If it carries an unpatched hole or a backdoor—intended or not—every layer stacked on top is compromised. I’ve reverse-engineered bootloaders on supposedly open ARM-based SoCs and found debug interfaces left wide open, memory regions mapped with way too much permission, and firmware update paths that quietly skip signature checks under particular conditions. With the source locked up, those flaws can sit there for years. Nobody outside the vendor can even see them, much less fix them.
Binary Blobs Undermine Auditability
Auditability is the floor that open hardware rests on. If I can’t read the code that handles my encryption keys, how do I know those keys aren’t quietly being whisked away? That’s not paranoia; it’s basic threat modeling. A proprietary bootloader forces me to trust the vendor’s dev practices, their supply chain, and how fast they move when a vulnerability lands. In security engineering we have a name for that: blind trust. It’s the polar opposite of what open hardware says it delivers.

Take a well-known RISC-V dev board that launched with open schematics and plenty of fanfare. The boot ROM was closed. The vendor refused to publish the source, waving the “intellectual property” flag over DDR PHY calibration routines. Those routines handle the electrical handshake between processor and memory—sensitive territory where timing slips can silently corrupt data. I get why the vendor was jumpy. But the payoff was a community of developers building on a slab they couldn’t inspect. When a researcher eventually found a glitch in the memory training sequence that could be poked at for fault injection attacks, the fix dragged on for eight months. It needed the vendor’s internal team to reproduce and patch the thing. An open codebase would have let the community hammer out a fix in a few days.
Maintenance and Longevity: The Hidden Costs
Open hardware sells longevity. A board that ships today ought to still be useful ten years down the road, even if the original manufacturer has vanished. Proprietary bootloaders snap that promise in half. When a vendor walks away from a product line—and in embedded that happens constantly—the bootloader freezes into an unmovable relic. No more security patches, no bug fixes, no adapting it to a new use case.
I’ve lived this one up close with an older ARM Cortex-A board that was pitched as open-source friendly. The bootloader was a forked U-Boot with vendor-specific tweaks, handed out only as a binary. After the company changed direction, the bootloader’s USB stack sat there with a known buffer overflow you could trigger during boot. The community was helpless. The modifications were never upstreamed, barely even documented. Boards got junked not because the silicon gave out, but because the bootloader turned into a liability nobody could touch.
The Upstreaming Trap
Some vendors play the openness card by sprinkling bits of their boot code into projects like U-Boot or Coreboot while keeping the truly critical init routines locked inside a separate signed blob. This fractures the boot chain and creates a dependency that strangles independent maintenance. You can fiddle with the open parts all day, but if that opaque binary refuses to load, the board is a paperweight. I’ve lost weekends trying to coax life out of boards like that, only to stare at a serial console message announcing that the vendor’s preloader flunked its checksum.
This halfway approach also gums up supply chain security. When the boot chain mixes open and closed pieces, the attack surface balloons. An attacker can aim straight at the closed binary or poke at the seams between the two stages. Without full source visibility, catching those attacks is a coin toss.
Licensing and Legal Contradictions
A lot of open-hardware projects lean on licenses like CERN OHL or TAPR, which insist derivative works get shared under the same terms. But the bootloader, being software, usually slips outside the reach of those hardware licenses. Vendors happily exploit the gap: release the physical design under an open license, keep the firmware locked tight. It’s legally tidy and ethically hollow.

Picture a board that ships with a GPL-licensed Linux kernel perched on top of a proprietary bootloader. The kernel is open because it has to be. But the hardware abstraction layer that gets the SoC ready for that kernel stays bolted shut. The community can improve the operating system all it wants but can’t touch the code that governs power management, peripheral init, or secure boot policy. The board is open in name only.
The Secure Boot Irony
Secure boot is the favorite excuse for keeping bootloaders closed. The story goes that publishing the source would spill signing keys or gut the security model. That’s a basic misunderstanding of how public-key crypto works. Secure boot leans on public-key infrastructure; the private keys live apart from the source code and always can. Projects like Heads and Chromium OS’s verified boot show that fully open-source boot firmware can walk hand in hand with watertight verified boot chains. The secrecy isn’t about real security. It’s about control.
Practical Pathways to Truly Open Boot
Shifting this problem takes pressure from the community and from standards bodies alike. When I’m sizing up a board for a project nowadays, I check the bootloader license first. If the vendor can’t point me to a public repo with the full boot chain source, I walk. That isn’t ideological purity. It’s a cold, practical calculation that opaque firmware piles on technical debt I’ll end up paying later.
Vendors could start by plopping memory init code under permissive licenses. The fear that a competitor will steal DDR training algorithms is mostly hot air—those routines are broadly understood and often trace back to JEDEC reference implementations anyway. Next step: pick an open bootloader framework like Coreboot or U-Boot and don’t fork it into a proprietary corner. If customizations are genuinely needed, push them upstream so the community can keep them alive. Finally, set up verified boot with open tools and user-controlled key enrollment, so owners can rekey their own hardware.
Certification programs such as OSHWA’s open hardware mark could tighten their rules to sweep in boot firmware. A board shouldn’t get the open-hardware stamp if its first instruction is a secret. I’ve pitched this in working groups before, and the friction tends to come from vendors who want the marketing glow without the engineering lift. That calculation has to flip.
FAQ
Why can’t I just ignore the bootloader and focus on the application code?
The bootloader wakes up the hardware and sets the execution environment. Any flaw or misconfiguration it carries sticks around for the system’s whole life. Ignoring it is like constructing a house on a foundation you never bothered to inspect. You might get lucky for a while, but sooner or later a crack shows up, and you won’t know where it came from or how to mend it.
Can’t proprietary bootloaders still be secure if they’re signed and verified?
Signed, verified binaries only tell you the code came from the vendor and wasn’t mangled in transit. They say nothing about whether the code contains bugs, hidden trapdoors, or plain bad design. Without source access, you’re betting entirely on the vendor’s QA and ethics. In security terms, that’s a single point of failure that open source exists to erase.
What’s the difference between open hardware and open-source hardware when it comes to firmware?
Open hardware usually means the physical design—schematics, PCB layouts, mechanical drawings. Open-source hardware stretches that idea to cover all the pieces needed to actually run the device, firmware included. A board with open schematics but a proprietary bootloader is only half-open. The hardware design is transparent, but the device’s behavior is still bossed around by closed code. For a device to call itself fully open, the boot chain has to be part of the deal.
Are there any widely available open-hardware boards with fully open bootloaders?
They exist, though they’re rarer than they ought to be. Some RISC-V platforms built around the SiFive Freedom series come with open boot ROMs and bootloader source. A handful of ARM-based single-board computers, like the BeagleBone Black, ship with open-source U-Boot and a thin layer of closed firmware. The test is to check that every stage—ROM bootloader right through the second-stage loader—has published, buildable source code you can actually read.