<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linuxboot on William Floyd</title><link>https://w-floyd.com/tags/linuxboot/</link><description>Recent content in Linuxboot on William Floyd</description><generator>Hugo</generator><language>en</language><managingEditor>William Floyd</managingEditor><webMaster>William Floyd</webMaster><lastBuildDate>Sat, 17 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://w-floyd.com/tags/linuxboot/index.xml" rel="self" type="application/rss+xml"/><item><title>Notes on LLMs - Part 1</title><link>https://w-floyd.com/2026/10/notes-on-llms-part-01/</link><pubDate>Sat, 17 Oct 2026 00:00:00 +0000</pubDate><author>William Floyd</author><guid>https://w-floyd.com/2026/10/notes-on-llms-part-01/</guid><description>&lt;p&gt;I had written a draft of an anti-LLM post some months ago, and ended up not posting it.
Since then, I&amp;rsquo;ve used these tools much more during my day job, as well as hobby projects.
I&amp;rsquo;ve had many thoughts about LLMs, and their impact on my mental health and ability to learn (or the stunting of said growth).
I&amp;rsquo;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.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In all, it&amp;rsquo;s been a mixed bag, and I wish LLMs never existed.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But the technology is here now, so I thought I&amp;rsquo;d show &lt;em&gt;some&lt;/em&gt; 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&amp;rsquo;ll probably post updates in Part 2 and so on.&lt;/p&gt;
&lt;h1 id="linux-hacking"&gt;
 &lt;a class="heading-link" href="#linux-hacking"&gt;Linux Hacking&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;The Linux kernel is huge, complicated, amazing, and &lt;em&gt;not&lt;/em&gt; something I have experience in modifying.
I am however quite comfortable compiling software and figuring out how the pieces fit together (eg &lt;a href="https://github.com/W-Floyd/solus-deepin" class="external-link" target="_blank" rel="noopener"&gt;here&lt;/a&gt; and &lt;a href="https://github.com/W-Floyd/solus-lxqt" class="external-link" target="_blank" rel="noopener"&gt;here&lt;/a&gt;).
That being the case, I&amp;rsquo;ve gone ahead and tried a couple projects with kernel related hacking.&lt;/p&gt;
&lt;h2 id="samsung-galaxy-s9---starqltechn"&gt;
 &lt;a class="heading-link" href="#samsung-galaxy-s9---starqltechn"&gt;Samsung Galaxy S9 - &lt;code&gt;starqltechn&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;My old phone collecting dust, so why not try to get it running Nura?&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;
There&amp;rsquo;s already a &lt;a href="https://wiki.nura.eco/wiki/Samsung_Galaxy_S9_%28samsung-starqltechn%29" class="external-link" target="_blank" rel="noopener"&gt;working port&lt;/a&gt;, but lots of peripherals don&amp;rsquo;t yet work, so I figured I&amp;rsquo;d start there.&lt;/p&gt;
&lt;p&gt;Long story short, using LLMs I was able to get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Working camera+flash&lt;/li&gt;
&lt;li&gt;Aperture control&lt;/li&gt;
&lt;li&gt;Manual focus&lt;/li&gt;
&lt;li&gt;WiFi+BT (tracked down an existing patch)&lt;/li&gt;
&lt;li&gt;DisplayPort output&lt;/li&gt;
&lt;/ul&gt;
&lt;style&gt;.figure-row{display:flex;gap:1rem;margin:1rem 0;align-items:flex-start}.figure-row&gt;*{min-width:0;margin:0}.figure-row a{display:block}.figure-row img{display:block;width:100%;height:auto;margin:0 !important}.figure-row .rimg-rot{margin:0 !important;max-width:none !important}.figure-row .immich-video{margin:0}&lt;/style&gt;&lt;div class="figure-row"&gt;&lt;div style="flex: 0.7529 1 0%; min-width: 0;"&gt;&lt;a href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-3072.avif" data-hq-href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-3072.avif" target="_blank" rel="noopener" class="image-full"&gt;&lt;img data-rimg src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-400.avif" alt="Samsung Galaxy S9 running a camera app, showing a color-bar test pattern from its working rear camera." title="Samsung Galaxy S9 running a camera app, showing a color-bar test pattern from its working rear camera." width="3072" height="4080" srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-960.avif 960w" sizes="(max-width: 768px) %!d(float64=27)vw, %!d(float64=228)px" data-hq-src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-400.avif" data-hq-srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260908_152254681-hq-960.avif 960w" loading="lazy" decoding="async" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="flex: 0.7529 1 0%; min-width: 0;"&gt;&lt;a href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-3072.avif" data-hq-href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-3072.avif" target="_blank" rel="noopener" class="image-full"&gt;&lt;img data-rimg src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-400.avif" alt="Galaxy S9 camera app with the aperture selector open, offering f/1.5 and f/2.4." title="Galaxy S9 camera app with the aperture selector open, offering f/1.5 and f/2.4." width="3072" height="4080" srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-960.avif 960w" sizes="(max-width: 768px) %!d(float64=27)vw, %!d(float64=228)px" data-hq-src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-400.avif" data-hq-srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_140412637-hq-960.avif 960w" loading="lazy" decoding="async" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="flex: 1.3281 1 0%; min-width: 0;"&gt;&lt;a href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-4080.avif" data-hq-href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-4080.avif" target="_blank" rel="noopener" class="image-full"&gt;&lt;img data-rimg src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-400.avif" alt="Galaxy S9 connected over USB-C to a monitor, which shows the GNOME About screen: postmarketOS edge, Linux 7.1.0-rc1-sdm845, FD630 graphics." title="Galaxy S9 connected over USB-C to a monitor, which shows the GNOME About screen: postmarketOS edge, Linux 7.1.0-rc1-sdm845, FD630 graphics." width="4080" height="3072" srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-3840.avif 3840w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-4080.avif 4080w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-960.avif 960w" sizes="(max-width: 768px) %!d(float64=47)vw, %!d(float64=403)px" data-hq-src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-400.avif" data-hq-srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-3840.avif 3840w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-4080.avif 4080w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260911_133003469.MP-hq-960.avif 960w" loading="lazy" decoding="async" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id="my-code"&gt;
 &lt;a class="heading-link" href="#my-code"&gt;My Code&lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/W-Floyd/linux/tree/dev" class="external-link" target="_blank" rel="noopener"&gt;Kernel tree&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/W-Floyd/pmaports" class="external-link" target="_blank" rel="noopener"&gt;aports&lt;/a&gt; (spread across branches)&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;&lt;summary style="cursor:pointer;font-weight:600"&gt;Vendor Resources&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://elektrotanya.com/samsung_galaxy_s9_g9600_service_manual.pdf/download.html" class="external-link" target="_blank" rel="noopener"&gt;Level 3 service manual (SM-G9600)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/droidian-devices/linux-android-samsung-starqlte" class="external-link" target="_blank" rel="noopener"&gt;Samsung 4.9 kernel source&lt;/a&gt; (Droidian&amp;rsquo;s tree)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dumps.tadiphone.dev/dumps/samsung/starqltechn" class="external-link" target="_blank" rel="noopener"&gt;Stock firmware dump&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/details&gt;

