Views and opinions of the author are independent of employers past or present. Duh...I had written a draft of an anti-LLM post some months ago, and ended up not posting it. Since then, I’ve used these tools much more during my day job, as well as hobby projects. I’ve had many thoughts about LLMs, and their impact on my mental health and ability to learn (or the stunting of said growth). I’ve also experienced many cases where it is undoubtedly an amazing tool that has enabled me to learn new things by reducing the barrier to entry for new fields.
In all, it’s been a mixed bag, and I wish LLMs never existed.
But the technology is here now, so I thought I’d show some of the things I have managed to do aided by these tools. In line with not letting perfect get in the way of good/done, I’ll probably post updates in Part 2 and so on.
Linux Hacking
The Linux kernel is huge, complicated, amazing, and not something I have experience in modifying. I am however quite comfortable compiling software and figuring out how the pieces fit together (eg here and here). That being the case, I’ve gone ahead and tried a couple projects with kernel related hacking.
Samsung Galaxy S9 - starqltechn
My old phone collecting dust, so why not try to get it running Nura?1 There’s already a working port, but lots of peripherals don’t yet work, so I figured I’d start there.
Long story short, using LLMs I was able to get:
- Working camera+flash
- Aperture control
- Manual focus
- WiFi+BT (tracked down an existing patch)
- DisplayPort output
My Code
- Kernel tree
- aports (spread across branches)
Vendor Resources
Motorola Moto G Play (2024) - fogona
Fresh on the success of getting progress on an older phone, I decided to find the cheapest phone that a US resident can just go out and potentially install Linux on. At this time, it’s the Motorola Moto G Play (2024), which can be had for $100 USD new in box, carrier unlocked and bootloader unlockable. There’s already SoC support, but it’s somewhat early.
After much back and forth, I was able to get:
- GPU support
- Video decoder acceleration
- Cameras with PDAF and stock tunings
- WiFi, BT
- Modem (data, calls, texts/mms)
- GPS, accelerometer, compass, rotation, lux, proximity
My Code
Vendor Resources
- Level 3 service manual (XT2413)
- Kernel: Older, more complete, Latest
- Device tree: Older, Latest
- Subsystem device trees
- Drivers
PRs that resulted:
- Merged (as of writing):
- Unmerged:
Projects that resulted:
bootmanager
Such an inventive name, I know… A Slint GUI + Go backend tailored for Linuxboot+u-root setups, meant to be a beautiful alternative to uboot. Supports touchscreen, SSH, fastboot, LUKS decryption, usage in place of unl0kr, and a web GUI built in WASM from same Slint.
godot-maps
Comaps doesn’t look great on Linux, and I couldn’t find anything else that did what I wanted, so I made a quick and dirty navigation app built on Comaps backend using Godot. It compiles to many platforms too, including MacOS and Android.

go-msm-firmware-loader
Go port of msm-firmware-loader, used by bootmanager
go-qbootctl
A static Go replacement for the A/B slot subset of qbootctl so it works in an initramfs, used by bootmanager
go-chromatix2libcamera
Translates Qualcomm Chromatix tuning files to something libcamera (or a fork thereof) can interpret.
go-unbrick
Swiss army knife that I use to inspect stock firmware images, any files contained therein, and to make some files to help with bricked devices.
go-qshrink4
A reader for Qualcomm QShrink4 hash databases (.qdb / .qsr4), mapping the hashes in QShrink’d modem diag messages back to their format string, file and line.
2024 Kia EV6 Head Unit
New (to me) car, new project! Once I got the stock system image (download from Kia, community knows how to decrypt), a root shell on the running unit (others already figured this out), and the vendor source, I was off to the races.
Given the ancient (3.18.24, from 2015) vendor kernel (for Android Kitkat!), I used LLMs to do minimal mainline porting for the quad Cortex-A53 Telechips TCC803x SoC, which turned out to almost work first try.
With a bit of back and forth (and much USB swapping), display out was achieved and I could feed log messages back into the LLM to help it fix things up.
Note that stock was never reflashed, this is a kexec cycle that uses USB data only.
The old Android version is in some ways a blessing in disguise, because older systems are in some ways much easier to bend to your will.
I figured the quickest path to something useful was to get bootmanager running, which turned out to be trivial.

Still, after ~3.5min, it would reboot. So using LLMs I logged serial transfers from Android and did some decompilation of the MICOM firmware (seems to be some kind of PowerPC VLE chip) and Android apps to see what signals we needed to respond to, and found a hung SoC check that we can respond to to keep from being reset. At the same time we find signals for things like power draw of climate, battery state, etc. (I still need to map this out properly).
Working:
- Display
- I2C
- USB
- eMMC
- WiFi (and soon, BT)
- Touch
- Serial
- MICOM keepalive + Vehicle data
- re-kexecing back to stock Android
Does it run DOOM?
If you saw the cover image, you’ll know. Of course it does!
Vendor Resources
- Mobis open source: “AVNT STD G50 WIDE R6” for “EV6 (CV1)” (
AVNT_STD_G50_WIDE_R6.zip, 565 MB)
My Code
Formerly PostmarketOS ↩︎




