Skip to main content
Output protocols send processed head tracking data to games and applications. OpenTrack supports numerous output formats for compatibility with virtually any software.

Protocol Module System

Protocols are plugins that implement the IProtocol interface:

Module Selection

Available Protocols

FreeTrack

Industry-standard protocol used by many games.Supported Games:
  • Arma series
  • DCS World
  • War Thunder
  • Euro Truck Simulator
  • American Truck Simulator
  • Many others
Interface: Shared memoryData Format: 6DOF position and rotation

TrackIR

Compatible with TrackIR-enabled games.
Some games require the official TrackIR software to be installed, even when using OpenTrack.

Protocol Data Flow

The pipeline calls the protocol at 250Hz:
1

Receive Data

Protocol receives both processed and raw pose data:
2

Transform Data

Convert OpenTrack format to protocol-specific format:
3

Transmit

Send data via protocol-specific method:
  • Shared memory (FreeTrack, TrackIR)
  • Network socket (UDP, FlightGear)
  • System APIs (Mouse, SimConnect)

FreeTrack Protocol Details

FreeTrack is the most commonly used protocol:

Shared Memory Structure

Memory Mapping

UDP Protocol Details

UDP output is highly flexible:

Basic Configuration

Sending Data

UDP is connectionless and doesn’t guarantee delivery. This is acceptable for tracking data since new data arrives every 4ms.

Game-Specific Setup

1

Enable FreeTrack

  1. Open DCS options
  2. Go to Controls → Head Tracking
  3. Select “Enable head tracking”
2

Configure OpenTrack

  1. Select FreeTrack 2.0 protocol
  2. Start tracking
  3. Configure mapping curves for best response
3

Fine-tune

  • Reduce translation sensitivity for cockpit views
  • Increase yaw/pitch sensitivity for better awareness
  • Enable relative translation for comfortable operation

Protocol Dialog

Protocols can provide configuration dialogs:
The dialog receives the active protocol instance for live updates.

Creating Custom Protocols

1

Implement IProtocol

2

Handle Threading

Protocol methods are called from the tracking thread:
3

Register Plugin

Performance Considerations

The protocol runs at 250Hz, so efficiency matters:
Never block in the pose() method. Network I/O, file operations, and heavy computation should use separate threads.

Good Practice

Avoid

Troubleshooting

  1. Verify protocol selection matches game requirements
  2. Start OpenTrack before launching game
  3. Check if game has head tracking enabled in settings
  4. Try running game and OpenTrack as administrator (Windows)
  5. Check for antivirus blocking shared memory access
Use axis inversion in configuration:
Some games also have inversion settings.
  1. Verify IP address and port
  2. Check firewall rules
  3. Test with localhost (127.0.0.1) first
  4. Use Wireshark to verify packets are sent
  1. OpenTrack runs at 250Hz - check CPU usage
  2. Disable logging if enabled
  3. Reduce filter complexity
  4. Check for USB bandwidth issues (optical trackers)

Next Steps

Filters

Add smoothing and stabilization

Mapping Curves

Optimize tracking response

Configuration

Advanced configuration options