My first PCB project is a success! Itβs a tiny STM32L1 board. USB in Rust works on it after some development (yeah the Rust HAL for the L1 series was the one that wasnβt maintainedβ¦)
Tag #hardware
Happy new year! Since I havenβt been posted in a while, hereβs what Iβve been up to lately:
- adopted Wezterm as my terminal emulator, contributing a bunch of (mostly Wayland-related) patches in process
- figured out a minimal tool to make Xiaomi power strips work without the βcloudβ
- saw a SIMD-accelerated
tac
line-reversing utility and immediately ported it to arm64 NEON/AdvSIMD - helped out with firmware and EC (just testing with the latter) patches for the Thinkpad L430/L530
- developed a FreeBSD driver for the SPI keyboard/touchpad attachment in Apple MacBooks (currently only in my fork and only tested on the 2015 MBP, spibus-side prerequisites are in review)
- related: got the Magic Trackpad 2 (which uses a compact packet format but similar surroundings to bcm5974) working too
- started learning PCB design with Horizon EDA
- which has of course resulted in making some new tools for it
- found bugs in the mold linker and zlib-ng
- made new Wayfire plugins: wf-globalgestures, wf-dynspaces, wf-touchpad-gesture-drag (yeah, turns out 3-finger drag is easy with current libinput: itβs a hold-cancel-swipe sequence!)
- finally made a freebsd-embedded-hal Rust crate
- just now added dark mode to micro-panel where Iβm writing this
Unusually, I do have a legit new yearβs resolution this time: I should blog more! Want to publish some long-form things here.
FreeBSD and custom firmware on the Google Pixelbook
A search for a new thin-and-light laptop, a journey through the Chromebook firmware trust architecture, some FreeBSD kernel development, and finally, something about actually customizing open source firmware.
Itβs almost 2019, so using a SATA SSD as the boot drive for your main development OS is not cool anymoreβ¦ and I was running out of space on this 128gb one, so I bought an NVMe drive to replace it. Yay.
Because I donβt have anything with two or more M.2 slots and I was too lazy to find/make a bootable FreeBSD USB drive, moving the system involved inserting the new drive into another machine (server) and using ZFS replication to copy the data. (And forgetting to set bootfs
on the pool, of course.)
But the fun part was that my 10G network card stopped working. Moving the card into the middle slot (from the bottom one) fixed it. Reported a FreeBSD bug.
The weirdest discovery of the day though was that MSI mainboards persist the βabove 4Gβ PCIe setting across CMOS clears. What in the actual heck. This is the setting that breaks display output on most GPUs (funnily enough, mine did display non-EFI things such as the network cardβs boot prompt and the glitchy way FreeBSD displays the console when booting on UEFI with the EFI framebuffer disabled). Itβs a setting you very much need to clear.