[GH-ISSUE #317] No heartbeat error on 0.9.51 #145

Open
opened 2026-10-22 05:06:26 +00:00 by roman · 2 comments
Owner

Originally created by @Liquidity-Sniper on GitHub (Oct 14, 2026).
Original GitHub issue: https://github.com/safijari/openpuck/issues/317

Image Image
Originally created by @Liquidity-Sniper on GitHub (Oct 14, 2026). Original GitHub issue: https://github.com/safijari/openpuck/issues/317 <img width="2992" height="2992" alt="Image" src="https://github.com/user-attachments/assets/198ac4e0-92d5-4212-a2c9-d359ffb2c3fd" /> <img width="2992" height="2992" alt="Image" src="https://github.com/user-attachments/assets/dd24f2b9-705f-4978-99b8-f62965f07e85" />
Author
Owner

@safijari commented on GitHub (Oct 21, 2026):

Link to board?

<!-- gh-comment-id:6323829217 --> @safijari commented on GitHub (Oct 21, 2026): Link to board?
Author
Owner

@PescheHelfer commented on GitHub (Nov 1, 2026):

I hit the same "NO HEARTBEAT ... hard wedge" warning on 0.9.51 (Windows 10, Chrome and Edge) and Claude traced it. It looks like a mismatch between the live panel and the released firmware, not a puck hang. The controller keeps working normally while the warning shows, in both Steam and DirectInput mode.

What happens

  • 0.9.51 reports protocol version 21.
  • The panel from #270 has LZ_MAP_V2_PROTOCOL = 20 and LZ_MAP_V2_SHIFTED_OPS_PROTOCOL = 21, so it treats this firmware as having the v2 lizard map and sends dump opcode 0x17.
  • The 0.9.51 parser in webusb_config.cpp only accepts opcodes up to 0x16, so it silently drops 0x17.
  • lzV2ReadMap() then loops on transferIn with no timeout, so lizardBusy stays true.
  • refresh() returns early while lizardBusy is set, so status polling stops. The heartbeat watchdog doesn't exclude lizardBusy, so it reports a hard wedge about 3 seconds after connecting.

What I checked

  • The warning returns about 3 seconds after every page reload.
  • With the warning showing, inflight is false and lizardBusy is true in the browser console.
  • The live page is byte-identical to docs/index.html on main, and it was published on 2026-10-14, the day this issue was opened.

Possible fixes

  • Publish a new release: main reports protocol 22 and handles 0x17.
  • Or only use the v2 map from protocol 22 on, and add a timeout to lzV2ReadMap().
<!-- gh-comment-id:6558325302 --> @PescheHelfer commented on GitHub (Nov 1, 2026): I hit the same "NO HEARTBEAT ... hard wedge" warning on 0.9.51 (Windows 10, Chrome and Edge) and Claude traced it. It looks like a mismatch between the live panel and the released firmware, not a puck hang. The controller keeps working normally while the warning shows, in both Steam and DirectInput mode. **What happens** - 0.9.51 reports protocol version 21. - The panel from #270 has `LZ_MAP_V2_PROTOCOL = 20` and `LZ_MAP_V2_SHIFTED_OPS_PROTOCOL = 21`, so it treats this firmware as having the v2 lizard map and sends dump opcode `0x17`. - The 0.9.51 parser in `webusb_config.cpp` only accepts opcodes up to `0x16`, so it silently drops `0x17`. - `lzV2ReadMap()` then loops on `transferIn` with no timeout, so `lizardBusy` stays true. - `refresh()` returns early while `lizardBusy` is set, so status polling stops. The heartbeat watchdog doesn't exclude `lizardBusy`, so it reports a hard wedge about 3 seconds after connecting. **What I checked** - The warning returns about 3 seconds after every page reload. - With the warning showing, `inflight` is `false` and `lizardBusy` is `true` in the browser console. - The live page is byte-identical to `docs/index.html` on main, and it was published on 2026-10-14, the day this issue was opened. **Possible fixes** - Publish a new release: main reports protocol 22 and handles `0x17`. - Or only use the v2 map from protocol 22 on, and add a timeout to `lzV2ReadMap()`.
Sign in to join this conversation.
No labels
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
safijari/openpuck#145
No description provided.