Today's Update
Hello from my pinephone!
This is my first post directly from my pinephone. The pinephone is a $200 device manufactured by pine64 boasting a whopping 3Gb RAM and 32Gb of internal flash memory. The phone is powered by a 64-bit quad core 1.2GHz ARM Cortex A-53, which is completely and utterly outclassed by the A13 Bionic chip living on my mighty iPhone 11 Pro. So why did I even get this thing? Customizability! You can customize a pinephone in ways that are completely unimaginable for an iPhone. For example, you can:
- Install your own operating system (I use postmarketos with sxmo as a windowing layer)
- Install whatever software you want (tmux, neovim, etc.). The implication is that you can actually _program_ on the phone, if you try hard enough and don't mind squinting at a 6-inch screen all day
- Turn off cameras/wifi/modem via switches on the back of the phone (I turn off the modem to save battery)
- Turn off CPU cores (I only keep 2/4 CPU cores on - again, to save battery)
- When I got the phone, I immediately switched it over to use postmarketos as the OS, with sxmo as the windowing layer. These are fascinating pieces of software that deserve their own blog posts. The main benefit here is hackability: sxmo provides primitives for rotating the screen, sending notifications to the system, etc.
- I got my "core software" set up: `tmux`, `git`, `lynx`, `python`, `ssh`. I modified my tmux config a bunch to show battery status, memory usage, and system load. I used bluetoothctl to configure a connection to my logitech 380 keyboard, which is a must have since the on screen keyboard is shit
- Astoundingly, I was able to get `llama.cpp` to run a very tiny LLM, Qwen3.5-0.8B.Q3_K_M. This is the most lightweight of qwen's models, and fits pretty comfortably in my 3Gb RAM. In fact, it fits so comfortably that I was actually able to add an mmproj file for multi modal output! The system runs at 3 toks/sec on a good day and is an absolute power drain, but it's technologically astounding it works at all. Though I'm not trusting it for survival advice anytime soon...
- A friend (Owen) helped me reason through battery calculations, and I came to the conclusion that the stock settings I was running would kill my battery! With his help, I went on a battery saving crusade. I went way overboard on this
- Auto-dim screen to low light setting (saves a bunch of battery)
- Kill annoying background things that would otherwise suck on my precious battery life (sshd, tailscaled, some sxmo startup scripts)
- Disable CPU cores 3 and 4 by default (saves some battery when system isn't busy)
- Set CPU governors to conservative (this lets the CPU adjust its frequency based on current workload; keeps power consumption low during in-demand periods)
- Disable the modem via a physical switch on the back of the phone
- Wrote my own (terrible, awful, no good) camera app! The stock app provided with sxmo wasn't working, so codex and I went in and churned out this insane script that manually turns on the camera, sets some hardware settings, shows a preview, and uses ffmpeg to capture a photo
- Figured out how to wire up my own custom network, allowing me to send photos/files/etc back and forth from my iPhone to my Pinephone. This is one of my favorite hacks. It _also_ allows me to control the phone's tmux session over HTTP via ttyd , which is absolutely bananas. For instance, I can see a world where I find a hotel to crash at for a night, fire up the smart TV, make the smart TV connect to my pinenet, then navigate to a.b.c.d:7681 on the TV where i have a terminal up and ready!
- What happens when I make modifications to different layers in the model? Can I determine what layers of the model impact grammar/mood/etc. based on the responses I get from the model?
- What happens when I make modifications to the computation graph itself? Are there certain operations that are more or less important?