Extracting Sensor Calibration from Intel's AIQB Binary for libcamera
If you followed the Intel IPU6 webcam migration post, you know that libcameraβs Simple IPA falls back to uncalibrated.yaml when no sensor-specific tuning file exists. That fallback enables AGC and AWB but has no color correction matrix, which means colors depend entirely on the grey world AWB algorithm to converge - and it often does not converge well, especially under mixed or warm lighting. Intel ships a per-sensor calibration binary with every Windows IPU6 camera driver: a file with the .aiqb extension, sometimes called a CPFF. These binaries contain the CCMs, AWB neutral locus, and sensor properties that Intelβs proprietary icamerasrc pipeline reads. The data was measured on real hardware, which makes it more accurate than any generic default. ...
Yocto build tunables and their hidden costs
Every Yocto user eventually copies the same handful of tunables into local.conf to make builds bearable. ccache, a parallelism bump, a longer fetch timeout, a couple of PREMIRROR lines, an image-features prune. The recipe gets passed around in chat, lands on a wiki, gets forked into a layer. What rarely gets passed around is the failure mode each line buys you. Every one of these knobs swaps βslowβ for βdifferent failure modeβ, and the new mode shows up at the worst possible time - mid-fetch on a CI runner, or at link time when the box runs out of memory. ...
When You're Fired, Your Next Job Is Finding a Job
Today, April 27, marks exactly one month since I was told my job was over. Looking back, the signs were there - when the mass layoffs started and good people began disappearing, it was hard not to read it as a signal that nobody was safe, including me. And yet, when the moment actually came, it still landed differently than I expected. That gap between knowing it is possible and having it happen to you is where the shock lives. Do not be surprised by it. It does not mean you were naive or unprepared. It means you are human. ...
Auditing your Yocto build for CRA compliance
TL;DR CRA is a process and design regulation; the risk analysis is the central document and the technical file is the evidence the regulator audits, not a scanner-selection problem. Yocto already emits the build-derivable half: SBOM (create-spdx), CVE scans, license manifests, signing posture. The vendor-committed half - CVD policy, support period, update mechanism, Declaration of Conformity - has to be written by hand. shipcheck reads a Yocto build plus product.yaml, pivots findings by CRA Annex, and drafts your Annex VII technical file and DoC. The received wisdom is wrong Read any CRA compliance article from a security vendor and you will see the same shape of pitch: run a scanner, triage the CVEs, generate an SBOM, ship. The regulation becomes a scanner-selection problem, and whichever product the vendor sells happens to be the right scanner. ...
What's Next: Available for New Opportunities
At the end of March 2026 I was laid off from Linaro as part of a round of cuts. After 3.5 years working on upstream kernel enablement, embedded security, and CI/CD infrastructure for ARM-based platforms, it came as a surprise - but I am using the time well. What I have been doing since The upstream work did not stop. I currently have three active patch series under review: An 18-patch WiFi 7 series on linux-wireless@ adding full support for the MediaTek MT7927 (Filogic 380) to the mt76/mt7925 driver. The series is at v4, community-tested across 10+ hardware platforms with 9 Tested-by tags from ASUS, Lenovo, Foxconn, and AMD. Phoronix covered it: MediaTek MT7927 WiFi 7 Linux Support Coming Together. ...
MT7927 WiFi on Linux: Making It Work
In my previous post, I ended with a wall: mt7925e 0000:0b:00.0: ASIC revision: 0000 mt7925e 0000:0b:00.0: Message 00000010 (seq 2) timeout mt7925e 0000:0b:00.0: Failed to get patch semaphore mt7925e 0000:0b:00.0: hardware init failed The mt7925e driver bound to the MT7927βs WiFi hardware, but registers returned zeros. The chip sat behind PCIe doing nothing. The ehausig/mt7927 project had gotten firmware into kernel memory but stalled at DMA state 0xffff10f1 - βwaiting for firmware transfer.β Nobody had gotten past it. ...
MT7927 Bluetooth: From DKMS to Upstream
In Part 1, I documented getting MT7927 Bluetooth working through a DKMS package - patching three missing layers (USB device ID, hardware variant support, and firmware) into an out-of-tree build. That post ended with: As of February 2026, none of the three layers have reached mainline Linux. This post covers what happened next: submitting all three layers upstream and getting the BT driver patches merged after five revision cycles. Update (2026-03-31): The BT driver patches have been merged into bluetooth-next by Luiz Augusto von Dentz. They will ship in mainline Linux 7.1 or 7.2. ...
Building a Bootable Windows USB from Linux for Firmware Updates
Three devices on my PC have firmware that can only be updated through Windows tools: an ASMedia ASM4242 USB4 controller (ASUS firmware utility), an NZXT Kraken Elite AIO cooler (NZXT CAM), and a Razer Kiyo Pro Ultra webcam (Razer Synapse). Every other component - NVMe SSD, motherboard BIOS, fwupd-supported devices - has a Linux-native update path. These three donβt, and their vendors show no interest in changing that. The obvious answer is βjust boot Windows.β But I donβt have a Windows partition, donβt want one, and installing Windows to flash three firmware blobs is absurd. I needed a way to boot a fully configured Windows environment from Linux, run the vendor tools, and shut down. No permanent installation, no dual-boot, no repartitioning. ...
Intel IPU6 Webcam on Linux: From Proprietary Stack to Mainline
The Intel IPU6 (Imaging Processing Unit, generation 6) is the camera subsystem in Tiger Lake, Alder Lake, Raptor Lake, and Meteor Lake laptops. If you have a recent ThinkPad, XPS, or Surface, your webcam likely runs through it. For years, getting it to work on Linux meant an out-of-tree driver stack from Intelβs GitHub - four separate repositories, a DKMS module, proprietary firmware blobs, and a GStreamer-based relay daemon. It was fragile, broke on kernel updates, and couldnβt survive suspend/resume on recent kernels. ...
MT7927 WiFi on Linux: Wrong Driver, Wrong Chip, No Driver
Update - March 5, 2026 MT7927 WiFi now fully works on Linux - 2.4/5/6 GHz, WiFi 7 320MHz EHT (~1 Gbps), MLO, AP mode, suspend/resume, and mac_reset recovery. 20 patches, community-tested on 10+ hardware platforms. See the follow-up: MT7927 WiFi on Linux: Making It Work. In my previous post, I documented the 15-month journey to get Bluetooth working on the MediaTek MT7927. The btusb-mt7927-dkms AUR package patched three missing layers - USB device ID, hardware variant support, and firmware extraction - to bring up a fully functional Bluetooth 5.4 adapter. ...