tree: 870279bb838450b9f56f5870cb0019d2a4b645bf
  1. .vscode/
  2. defs/
  3. development_environment/
  4. dockerfiles/
  5. docs/
  6. ec3po/
  7. include/
  8. lib/
  9. measurement_tools/
  10. scripts/
  11. servo/
  12. servo_updater/
  13. skills/
  14. tests/
  15. usbkm232/
  16. .dockerignore
  17. .git-blame-ignore-revs
  18. .gitignore
  19. .isort.cfg
  20. .pre-commit-config.yaml
  21. __init__.py
  22. DIR_METADATA
  23. GEMINI.md
  24. getversion.sh
  25. LICENSE
  26. Makefile
  27. navbar.md
  28. OWNERS
  29. PRESUBMIT.cfg
  30. pylintrc
  31. pyproject.toml
  32. README.md
  33. setup_tests.py
  34. unblocked_terms.txt
README.md

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