Skip to content

Sending commands to the board

This guide explains how to connect to the OBC board CLI through WSL2 or Linux using the Ground Station CLI.


If this is your first time setting this up, jump to First-Time Setup first.

1. Activate the Python Virtual Environment

Section titled “1. Activate the Python Virtual Environment”

Follow the repository setup instructions and ensure the Python virtual environment is activated.


Connect the OBC board (Launchpad, Revisions, etc.) to your laptop through USB.


Ensure the board is flashed with:

  • main, or
  • another branch where app_main.c starts the task scheduler and communication FreeRTOS tasks.

This can be flashed using TI UniFlash.


4. Forward the USB Device to WSL2 (WSL2 Only)

Section titled “4. Forward the USB Device to WSL2 (WSL2 Only)”

Skip this section if you are booting directly into Linux.

  • Ensure PuTTY or any other serial monitor is closed.
  • Only one process can access a serial port at a time.

Run:

Terminal window
usbipd list

Look for the XDS110 device and note the BUSID.

Example:

BUSID DEVICE
5-2 Texas Instruments XDS110

Run:

Terminal window
usbipd attach --wsl --busid 5-2

Replace 5-2 with your actual BUSID.

You must repeat this step every time you unplug and reconnect the USB device.


Inside WSL2, run:

Terminal window
cd /dev
ls

Look for either:

  • ttyUSB0
  • ttyACM0

If multiple exist, try each one.


From the root, cd into the interfaces submodule.

Terminal window
cd interfaces

Then, do

Terminal window
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=GS
cmake --build .

Navigate to the root of the orbital repository with the CLI, and run:

Terminal window
python -m obc.tools.cli.ground_station_cli /dev/ttyUSB0

Or:

Terminal window
python -m obc.tools.cli.ground_station_cli /dev/ttyACM0

As of July 11, 2026, the module path is:

obc/tools/cli/ground_station_cli

With the CLI open, you can enter help to see each command. Additionally doing

Terminal window
help {command}

will list helpful information about the CLI command.

e.g.

Terminal window
help send_command

Let’s try viewing logs. Enter

Terminal window
start_logging

then wait a few seconds and send

Terminal window
print_logs

This should start printing logs from the board. Now, use

Terminal window
Ctrl+C

to exit the polling mode entered by print_logs.

Now let’s try sending our first mission command to the board.

Terminal window
send_conn_request

It should be successful. Only one of these need to be sent per session. Enter

Terminal window
send_command --command CMD_PING

This should print a response including a SUCCESS! status. Note that currently you can not send multiple send_conn_request to the board without resetting it (either using the reset button, or using the CMD_EXEC_OBC_RESET before using Ctrl+C). This means that if you close the CLI and open a new one, you won’t be able to send_conn_request and thus you won’t be able to use send_command without resetting the board.


If the CLI does not open:

  • Try other /dev/ttyUSB* or /dev/ttyACM* devices.
  • Verify the board is outputting logs using PuTTY on Windows.
  • Re-attach the USB device with usbipd attach.
  • Ask a lead for assistance if nothing works.

If the CLI opens but the ping command doesn’t work:

  • Try other /dev/ttyUSB* or /dev/ttyACM* devices.
  • Press the PORRST button, then try doing send_conn_request and sending the ping command again in a new CLI instance
  • Ask a lead for assistance if nothing works.

If using WSL2, Windows does not automatically expose USB devices to WSL.

Install usbipd:


  1. Open Services on Windows.
  2. Scroll alphabetically until you find:
USBIP Device Host (or something similar)
  1. Ensure the service is running.

This only needs to be done once per USB device.

Open PowerShell as Administrator.

First, find the BUSID:

Terminal window
usbipd list

Then bind the device:

Terminal window
usbipd bind --busid 5-2

Replace 5-2 with your BUSID.

After binding once, future reconnects only require:

Terminal window
usbipd attach --wsl --busid {YOUR-BUSID}

Now that usbipd is set up, go back and complete the steps.


  • If you would like the port to be back on Windows (to use PuTTy, etc.) you can either do usbipd detach, or replug the USB connection to the board.
  • This workflow replaces using PuTTY for UART logging. It also allows you to send commands to the board and see responses.
  • The Ground Station CLI communicates directly over the forwarded USB serial port using UART.
  • If you are using native Linux instead of WSL2, no usbipd setup is required.