Bluetooth ISOAL SDU Framing Debugging Guide
Isochronous bugs rarely announce themselves cleanly. One receiver hears a click, another drops a sensor frame, and the first useful clue is usually not the app log. It is whether SDUs are being framed, flushed, and timed the same way on every run.
TL;DR: Use Bluetooth Explorer to record SDU interval, timestamp spacing, packet loss, flush timeout, controller role, and receiver placement before changing codec, parser, or retry logic.
Where does the trail start?
Start with the SDU timing. If timestamps drift before the app sees the payload, the bug is already below the application layer.
What should Bluetooth Explorer capture?
Capture interval, sequence gaps, flush timeout, transport role, PHY, and whether drops cluster near movement or interference. Keep the raw timing next to the user-facing symptom.
How should teams retest?
Run one fixed-position pass, one movement pass, and one high-traffic pass. Change only one pressure at a time so timing drift does not get blamed on parsing.
When is it not a codec issue?
Do not tune codec settings when SDUs arrive late, incomplete, or out of rhythm. A clean payload cannot fix a broken delivery shape.
| Clue | What it means | Next move |
|---|---|---|
| Timestamps drift before decode | Timing is unstable below app logic | Check interval and flush behavior first |
| Loss clusters during movement | Placement or coexistence may be involved | Repeat with fixed receiver position |
| Payload parses after clean timing | Parser changes can be tested safely | Compare raw SDU boundaries before editing code |
How do you keep timing evidence clean?
- Record the expected SDU interval before the test.
- Save sequence gaps and timestamp spacing together.
- Keep the receiver still for the first pass.
- Retest movement and radio noise separately.
- Do not change codec and transport settings in the same run.
What should users ask?
What is the first ISOAL clue to check?
Check timestamp spacing and SDU boundaries before judging the decoded payload.
Why does flush timeout matter?
A tight flush timeout can turn late data into missing data, which looks like a higher-level failure.
When should teams inspect controller behavior?
Inspect controller behavior when timing gaps appear before the app receives a complete payload.
Useful references
Bottom line: Bluetooth Explorer helps teams treat isochronous drops as timing evidence first, then parser or codec evidence only after the transport shape is clean.
