Skip to main content
The Wine protocol enables head tracking for Windows games running on Linux through Wine, Proton, or Steam Play. It bridges FreeTrack-compatible Windows games to OpenTrack running natively on Linux.

How It Works

The Wine protocol:
  1. Creates a shared memory region accessible to Wine processes
  2. Launches a wrapper program (opentrack-wrapper-wine.exe.so) inside Wine
  3. The wrapper acts as a FreeTrack bridge, making tracking data available to Windows games
  4. Games running under Wine access tracking data as if on native Windows

Architecture

This allows Windows-only games to use head tracking without dual-booting.

Compatible Environments

Wine

Run any Windows game with Wine - configure Wine path and prefix

Steam Play (Proton)

Automatic Proton games via Steam - specify AppID

Custom Proton

Manual Proton setup - specify Proton version and prefix

Prerequisites

Required Packages

1

Install Wine

Install Wine or Proton on your system:Ubuntu/Debian:
Fedora:
Arch:
2

Steam Play setup (optional)

If using Steam:
  1. Enable Steam Play in Steam settings
  2. Choose a Proton version
  3. Note the game’s AppID (found in Steam URL)
3

Verify Wine works

Test Wine installation:

Setup Instructions

Standard Wine Setup

1

Select Wine protocol

In OpenTrack, go to the Output dropdown and select “Wine — Windows layer for Unix”.
2

Configure Wine variant

Click the settings button and select “Wine” variant.
3

Choose Wine version

Wine executable path:
  • System Wine: Select “WINE” (uses system default)
  • Custom Wine: Select “CUSTOM” and browse to Wine binary
  • Wine-Staging/TKG: Enter custom Wine path
4

Set Wine prefix

Wine prefix: Location of your Wine virtual Windows installation
  • Default: ~/.wine/
  • Custom: Any directory containing a Wine prefix
  • Must be an absolute path (not relative)
5

Configure protocol type

Headtracking Protocol: Choose FreeTrack compatibility mode
  • Protocol 1: FreeTrack 1.x
  • Protocol 2: FreeTrack 2.0 (recommended)
  • Protocol 3: TrackIR emulation
6

Enable sync options (optional)

  • ESYNC: Enable for better performance
  • FSYNC: Enable if kernel supports it
7

Start OpenTrack

Click Start. OpenTrack will:
  • Create shared memory
  • Launch Wine wrapper process
  • Wait for game to start
8

Launch your game

Start your Windows game through Wine:
The game should detect FreeTrack/TrackIR automatically.

Steam Play (Proton) Setup

1

Enable Proton in OpenTrack

In Wine protocol settings:
  • Select “Proton” variant
  • Choose “Steam Play” mode
2

Find game AppID

Get your game’s Steam AppID:
  1. Go to game’s store page
  2. Look at URL: store.steampowered.com/app/[APPID]/
  3. Or right-click game in Steam library → Properties → Updates
3

Enter AppID

In OpenTrack settings:
  • Enter the game’s AppID number
  • OpenTrack will auto-detect Proton version and prefix
4

Start tracking and game

  1. Start OpenTrack
  2. Launch game through Steam
  3. Head tracking should work automatically

External Proton Setup

1

Select external Proton

In Wine protocol settings:
  • Select “Proton” variant
  • Choose “External Proton” mode
2

Set Proton path

Proton version path: Location of Proton installationTypical locations:
3

Set prefix path

Proton prefix: Game’s compatibility data folderFormat:
4

Launch game

Start OpenTrack, then launch game with Proton manually or via Steam.

Configuration Options

Wine Settings

Proton Settings

Environment Variables

The protocol sets these environment variables:

Troubleshooting

”Failed to start Wine!”

Cause: Wine binary not found or not executable. Solution:
  1. Verify Wine is installed: wine --version
  2. Check Wine path in settings is correct
  3. Ensure Wine binary is executable
  4. Try using system Wine instead of custom path

”Prefix has not been defined!”

Cause: Wine prefix path is empty. Solution:
  1. Enter absolute path to Wine prefix (e.g., /home/user/.wine/)
  2. Create prefix if it doesn’t exist:
  3. Verify prefix directory exists and is valid

”Must specify application id for Proton”

Cause: Using Steam Play mode without AppID. Solution:
  1. Find game’s AppID from Steam store page URL
  2. Enter AppID in OpenTrack settings
  3. Or switch to External Proton mode and specify paths manually

Game Doesn’t Detect Tracking

Symptoms: Game runs but head tracking doesn’t work. Solution:
  1. Check wrapper is running:
  2. Verify shared memory:
  3. Check protocol version: Try different protocol settings (1, 2, or 3)
  4. Game compatibility: Ensure game supports FreeTrack/TrackIR
  5. Wine/Proton version: Some games work better with specific versions

Wrapper Process Crashes

Symptoms: OpenTrack starts but wrapper exits immediately. Solution:
  1. Check OpenTrack logs for error messages
  2. Verify Wine prefix is valid:
  3. Install required Wine dependencies:
  4. Try different Wine version (Wine-Staging, Wine-GE, Proton-GE)

“Can’t open shared memory mapping”

Cause: Shared memory creation failed. Solution:
  1. Check /dev/shm permissions:
  2. Ensure sufficient space in /dev/shm
  3. Verify SELinux/AppArmor isn’t blocking
  4. Try running OpenTrack with elevated permissions

Performance Issues

Symptoms: Game or tracking is laggy under Wine. Solution:
  • Enable ESYNC and FSYNC
  • Use Wine-Staging or Wine-TKG for better performance
  • Check CPU usage - Wine adds overhead
  • Consider using Proton instead of plain Wine
  • Update graphics drivers

Game-Specific Notes

DCS World on Linux

DCS has native Linux support via Steam, but for standalone:

Elite Dangerous

Works well with Proton:
  1. Use Steam Play mode
  2. AppID: 359320
  3. Protocol 2 (FreeTrack 2.0)
  4. Enable FSYNC for best performance

X-Plane

For X-Plane on Wine:
  1. Install X-Camera plugin in Wine prefix
  2. Use protocol 2
  3. Ensure plugin DLLs are in correct Wine architecture (32 vs 64-bit)

Advanced Configuration

Custom Wine Builds

Optimized Wine builds for gaming: Wine-Staging:
Wine-GE / Wine-TKG:
Proton-GE:

Multiple Wine Prefixes

Manage separate prefixes per game:

Debug Logging

Enable Wine debug output:
Check OpenTrack logs:

Technical Details

Shared Memory Structure

Coordinate Transformations

Wrapper Process

The wrapper executable:
  • Runs inside Wine environment
  • Creates FreeTrack shared memory visible to Windows games
  • Bridges Linux shared memory to Windows memory
  • Handles game detection and protocol translation
The Wine protocol brings Windows-exclusive head tracking games to Linux. While it adds some complexity compared to native protocols, it enables gaming on Linux without dual-booting or virtualization.

Alternatives for Linux Gaming

Native Linux Games

Some games have native Linux versions with head tracking:
  • X-Plane 11/12: Native Linux, use FreeTrack protocol
  • War Thunder: Native Linux support
  • FlightGear: Native, use FlightGear protocol

Dual-Boot Option

For maximum compatibility, consider dual-booting Windows for gaming.

Virtual Machine

Pass-through GPU to VM for near-native performance (advanced setup).