Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoKeyboard

License: MIT MCU Toolchain

CH552G USB HID 键盘固件 —— 上电延时后自动发送 F1 按键,用于远程/无头电脑跳过 BIOS 自检时卡住的 "Press F1 to continue" 提示。

背景

服务器或工控机在断电恢复、BIOS 配置变更后,常卡在如下提示等待人工确认:

Press F1 to continue, DEL to enter setup

对于远程机房或无显示器的设备,这意味着一趟现场跑腿。AutoKeyboard 是一个即插即用的硬件方案——插在 USB 口上,等待预设时间(默认 10 秒)后自动按下 F1,系统即可正常启动。

硬件

  • MCU:CH552G(WCH,增强型 E8051,USB 2.0 设备)
  • 最小系统板:USB-A 公头直插型
  • LED 指示:P1.5(板上自带)
  • 尺寸:约 25mm × 15mm,直插 USB 口,无需外部供电

编译

# 安装依赖
sudo apt install sdcc

# 编译
make

# 输出文件
# build/autokeyboard.bin    — 裸二进制(wchisp 烧录用)
# build/autokeyboard.hex    — Intel HEX(WCHISPTool 烧录用)
# build/autokeyboard.ihx    — SDCC 中间格式

# 清理编译产物
make clean

配置

修改 src/main.c 顶部宏后重新编译即可:

#define DELAY_SECONDS  10   /* 上电到按下F1的延时,单位:秒 */

烧录

方法 1 — wchisp(开源,推荐)

# 安装 wchisp
# cargo install wchisp

make flash

方法 2 — WCHISPTool(Windows GUI)

下载 WCH 官方烧录工具,载入 build/autokeyboard.hex 烧录。

烧录步骤

  1. 按住板子 BOOT 键不放(或短接 BOOT 引脚到 GND)
  2. 插入电脑 USB 口
  3. 执行烧录命令
  4. 拔掉 USB 重新插入,设备开始工作

工作流程

阶段 LED 状态 说明
① USB 枚举 🔴 快闪 (~200ms) 设备注册为 HID 键盘
② 延时等待 🔴 慢闪 (~500ms) 等待 DELAY_SECONDS 秒
③ 发送 F1 🔴 常亮 自动按下并释放 F1 键
④ 休眠 🔴 常亮 进入省电模式,不再操作

扩展玩法

🏠 搭配智能插座实现远程开机

很多电脑主板支持 断电后自动开机(BIOS → Power Management → Restore on AC Power Loss 设为 Power On)。AutoKeyboard 搭配一个米家智能插座之类的远程开关,就能实现完整的远程开机方案:

  1. 电脑接在智能插座上,主板设好断电自动开机
  2. AutoKeyboard 插在电脑 USB 口上
  3. 需要远程开机时 → 手机 App 关闭插座 → 等待 10 秒 → 打开插座
  4. 电脑通电自启,进入 BIOS → AutoKeyboard 自动按 F1 → 系统正常启动

优势:整套成本不到 50 元(智能插座 30-40 + 开发板 5-10),比 IPMI / 远程管理卡便宜两个数量级,且不挑主板。

🤖 物理按键精灵

AutoKeyboard 的核心是「上电后自动按一个键」。稍作修改,它能做的事远不止按 F1:

  • 自动登录 — 发送用户名 + 密码组合,实现无人值守开机登录
  • 一键恢复 — 上电后执行一系列按键操作,进入指定系统或恢复模式
  • 定时触发 — 配合智能插座通断,实现定时按键操作(如每天凌晨自动重启)
  • 按键精灵 — 修改固件逻辑,实现更复杂的按键序列(菜单导航、组合键等)

只需修改 src/main.c 中的按键发送逻辑,烧录即可。芯片本身成本极低,适合批量部署。

源码文件

文件 说明
src/main.c 主固件 — USB 设备配置、中断处理、Timer0 计时、LED 控制、F1 按键发送
src/debug.c 时钟配置(CfgFsys)、微秒/毫秒延时、UART 调试 I/O
src/debug.h UART、延时、看门狗函数声明
src/compiler.h SDCC 编译器适配宏(SFR / SBIT)
src/ch554.h CH554 MCU 全部特殊功能寄存器定义(WCH SDK)
src/ch554_usb.h USB 协议常量与数据结构定义(WCH SDK)
Makefile SDCC 构建脚本,支持 make / make flash / make clean

其他变体

src/ 目录下还包含以下实验性版本,供参考:

文件 用途
main_minimal.c 最小 USB HID 键盘枚举测试(不发送按键)
main_blink.c LED 闪烁测试(Timer0 中断方式)
main_blink2.c LED 闪烁测试(纯软件延时)
main_v3.c 自动键盘较早版本(不同 USB 中断处理模式)

✍️ 作者

wow哇呜怪

📺 抖音 · B站 · 小红书

🌐 https://wow.findu.site


许可证

本项目采用 MIT 许可证

包含的 WCH SDK 头文件(ch554.hch554_usb.h)版权归 WCH(南京沁恒微电子股份有限公司)所有,以 MIT 许可证发布。


关键词:CH552G · USB HID · 键盘固件 · 远程 BIOS 应答 · SDCC · E8051

About

CH552 USB HID 键盘设备,上电延时后自动发送 F1 按键。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages