docs: overhaul README with architecture rationale, complete tutorial, and pc_companion guide
This commit is contained in:
1 parent
200098893c
commit
7a7640f88a
1 file changed
+253
-63
@@ -1,82 +1,272 @@
|
||||
# RemoteMapper-ESP32 · 小米蓝牙语音遥控器 USB 复合硬件桥接固件
|
||||
# RemoteMapper-ESP32 · 小米蓝牙语音遥控器 2 Pro (RC003) ➔ USB 复合硬件桥接器
|
||||
|
||||
> 🎯 **基于 ESP32-S3 N16R8 (16MB Flash + 8MB Octal PSRAM) 硬件方案**
|
||||
> 彻底解决 Windows 内核键盘驱动丢弃按键、物理键盘冲突、虚拟声卡 (VB-Cable) 依赖等问题!
|
||||
> 🎯 **基于 ESP32-S3 N16R8 的硬件级中间人协议桥接方案**
|
||||
> 彻底解决 Windows 内核驱动丢弃「音量+ / 音量- / 返回键」的顽疾,告别 VB-Cable 虚拟声卡依赖,实现真·即插即用!
|
||||
> ⚠️ **硬件型号限定**:目前固件**仅支持「小米蓝牙遥控器 2 Pro(型号:RC003)」**,暂不支持其他型号遥控器。
|
||||
|
||||
---
|
||||
|
||||
## 🌟 核心特性与优势
|
||||
## 💡 为什么需要这个硬件项目?(背景与痛点)
|
||||
|
||||
1. 🎙️ **真·免驱动 USB 物理麦克风 (UAC 1.0)**:
|
||||
- ESP32-S3 原生 USB OTG 模拟标准 16kHz 16-bit Mono 麦克风设备;
|
||||
- 遥控器语音键按下即说话,松开即停止,即插即用,无需安装任何第三方声卡驱动。
|
||||
2. ⌨️ **独立硬件级 USB HID 键盘 & 多媒体控制器**:
|
||||
- 小米遥控器音量加(`0x80`)、音量减(`0x81`)直接转换为 PC 标准 **Consumer Volume Up/Down**;
|
||||
- 返回键(`0xF1`)转换为 **Consumer AC Back / Esc**(网页与播放器原生后退);
|
||||
- 电源键(`Alt+Tab` / 长按关屏)、主页键(`Win+D`)、菜单键(`Space` 播放暂停)、TV 键(`F8` 语音唤醒);
|
||||
- 与物理主键盘物理隔离,彻底规避软件钩子冲突。
|
||||
3. ⚡ **双核高吞吐实时 DSP 流水线**:
|
||||
- **Core 0**:专门负责 NimBLE 5.0 协议栈、HOGP 按键监听、ATVV 语音流握手与 IMA-ADPCM 4-bit 解码 + Declip 尖峰消除 + 3-Tap FIR 低通平滑 + 动态 AGC;
|
||||
- **Core 1**:负责 TinyUSB 复合设备(UAC 麦克风音频泵、HID 键盘派发、按键手势状态机与 CDC 诊断串口)。
|
||||
4. 🛡️ **健壮的保活与看门狗机制**:
|
||||
- 450ms 音频静音看门狗:防止由于蓝牙丢包导致的语音键状态卡住;
|
||||
- 自动重连与绑定恢复:NVS 存储配对信息,开机与遥控器唤醒时秒连。
|
||||
5. 🛠️ **完美规避 DWC2 Isochronous USB 缺陷**:
|
||||
- 突破 TinyUSB 在 Arduino 预编译栈下缺乏 SOF 中断导致的 500Hz 丢帧降频魔咒;
|
||||
- 采用独创的 **bInterval=2 / wMaxPacketSize=64** 降频缓冲方案,实现 1000Hz 零抖动 16kHz 完美音质。
|
||||
市面上的**小米蓝牙语音遥控器 2 Pro(型号:RC003)**采用精致的银色铝合金金属外壳,按键手感清脆、布局经典,并内置麦克风与拾音孔,非常适合作为 PC / HTPC 的全局多功能遥控器与 AI 语音助手控制器。
|
||||
|
||||
此前,开源社区作者 QL-4 曾开发过基于 C# 的纯软件方案([QL-4/RemoteMapper](https://github.com/QL-4/RemoteMapper)),通过 Windows BLE API 读取按键与音频。
|
||||
|
||||
但经过大量跨平台测试发现了一个非常核心的事实:
|
||||
* 🍏 **在 macOS 与 🐧 Linux 系统下**:操作系统原生蓝牙 HID 协议栈极其开放,**完全没有所谓的按键屏蔽限制**,所有按键都能被正常捕获与映射,体验非常爽快!
|
||||
* 🪟 **唯独在 Windows 系统下**:微软官方的蓝牙键盘驱动对非标 HID 做了极为死板的内核层过滤,导致纯软件方案在 Windows 上遭遇了无法逾越的系统级绝症——**必须依靠我们的硬件中转桥接器才能完美解决!**
|
||||
|
||||
### Windows 平台下纯软件方案的致命局限:
|
||||
1. **三个核心按键被 Windows 驱动直接丢弃(无法映射)**:
|
||||
* **音量+(`0x80`)**、**音量-(`0x81`)**、**返回键(`0xF1`)**:这三个按键在 RC003 遥控器固件中采用的是 Android 专属非标 HID 编码;
|
||||
* 当遥控器直接与 Windows 电脑蓝牙配对时,微软官方蓝牙键盘驱动 `kbdhid.sys` 在内核层将其识别为未知非法键码并**直接丢弃**!
|
||||
* 结果就是:应用层(无论通过全局 Windows Hook、RawInput 还是 AutoHotkey)**完全收不到任何按键消息**,这三个键在 Windows 下彻底沦为“死键”。
|
||||
2. **纯软件若想在 Windows 捕获,必须付出惨痛代价(内核级驱动风险)**:
|
||||
* 要在 Windows 层面拦截未进入 `kbdhid.sys` 的原始 HID 报文,唯一的软件途径是编写 Windows 内核过滤驱动(Kernel Filter Driver);
|
||||
* 这要求操作系统必须永久开启**「测试签名模式(Test Mode)」或「禁用驱动程序签名强制」**;
|
||||
* **严重负面后果**:直接导致主流游戏反作弊系统(如腾讯 ACE、拳头 Vanguard、Easy Anti-Cheat、BattlEye)判定系统存在内核作弊隐患并封禁游戏;同时破坏 Windows 内核完整性,带来极高的蓝屏(BSOD)与系统崩溃风险。
|
||||
3. **语音输入强依赖第三方虚拟声卡(VB-Cable)**:
|
||||
* 虽然纯软件可以通过 Windows GATT API 接收 ATVV 语音流并解码为 PCM,但要让输入法(微信输入法、讯飞等)识别,用户**必须额外安装第三方虚拟声卡(如 VB-Cable)**;
|
||||
* 繁琐的虚拟音频管道配置、难以避免的缓冲区延迟、偶尔出现的采样率抖动与破音,严重影响了语音输入的优雅体验。
|
||||
|
||||
---
|
||||
|
||||
## 📁 目录结构
|
||||
## ⚡ 硬件桥接的基本原理
|
||||
|
||||
**软件在操作系统层无法优雅解决的问题,交给硬件中间人来做。**
|
||||
|
||||
本项目通过一颗极低成本的 **ESP32-S3** 芯片充当**硬件中间人(Hardware Bridge)**:
|
||||
|
||||
```text
|
||||
D:\tool\RemoteMapper-ESP32/
|
||||
├── default_16MB.csv # 16MB Flash 分区表
|
||||
├── platformio.ini # PlatformIO 编译与环境配置
|
||||
├── build.bat # 一键编译脚本
|
||||
├── flash.bat # 一键烧录脚本
|
||||
├── monitor.bat # 串口监控日志脚本
|
||||
├── test.bat # 单元测试运行脚本
|
||||
├── include/
|
||||
│ ├── app_config.h # 全局引脚、采样率、缓冲区容量宏定义
|
||||
│ └── version.h # 固件版本号
|
||||
├── src/
|
||||
│ ├── main.cpp # FreeRTOS 双核主入口与任务调度
|
||||
│ ├── audio/ # ADPCM 解码、Declip、FIR 平滑、AGC 与环形缓冲区
|
||||
│ ├── ble/ # NimBLE Central、HOGP 监听与 ATVV 协议客户端
|
||||
│ ├── usb/ # TinyUSB UAC 麦克风与 HID 键盘/多媒体控制器
|
||||
│ ├── keymap/ # 按键手势状态机与键码映射引擎
|
||||
│ └── cli/ # Serial CDC 诊断与 JSON 状态接口
|
||||
└── test/
|
||||
└── native/ # 算法与状态机原生验证单元测试
|
||||
┌────────────────────────┐ Bluetooth LE 5.0 (HOGP + ATVV) ┌────────────────────────┐
|
||||
│ │ ───────────────────────────────────────► │ │
|
||||
│ 小米蓝牙语音遥控器 │ │ ESP32-S3 N16R8 │
|
||||
│ (Peripheral 端) │ ◄─────────────────────────────────────── │ (Central 主机端) │
|
||||
└────────────────────────┘ 双向配对握手与私有音频协商 └───────────┬────────────┘
|
||||
│
|
||||
│ USB 2.0 Full-Speed
|
||||
│ (TinyUSB 硬件复合设备)
|
||||
▼
|
||||
┌────────────────────────┐
|
||||
│ PC 宿主机 (Win/Mac) │
|
||||
│ │
|
||||
│ • 标准 UAC 1.0 麦克风 │
|
||||
│ • 标准 USB HID 键盘 │
|
||||
│ • 标准 Consumer 多媒体 │
|
||||
└────────────────────────┘
|
||||
```
|
||||
|
||||
1. **上游接管**:ESP32-S3 作为 BLE Central 主机端直连小米遥控器,在蓝牙空中信道原始层完整接收 HOGP 报文与私有 ATVV 协议,**绕过微软 `kbdhid.sys` 的过滤,100% 捕获包括「音量+、音量-、返回键」在内的全部 13 个物理按键**;
|
||||
2. **边缘 DSP 音频处理**:遥控器传出的 4-bit IMA-ADPCM 压缩音频流,在 ESP32 内部实时解码为 16kHz 16-Bit PCM,并完成 Declip 防破音、FIR 低通滤波与动态 AGC 增益平滑;
|
||||
3. **下游模拟物理硬件**:ESP32-S3 原生 USB OTG 直接向电脑模拟出符合 USB-IF 标准的**标准免驱硬件设备**:
|
||||
* 将 `0x80` / `0x81` 映射为标准 USB Consumer 键码 `0x00E9` / `0x00EA`(原生调节系统音量);
|
||||
* 将 `0xF1` 映射为标准 USB Consumer 键码 `0x0224`(网页与播放器原生后退);
|
||||
* 将解码后的音频通过标准 UAC 1.0 Isochronous 管道实时推送给电脑;
|
||||
4. **对电脑而言**:PC 认为接入的就是一个**正规的物理 USB 麦克风和物理 USB 键盘**,**无需安装任何驱动,无需配置虚拟声卡,无内核侵入,不触发反作弊,绝对稳定安全**。
|
||||
|
||||
---
|
||||
|
||||
## 🚀 编译与烧录
|
||||
## 🌟 项目核心特性
|
||||
|
||||
### 1. 运行单元测试
|
||||
```cmd
|
||||
test.bat
|
||||
```
|
||||
### 1. 🎙️ 真·免驱 USB 物理麦克风(UAC 1.0)
|
||||
* 基于 TinyUSB 栈模拟标准 USB Audio Class 1.0 设备,16kHz 16-Bit Mono 原生输入;
|
||||
* **按住语音键说话,松开自动静音**,无缝对接 Windows 语音听写(`Win+H`)、豆包 AI、微信语音与各类会议软件;
|
||||
* 独创 **bInterval=2 / wMaxPacketSize=64** 降频缓冲设计,彻底解决 DWC2 硬件 USB 缺失 SOF 中断导致的 500Hz 丢帧魔咒,音频平滑无底噪。
|
||||
|
||||
### 2. 编译固件
|
||||
```cmd
|
||||
build.bat
|
||||
```
|
||||
### 2. 🎮 12 按键 $\times$ 3 触发模式(36+ 独立动作空间)
|
||||
* 除专职语音键外,其余 12 个物理按键全部支持 **单击(Click)、长按(Long Press, 200~2000ms 可调)、双击(Double Click, 100~600ms 可调)**;
|
||||
* 支持触发:单键、修饰键(Ctrl/Alt/Shift/Win)、复杂组合快捷键(如 `Win+D`、`Alt+Tab`)、脚本专用键(F13~F24 无冲突键码)。
|
||||
|
||||
### 3. 烧录到 ESP32-S3
|
||||
将 ESP32-S3 开发板通过 USB 数据线连接到电脑(注意插在 `USB/OTG` 接口):
|
||||
```cmd
|
||||
flash.bat
|
||||
```
|
||||
### 3. 🎵 原生标准 USB Consumer 多媒体控制
|
||||
* 音量增加(`0x00E9`)、音量减少(`0x00EA`)、静音(`0x00E2`)、播放/暂停(`0x00CD`)、曲目切换与系统休眠;
|
||||
* 完美兼容 Windows、macOS 与 Linux 原生全局音量与媒体控制。
|
||||
|
||||
### 4. 🔢 全链路 16 进制 / 10 进制双模智能引擎
|
||||
* WebUI 所有选项、按键下拉菜单与微调输入框全面标清 `0x...` 标准 16 进制键码;
|
||||
* 支持直接粘贴标准 16 进制键码(如 `0x2C`)或传统十进制数值,双向智能兼容。
|
||||
|
||||
### 5. 🛡️ 生产级 NVS 存储容灾与开机自愈
|
||||
* 紧凑型 JSON 序列化存储,所有配置写入仅占用 Flash NVS 扇区不足 35%;
|
||||
* 采用局部原子事务,写入后立刻调用 `nvs_flash_commit()`,彻底杜绝异常断电丢数据;
|
||||
* 具备开机自愈校验机制:若检测到 Flash 扇区数据损坏或非法修改,自动无缝降级回出厂安全配置,杜绝系统崩溃变砖。
|
||||
|
||||
### 6. 🌐 免客户端嵌入式 Web 可视化后台
|
||||
* 自带双模 Wi-Fi 管理器:
|
||||
* **热点模式(AP)**:无需电脑连接局域网,手机或电脑直连热点 `RemoteMapper-AP`(192.168.4.1)并通过 Captive Portal 自动弹窗配置;
|
||||
* **局域网模式(STA)**:连接家中 Wi-Fi,随时随地在浏览器中访问管理;
|
||||
* 内置 1:1 遥控器真机动态交互面板、实体键盘敲击即录制改键、实时高频运行日志流与 Flash NVS 纯文本高级编辑器。
|
||||
|
||||
---
|
||||
|
||||
## 📋 预置按键映射表(出厂默认配置)
|
||||
|
||||
| 遥控器按键 | 物理键码 | 单击行为 (Click) | 长按行为 (Long Press) | 双击行为 (Double Click) |
|
||||
| :--- | :--- | :--- | :--- | :--- |
|
||||
| **电源键** | `0x66` | `Alt + F4` (关闭窗口) | 🌙 系统休眠 (`0x0032`) | — |
|
||||
| **语音键** | `0x04` | 🎙️ UAC 麦克风推流 + `Alt + ,` (AI语音助手) | 🎙️ 按住持续录音 | — |
|
||||
| **方向上** | `0x52` | 键盘 `↑` (Arrow Up) | — | — |
|
||||
| **方向下** | `0x51` | 键盘 `↓` (Arrow Down) | — | — |
|
||||
| **方向左** | `0x50` | 键盘 `←` (Arrow Left) | — | — |
|
||||
| **方向右** | `0x4F` | 键盘 `→` (Arrow Right) | — | — |
|
||||
| **确定键** | `0x28` | 键盘 `Enter` (回车) | — | — |
|
||||
| **返回键** | `0xF1` | 多媒体返回 (`0x0224` AC Back) | — | — |
|
||||
| **主页键** | `0x24` | `Win + D` (显示/隐藏桌面) | — | — |
|
||||
| **菜单键** | `0x5D` | 键盘 `Space` (空格 / 播放暂停) | — | — |
|
||||
| **音量+** | `0x80` | 🔊 音量增加 (`0x00E9` Vol+) | — | — |
|
||||
| **音量-** | `0x81` | 🔉 音量减少 (`0x00EA` Vol-) | — | — |
|
||||
| **电视键** | `0xC0` | 键盘 `F8` | — | — |
|
||||
|
||||
*注:以上按键均可在 Web 后台任意修改、互换或自定义为任何按键/多媒体功能。*
|
||||
|
||||
---
|
||||
|
||||
## 🚀 完整使用教程(从零上手)
|
||||
|
||||
整个使用流程简单清晰,分为以下六个核心步骤:
|
||||
|
||||
### 步骤 1:硬件采购与接线
|
||||
1. **采购核心板**:购买 **ESP32-S3-DevKitC-1 N16R8** 开发板(淘宝约 25~35 元,务必选择带 **16MB Flash + 8MB Octal PSRAM** 的版本);
|
||||
2. **准备遥控器**:小米蓝牙语音遥控器(标准红外/蓝牙双模或纯蓝牙版均可,常见型号如 XMRM-00A、XMRM-010、MI RC);
|
||||
3. **关键数据线连接**:
|
||||
* ESP32-S3 开发板通常有两个 Type-C 口:一个标注为 **`UART`**,另一个标注为 **`USB`**(或 **`OTG`**);
|
||||
* **⚠️ 必须将数据线插在 `USB / OTG` 接口**(直连芯片内部原生 USB 控制器,才能模拟物理麦克风与键盘;UART 口仅用于串口烧录通信,无法模拟 USB 设备)。
|
||||
|
||||
---
|
||||
|
||||
### 步骤 2:一键刷入固件
|
||||
1. 将 ESP32-S3 通过 USB/OTG 口连接至电脑;
|
||||
2. 在本项目根目录下,直接双击运行:
|
||||
```cmd
|
||||
flash.bat
|
||||
```
|
||||
3. 脚本会自动调用 esptool 识别端口并烧录固件,等待提示 `Successfully created esp32s3 image` 烧录完成。
|
||||
|
||||
---
|
||||
|
||||
### 步骤 3:开机配网(连接家里 Wi-Fi)
|
||||
1. 固件初次启动时,会自动广播一个开放式配置热点:
|
||||
* **Wi-Fi 热点名称**:`RemoteMapper-AP`
|
||||
* **热点默认密码**:无密码(直接连接)
|
||||
2. 拿起手机或电脑,搜索并连接 `RemoteMapper-AP`;
|
||||
3. 连接后系统通常会自动弹出强制门户配置页面;若未弹出,直接在浏览器中打开后台地址:
|
||||
```text
|
||||
http://192.168.4.1/
|
||||
```
|
||||
4. 切换到底部的 **「📶 Wi-Fi 与系统配置」** 选项卡,点击「🔍 搜索 Wi-Fi」,在列表中选定家里的 2.4GHz Wi-Fi 并输入密码,点击「💾 保存并连接 Wi-Fi」;
|
||||
5. ESP32 连接成功后,以后只要电脑或手机在同一局域网下,直接在浏览器中访问分配的 IP(例如 `http://192.168.2.179`)或直接输入域名访问:
|
||||
```text
|
||||
http://remotemapper.local/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 步骤 4:遥控器蓝牙配对与绑定
|
||||
1. 在 Web 控制台顶部进入 **「📡 蓝牙配对管理」** 选项卡;
|
||||
2. 拿起实体小米遥控器,**同时按住「主页键」与「菜单键」3 秒**,听到滴声或看到遥控器指示灯快闪,进入蓝牙配对广播状态;
|
||||
3. 在网页上点击 **「🔍 扫描附近蓝牙设备」**,列表中会出现 `Xiaomi Voice Remote`(或 `小米蓝牙语音遥控器`);
|
||||
4. 点击对应的 **「连接此设备」** 按钮,连接成功后遥控器 MAC 地址将自动写入 ESP32 Flash NVS;
|
||||
5. **持久化自动回连**:绑定成功后,后续无论设备断电重启,还是遥控器深度休眠,按任意键即可在 **2~3 秒内秒级无感回连**!
|
||||
|
||||
---
|
||||
|
||||
### 步骤 5:按键映射与手势自定义
|
||||
1. 进入 **「🎮 遥控器与改键测试」** 选项卡;
|
||||
2. 随意按下实体遥控器的任意按键,屏幕上的 1:1 仿真遥控器模型会实时点亮高光绿框,并显示实时触发动作;
|
||||
3. 点击模型上的任意按键卡片(例如点击「菜单键」或「电源键」),即可弹出改键弹窗;
|
||||
4. 每个按键均可独立配置三个手势标签页:
|
||||
* **单击(Click)**:瞬时点按或按下保持(Hold);
|
||||
* **长按(Long Press)**:可自定 200ms ~ 2000ms 触发时长,长按自动阻止短按,互不干扰;
|
||||
* **双击(Double Click)**:可自定 100ms ~ 600ms 双击判定间隔;
|
||||
5. **改键极为简单**:
|
||||
* **敲击即录制**:直接在物理电脑键盘上敲击目标按键(如敲一下 `Space` 或 `Ctrl+C`),网页自动捕捉录制;
|
||||
* **快捷下拉选择**:菜单中预置了修饰键、F1~F24 专用键、快捷组合键(`Win+D` 回桌面、`Alt+Tab` 任务切换),以及原生多媒体功能(音量增减、静音、播放/暂停、休眠等);
|
||||
6. 点击「💾 保存映射」,修改即刻生效并持久化至 Flash,断电不丢失。
|
||||
|
||||
---
|
||||
|
||||
### 步骤 6:配置语音输入法(让语音键满血工作)
|
||||
遥控器的语音键出厂默认配置为:**按住时启动 UAC 麦克风音频推流,并注入快捷键 `右Alt + 逗号`**(这是微信输入法的默认语音快捷键)。
|
||||
|
||||
要让语音输入在 Windows 上完美工作,只需简单设置你的输入法(以微信输入法为例,搜狗、讯飞同理):
|
||||
1. 打开输入法设置 ➔ 找到 **麦克风/音频输入源**,在下拉菜单中选择:
|
||||
```text
|
||||
RemoteMapper Mic (设备管理器中免驱的原生物理麦克风)
|
||||
```
|
||||
2. 查看并确认输入法的 **语音输入唤醒快捷键** 与 ESP32 语音键派发的快捷键一致(默认即为 `右Alt + 逗号`;如果使用讯飞或搜狗,可把输入法快捷键设为 `F8` 或 `Ctrl+Shift+V`,并在 Web 后台同步修改语音键快捷键);
|
||||
3. **开始体验**:
|
||||
* 拿起遥控器,**按住语音键直接说话,说完松开按键**;
|
||||
* 麦克风录音与快捷键完美无缝衔接,文字瞬间自动上屏打出!
|
||||
|
||||
---
|
||||
|
||||
## 🎮 进阶可玩性:PC 本地伴侣程序 (`pc_companion`) 深度联动
|
||||
|
||||
> 💡 **解决痛点**:普通 USB 键盘只能模拟按键,无法执行「一键启动指定应用」、「一键运行复杂批处理」、「一键切换显示器信号源」或「一键运行 Python 脚本」。
|
||||
|
||||
我们随项目附带了极简、高性能的 PC 端伴侣后台服务:**`pc_companion`**。
|
||||
|
||||
### 🌟 核心原理:利用 F13 ~ F24 零冲突键码
|
||||
* Windows 原生支持 `F13` 到 `F24` 虚拟键码(VK_F13 ~ VK_F24),但现代实体键盘几乎没有这些按键;
|
||||
* 本项目将遥控器动作映射为 `F13 ~ F24`,PC 伴侣通过原生 Win32 `RegisterHotKey` 监听,**待机 CPU 占用绝对 0.0%,内存占用仅几 MB,无任何钩子冲突与延迟**!
|
||||
|
||||
### 🛠️ 快速配置与玩法示例:
|
||||
1. **在 ESP32 Web 后台**:将任意遥控器按键(如双击 TV 键)映射为 `F13` 或 `F14`;
|
||||
2. **在 PC 端编辑配置**:打开 `pc_companion/config.json`,为每个 F 键绑定任意本地动作:
|
||||
```json
|
||||
{
|
||||
"F13": {
|
||||
"name": "一键打开抖音网页版",
|
||||
"command": "start https://www.douyin.com/",
|
||||
"enabled": true
|
||||
},
|
||||
"F14": {
|
||||
"name": "一键切换显示器信号源到 PS5",
|
||||
"command": "C:\\Scripts\\切到ps5.bat",
|
||||
"enabled": true
|
||||
},
|
||||
"F15": {
|
||||
"name": "运行自定义 Python 自动化脚本",
|
||||
"command": "python scripts/demo_task.py",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
```
|
||||
3. **启动与常驻**:
|
||||
* **调试运行**:双击 `pc_companion/start_companion.bat`(前台黑框输出执行日志);
|
||||
* **静默常驻**:双击 `pc_companion/silent_start.vbs`(无弹窗后台静默运行);
|
||||
* **开机自启**:双击 `pc_companion/enable_autostart.bat`(自动注入 Windows 用户注册表启动项);
|
||||
* **独立打包**:运行 `pc_companion/build_exe.bat`,即可一键打包生成独立的单文件绿色可执行程序 `RemoteMapperHost.exe`(无需安装 Python 环境)。
|
||||
|
||||
---
|
||||
|
||||
## 💖 鸣谢与致敬开源项目 (Special Thanks)
|
||||
|
||||
本项目的诞生离不开开源社区先行者的无私探索与灵感启发,特此向以下优秀开源项目致以诚挚敬意:
|
||||
* [QL-4/RemoteMapper](https://github.com/QL-4/RemoteMapper):启发了小米遥控器在 PC 端增强控制的应用场景,提供了宝贵的 Windows C# 软件实现方案与 ATVV 协议参考;
|
||||
* [godarrenw/mi_remote_control](https://github.com/godarrenw/mi_remote_control):深入剖析了小米遥控器的蓝牙通信、逆向工程与 Linux 驱动底层细节,为本项目的协议实现提供了重要参考。
|
||||
|
||||
---
|
||||
|
||||
## 🤝 欢迎贡献 (Contributing & Roadmap)
|
||||
|
||||
本项目完全开源,代码模块化且结构清晰,热烈欢迎各位极客与开发者提交 Issue 和 Pull Request!
|
||||
我们非常期待社区共同完善以下方向:
|
||||
* 📡 **支持更多遥控器型号**:扩展适配更多小米老款遥控器、天猫魔盒遥控器、Apple TV 遥控器、Google Chromecast 遥控器等;
|
||||
* 🧠 **红外/蓝牙按键学习功能 (Key Learning)**:支持学习并模拟空调、电视、投影仪等红外/蓝牙码;
|
||||
* 🎚️ **多层功能触发层 (Multi-Layer / Fn Chording)**:引入 Leader Key 前导键机制,实现按键层级切换;
|
||||
* 📲 **WebUI 在线 OTA 固件升级**:免插拔数据线,直接在浏览器一键上传 `.bin` 固件无感更新。
|
||||
|
||||
---
|
||||
|
||||
## 📖 深入阅读与底层源码参考
|
||||
|
||||
* 📘 [开发者手册与系统技术全景文档 (DEVELOPMENT.md)](./DEVELOPMENT.md)
|
||||
* 🐛 [蓝牙与 USB 复合设备稳定性深度修复报告](./BLE_HID_UAC_BUGS_POSTMORTEM.md)
|
||||
* 🎧 [USB UAC 1.0 与 DWC2 驱动优化报告](./USB_UAC_BUG_POSTMORTEM.md)
|
||||
|
||||
---
|
||||
|
||||
## 📄 开源许可证
|
||||
本项目遵循 [MIT License](./LICENSE) 开源许可协议。
|
||||
|
||||
### 4. 查看实时串口日志
|
||||
```cmd
|
||||
monitor.bat
|
||||
```
|
||||
|
||||
## 🐛 历史 Bug 与稳定性修复记录
|
||||
如果你对底层原理感兴趣,欢迎阅读:
|
||||
- [蓝牙与 USB 复合设备稳定性深度 Bug 修复记录 (Session 2)](./BLE_HID_UAC_BUGS_POSTMORTEM.md)
|
||||
- [UAC1.0 与 DWC2 驱动死锁 Bug 修复记录 (Session 1)](./USB_UAC_BUG_POSTMORTEM.md)
|
||||
Reference in new issue
Block a user