# OCP Quickstart

Verify Oden Control Pipeline with a gamepad and a vehicle-side terminal client.

Last validated: 2026-05-05

Use this quickstart after video is working. It proves that OdenVR can send operator input to Oden Streamer and that a vehicle-side process can receive the values.

## What you will run

-   OdenVR with Oden Control Pipeline enabled.
    
-   Oden Streamer or Oden Fleet Streamer with Oden Control Pipeline enabled.
    
-   A gamepad on the operator computer.
    
-   A vehicle-side TCP client connected to `127.0.0.1:4000` that prints received JSON control values.
    

## Steps

1.  Connect OdenVR to the vehicle and verify live video.
    
2.  Enable the Oden Control Pipeline plugin on both sides.
    
3.  Connect a gamepad to the operator computer.
    
4.  Start the vehicle-side TCP print client on the vehicle computer.
    
5.  Move the gamepad sticks and press buttons.
    
6.  Confirm that the terminal prints changing `controller` values.
    
7.  Confirm that OCP faults are clear or explainable.
    

The TCP protocol is 4-byte little-endian length followed by UTF-8 JSON. The vehicle-side client must echo `ack_time` and `ack_time_mac` in its response so latency measurement stays closed.

For the full vehicle-side implementation details and a Rust example, see [Vehicle-Side Control](vehicle-side-control.md).

## Expected output

A working terminal client should show repeated OCP control messages with:

-   `controller.buttons`
    
-   `controller.axes`
    
-   `telemetry.latency`
    
-   `telemetry.fault`
    
-   `ack_time`
    
-   `ack_time_mac`
    

If no messages arrive, check that the vehicle-side client is connected to the Streamer host and port, OCP is enabled, and the Player is connected to the vehicle.
