OpenTrack app (output/source)¶
The OpenTrack app integration makes the driver send pose data over UDP in an OpenTrack-compatible payload format.
This is useful when you want to consume the driver’s tracking in other applications via OpenTrack’s ecosystem (mappings, output protocols, etc.).
Enable it (via xr_driver_cli)¶
Enable the OpenTrack external mode (this sets output_mode=external_only and external_mode=opentrack):
xr_driver_cli --opentrack-app
Configure the UDP target (where OpenTrack is listening):
```bash xr_driver_cli --opentrack-app-ip 127.0.0.1 xr_driver_cli --opentrack-app-port 4242
OpenTrack side setup¶
On the OpenTrack machine:
- Configure OpenTrack to receive UDP pose data (exact UI wording varies by OpenTrack version).
- Set the listening port to match
--opentrack-app-port(default:4242). - If OpenTrack is on a different machine, make sure firewalls allow inbound UDP on that port.
Data format and notes¶
The driver sends a UDP packet containing:
- 6 ×
double:(x, y, z, yaw, pitch, roll) - 1 ×
uint32: frame number
Angles are in degrees.
The implementation converts the driver’s coordinate system into what OpenTrack expects (see the implementation in the OpenTrack source plugin).
Troubleshooting¶
- Confirm the driver is running:
systemctl --user status xr-driver - Check logs:
xr_driver_cli --view-log - Verify packets are being sent (localhost example):
bash
sudo tcpdump -n -i lo udp port 4242
- If nothing arrives in OpenTrack, verify:
- the IP/port in
xr_driver_cli --opentrack-app-ip/--opentrack-app-port - OpenTrack is actually listening on that port
- you’re not trying to “receive from yourself” through the listener at the same time (see the listener page for the feedback-loop guard)