Clone this repo:
  1. 435fa73 Unigraf: add UCD event capture API by George-Daniel Matei · 5 days ago main
  2. 3a1266c Unigraf: update utc sdk to version 1.1.44 by George-Daniel Matei · 9 days ago
  3. 795bd1b Unigraf: extend pd APIs by George-Daniel Matei · 10 days ago
  4. 9e3cd23 Metrics: remove spammy logs by George-Daniel Matei · 13 days ago
  5. 4526bb8 Fix incorrect address in the acroname plugin by George-Daniel Matei · 3 weeks ago firmware-R144-16503.2.B release-R144-16503.B stabilize-starline-16502.B

passport

A service for controlling components in ChromeOS peripheral testbeds.

See go/cros-pass-port

Building and Running

Without Docker

Local Machine

The executable can be built on your local machine by running ./scripts/build.sh

The service can be started in server mode by running:

./go/bin/passport

With Docker

Local Machine

The service can be built on your local machine by running ./scripts/build_docker.sh

If you want to use TOT rather than your local checkout you should add the REMOTE_SOURCE variable to your build command e.g.

REMOTE_SOURCE=1 ./scripts/build_docker.sh

The container can be started on your local machine by running

docker run -p 8200:8300 passport:amd64

Remote Machine

The service can be started on a remote machine by running ./scripts/docker_on_remote.sh <HOSTNAME>

For a remote satlab device this would look like

./scripts/docker_on_remote.sh [email protected]

The script will automatically start the service at port 8300 on the remote machine.

To connect to it locally, you will likely need to forward this port to your local machine.

The docker_on_remote.sh will print out an ssh tunnel command that can be used to connect to the service, the output will look like:

$ ./scripts/docker_on_remote.sh [email protected]
...
...

==================================================================
Successfully updated passport on host [email protected]
SSH COMMAND: ssh -L 8300:1XXX.XXX.XXX.XXX:8300 [email protected]
==================================================================

Testing

Once a service is running, it can be verified in a separate terminal by running:

./go/bin/passport switches detect

This will probe for all components connected to the machine and log them to STDOUT. This can also be used to check an already running service on a remote machine by forwarding the remote port to your local machine. The default port is 8300 but a different one can be provided via the -port flag e.g.

./go/bin/passport switches detect -port 9999

Additionally, you can test enabling/disabling specific switches from the command line using:

./go/bin/passport switches enable [-switches SWITCH1,SWITCH2]
./go/bin/passport switches disable [-switches SWITCH1,SWITCH2]

If you omit the -switches argument then all found switches will be used.

Deploying Passport Updates

As of 2025-8-31 passport updates must be deployed manually. Before we discuss how to push a passport update lets talk first about the different versions of passport.

Passport has several versions that are used:

  1. The scripts and development tools use us-docker.pkg.dev/cros-passport/passport/passport:latest
  2. Lab runs use us-docker.pkg.dev/cros-registry/test-services/cros-passport with the tag staging_cros-passport for staging configs and prod_cros-passport for prod configs.

The lab run versions are built from the us-docker.pkg.dev/cros-passport/passport/passport:latest development version.

To update development version simply run:

PUSH=1 REMOTE_SOURCE=1 ./scripts/build_docker.sh

Once that has been updated the staging version for the lab should get built and updated within about an hour. You can see the tagged versions here.

The prod version is updated manually ~2 times a week (along with other tools) but you can ask the TSE team to do a push if you need it sooner.