elixir

17 posts tagged elixir, newest first.

Tagged elixir

17 posts
11 Sep 2026
15 min

Beyond mTLS: identity for a fleet of IoT devices

Certificates and mTLS are the easy part. The hard part is identity over a device's whole life: first enrolment, rotation, power loss mid-rotation, and a gateway that was offline for two years.

architectureelixiriotnervessecurity
11 Sep 2026
7 min

Scenic on Nerves: scenes, graphs, drivers, and four things that bit me

Scenes, graphs, components and drivers on an STM32MP157F-DK2 — then the four gotchas that compile cleanly and fail on the device: the required assets module, the child spec that is a plain list, the missing input: style that made every button inert, and text_align: :center not working.

displayelixirembeddednervesscenicstm32mp1
11 Sep 2026
7 min

nerves_system_br: what it actually is, and where your OTP version is decided

An afternoon spent finding where a Nerves target's Erlang version is really decided — and discovering it is encoded in the filename of a patch inside a dependency I had never opened. Plus the Kconfig default that will silently move you to OTP 29 the moment you bump.

buildrootelixirembeddednervesotp
10 Sep 2026
9 min

The STM32MP157F-DK2 display stack, and the Vivante GPU I did not need

Between an Elixir process and a lit pixel on the DK2 there is an LTDC, a MIPI DSI host, an OTM8009A panel and a Goodix touch controller. I spent a day preparing to enable the Vivante GC NanoUltra, then read scenic_driver_local's source and found it renders in software to /dev/fb0.

displayelixirembeddednervesscenicstm32mp1
10 Sep 2026
6 min

Previewing a Scenic UI on the host, with no screen and no board

An hour spent trying to open a window that was never going to be drawn, then the realisation that a Scenic graph is just data. Walking it and rendering to SVG found two layout bugs in a minute that had survived 49 tests and a review.

displayelixirnervesscenicstm32mp1testing
10 Sep 2026
5 min

A drift-free countdown on an STM32MP157F-DK2, tested in milliseconds

Counting down by subtracting the tick interval drifts on an embedded board. Deriving the remaining time from a monotonic deadline instead makes it drift-free by construction — and injecting the clock turns a 25-minute test into a map update. It also caught a real race.

elixirnervesotpstm32mp1testing
03 Sep 2026
5 min

Compile-time Markdown in Phoenix, and why I reversed it

I built this blog to parse every post at compile time, wrote up why it was the right call, and then reversed it three weeks later. Both of my premises were false. Here is what replaced it, and how it keeps every property the compile-time version actually earned.

architecturebuildelixirphoenix
03 Aug 2026
6 min

It compiles. It still won't package.

Four packaging bugs between a Nerves system that builds and a firmware that flashes — plus the kconfig hang that looks exactly like a working build.

buildrootelixirembeddednerves
27 Jul 2026
6 min

Authoring a Nerves system by hand

Why I wrote a custom Nerves base image file by file for a CompuLab IOT-DIN-IMX8PLUS instead of forking a sibling board's system.

buildrootelixirembeddedimx8nerves
20 Jul 2026
93 min

Building the Nerves system: the first attempt

Before I show you the first build attempt (and its failures), I need to clear up something that confused me at first.

elixirembeddednervesstm32mp1
13 Jul 2026
15 min

Device trees demystified: reading the hardware map

On a desktop PC, when you plug in a USB device or install a PCI graphics card, the operating system discovers it automatically. PCI has enumeration.

elixirembeddednervesstm32mp1
06 Jul 2026
14 min

The STM32MP1 boot chain, from power-on to Linux

I've been using Nerves for years, and for most of that time the boot process was a black box. Plug in power, wait a few seconds, get an IEx prompt. Magic.

elixirembeddednervesstm32mp1
29 Jun 2026
6 min

Why build a custom Nerves gateway from scratch

I've been using Nerves for a while now. Raspberry Pi, BeagleBone — the usual suspects. You pull in the official system, write your Elixir code, burn firmware,…

elixirembeddednervesstm32mp1
15 Jun 2026
4 min

It boots signed — and the HAB gate in booti I did not know I had

The signed Nerves firmware boots. And a finding that deleted an open task: enabling CONFIG_IMX_HAB wires an automatic fail-closed authentication gate into booti itself, for every kernel boot, with no bootcmd changes at all. Plus a fleet gotcha about who can SSH in.

elixirembeddedhabimx8nervessecure-bootu-boot
08 Jun 2026
3 min

Making the Nerves build sign imx-boot and the kernel automatically

Wiring signing into the build, and a correction worth more than the wiring: I planned to point fwup.conf at signed artifacts, and that was the wrong layer entirely — the signed bootloader is not in the .fw file at all.

buildrootelixirembeddedfwupimx8nervessecure-boot
25 May 2026
4 min

Forking the Nerves system, and enabling HAB inside a Buildroot build

Three real bugs blocked the first three attempts: a nerves package version whose error message points nowhere near the cause, a missing .tool-versions, and the same SPL SRAM overflow track A hit. Plus the arm64 header field that is at offset 0x10, not 0x4.

buildrootelixirembeddedimx8nervessecure-boot
18 May 2026
3 min

From a lab unit to a production Nerves system on the IOT-DIN-IMX8PLUS

The first series proved HAB secure boot on a disposable lab unit running stock Linux. This one carries it into a real Nerves system — in a fork, so the build that runs in the field is never at risk. Same board, different starting point, and several things that do not transfer.

elixirembeddedimx8nervessecure-boot