&lt;h2 id="motorola-moto-g-play-2024---fogona"&gt;
 &lt;a class="heading-link" href="#motorola-moto-g-play-2024---fogona"&gt;Motorola Moto G Play (2024) - &lt;code&gt;fogona&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Fresh on the success of getting progress on an &lt;em&gt;older&lt;/em&gt; 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&amp;rsquo;s the Motorola Moto G Play (2024), which can be had for $100 USD new in box, carrier unlocked and bootloader unlockable.
There&amp;rsquo;s &lt;a href="https://wiki.nura.eco/wiki/Qualcomm_Snapdragon_680_%28SM6225%29" class="external-link" target="_blank" rel="noopener"&gt;already SoC support&lt;/a&gt;, but it&amp;rsquo;s somewhat early.&lt;/p&gt;
&lt;p&gt;After much back and forth, I was able to get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GPU support&lt;/li&gt;
&lt;li&gt;Video decoder acceleration&lt;/li&gt;
&lt;li&gt;Cameras with PDAF and stock tunings&lt;/li&gt;
&lt;li&gt;WiFi, BT&lt;/li&gt;
&lt;li&gt;Modem (data, calls, texts/mms)&lt;/li&gt;
&lt;li&gt;GPS, accelerometer, compass, rotation, lux, proximity&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="my-code-1"&gt;
 &lt;a class="heading-link" href="#my-code-1"&gt;My Code&lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/W-Floyd/linux/tree/fogona-mainline" class="external-link" target="_blank" rel="noopener"&gt;Kernel tree&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/W-Floyd/linux/tree/exp-pdaf" class="external-link" target="_blank" rel="noopener"&gt;Kernel tree with Linuxboot + camera changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/W-Floyd/pmaports/tree/fogona" class="external-link" target="_blank" rel="noopener"&gt;pmaports&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;&lt;summary style="cursor:pointer;font-weight:600"&gt;Vendor Resources&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.ifixit.com/Document/ohXytuihYMtgUiFU/Moto-G-Play-XT2413-Level-3-Service-Manual.pdf" class="external-link" target="_blank" rel="noopener"&gt;Level 3 service manual (XT2413)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kernel: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-msm/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older, more complete&lt;/a&gt;, &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-msm/tree/android-14-release-u1tf34.100-35-5-3-1" class="external-link" target="_blank" rel="noopener"&gt;Latest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Device tree: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;, &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1" class="external-link" target="_blank" rel="noopener"&gt;Latest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Subsystem device trees
&lt;ul&gt;
&lt;li&gt;display: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-display-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;, &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-display-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1" class="external-link" target="_blank" rel="noopener"&gt;Latest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;camera: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-camera-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;audio: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-audio-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;, &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-audio-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1" class="external-link" target="_blank" rel="noopener"&gt;Latest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;nfc: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-nfc-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;, &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-nfc-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1" class="external-link" target="_blank" rel="noopener"&gt;Latest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;bt: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-bt-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;, &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-bt-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1" class="external-link" target="_blank" rel="noopener"&gt;Latest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;graphics: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-graphics-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;video: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-video-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;wlan: &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-wlan-devicetree/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;, &lt;a href="https://github.com/MotorolaMobilityLLC/kernel-wlan-devicetree/tree/android-14-release-u1tf34.100-35-5-3-1" class="external-link" target="_blank" rel="noopener"&gt;Latest&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Drivers
&lt;ul&gt;
&lt;li&gt;Motorola modules: &lt;a href="https://github.com/MotorolaMobilityLLC/motorola-kernel-modules/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Camera: &lt;a href="https://github.com/MotorolaMobilityLLC/vendor-qcom-opensource-camera-kernel/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Graphics (KGSL): &lt;a href="https://github.com/MotorolaMobilityLLC/vendor-qcom-opensource-graphics-kernel/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;, &lt;a href="https://github.com/MotorolaMobilityLLC/vendor-qcom-opensource-graphics-kernel/tree/android-14-release-u1tf34.100-35-5-3-1" class="external-link" target="_blank" rel="noopener"&gt;Latest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Video: &lt;a href="https://github.com/MotorolaMobilityLLC/vendor-qcom-opensource-video-driver/tree/android-13-release-t3tfs33.66-37-3" class="external-link" target="_blank" rel="noopener"&gt;Older&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/details&gt;

