Skip to content

docs: time sync accuracy, offset mapping and dejitter tuning - #336

Merged
cboulay merged 1 commit into
devfrom
docs/time-sync-theory
Oct 14, 2026
Merged

cboulay merged 1 commit into
devfrom
docs/time-sync-theory

Conversation

@cboulay

@cboulay cboulay commented Oct 14, 2026

Copy link
Copy Markdown
Collaborator

Moves the measurement theory from the main site's Time Synchronization page into liblsl's internals/time_sync page (the main site keeps the practical guidance and links here; companion PR on sccn/labstreaminglayer):

  • Accuracy of the offset: the half-asymmetry bias, why the min-RTT clock filter removes random delays but not the constant network-stack difference, what uncertainty means, link to the validation results.
  • From offsets to synchronized timestamps: latest offset (what proc_clocksync does), linear fit over (remote_time, offset) pairs, robust fit; recorders store raw data so the mapping is chosen at import.
  • Dejitter: why timestamps need smoothing, import-time vs online smoothing, choosing the half-time (settling vs tracking clock-rate changes), and alternatives to RLS (double exponential, QR-RLS, Kalman; unstable RLS formulations).

No Sphinx warnings.

Moves the measurement theory from the main LSL site's time
synchronization page (which keeps the practical guidance): why the
offset is biased by half the path asymmetry and why the remaining error
is dominated by network-stack differences, the ways to map offsets onto
timestamps (latest offset, linear fit, robust fit) and how recorders
defer that choice, and why and how to tune the dejitter half-time,
with alternatives to RLS.
@cboulay
cboulay merged commit 5e65d72 into dev Oct 14, 2026
56 checks passed
@cboulay
cboulay deleted the docs/time-sync-theory branch October 14, 2026 20:34
myd7349 pushed a commit to myd7349/labstreaminglayer that referenced this pull request Oct 17, 2026
- Time Synchronization keeps the practical guidance (synchronize at
  import with LabRecorder and the XDF importers, online options, non-LSL
  clocks, header parameters, validation). The measurement theory moved to
  liblsl's time synchronization page (sccn/liblsl#336). Fixes a link to
  an old commit of inlet.h.
- Getting LSL: the liblsl section is a short summary with the lag caveat,
  linking to Getting liblsl instead of repeating its list.
- User's Guide: a short overview of discovery, data, clock offsets and
  recovery, instead of an outdated copy of liblsl's internals.
- Examples: link to liblsl's examples folder and README for C/C++.
- FAQs: high data rates mention the synchronous outlet mode (1.18)
  instead of a 2022 pull request; current release file names; the two
  Binaries warnings were comments (missing ::) and are now shown.
- Documentation Syntax becomes Contributing to the documentation: where
  each part of the docs lives, how to build both, the :liblsl: role.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant