Duckietown Shell (dts)#

This section describes how to install and set up dts (Duckietown Shell), a CLI (Command-Line Interface) program that is used for Duckietown-related operations.

What you will need

What you will get

  • A computer with dts installed and correctly set up.

Duckietown Shell (dts) Installation#

Attention

If you have already installed dts using pip3, run the following command and follow the on-screen instructions:

pip3 uninstall duckietown-shell

To install dts, run:

pipx install duckietown-shell

The Duckietown Shell is pre-installed in Workspaces. Run the checkpoint to verify it is working as intended.

Warning

If you are installing dts on an arm machine you will also need to install the gcc and python3-dev dependencies:

sudo apt install -y gcc python3-dev

This includes Apple Silicon macs with Ubuntu arm64 virtual machines.

Checkpoint 1 ✅#

To verify that dts has been installed correctly:

Test

Run:

which dts

Expected Result

The path to dts.

Duckietown Shell (dts) configuration#

To appropriately configure the Duckietown Shell:

  1. Login into dts as a Duckietown User

  2. Provide dts with your DockerHub credentials

Logging in the Duckietown Shell#

To log into dts with your user configurations:

  1. Open a terminal and run dts

  2. Select ente using UpArrow and DownArrow.

  3. Press Enter.

  4. Obtain and copy your Duckietown token

  5. Paste your dt2 token into the terminal.

  6. Press Enter.

  7. Run dts update.

Note

The resulting output after step 6 should look like the following, where UID is your Duckietown UID (User ID):

dts :  Correctly identified as uid = UID

Switching user in the Duckietown Shell#

You can switch users logged into dts by with:

dts tok set

To verify which user is logged in:

dts tok status

Duckietown Shell (dts) profiles#

To get a list of the available dts profiles, run:

dts profile list

to see the available profiles. E.g.,

   | Profile | Distribution | Staging
-- | ------- | ------------ | -------
>> |    ente |         ente |      No

To create a new dts profile:

  1. Run dts profile new.

  2. Select the name of the profile to create using UpArrow and DownArrow.

  3. Press Enter.

  4. Obtain and copy your Duckietown token

  5. Paste your dt2 token into the terminal.

  6. Press Enter.

To switch to a different dts profile, run the following command, where PROFILE is the name of the profile:

dts profile switch PROFILE

Configure Docker in the Duckietown Shell#

To automate most of the back-end operations involving Docker,

dts config docker credentials set --username DOCKERHUB_USERNAME --password DOCKERHUB_ACCESS_TOKEN

Attention

  • These credentials are only stored locally;

  • Never use your account password instead of an personal access tokens (PAT);

Resetting the Duckietown Shell#

To reset dts to “factory conditions”, run:

rm -rf ~/.duckietown/shell

and proceed to reconfigure your dts: Logging in the Duckietown Shell.


Checkpoint 2 ✅#

Tip

Never skip a checkpoint!
If you have trouble with any of these commands, see the FAQs section below. If you cannot find answers, use the Duckietown support channels to get help.

Test

If your Docker login was successful, you should be able to run

dts config docker credentials info

Expected Result

You should see an output similar to the following,

Docker credentials:
. registry:   docker.io
. username:   DOCKERHUB_USERNAME
. secret:   DOCKERHUB_ACCESS_TOKEN

Troubleshooting#

Troubleshooting

SYMPTOM

I mistakenly set a wrong/unwanted username or password. How can I update the credentials?

RESOLUTION

Just run the command again with the correct credentials. Only the latest inputs are stored for the same Docker registry.

Troubleshooting

SYMPTOM

I would like to remove my stored Docker credentials. How could I achieve that?

RESOLUTION

Run:

rm ~/.duckietown/shell/profiles/ente/databases/secrets_docker.yaml