Guides
App Development
- Developing apps on your ChromiumOS device
- Optimize Android Apps for ChromeOS device
- Sideload Android apps on your Chromebook
Bugs
- ChromeOS security severity guidelines
- Reporting bugs
- Reporting ChromeOS bugs in the buganizer public tracker
Code review
C++
Containers
- ChromeOS VM for Chromium developers
- Crostini developer guide
- Running custom containers under Chrome OS
Debugging
- ChromeOS build with LLVM Clang and ASAN
- ChromiumOS [serial] console debugging HOWTO
- Chromium on ChromiumOS debugging tips
- Debugging a cellular modem
- Debugging accessibility (a11y) Issues
- Debug button shortcuts
- Debugging features
- Debugging system hangs
- Debugging tips and tricks
- Firmware UI troubleshooting
- Host file access
- How to get a stack trace at runtime
- How to force the out-of-box experience (OOBE)
- LTE: manual E362 setup
- Modem debugging with mmcli (from the modemmanager-next package)
- Recreating a Snapshot or Buildspec
- Remote debugging in ChromiumOS
- Target serial access
Development
- Build broken
- Chrome API keys in the ChromiumOS SDK chroot
- ChromiumOS architecture porting guide
- ChromiumOS board porting guide
- ChromiumOS contributing guide
- ChromiumOS developer guide
- ChromiumOS guide to working on branches
- Create a CL
- Creating local mirrors
- CrOS work command cheatsheet
- Development basics
- Getting started with platform2
- How to use LINT.IfChange to keep files in sync
- Introduction to Git & Gerrit for CrOS contributors
- Life of a Chrome commit on ChromeOS
- Local trybot
- Network-based development
- Remote trybots
- Running graphical applications remotely
- Sandboxing ChromeOS system services
- Simple chrome workflow
- Tools used
Device
- Arch Linux + mainline kernel on kevin (Chromebook Plus)
- Boot mainline kernel on veyron-jaq
- Chrome OS + mainline kernel on kevin (Chromebook Plus)
- Crosfleet
- Developer mode
- Flashing chromiumOS
- Install software on base images
- NFS-quickstart
- Powerwash
- Read-only firmware unlock on 2023+ devices
- Requesting devices
- Screenshots
Experimentation
Enterprise
Documentation
Firmware
Git
Golang
Hardware Schematics
- 45W USB Type-C charging adapter control board
- Chamelium
- Chamelium audio board
- Chamelium audio streaming
- USB Type-C debug dongle and sniffer for USB-PD communications
- USB Type-C to DisplayPort adapter
- USB Type-C to HDMI adapter
- USB Type-C functional testing board
IDEs
Infrastructure
IPC
Image Size
Kernel
Localization
Logging
LSC
Metrics
Mojo
Performance
Portage
- Adding a New Package
- Adding a package to the SDK
- CrOS bashrc override framework
- Ebuild FAQ
- How to patch an ebuild
- New & upgrade package process
- Overlay FAQ
- Subtools Builder
- Upgrade Ebuild EAPIs HOWTO
- Working with your Overlay FAQ
Preferences
Recipes
Rust
Security
- ChromeOS security review HOWTO
- ChromeOS security vulnerability management
- Owned test accounts (OTAs) for manual testing
- Shell scripts & noexec mounts
System Web Apps
Testing
- Adding builder variants using profiles
- Anatomy of test.test
- Autotest design patterns
- Autotest developer FAQ
- Autotest for ChromiumOS developers
- Best practices for writing ChromeOS unit tests
- Best practices for writing Tast tests
- Bluetooth Tast tests
- Breakage and flake policy
- Building and running tests
- Chamelium USB audio
- ChromeOS performance tests
- ChromiumOS unit testing
- Common Green Stainless updates
- Common testing workflows
- Firmware test manual
- Fuzz testing in ChromeOS (dupe)
- Fuzz testing in ChromeOS
- Kernel fuzzing in ChromeOS
- Perf data
- Power testing
- Python unittest mocking
- Run Tast tests with servo
- Running IGT tests on ChromeOS
- Running a single binary with UBSAN
- Running and writing "Tast" automated end to end (E2E) tests
- Running smoke suite on a VM image
- Running unittests via QEMU
- Test lab setup
- Tips on writing C++ Browser tests
- Tips on writing Tast tests
- Touch firmware tests
- UI selection in Tast
- Using test suites
- Writing tests in C++
Third Party
TypeScript
- Adding handling for scroll events
- Detecting dark mode in polymer
- Detecting online status in polymer
- Generating a local
tsconfig.json
file - How to mock JavaScript
- Setting up your TypeScript dev environment