ChromiumOS Hardware and Debug Control Tools

Clone this repo:
  1. ef0d4dc calypso: change SERVO_EC_FLASH_SEL_L polarity by Jayvik Desai · 2 days ago main
  2. 4105763 servo: bluey: Set warm_reset_can_hold_ap to no by Wen Zhang · 4 days ago
  3. e398aca Update Realtek monitor binary to latest version by Keith Short · 8 days ago
  4. 7b465cc Revert "servo: remove anti-pattern clobber_ok="" globally" by Łukasz Hajec · 9 days ago
  5. a4bd0ad servod: fix versioning in docker builds by Michał Barnaś · 9 days ago

HDCTools (Hardware Debug Control Tools)

Welcome to the hdctools repository. This project contains the software stack for interacting with ChromeOS hardware debug targets, most notably the Servo family of debug boards (Servo v2, Servo v4, Servo Micro, C2D2, SuzyQable, etc.).

The core component of this repository is servod, a daemon that abstracts the complex hardware interfaces (I2C, UART, SPI, GPIO) of the Servo ecosystem into a unified control plane.

🚀 The “Fission” Architecture

hdctools is transitioning to the Fission architecture. This represents a major modernization effort for the repository, including:

  • gRPC Interface: Shifting from legacy XML-RPC to a robust, high-performance gRPC API for servod communication.
  • Containerization: servod and its dependencies are now heavily Dockerized for reproducible development, testing, and deployment.
  • Test Orchestration: A new local_agent and Docker Orchestrator workflow for scalable Hardware-in-the-Loop (HIL) and labstation testing.

📚 Documentation

  • Hardware Testing Quickstart: Start here if you are a test operator or developer looking to run tests against physical hardware locally or on a remote labstation.
  • Design & Core Docs: Detailed documentation on servod, ec-3po, power measurement, and specific Servo hardware revisions.

🛠️ Development & Testing

This project requires strict adherence to code quality and testing standards.

Running Tests

Always run the test suite before submitting a CL. The testing framework leverages Docker for consistency:

./scripts/run-servod-tests

Linting

Check for pylint errors using pre-commit:

pre-commit run pylint --all-files

🤝 Contributing

Commits in this project are pushed to ChromeOS Gerrit. Ensure your commit messages follow the standard formatting and always include a BUG= and TEST= line.

component: concise description of changes

Longer explanation of why these changes were made, what bugs they fix,
and how the new architecture handles the problem.

BUG=b:12345678
TEST=scripts/run-servod-tests and manual validation steps