hardware
- FiiO X1 bare-metal audio: four GPIO offsets, all wrong
A bare-metal sine-wave test for the FiiO X1's PCM5142 DAC built clean; two code reviews forced 16 fixes, including four GPIO offsets. None of it ran.
- FiiO X1 Rockbox bootloader: 12 KB of SD, FAT32 and a menu
A bare-metal dual-boot loader for the FiiO X1: SD reads, a FAT32 driver, a cache flush that review caught, 12,512 bytes. Built and reviewed, not yet run.
- FiiO X1 EQ presets: floats in .data, not a NAND cache
Ghidra shows the FiiO X1 never reads its eq.ini back: preset gains are floats in .data, reloaded each boot. Nine new presets showed after a factory reset.
- FiiO X1 bootloader in Ghidra: 94 functions at the wrong base
The FiiO X1's bootloader looked like 94 opaque functions until a re-import at 0x80600000: 237 functions, no integrity check, and its SDK source on GitHub.
- FiiO X1 firmware patcher: everything but the EQ
A Python patcher for the FiiO X1's x1.fw: config switches and a font swap flash fine; the EQ breaks the boot, breaks playback or lands one slot off.
- FiiO X1 firmware: a hidden USB DAC mode and a debug shell
The FiiO X1 shipped as a USB disk only, yet its firmware holds a USB Audio Class 2.0 DAC mode, switched off in its settings, and a hidden debug shell.
- HTC Desire Z screenshots on Android 2.3, the long way round
No screencap on Android 2.3: an HTC Desire Z screenshot chase through raw framebuffer dumps, a Superuser toast, AOSP test-keys and one chmod.
- HTC Desire Z launcher keys: ADW's Back trick and two wrong fixes
Long-press menus, a package listener and ADW's Back-key pattern for my Android 2.3 launcher, plus two key fixes aimed at a layer that was not the problem.
- A 22 KB home screen for the HTC Desire Z, built without Gradle
I swapped CyanogenMod 7's launcher on an HTC Desire Z for a 22 KB one of my own: eight Java files, two JDKs, a 64-line build script and SHA-1 signatures.
- HTC Desire Z Home button dead on CM7: nine suspects, no culprit
The Home key on an HTC Desire Z running CyanogenMod 7 did nothing. Nine theories, a factory reset and a new kernel later, only a full reflash fixed it.