Before modifying configuration files or driver settings, run the standalone, non-invasive PE diagnostic tool:
- Open PowerShell on the target machine.
- Run:
.\tools\HardwareDiagnostics\inventory-tobii-runtime.ps1
- Check the generated
tobii-runtime-inventory-*.txtreport:- Verify that
tobii_stream_engine.dllis discovered. - Confirm PE Machine Architecture is
x64(IMAGE_FILE_MACHINE_AMD64). - Check Authenticode signature status and Publisher subject (
Tobii AB). - Confirm required exported symbols (
tobii_api_create,tobii_device_create,tobii_gaze_point_subscribe, etc.) are present.
- Verify that
- Symptom: Log message shows:
Candidate rejected: device '...' is not a verified Tobii Eye Tracker 5 (Strict Mode). - Cause: The plugin strictly enforces hardware verification to protect ALS/MND users from unintended operation on non-target devices.
- Remedy:
- Ensure the physical device is a genuine Tobii Eye Tracker 5 connected via USB.
- If developing or testing on a developer device / evaluation kit, see Developer Test Mode below.
- Symptom:
Developer Test Mode requires an explicit PreferredDeviceIndex or PreferredDeviceUrl. - Cause: When
AllowUnverifiedDevices = true, the plugin deliberately refuses to automatically bind to the first available candidate (candidate 0) to prevent accidental connection. - Remedy: Configure an explicit device index or URL in
PluginConfiguration:var config = new PluginConfiguration { AllowUnverifiedDevices = true, PreferredDeviceIndex = 0 };
- Symptom: Log shows
Candidate rejected: Tobii signer verification failed: ... Subject='None'. - Cause: The discovered
tobii_stream_engine.dllis unsigned, corrupted, or signed by a publisher other than Tobii. - Remedy:
- Reinstall the official Tobii Experience package from the Microsoft Store or Tobii support.
- Do NOT attempt to place arbitrary or third-party DLLs in the probing path.
- Symptom: Log shows
Notice: Binary signature is valid but certificate chain is UntrustedRoot. - Cause: The file has a valid digital signature matching Tobii, but the root CA certificate is not installed in the Windows Trusted Root Certification Authorities store (often seen in offline or air-gapped test rigs).
- Remedy: The plugin logs a diagnostic warning and proceeds if the signature and publisher are valid. To resolve the warning, connect to Windows Update to refresh the root certificates.
- Symptom: Warning logged during OptiKey shutdown:
Native callback worker did not terminate within ... ms. Abandoning stuck thread to prevent host crash. - Cause: The underlying native
tobii_wait_for_callbacksAPI can block indefinitely when the stream engine stops receiving packets. - Safety Mechanism:
- Unlike naive wrappers that call
tobii_device_destroy()orFreeLibrary()while the thread is blocked (which causes a fatalAccessViolationExceptionin OptiKey), OptiKey-ET5-Plugin marks the pump asFaulted/STUCK_WORKERand skips native handle destruction. - The OptiKey UI remains completely responsive and closes cleanly.
- Unlike naive wrappers that call
- Remedy: If this occurs frequently, check whether USB Selective Suspend is enabled or switch the callback strategy to
ProcessOnlyPollingPump.
- Symptom: Plugin fails to initialize with
ET5ErrorCode.RuntimeMissingRequiredExports. - Cause: An older or stripped version of
tobii_stream_engine.dllwas loaded that lacks core or gaze subscription exports. - Remedy:
- Run
inventory-tobii-runtime.ps1to inspect the exported symbol table. - Required exports:
- Core:
tobii_api_create,tobii_api_destroy - Device:
tobii_device_create,tobii_device_destroy,tobii_enumerate_devices - Gaze:
tobii_gaze_point_subscribe,tobii_gaze_point_unsubscribe
- Core:
- Update the Tobii driver software to the latest official release.
- Run
- Tobii Background Service stopped:
- Open
services.msc, check Tobii Service, and start/restart it.
- Open
- USB Power Drops / Hub Issues:
- Always plug the Tobii Eye Tracker 5 directly into a motherboard USB 3.0 port. Avoid unpowered USB hubs or keyboard passthroughs.
- Disable USB selective suspend in Windows Power Options.
- Calibration Drift:
- Open Tobii Experience and run display setup/calibration before launching OptiKey.