&lt;h3 id="prs-that-resulted"&gt;
 &lt;a class="heading-link" href="#prs-that-resulted"&gt;PRs that resulted:&lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Merged (as of writing):
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gitlab.freedesktop.org/mobile-broadband/libqmi/-/merge_requests/477" class="external-link" target="_blank" rel="noopener"&gt;mobile-broadband/libqmi | voice: add the pre-alerting call state&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/3505" class="external-link" target="_blank" rel="noopener"&gt;GNOME/gnome-control-center | wwan: Restore the APN dialog header bar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.postmarketos.org/postmarketOS/boot-deploy/-/merge_requests/116" class="external-link" target="_blank" rel="noopener"&gt;postmarketOS/boot-deploy | flash vendor_boot: look up the partition before checking its size&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Unmerged:
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1503" class="external-link" target="_blank" rel="noopener"&gt;mobile-broadband/ModemManager | qmi: handle the pre-alerting call state&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.gnome.org/GNOME/mobile-broadband-provider-info/-/merge_requests/165" class="external-link" target="_blank" rel="noopener"&gt;GNOME/mobile-broadband-provider-info | us: AT&amp;amp;T: add ERESELLER as MVNO APN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/kop316/mmsd/-/merge_requests/132" class="external-link" target="_blank" rel="noopener"&gt;kop316/mmsd | service-providers: match the APN case-insensitively&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="projects-that-resulted"&gt;
 &lt;a class="heading-link" href="#projects-that-resulted"&gt;Projects that resulted:&lt;/a&gt;
