██████╗ ██████╗ ██████╗ ██╗ ██╗██╗ ██╗
██╔════╝██╔═══██╗██╔═══██╗██║ ██║██║ ██║
██║ ██║ ██║██║ ██║██║ ██║██║ ██║
██║ ██║ ██║██║ ██║██║ ██║██║ ██║
╚██████╗╚██████╔╝╚██████╔╝███████╗ ██║╚██████╔╝
╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝
██╗██╗ ██╗██╗ ██╗███████╗███╗ ██╗██╗██╗ ███████╗
██║██║ ██║██║ ██║██╔════╝████╗ ██║██║██║ ██╔════╝
██║██║ ██║██║ ██║█████╗ ██╔██╗ ██║██║██║ █████╗
██║╚██╗ ██╔╝██║ ██║██╔══╝ ██║╚██╗██║██║██║ ██╔══╝
██║ ╚████╔╝ ╚██████╔╝███████╗██║ ╚████║██║███████╗███████╗
╚═╝ ╚═══╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝╚═╝╚══════╝╚══════╝
热爱底层系统、嵌入式硬件与 IoT 安全,专注软硬件结合的项目 —— 从 ESP32 无线工具到 Android 内核修补。
Bridging hardware and software, one register at a time.
- ⚡ 写固件 — ESP32-S3 / STM32 上的实时任务与驱动
- 📡 玩射频 — Wi-Fi 协议分析与 IoT 安全测试工具
- 🔧 啃内核 — Linux 内核编译、补丁与 AOSP 移植
- 🖥️ 做小工具 — OLED 动画、专注计时器这类「用得上的东西」
| 主线 | 推进 linux-mt6833-evergo —— 给 evergo 把 MT6833 的设备树与 defconfig 补齐;ios-alioth 还卡在 Adreno 650 |
| 在学 | Linux 内核驱动开发 · 无线协议栈 · 低功耗设计 |
| 可聊 | ESP32 / PlatformIO / SSD1306 / AOSP 编译踩坑,欢迎开 Issue 或邮件 |
| 嵌入式 Embedded |
|
| 底层 Low-Level |
|
| 工具链 Toolchain |
|
按「值得先看」排序。只写能被代码验证的部分 —— 改了什么、踩了什么坑、它究竟能干什么。
C · Linux 6.18-rc1 · ARM64 · LLVM=1 | 给一台冷门联发科手机,补一份 mainline 内核支持
以 Linux 6.18-rc1 为基线,往上游树里补 MT6833(camellia)SoC 与 evergo 设备树 —— 让 Redmi Note 11T 5G 能用自己编的内核跑起来。
- 增量:mainline 6.18-rc1 + MT6833 SoC dtsi + evergo 设备树 +
evergo_defconfig,连arm64: defconfig: disable EFI stub这种取舍都写在 commit 里 - CI:GitHub Actions 用
LLVM=1(clang / lld)交叉编译 aarch64,每次 push 都验证能不能编过 - 踩过的坑:大小写不敏感文件系统让
.gitignore误吞文件、vdso.lds缺失导致构建中断、helper 脚本可执行位丢失 —— 逐条修完记在 EVERGO.md
XNU · UEFI · ARM64 · SM8250 | 在一台 Redmi K40 上,把 iOS 16.5 的 XNU 跑起来
不是主题包、不是美化资源 —— 是真把 Apple 的 XNU 内核和未修改的 iOS 用户态引导进小米手机,而且全程只写 RAM,重启就回 Android。
- 启动链:
fastboot → Mu-Silicium UEFI → xnuloader → XNU → launchd → backboardd → SpringBoard - 已跑通:挂载 APFS System 卷(45,143 个文件)、SpringBoard 出图、FocalTech 触摸、电源 / 音量键、EPSS 三簇调频
- 还没跑通:Adreno 650 GPU(写
CP_SQE_CNTL直接整机复位)、Wi-Fi / 音频 / 相机、8 核只起 4 核 - 归属:内核来自 Apple 开源 XNU,引导基于 Mu-Silicium;APFS 系统卷与 IPSW 属 Apple 版权内容,仅本人设备研究、不再分发
ESP32-S3 · C++ · PlatformIO · MIT | 一块板子 + 一个摇杆,就是一台脱机的 Wi-Fi 测试仪
掏出来就能用:摇杆翻 OLED 菜单 → 选目标 → 发测试帧,全程不接电脑。
- 移植:从 ESP8266 Deauther v1.6 搬到 ESP32-S3。裸 802.11 帧注入由
wifi_send_pkt_freedom()换成esp_wifi_80211_tx();存储EEPROM→Preferences(NVS)、SPIFFS→LittleFS;显示由 squix78 SSD1306 换U8g2 - 自建交互:KY-023 摇杆 + 板载 BOOT 键做成完整菜单系统(上/下翻页、按下确认、长按连滚、一键熄屏)
- 能力:Deauth · Beacon Flood(最多 48 个伪 SSID)· Probe Flood · 客户端扫描 ·
192.168.4.1网页控制 - 踩过的坑:部分 ESP32-S3 SDK 会过滤 deauth 管理帧 —— README 里写了验证方法,不是「跑不起来」,而是「看刷哪版 SDK」
Kotlin · Jetpack Compose · Room · MIUIX KMP | 不是计时器 demo,是一个真能天天用的 App
- 计时引擎:单例 + 协程实现,前台 Service 常驻通知栏 —— 切后台、锁屏、划掉界面都不掉秒
- 数据:Room 2.7 存 session 与 project,统计页给出今日 / 累计 / 连续天数,全离线、不依赖网络
- 界面:MIUIX KMP(HyperOS 视觉)+ 手写液态玻璃组件与药丸式悬浮导航,浅色 / 深色 / AMOLED / 跟随系统四套主题
- 工程:Gradle 9.1 + AGP 9.0 + KSP,target SDK 37,minSdk 26
ESP32-S3 · Arduino · SSD1306 | 把 STM32 上的月薪猫,搬进 0.9 寸 OLED
原工程是 江协科技 的 STM32 OLED 模板,动画本体是 22 帧 × 8 页 × 128 列 = 22,528 字节的位图。我写了 extract_data.py 把 OLED_Data.c 直接转成 ESP32 能编译的头文件 —— 换动画、调帧率都不必重新抠字模;Adafruit GFX 逐帧直刷 I2C,20 ms/帧稳定不闪。