Skip to content

Test with Balto on a bus ​

Once your payload is on a bus, Balto shows it the way Mission Control sees it: its registration, its telemetry, the commands MC sends it, and the answers. Use it instead of hand-written curl calls.

Without a bus, use Payload Lab. This page is for a payload on a bench bus or a flight bus.

Before you start ​

  • Install Balto and sign in: Set up a test bench.
  • Use Balto 5.1.0-rc.21 or later. Check with balto version; update with balto update.
  • Your Urban Sky account needs payload read permission to look, and payload write permission to adopt, enable and send. Ask your organization's admin.

Balto works the same whether your payload is on a Husky bus on your desk or on a cloud bench bus. Balto reaches MC over the Internet in both cases; it does not need to be on the payload's network.

The CLI ​

TaskCommand
See the buses you can reachbalto buses
A bus's payloads and their statebalto payloads list --bus <bus>
Adopt a payloadbalto payloads adopt <payload>
Turn commands on, or offbalto payloads enable-commands <payload> · ... --off
Send a commandbalto payloads send <payload> <command> [key=value ...] [--request-id ID]
What MC sent, newest firstbalto payloads audit <payload> [--limit N] [--request-id ID]
Watch traffic both ways, livebalto trace <payload> --follow
Only what your payload sentbalto trace <payload> --up --follow
Only what MC sentbalto trace <payload> --down --follow
Remove a test registrationbalto payloads retire <payload>

<payload> is the payload's ID or serial. <bus> is a bus name or hardware ID. The payloads commands print JSON, so you can pipe them to jq. balto trace reads the last 10 minutes first (--minutes, up to 1440) and prints one row per source each 30 seconds (--every for one row per message, --json for raw rows).

balto help all lists every command. balto docs prints this guide as it was when your Balto was built.

The app ​

bash
balto ui

Opens Balto in your browser. Open your bus from the sidebar, then choose the Payloads tab:

  • Your payload, its status, and whether commands are on.
  • Its latest telemetry values.
  • Its commands, as forms built from your command manifest. Engineering commands (audience: "AUDIENCE_ENGINEERING", see Manifest rules) appear only for Urban Sky staff with the payload engineering permission.
  • Its video, if MC receives a stream for it.

Every read, command and picture on the Payloads tab goes through Mission Control, as an operator's would. Balto adds no checks of its own: if MC accepts a command, Balto sends it.

On a cloud bench bus, the same app pairs the link, runs balto test, and connects your adapter with a live traffic view.

A typical session ​

bash
balto payloads list --bus uskybus-8901fc                    # is ENV-001 there? discovered?
balto trace ENV-001 --up --follow                           # telemetry arriving every 2 s?
balto payloads adopt ENV-001                                # adopt
balto payloads enable-commands ENV-001
balto payloads send ENV-001 sensor.set_sample_period seconds=5
balto payloads audit ENV-001 --limit 1                      # the ack MC recorded
balto trace ENV-001 --up --minutes 2                        # sensor.sample_period_s now 5?

What Balto does not show yet ​

  • Pushed logs and metrics. Lines your payload sends to the bus on port 4318 go to Urban Sky's monitoring. Balto's Logs area does not list them yet. Check your side with GET /api/v1/payload/status on the bus (see Send logs and metrics).
  • Your payload's own files. Balto's Logs area reads a bus's own logs. Copying a payload's log files is for Urban Sky staff only.

Urban Sky staff only ​

These need staff permissions. They are listed so you know what support can do for you:

CommandWhat it does
balto forward <bus> --payload <payload> [port]Opens a port of your payload on the staff member's computer, through the bus.
balto ssh <bus> --payload <payload> --login USERSSH to your payload through the bus. Needs a declared ssh service.
balto dev push --bus <bench> -- <command>Runs payload software on a laptop as if it were plugged into a cloud bench bus.
balto certify --bus <bench> --device <key>Checks a payload against the bus's contract, parser and announcer.
balto local …, balto ui --localA bus on a cable to the staff member's computer, with no ops.
balto logs watch payloads <bus> onCopies a payload's reviewed log units to the staff member's computer.

To let support reach your payload with balto ssh --payload, declare the service in your announcement: "services": [{ "name": "ssh", "port": 22, "protocol": "ssh" }]. A declaration grants no access by itself.


← Video · Next: Test and troubleshoot →