&lt;/h3&gt;
&lt;h4 id="bootmanager"&gt;
 &lt;a class="heading-link" href="#bootmanager"&gt;&lt;a href="https://github.com/W-Floyd/bootmanager" class="external-link" target="_blank" rel="noopener"&gt;bootmanager&lt;/a&gt;&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;Such an inventive name, I know&amp;hellip;
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 &lt;a href="https://github.com/droidian/unl0kr" class="external-link" target="_blank" rel="noopener"&gt;unl0kr&lt;/a&gt;, and a web GUI built in WASM from same Slint.&lt;/p&gt;
&lt;style&gt;.figure-row{display:flex;gap:1rem;margin:1rem 0;align-items:flex-start}.figure-row&gt;*{min-width:0;margin:0}.figure-row a{display:block}.figure-row img{display:block;width:100%;height:auto;margin:0 !important}.figure-row .rimg-rot{margin:0 !important;max-width:none !important}.figure-row .immich-video{margin:0}&lt;/style&gt;&lt;div class="figure-row"&gt;&lt;div style="flex: 0.7529 1 0%; min-width: 0;"&gt;&lt;a href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-3072.avif" data-hq-href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-3072.avif" target="_blank" rel="noopener" class="image-full"&gt;&lt;img data-rimg src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-400.avif" alt="Moto G Play (2024) in hand, showing the bootmanager Unlock screen with a password field and on-screen keyboard for the UFS userdata partition." title="Moto G Play (2024) in hand, showing the bootmanager Unlock screen with a password field and on-screen keyboard for the UFS userdata partition." width="3072" height="4080" srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-960.avif 960w" sizes="(max-width: 768px) %!d(float64=36)vw, %!d(float64=313)px" data-hq-src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-400.avif" data-hq-srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195654058-hq-960.avif 960w" loading="lazy" decoding="async" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="flex: 0.7529 1 0%; min-width: 0;"&gt;&lt;a href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-3072.avif" data-hq-href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-3072.avif" target="_blank" rel="noopener" class="image-full"&gt;&lt;img data-rimg src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-400.avif" alt="Moto G Play (2024) in hand, showing the bootmanager Choose a system screen with a postmarketOS card marked default, on encrypted UFS userdata." title="Moto G Play (2024) in hand, showing the bootmanager Choose a system screen with a postmarketOS card marked default, on encrypted UFS userdata." width="3072" height="4080" srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-960.avif 960w" sizes="(max-width: 768px) %!d(float64=36)vw, %!d(float64=313)px" data-hq-src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-400.avif" data-hq-srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_195700115-hq-960.avif 960w" loading="lazy" decoding="async" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="flex: 0.5625 1 0%; min-width: 0;"&gt;&lt;div class="immich-video"&gt;
&lt;style&gt;
.immich-video{position:relative;width:100%;margin:2rem auto;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.25);container-type:inline-size}
.immich-video .iv-load{all:unset;display:block;width:100%;cursor:pointer}
.immich-video img,.immich-video video{display:block;width:100%;height:auto;margin:0 auto !important;border-radius:0 !important;box-shadow:none !important}
.immich-video img[hidden]{display:none!important}
.immich-video video{background:#000}
.immich-video .iv-load span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100% - 1.6rem);box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;padding:.6rem 1.2rem;border-radius:1.4rem;background:rgba(0,0,0,.7);color:#fff;font-size:1.6rem}
.immich-video small{display:block;font-size:.8em;opacity:.8}
.immich-video .iv-load:hover span,.immich-video .iv-load:focus-visible span{background:rgba(0,0,0,.9)}
.iv-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:.8rem;padding:2.4rem 1rem .8rem;background:linear-gradient(transparent,rgba(0,0,0,.8));color:#fff;opacity:0;transition:opacity .2s}
.immich-video:hover .iv-bar,.immich-video:focus-within .iv-bar,.immich-video.iv-paused .iv-bar{opacity:1}
.iv-btn,.iv-q{all:unset;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none;border-radius:4px}
.iv-btn{width:3.2rem;height:3.2rem}
.iv-btn svg{width:2.4rem;height:2.4rem}
.iv-fs,.iv-mute,.iv-play{position:absolute;border-radius:6px;background:rgba(0,0,0,.55);color:#fff;opacity:0;transition:opacity .2s}
.immich-video:hover :is(.iv-fs,.iv-mute,.iv-play),.immich-video:focus-within :is(.iv-fs,.iv-mute,.iv-play),.immich-video.iv-paused :is(.iv-fs,.iv-mute,.iv-play){opacity:1}
.iv-fs{top:.8rem;right:.8rem}
.iv-mute{top:.8rem;left:.8rem}
.iv-play{left:50%;top:50%;transform:translate(-50%,-50%);width:6rem;height:6rem;border-radius:50%}
.iv-play svg{width:3.6rem;height:3.6rem}
.iv-q{height:3.2rem;padding:0 .6rem;font-size:1.3rem;font-weight:600}
.iv-q[hidden]{display:none}
.iv-btn:focus-visible,.iv-q:focus-visible{outline:2px solid #fff}
.iv-seek{flex:1;min-width:0;margin:0;accent-color:#fff;cursor:pointer}
.iv-time{flex:none;font-size:1.3rem;font-variant-numeric:tabular-nums;white-space:nowrap}
@container (max-width:420px){.iv-time{display:none}}
@container (max-width:380px){.immich-video .iv-load span{padding:.4rem .9rem;font-size:1.3rem}}
.immich-video:fullscreen,.immich-video:-webkit-full-screen{width:100%;height:100%;margin:0;border-radius:0;background:#000;display:flex;align-items:center;justify-content:center}
.immich-video:fullscreen video,.immich-video:-webkit-full-screen video{width:auto;height:100%;max-width:100%;max-height:100%;aspect-ratio:auto!important;object-fit:contain}
&lt;/style&gt;
&lt;script&gt;
if(!window.immichVideo){window.immichVideo=1;
var SVGNS="http://www.w3.org/2000/svg";
var ICONS={play:{f:1,d:["M8 5v14l11-7z"]},pause:{f:1,d:["M6 5h4v14H6zM14 5h4v14h-4z"]},vol:{f:1,d:["M3 9v6h4l5 5V4L7 9z","M16 8.5a5 5 0 0 1 0 7","M19 6a9 9 0 0 1 0 12"]},mute:{f:1,d:["M3 9v6h4l5 5V4L7 9z","M16 9l5 6","M21 9l-5 6"]},fs:{f:0,d:["M5 9V5h4","M15 5h4v4","M19 15v4h-4","M9 19H5v-4"]}};
function tier(){var m=document.body.dataset.imageMode;try{m=m||localStorage.getItem("imagequality")}catch(x){}return{low:480,med:720,hi:1080}[m]||720}
function pick(L,t){var k=-1,g=1e9;L.forEach(function(l,i){var s=Math.min(l.width,l.height),n=Math.abs(s-t);if(n&lt;g||n===g&amp;&amp;l.bitrate&lt;L[k].bitrate){g=n;k=i}});return k}
function ic(n){var a=ICONS[n],s=document.createElementNS(SVGNS,"svg");s.setAttribute("viewBox","0 0 24 24");a.d.forEach(function(d,i){var e=document.createElementNS(SVGNS,"path");e.setAttribute("d",d);if(a.f&amp;&amp;i===0){e.setAttribute("fill","currentColor")}else{e.setAttribute("fill","none");e.setAttribute("stroke","currentColor");e.setAttribute("stroke-width","2");e.setAttribute("stroke-linecap","round");e.setAttribute("stroke-linejoin","round")}s.appendChild(e)});return s}
function el(t,c,l){var e=document.createElement(t);if(c)e.className=c;if(l)e.setAttribute("aria-label",l);return e}
function btn(c,l){var b=el("button",c,l);b.type="button";return b}
function setIc(b,n){b.textContent="";b.appendChild(ic(n))}
function fmt(s){if(!isFinite(s))return"0:00";var m=Math.floor(s/60),x=Math.floor(s%60);return m+":"+(x&gt;9?"":"0")+x}
function controls(box,v){
var bar=el("div","iv-bar"),pl=btn("iv-btn","Play"),sk=el("input","iv-seek","Seek"),tm=el("span","iv-time"),mu=btn("iv-btn","Mute"),q=btn("iv-q","Quality"),fs=btn("iv-btn","Fullscreen");
sk.type="range";sk.min=0;sk.max=1000;sk.value=0;q.hidden=true;setIc(fs,"fs");
[sk,tm,q].forEach(function(e){bar.appendChild(e)});box.appendChild(bar);pl.className+=" iv-play";mu.className+=" iv-mute";fs.className+=" iv-fs";[pl,mu,fs].forEach(function(e){box.appendChild(e)});
function toggle(){if(v.paused){v.play().catch(function(){})}else{v.pause()}}
function sync(){setIc(pl,v.paused?"play":"pause");pl.setAttribute("aria-label",v.paused?"Play":"Pause");box.classList.toggle("iv-paused",v.paused);setIc(mu,v.muted?"mute":"vol");mu.setAttribute("aria-label",v.muted?"Unmute":"Mute")}
function time(){var d=v.duration;tm.textContent=fmt(v.currentTime)+" / "+fmt(d);if(d&amp;&amp;isFinite(d)&amp;&amp;!sk.dragging)sk.value=v.currentTime/d*1000}
["play","pause","volumechange"].forEach(function(e){v.addEventListener(e,sync)});
["timeupdate","durationchange","loadedmetadata"].forEach(function(e){v.addEventListener(e,time)});
pl.addEventListener("click",toggle);v.addEventListener("click",toggle);
sk.addEventListener("input",function(){sk.dragging=1;if(isFinite(v.duration))v.currentTime=sk.value/1000*v.duration;time()});
sk.addEventListener("change",function(){sk.dragging=0});
mu.addEventListener("click",function(){v.muted=!v.muted});
fs.addEventListener("click",function(){var d=document;if(d.fullscreenElement||d.webkitFullscreenElement){(d.exitFullscreen||d.webkitExitFullscreen).call(d)}else if(box.requestFullscreen){box.requestFullscreen()}else if(box.webkitRequestFullscreen){box.webkitRequestFullscreen()}else if(v.webkitEnterFullscreen){v.webkitEnterFullscreen()}});
q.addEventListener("click",function(){var h=v.immichHls;if(!h||!h.levels)return;var t=[];h.levels.forEach(function(l){var s=Math.min(l.width,l.height);if(t.indexOf(s)===-1)t.push(s)});t.sort(function(a,b){return a-b});var c=h.levels[h.nextLevel&gt;-1?h.nextLevel:h.currentLevel];v.immichSet(t[(t.indexOf(c?Math.min(c.width,c.height):0)+1)%t.length])});
v.immichSet=function(t){var h=v.immichHls;if(!h||!h.levels||!h.levels.length)return;var k=pick(h.levels,t),l=h.levels[k];h.nextLevel=k;q.hidden=false;q.textContent=Math.min(l.width,l.height)+"p"};
sync();time()}
function sizes(){var t=tier();
document.querySelectorAll(".immich-video video").forEach(function(v){if(v.immichSet)v.immichSet(t)});
document.querySelectorAll(".immich-video img[data-thumb]").forEach(function(i){var u=t&lt;720?i.dataset.thumb:i.dataset.preview;if(i.getAttribute("src")!==u)i.src=u});
document.querySelectorAll(".immich-video .iv-load").forEach(function(b){var z=b.querySelector("small"),n=b.dataset["s"+t];if(z)z.textContent=n?"~"+n:""})}
document.addEventListener("DOMContentLoaded",function(){sizes();new MutationObserver(sizes).observe(document.body,{attributes:true,attributeFilter:["data-image-mode"]})});
document.addEventListener("click",function(e){var b=e.target.closest(".immich-video .iv-load");if(!b)return;
var d=b.dataset,box=b.parentNode,v=document.createElement("video"),im=b.querySelector("img:not([hidden])"),rc=im&amp;&amp;im.getBoundingClientRect();if(rc&amp;&amp;rc.width&amp;&amp;rc.height){v.style.aspectRatio=rc.width+"/"+rc.height;v.style.objectFit="contain"}v.playsInline=true;v.muted=d.muted==="true";b.replaceWith(v);controls(box,v);var t=tier();
function mp4(){v.src=d.src;v.play().catch(function(){})}
function go(){if(!window.Hls||!Hls.isSupported())return mp4();
var h=new Hls({xhrSetup:function(x,u){if(u.indexOf("slug=")&lt;0)x.open("GET",u+(u.indexOf("?")&lt;0?"?":"&amp;")+"slug="+d.slug,true)}});
v.immichHls=h;
h.on(Hls.Events.MANIFEST_PARSED,function(){h.currentLevel=pick(h.levels,t);v.immichSet(t)});
h.on(Hls.Events.ERROR,function(_,r){if(r.fatal){h.destroy();v.immichHls=null;mp4()}});
h.loadSource(d.hls);h.attachMedia(v);v.play().catch(function(){})}
if(window.Hls)return go();
var s=document.createElement("script");s.src="https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.5.17/hls.min.js";s.onload=go;s.onerror=mp4;document.head.appendChild(s)})}
&lt;/script&gt;
&lt;button type="button" class="iv-load" data-slug="bootmanager-fogona" data-s480="0.7 MB" data-s720="1.4 MB" data-s1080="2.7 MB" data-hls="https://immich.notmy.space/api/assets/ebf60442-44d2-4a6d-a578-b7f413fc37e8/video/stream/main.m3u8?slug=bootmanager-fogona" data-src="https://immich.notmy.space/api/assets/ebf60442-44d2-4a6d-a578-b7f413fc37e8/video/playback?slug=bootmanager-fogona"&gt;&lt;img data-thumb="https://immich.notmy.space/api/assets/ebf60442-44d2-4a6d-a578-b7f413fc37e8/thumbnail?size=thumbnail&amp;slug=bootmanager-fogona" data-preview="https://immich.notmy.space/api/assets/ebf60442-44d2-4a6d-a578-b7f413fc37e8/thumbnail?size=preview&amp;slug=bootmanager-fogona" alt="" loading="lazy" style="aspect-ratio:9/16;object-fit:cover"&gt;&lt;img data-rimg src="data:," alt="" hidden width="0" height="0"&gt;&lt;span&gt;▶ Load video&lt;small&gt;&lt;/small&gt;&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id="godot-maps"&gt;
 &lt;a class="heading-link" href="#godot-maps"&gt;&lt;a href="https://github.com/W-Floyd/godot-maps" class="external-link" target="_blank" rel="noopener"&gt;godot-maps&lt;/a&gt;&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;Comaps doesn&amp;rsquo;t look great on Linux, and I couldn&amp;rsquo;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.&lt;/p&gt;
&lt;a href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-3072.avif" data-hq-href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-3072.avif" target="_blank" rel="noopener" class="image-full"&gt;&lt;img data-rimg src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-400.avif" alt="godot-maps running turn-by-turn navigation on a phone held in a car: a 3D map with buildings, a blue route line, a 0.4 mi right-turn banner, a 35 mph speed limit sign, and a one-minute ETA bar." title="godot-maps running turn-by-turn navigation on a phone held in a car: a 3D map with buildings, a blue route line, a 0.4 mi right-turn banner, a 35 mph speed limit sign, and a one-minute ETA bar." width="3072" height="4080" srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-960.avif 960w" sizes="(max-width: 768px) 100vw, min(100vw - 40px, 860px)" data-hq-src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-400.avif" data-hq-srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20260929_223737700-hq-960.avif 960w" loading="lazy" decoding="async" /&gt;&lt;/a&gt;
&lt;h4 id="go-msm-firmware-loader"&gt;
 &lt;a class="heading-link" href="#go-msm-firmware-loader"&gt;&lt;a href="https://github.com/W-Floyd/go-msm-firmware-loader" class="external-link" target="_blank" rel="noopener"&gt;go-msm-firmware-loader&lt;/a&gt;&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;Go port of &lt;a href="https://gitlab.postmarketos.org/postmarketOS/msm-firmware-loader" class="external-link" target="_blank" rel="noopener"&gt;&lt;code&gt;msm-firmware-loader&lt;/code&gt;&lt;/a&gt;, used by &lt;code&gt;bootmanager&lt;/code&gt;&lt;/p&gt;
&lt;h4 id="go-qbootctl"&gt;
 &lt;a class="heading-link" href="#go-qbootctl"&gt;&lt;a href="https://github.com/W-Floyd/go-qbootctl" class="external-link" target="_blank" rel="noopener"&gt;go-qbootctl&lt;/a&gt;&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;A static Go replacement for the A/B slot subset of &lt;a href="https://github.com/linux-msm/qbootctl" class="external-link" target="_blank" rel="noopener"&gt;&lt;code&gt;qbootctl&lt;/code&gt;&lt;/a&gt; so it works in an initramfs, used by &lt;code&gt;bootmanager&lt;/code&gt;&lt;/p&gt;
&lt;h4 id="go-chromatix2libcamera"&gt;
 &lt;a class="heading-link" href="#go-chromatix2libcamera"&gt;&lt;a href="https://github.com/W-Floyd/go-chromatix2libcamera" class="external-link" target="_blank" rel="noopener"&gt;go-chromatix2libcamera&lt;/a&gt;&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;Translates Qualcomm Chromatix tuning files to something libcamera (or a fork thereof) can interpret.&lt;/p&gt;
&lt;h4 id="go-unbrick"&gt;
 &lt;a class="heading-link" href="#go-unbrick"&gt;&lt;a href="https://github.com/W-Floyd/go-unbrick" class="external-link" target="_blank" rel="noopener"&gt;go-unbrick&lt;/a&gt;&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;h4 id="go-qshrink4"&gt;
 &lt;a class="heading-link" href="#go-qshrink4"&gt;&lt;a href="https://github.com/W-Floyd/go-qshrink4" class="external-link" target="_blank" rel="noopener"&gt;go-qshrink4&lt;/a&gt;&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;A reader for Qualcomm QShrink4 hash databases (&lt;code&gt;.qdb&lt;/code&gt; / &lt;code&gt;.qsr4&lt;/code&gt;), mapping the hashes in QShrink&amp;rsquo;d modem diag messages back to their format string, file and line.&lt;/p&gt;
&lt;h2 id="2024-kia-ev6-head-unit"&gt;
 &lt;a class="heading-link" href="#2024-kia-ev6-head-unit"&gt;2024 Kia EV6 Head Unit&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 &lt;code&gt;kexec&lt;/code&gt; 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.&lt;/p&gt;
&lt;p&gt;I figured the quickest path to something useful was to get &lt;code&gt;bootmanager&lt;/code&gt; running, which turned out to be trivial.&lt;/p&gt;
&lt;a href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-4080.avif" data-hq-href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-4080.avif" target="_blank" rel="noopener" class="image-full"&gt;&lt;img data-rimg src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-400.avif" alt="bootmanager running on the Kia EV6 head unit: a Choose a system screen titled Telechips TCC803x AVN, with a single Tools card (services, partitions, log, power)." title="bootmanager running on the Kia EV6 head unit: a Choose a system screen titled Telechips TCC803x AVN, with a single Tools card (services, partitions, log, power)." width="4080" height="3072" srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-3840.avif 3840w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-4080.avif 4080w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-960.avif 960w" sizes="(max-width: 768px) 100vw, min(100vw - 40px, 860px)" data-hq-src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-400.avif" data-hq-srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-3840.avif 3840w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-4080.avif 4080w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261016_214811840.MP-hq-960.avif 960w" loading="lazy" decoding="async" /&gt;&lt;/a&gt;
&lt;p&gt;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).&lt;/p&gt;
&lt;p&gt;Working:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Display&lt;/li&gt;
&lt;li&gt;I2C&lt;/li&gt;
&lt;li&gt;USB&lt;/li&gt;
&lt;li&gt;eMMC&lt;/li&gt;
&lt;li&gt;WiFi (and soon, BT)&lt;/li&gt;
&lt;li&gt;Touch&lt;/li&gt;
&lt;li&gt;Serial&lt;/li&gt;
&lt;li&gt;MICOM keepalive + Vehicle data&lt;/li&gt;
&lt;li&gt;re-kexecing back to stock Android&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="does-it-run-doom"&gt;
 &lt;a class="heading-link" href="#does-it-run-doom"&gt;Does it run DOOM?&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;If you saw the cover image, you&amp;rsquo;ll know. Of course it does!&lt;/p&gt;
&lt;style&gt;.figure-row{display:flex;gap:1rem;margin:1rem 0;align-items:flex-start}.figure-row&gt;*{min-width:0;margin:0}.figure-row a{display:block}.figure-row img{display:block;width:100%;height:auto;margin:0 !important}.figure-row .rimg-rot{margin:0 !important;max-width:none !important}.figure-row .immich-video{margin:0}&lt;/style&gt;&lt;div class="figure-row"&gt;&lt;div style="flex: 0.7529 1 0%; min-width: 0;"&gt;&lt;a href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-3072.avif" data-hq-href="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-3072.avif" target="_blank" rel="noopener" class="image-full"&gt;&lt;img data-rimg src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-400.avif" alt="DOOM running on the 2024 Kia EV6 head unit at night, a first-person corridor with on-screen touch controls (move, turn, run, fire, use, map) on either side." title="DOOM running on the 2024 Kia EV6 head unit at night, a first-person corridor with on-screen touch controls (move, turn, run, fire, use, map) on either side." width="3072" height="4080" srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-960.avif 960w" sizes="(max-width: 768px) %!d(float64=57)vw, %!d(float64=492)px" data-hq-src="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-400.avif" data-hq-srcset="https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1280.avif 1280w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1296.avif 1296w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1728.avif 1728w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-1920.avif 1920w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-2160.avif 2160w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-2560.avif 2560w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-2592.avif 2592w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-3072.avif 3072w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-400.avif 400w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-432.avif 432w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-640.avif 640w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-864.avif 864w, https://w-floyd.com/2026/10/notes-on-llms-part-01/media/PXL_20261017_003820837-hq-960.avif 960w" loading="lazy" decoding="async" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="flex: 0.5625 1 0%; min-width: 0;"&gt;&lt;div class="immich-video"&gt;
&lt;style&gt;
.immich-video{position:relative;width:100%;margin:2rem auto;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.25);container-type:inline-size}
.immich-video .iv-load{all:unset;display:block;width:100%;cursor:pointer}
.immich-video img,.immich-video video{display:block;width:100%;height:auto;margin:0 auto !important;border-radius:0 !important;box-shadow:none !important}
.immich-video img[hidden]{display:none!important}
.immich-video video{background:#000}
.immich-video .iv-load span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100% - 1.6rem);box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;padding:.6rem 1.2rem;border-radius:1.4rem;background:rgba(0,0,0,.7);color:#fff;font-size:1.6rem}
.immich-video small{display:block;font-size:.8em;opacity:.8}
.immich-video .iv-load:hover span,.immich-video .iv-load:focus-visible span{background:rgba(0,0,0,.9)}
.iv-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:.8rem;padding:2.4rem 1rem .8rem;background:linear-gradient(transparent,rgba(0,0,0,.8));color:#fff;opacity:0;transition:opacity .2s}
.immich-video:hover .iv-bar,.immich-video:focus-within .iv-bar,.immich-video.iv-paused .iv-bar{opacity:1}
.iv-btn,.iv-q{all:unset;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none;border-radius:4px}
.iv-btn{width:3.2rem;height:3.2rem}
.iv-btn svg{width:2.4rem;height:2.4rem}
.iv-fs,.iv-mute,.iv-play{position:absolute;border-radius:6px;background:rgba(0,0,0,.55);color:#fff;opacity:0;transition:opacity .2s}
.immich-video:hover :is(.iv-fs,.iv-mute,.iv-play),.immich-video:focus-within :is(.iv-fs,.iv-mute,.iv-play),.immich-video.iv-paused :is(.iv-fs,.iv-mute,.iv-play){opacity:1}
.iv-fs{top:.8rem;right:.8rem}
.iv-mute{top:.8rem;left:.8rem}
.iv-play{left:50%;top:50%;transform:translate(-50%,-50%);width:6rem;height:6rem;border-radius:50%}
.iv-play svg{width:3.6rem;height:3.6rem}
.iv-q{height:3.2rem;padding:0 .6rem;font-size:1.3rem;font-weight:600}
.iv-q[hidden]{display:none}
.iv-btn:focus-visible,.iv-q:focus-visible{outline:2px solid #fff}
.iv-seek{flex:1;min-width:0;margin:0;accent-color:#fff;cursor:pointer}
.iv-time{flex:none;font-size:1.3rem;font-variant-numeric:tabular-nums;white-space:nowrap}
@container (max-width:420px){.iv-time{display:none}}
@container (max-width:380px){.immich-video .iv-load span{padding:.4rem .9rem;font-size:1.3rem}}
.immich-video:fullscreen,.immich-video:-webkit-full-screen{width:100%;height:100%;margin:0;border-radius:0;background:#000;display:flex;align-items:center;justify-content:center}
.immich-video:fullscreen video,.immich-video:-webkit-full-screen video{width:auto;height:100%;max-width:100%;max-height:100%;aspect-ratio:auto!important;object-fit:contain}
&lt;/style&gt;
&lt;script&gt;
if(!window.immichVideo){window.immichVideo=1;
var SVGNS="http://www.w3.org/2000/svg";
var ICONS={play:{f:1,d:["M8 5v14l11-7z"]},pause:{f:1,d:["M6 5h4v14H6zM14 5h4v14h-4z"]},vol:{f:1,d:["M3 9v6h4l5 5V4L7 9z","M16 8.5a5 5 0 0 1 0 7","M19 6a9 9 0 0 1 0 12"]},mute:{f:1,d:["M3 9v6h4l5 5V4L7 9z","M16 9l5 6","M21 9l-5 6"]},fs:{f:0,d:["M5 9V5h4","M15 5h4v4","M19 15v4h-4","M9 19H5v-4"]}};
function tier(){var m=document.body.dataset.imageMode;try{m=m||localStorage.getItem("imagequality")}catch(x){}return{low:480,med:720,hi:1080}[m]||720}
function pick(L,t){var k=-1,g=1e9;L.forEach(function(l,i){var s=Math.min(l.width,l.height),n=Math.abs(s-t);if(n&lt;g||n===g&amp;&amp;l.bitrate&lt;L[k].bitrate){g=n;k=i}});return k}
function ic(n){var a=ICONS[n],s=document.createElementNS(SVGNS,"svg");s.setAttribute("viewBox","0 0 24 24");a.d.forEach(function(d,i){var e=document.createElementNS(SVGNS,"path");e.setAttribute("d",d);if(a.f&amp;&amp;i===0){e.setAttribute("fill","currentColor")}else{e.setAttribute("fill","none");e.setAttribute("stroke","currentColor");e.setAttribute("stroke-width","2");e.setAttribute("stroke-linecap","round");e.setAttribute("stroke-linejoin","round")}s.appendChild(e)});return s}
function el(t,c,l){var e=document.createElement(t);if(c)e.className=c;if(l)e.setAttribute("aria-label",l);return e}
function btn(c,l){var b=el("button",c,l);b.type="button";return b}
function setIc(b,n){b.textContent="";b.appendChild(ic(n))}
function fmt(s){if(!isFinite(s))return"0:00";var m=Math.floor(s/60),x=Math.floor(s%60);return m+":"+(x&gt;9?"":"0")+x}
function controls(box,v){
var bar=el("div","iv-bar"),pl=btn("iv-btn","Play"),sk=el("input","iv-seek","Seek"),tm=el("span","iv-time"),mu=btn("iv-btn","Mute"),q=btn("iv-q","Quality"),fs=btn("iv-btn","Fullscreen");
sk.type="range";sk.min=0;sk.max=1000;sk.value=0;q.hidden=true;setIc(fs,"fs");
[sk,tm,q].forEach(function(e){bar.appendChild(e)});box.appendChild(bar);pl.className+=" iv-play";mu.className+=" iv-mute";fs.className+=" iv-fs";[pl,mu,fs].forEach(function(e){box.appendChild(e)});
function toggle(){if(v.paused){v.play().catch(function(){})}else{v.pause()}}
function sync(){setIc(pl,v.paused?"play":"pause");pl.setAttribute("aria-label",v.paused?"Play":"Pause");box.classList.toggle("iv-paused",v.paused);setIc(mu,v.muted?"mute":"vol");mu.setAttribute("aria-label",v.muted?"Unmute":"Mute")}
function time(){var d=v.duration;tm.textContent=fmt(v.currentTime)+" / "+fmt(d);if(d&amp;&amp;isFinite(d)&amp;&amp;!sk.dragging)sk.value=v.currentTime/d*1000}
["play","pause","volumechange"].forEach(function(e){v.addEventListener(e,sync)});
["timeupdate","durationchange","loadedmetadata"].forEach(function(e){v.addEventListener(e,time)});
pl.addEventListener("click",toggle);v.addEventListener("click",toggle);
sk.addEventListener("input",function(){sk.dragging=1;if(isFinite(v.duration))v.currentTime=sk.value/1000*v.duration;time()});
sk.addEventListener("change",function(){sk.dragging=0});
mu.addEventListener("click",function(){v.muted=!v.muted});
fs.addEventListener("click",function(){var d=document;if(d.fullscreenElement||d.webkitFullscreenElement){(d.exitFullscreen||d.webkitExitFullscreen).call(d)}else if(box.requestFullscreen){box.requestFullscreen()}else if(box.webkitRequestFullscreen){box.webkitRequestFullscreen()}else if(v.webkitEnterFullscreen){v.webkitEnterFullscreen()}});
q.addEventListener("click",function(){var h=v.immichHls;if(!h||!h.levels)return;var t=[];h.levels.forEach(function(l){var s=Math.min(l.width,l.height);if(t.indexOf(s)===-1)t.push(s)});t.sort(function(a,b){return a-b});var c=h.levels[h.nextLevel&gt;-1?h.nextLevel:h.currentLevel];v.immichSet(t[(t.indexOf(c?Math.min(c.width,c.height):0)+1)%t.length])});
v.immichSet=function(t){var h=v.immichHls;if(!h||!h.levels||!h.levels.length)return;var k=pick(h.levels,t),l=h.levels[k];h.nextLevel=k;q.hidden=false;q.textContent=Math.min(l.width,l.height)+"p"};
sync();time()}
function sizes(){var t=tier();
document.querySelectorAll(".immich-video video").forEach(function(v){if(v.immichSet)v.immichSet(t)});
document.querySelectorAll(".immich-video img[data-thumb]").forEach(function(i){var u=t&lt;720?i.dataset.thumb:i.dataset.preview;if(i.getAttribute("src")!==u)i.src=u});
document.querySelectorAll(".immich-video .iv-load").forEach(function(b){var z=b.querySelector("small"),n=b.dataset["s"+t];if(z)z.textContent=n?"~"+n:""})}
document.addEventListener("DOMContentLoaded",function(){sizes();new MutationObserver(sizes).observe(document.body,{attributes:true,attributeFilter:["data-image-mode"]})});
document.addEventListener("click",function(e){var b=e.target.closest(".immich-video .iv-load");if(!b)return;
var d=b.dataset,box=b.parentNode,v=document.createElement("video"),im=b.querySelector("img:not([hidden])"),rc=im&amp;&amp;im.getBoundingClientRect();if(rc&amp;&amp;rc.width&amp;&amp;rc.height){v.style.aspectRatio=rc.width+"/"+rc.height;v.style.objectFit="contain"}v.playsInline=true;v.muted=d.muted==="true";b.replaceWith(v);controls(box,v);var t=tier();
function mp4(){v.src=d.src;v.play().catch(function(){})}
function go(){if(!window.Hls||!Hls.isSupported())return mp4();
var h=new Hls({xhrSetup:function(x,u){if(u.indexOf("slug=")&lt;0)x.open("GET",u+(u.indexOf("?")&lt;0?"?":"&amp;")+"slug="+d.slug,true)}});
v.immichHls=h;
h.on(Hls.Events.MANIFEST_PARSED,function(){h.currentLevel=pick(h.levels,t);v.immichSet(t)});
h.on(Hls.Events.ERROR,function(_,r){if(r.fatal){h.destroy();v.immichHls=null;mp4()}});
h.loadSource(d.hls);h.attachMedia(v);v.play().catch(function(){})}
if(window.Hls)return go();
var s=document.createElement("script");s.src="https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.5.17/hls.min.js";s.onload=go;s.onerror=mp4;document.head.appendChild(s)})}
&lt;/script&gt;
&lt;button type="button" class="iv-load" data-slug="2024-kia-ev6-doom" data-s480="7.7 MB" data-s720="15 MB" data-s1080="31 MB" data-hls="https://immich.notmy.space/api/assets/dd0c904e-5202-4942-9c63-af051766bfa4/video/stream/main.m3u8?slug=2024-kia-ev6-doom" data-src="https://immich.notmy.space/api/assets/dd0c904e-5202-4942-9c63-af051766bfa4/video/playback?slug=2024-kia-ev6-doom" data-muted="true"&gt;&lt;img data-thumb="https://immich.notmy.space/api/assets/dd0c904e-5202-4942-9c63-af051766bfa4/thumbnail?size=thumbnail&amp;slug=2024-kia-ev6-doom" data-preview="https://immich.notmy.space/api/assets/dd0c904e-5202-4942-9c63-af051766bfa4/thumbnail?size=preview&amp;slug=2024-kia-ev6-doom" alt="" loading="lazy" style="aspect-ratio:9/16;object-fit:cover"&gt;&lt;img data-rimg src="data:," alt="" hidden width="0" height="0"&gt;&lt;span&gt;▶ Load video&lt;small&gt;&lt;/small&gt;&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;details&gt;&lt;summary style="cursor:pointer;font-weight:600"&gt;Vendor Resources&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.mobis.com/en/tech/rnd.do#open" class="external-link" target="_blank" rel="noopener"&gt;Mobis open source&lt;/a&gt;: &amp;ldquo;AVNT STD G50 WIDE R6&amp;rdquo; for &amp;ldquo;EV6 (CV1)&amp;rdquo; (&lt;code&gt;AVNT_STD_G50_WIDE_R6.zip&lt;/code&gt;, 565 MB)&lt;/li&gt;
&lt;/ul&gt;

&lt;/details&gt;

&lt;h3 id="my-code-2"&gt;
 &lt;a class="heading-link" href="#my-code-2"&gt;My Code&lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/W-Floyd/linux/tree/2024-kia-ev6" class="external-link" target="_blank" rel="noopener"&gt;Kernel tree&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Formerly PostmarketOS&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item></channel></rss>