IsolaRail
IsolaRail 是当前 V3 四口 USB hub 的 owner-facing control plane 仓库。README.md 把它定义为 ESP32-S3 + CH335F + M24C64@0x50 + EN1..
- Embedded Rust
- ESP32 firmware
- Async embedded
- Display driver
- DC fan speed control
- MCU flashing integration
- Project docs site
- Release failure notification
- EdgeOne Makers static-site deploy
目录
技术栈
运行与交付
- CI 工作流
- check.yml
- dev-release.yml
- docs-pages.yml
- notify-release-failure.yml
- release.yml
- 能力标记
- bun_lock
- cargo_toml
- github_actions
- package_json
依赖与工具
- package.json
- 开发依赖
- @commitlint/cli
- @commitlint/config-conventional
- commitlint-plugin-function-rules
- 项目脚本
- commitlint
- docs:build
- docs:dev
- docs:preview
- site:assemble
配置与质量
- 配置文件
- .gitignore
- .gitmodules
- .markdownlint-cli2.yaml
- Cargo.toml
- lefthook.yml
- package.json
- rust-toolchain.toml
其他信息
- Cargo
- Deps main
- defmt
- embassy-embedded-hal
- embassy-executor
- embassy-futures
{
"cargo": {
"deps_main": [
"defmt",
"embassy-embedded-hal",
"embassy-executor",
"embassy-futures",
"embassy-net",
"embassy-sync",
"embassy-time",
"embassy-time-net",
"embedded-graphics",
"embedded-hal",
"embedded-hal-async",
"embedded-hal-bus",
"embedded-io-async",
"esp-alloc",
"esp-backtrace",
"esp-bootloader-esp-idf",
"esp-hal",
"esp-hal-embassy",
"esp-println",
"esp-wifi"
]
},
"ci_workflows": [
"check.yml",
"dev-release.yml",
"docs-pages.yml",
"notify-release-failure.yml",
"release.yml"
],
"configs_root": [
".gitignore",
".gitmodules",
".markdownlint-cli2.yaml",
"Cargo.toml",
"lefthook.yml",
"package.json",
"rust-toolchain.toml"
],
"markers_present": [
"bun_lock",
"cargo_toml",
"github_actions",
"package_json"
],
"package_json": {
"deps_dev": [
"@commitlint/cli",
"@commitlint/config-conventional",
"commitlint-plugin-function-rules"
],
"scripts": [
"commitlint",
"docs:build",
"docs:dev",
"docs:preview",
"site:assemble"
]
}
}Purpose
IsolaRail 是当前 V3 四口 USB hub 的 owner-facing control plane 仓库。README.md 把它定义为 ESP32-S3 + CH335F + M24C64@0x50 + EN1..EN4 + PWREN#/OVCUR# + LCD/front panel 的整机控制面,并固定 isolarail / isolarail-devd 为 firmware、CLI 和 daemon 身份;这说明它不是单独的驱动 crate,也不是单独的 web 或 docs 仓库,而是“固件 + 本地 companion + 主站 web + 文档站”的一体交付面。
Taxonomy
- Tags: Embedded Rust, ESP32 firmware, Async embedded, Display driver, DC fan speed control, MCU flashing integration, Project docs site, Release failure notification, EdgeOne Makers static-site deploy
- Why / evidence: 这些 tags 来自当前仓库的 checked-in evidence。
Cargo.toml展示esp-hal、Embassy、embedded-hal-async和本地gc9d01driver;docs/pwm_fan_control_circuit_design.md与src/fan.rs共同证明两线 DC 风扇的模拟调压控制路径与温控逻辑;Justfile与tools/isolarail-runner固定了 Local USB flashing/monitor 入口;package.json、README.md、.github/workflows/docs-pages.yml与docs/specs/r6wfr-docs-site/*共同证明web/根站点、docs-site//docs/子站点、单一.site-publish组合产物,以及 GitHub Pages 热备 + EdgeOne Makers 正式发布合同。
Repository map
src/是 ESP32-S3 firmware 主体,包含 boot/runtime、hardware_snapshot、fan、sideband 与设备状态输出逻辑。tools/isolarail-companion/承载本地 CLI 与isolarail-devd,仓库根Justfile把它们暴露成 normal developer entrypoints。web/是 publishable primary site;README.md明确组合静态产物里它占根路径/。docs-site/是 bilingual Rspress 文档站,发布时挂到/docs/子路径。gc9d01/是 vendored display driver submodule,说明显示控制器层仍被保留为独立维护边界,而不是完全埋进整机固件里。
Runtime and delivery
固件开发默认通过 just firmware-check、just firmware-build、just flash-monitor 与 cargo run --release 完成,其中 cargo run --release 被 .cargo/config.toml 和 tools/isolarail-runner 绑定到同一条 Local USB 安全边界。站点交付默认先 bun run docs:build 与 bun run --cwd web build,再通过根 package.json 的 site:assemble 组装 .site-publish。.github/workflows/docs-pages.yml 只构建一次,再把同一份 artifact 同时用于 GitHub Pages 与 npx edgeone makers deploy。
Architecture notes
README.md、docs/hardware_connection_overview.md 与 src/hardware_snapshot.rs 共同表明:这个仓库的控制面不是“给 USB hub 做个设置页”这么窄,而是覆盖 input power、I2C topology、CH335F sideband、front panel、fan control/telemetry、buzzer、boot self-check、per-port control gates 与 output-module telemetry 的整机诊断与操作边界。另一方面,README.md 又把发布面拆成三条 seam:本地 USB CLI/daemon、根路径 web/ 主站、以及 /docs/ product/engineering docs site。docs/specs/r6wfr-docs-site/IMPLEMENTATION.md 进一步说明,这三个 seam 在正式发布时会被组装进同一份静态 artifact,而不是各自独立部署。
Workflow and quality gates
.github/workflows/check.yml、dev-release.yml、release.yml、notify-release-failure.yml 与 docs-pages.yml 共同构成 firmware、release、failure alert 与站点发布门禁。README.md 的 validation status 又把 just tools-build、just web-check、just firmware-check、cargo +esp build --release 等本地验证入口显式列出,说明该仓库的质量门禁不是单一语言栈,而是 firmware + companion + site publish 的组合门禁。
Reusable decisions
- 主站
web/和文档站docs-site/默认共享一份组合静态产物:根路径/给 web app,/docs/给 docs site,再把同一份 artifact 同时发布到 EdgeOne 与 GitHub Pages 热备。 - EdgeOne 相关 owner-side prerequisite 被刻意收口在最小合同:CI 只吃
EDGEONE_API_TOKEN与EDGEONE_PROJECT_NAME;项目、域名、证书、默认域名 smoke test 和 DNS 切流都留在 owner-side rollout。 - 固件 flashing 路径被项目化为
just+isolarail/isolarail-devd安全边界,而不是让维护者直接猜espflash或旧 daemon 命令。
Risks and open questions
- 仓库仍包含部分 reference-only 硬件资料,例如
docs/esp32-s3fh4r2_gpio_assignment_guide.md与docs/pwm_fan_control_circuit_design.md;它们对 fan / GPIO 主题仍有价值,但不应被误读为全部 current truth。 cargo +esp build --release、just flash-monitor、设备串口日志与 front-panel 行为是不同层级的证明;只有编译通过并不等于整机行为已验证。web/根路径与docs-site//docs/子路径共用同一份 artifact,任何SITE_BASE/DOCS_BASE漂移都可能同时破坏 EdgeOne 正式入口与 GitHub Pages 回滚源。
Evidence index
README.mdCargo.tomlJustfiletools/isolarail-runnerpackage.json.github/workflows/check.yml.github/workflows/docs-pages.yml.github/workflows/notify-release-failure.ymldocs/specs/r6wfr-docs-site/SPEC.mddocs/specs/r6wfr-docs-site/IMPLEMENTATION.mddocs/hardware_connection_overview.mddocs/pwm_fan_control_circuit_design.mdsrc/hardware_snapshot.rssrc/fan.rs
相关内容
Async embedded
主题Async embedded 表示嵌入式 Rust 代码把 async 当成正式 API surface 或正式 runtime contract 来维护,而不是只在某个样例里顺手用了异步。
DC fan speed control
主题DC fan speed control 表示项目明确采用两线 DC 风扇的模拟调压控制模式,而不是直接把 PWM chopping 当默认方案。典型实现是 PWM -> RC 滤波 -> 注入可调 LDO 反馈网络,再配合独立 EN 和可选 tach 反馈,把“风扇供电轨”作为一个可调模拟系统来维护。 这个 Topic 的重点是控制策略和电路语义,而不是“有风扇”这么宽。
Display driver
主题Display driver 表示项目围绕显示控制器驱动建立了稳定的可复用模式,通常是面向 LCD/OLED/controller 的驱动 crate,或在产品固件中把显示驱动视为独立维护边界。这里的重点不是“有屏幕”,而是显示控制器交互本身已经成为长期维护契约。 这个 Topic 关注显示控制器层,而不是更高层的 UI/graphics 语义。
EdgeOne Makers static-site deploy
主题EdgeOne Makers static-site deploy 指仓库把静态站点构建结果作为单一 publish artifact 交给 GitHub Actions,再由 workflow 用 npx edgeone makers deploy 持续发布到 EdgeOne Makers 的 direct-upload project。
Embedded Rust
主题Embedded Rust 表示 Rust 代码运行在 MCU、driver、firmware 或硬件 bring-up 环境中,通常涉及 no_std、Embassy、esp-hal、STM32/ESP32、probe-rs、espflash 或 embedded-hal。它不是所有 Rust 项目的泛化标签。
ESP32 firmware
主题ESP32 firmware 表示项目把 ESP32 家族 MCU 作为正式固件目标来维护,并围绕 toolchain、烧录、板级职责、连接能力和与其他 MCU/上位机的分工建立了稳定约定。这里的重点不是“芯片型号”,而是 ESP32 在系统里承担什么角色。 这个 Topic 往往不只是单片机源码。
Manual version release delivery
主题Manual version release delivery 是一种可复用的发布交付合同:维护者显式选择或确认一次 release target,系统再用可插拔的 Version Policy 校验版本、绑定 source identity、完成 reservation、经过 PR 与质量门禁、创建显式 Release,并让部署与 recovery 复用该 identity 下对应的不可变产物。
MCU flashing integration
主题MCU flashing integration 表示项目通过 espflash 管理 ESP32 系列,通过 probe-rs 管理 STM32/其他 probe-supported MCU,并把这些 backend 接入项目配置或明确的本地操作入口。Topic token 使用可复用工程模式命名;espflash 与 probe-rs 作为具体工具名放在定义和证据里。 这个 Topic 关注的是“硬件操作入口可复现且可审计”。
Project docs site
主题Project docs site 指项目在工程仓库内维护一个独立的 web 文档站点,通常以 docs-site/、docs-pages.yml 或等价 publish workflow、docs:build / build-docs-site、DOCS_PORT 等入口体现。
Release failure notification
主题Release failure notification 指一个仓库为所有“预期成功但最终以 failure 结束”的交付 workflow 建立显式、可审查的告警路径。范围包括 release、deploy、CI、Docs Pages 和 required gate,但必须由 checked-in allowlist 声明;成功、skipped、cancelled 和通知 workflow 自身不属于通知条件。