How It Works
The Wine protocol:- Creates a shared memory region accessible to Wine processes
- Launches a wrapper program (
opentrack-wrapper-wine.exe.so) inside Wine - The wrapper acts as a FreeTrack bridge, making tracking data available to Windows games
- Games running under Wine access tracking data as if on native Windows
Architecture
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:
- Enable Steam Play in Steam settings
- Choose a Proton version
- 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:
- Go to game’s store page
- Look at URL:
store.steampowered.com/app/[APPID]/ - 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
- Start OpenTrack
- Launch game through Steam
- 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:- Verify Wine is installed:
wine --version - Check Wine path in settings is correct
- Ensure Wine binary is executable
- Try using system Wine instead of custom path
”Prefix has not been defined!”
Cause: Wine prefix path is empty. Solution:- Enter absolute path to Wine prefix (e.g.,
/home/user/.wine/) - Create prefix if it doesn’t exist:
- Verify prefix directory exists and is valid
”Must specify application id for Proton”
Cause: Using Steam Play mode without AppID. Solution:- Find game’s AppID from Steam store page URL
- Enter AppID in OpenTrack settings
- 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:- Check wrapper is running:
- Verify shared memory:
- Check protocol version: Try different protocol settings (1, 2, or 3)
- Game compatibility: Ensure game supports FreeTrack/TrackIR
- Wine/Proton version: Some games work better with specific versions
Wrapper Process Crashes
Symptoms: OpenTrack starts but wrapper exits immediately. Solution:- Check OpenTrack logs for error messages
- Verify Wine prefix is valid:
- Install required Wine dependencies:
- Try different Wine version (Wine-Staging, Wine-GE, Proton-GE)
“Can’t open shared memory mapping”
Cause: Shared memory creation failed. Solution:- Check
/dev/shmpermissions: - Ensure sufficient space in
/dev/shm - Verify SELinux/AppArmor isn’t blocking
- 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:- Use Steam Play mode
- AppID: 359320
- Protocol 2 (FreeTrack 2.0)
- Enable FSYNC for best performance
X-Plane
For X-Plane on Wine:- Install X-Camera plugin in Wine prefix
- Use protocol 2
- Ensure plugin DLLs are in correct Wine architecture (32 vs 64-bit)
Advanced Configuration
Custom Wine Builds
Optimized Wine builds for gaming: Wine-Staging:Multiple Wine Prefixes
Manage separate prefixes per game:Debug Logging
Enable Wine debug output: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