How far can you get building embedded hardware with zero electrical engineering knowledge and an AI coding assistant? I spent the past few days finding out.
I wanted to see if I could compile Silicon Labs multiprotocol firmware (Zigbee, Thread, Bluetooth) using Claude Code after Simplicity Studio did my head in. Sounded straightforward enough until I realised how many features and pin configurations there are to pick from.
My approach started with getting as much context into Claude Code as possible. I got it to write a Python script to crawl every page under the SiLabs multiprotocol docs. I added polite sleeps between requests because I'm not a monster.
I extracted the HTML to markdown, stripped out the navigation rubbish, then did the same with every PDF for my chip.
I found some example repos with similar approaches and pulled them down with repomix.
I asked Claude to organise all these resources however it thought made sense. Proper vibe-code territory now. I still hadn't written a single line myself.
I set up an MCP to ingest everything. I had Claude benchmark MCP retrieval vs grepping the markdown directly. Grep won for precise searches, MCP won for exploration. I stuck a hybrid search instruction in CLAUDE.md.
Then I wrote a PRD. Might be completely naive but here's what I asked for:
* Central config for all firmware features, split by chip family
* Prod build with encryption, dev build with loads of logging
* Makefile for everything because I'm not remembering long commands
* All tooling in Python with uv, TDD, functional style, static typing. I actually asked Claude what practices would make it easier for it to reason about the code later.
* Everything in Docker. Dev containers would probably be smarter but I know Docker inside out.
* A release script that publishes to GitHub with proper changelogs and interactive prompts for version bumps
I had Claude review the PRD for gaps and issues. About 10 iterations until I stopped fiddling.
I broke it into beads (thanks @steveyegge and @doodlestein). 179 beads later: working firmware builds for prod and dev, all via CLI.
Probably nothing special for proper embedded devs. But for someone who's learnt this purely through reading and being stubborn, I'm pretty pleased with the result.
Why stop here?
I'm planning to simulate the PCB fully in software before ordering anything. Renode for chip simulation. PySpice for power distribution. libgpiod to mirror real hardware. KiCad CLI for DRC and generating PCB files.
Open to any suggestions on other tools or improvements I could make.
I finally managed to try Pinout by @danjohnsonxyz! Thanks to my folks for getting me a bunch of the needed equipment!
I had to patch the libgpiod library so Pinout would work with the latest version, but it now works! 😍 Yes the wiring is messy 😂
Time to look at other drivers!
Slowly moving away from that. Most of the gpio bits got replaced by gpiod, I don't think it's possible to toggle individual GPIOs via sysfs in newer kernels without using libgpiod.
Same with display subsystem, /dev/fb0 is being phased out in support for drm kms.
It's pretty fast right now- if you're in the right field for it. Say Coding, for example.
The main worrying thing that it acts and puffs up being an expert and it fails people badly. It got LOST until tonight with some right prompts on helping with libgpiod on Linux... It kept munging the four forms of the API (1.x C and C and 2.x C and C ) It's only saving grace is that it has shite to work with on this. It's atrociously documented and the implementers seem to think that someone cares about all the GPIOs on the chip per single application and that's NOT how it's used in the Industry in the large.
Это буквально моя работа лол. Ищу в конфигах, какую опцию ядра не впихнул в образ, почему не запускается ебучий драйвер realtek, почему network manager творит чухню, почему libgpiod дергает не тот gpio, почему systemd запускает свои сервисы частично и ещё много почему