OCP Quickstart

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. Port 4000 is the default and can be changed with the tcp_port plugin parameter; see Vehicle-Side Control.

Steps

  1. Connect OdenVR to the vehicle and verify live video.

  2. Enable the Oden Control Pipeline plugin on both sides.

  3. Confirm the OCP vehicle TCP server is listening. With the defaults, the Streamer log shows OCP vehicle TCP server listening on 127.0.0.1:4000.

  4. Connect a gamepad to the operator computer.

  5. Start the vehicle-side TCP print client on the vehicle computer.

  6. Move the gamepad sticks and press buttons.

  7. Confirm that the terminal prints changing controller values.

  8. 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.

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 it does not work:

  • The client cannot connect: confirm OCP is enabled, the Streamer is running, and the client uses the correct host and port.

  • The client connects but prints no controller values: another application may be listening on the port instead of OCP. See the port-conflict entry in Vehicle-Side Control.

  • Messages arrive but values do not change: confirm the Player is connected to the vehicle.