Skip to content

feat(multisync): add JBoards controller support - #3000

Open
pixelpropshop wants to merge 1 commit into
FalconChristmas:masterfrom
pixelpropshop:feat/jboards-multisync-support
Open

pixelpropshop wants to merge 1 commit into
FalconChristmas:masterfrom
pixelpropshop:feat/jboards-multisync-support

Conversation

@pixelpropshop

@pixelpropshop pixelpropshop commented Sep 26, 2026 •

Copy link
Copy Markdown

Replaces #2787, redone to follow the current MultiSync detection and status methods.

JBoards controllers play FSEQ files locally and follow MultiSync as remotes. This adds them as a known controller type.

  • Allocate 0xC5 in the "other systems" block. ControlProtocol.txt also gets the Baldrick (0xC4) and Twinkly (0xFA) rows it was missing.
  • DetectJBoardsController pre-filters on the page, then reads /api/system/summary from the board for hostname, model, firmware version, UUID, channel ranges and sync role. It's one request, and the UUID is the board's own.
  • supportsUnicast includes JBoards alongside the existing "below 0x80" test, so a JBoards board in remote mode can be a unicast sync target. No existing type changes behavior.
  • The MultiSync page polls JBoards status the same way as the other non-FPP controllers (through api/system/status?type=JBoards), showing the state, playlist/sequence, elapsed time, uptime, model and version. The platform filter has a JBoards entry.

Tested with fppd built from this branch in Docker against two boards (PocketBeagle 2 and ESP32-P4): both were discovered over HTTP as 0xC5 with the right mode, version, ranges and UUID, and the status proxy returned their state.

Happy to use a different id if 0xC5 isn't the preferred slot.

JBoards controllers play FSEQ files locally and follow MultiSync as
remotes. This adds them as a known controller type.

- Allocate 0xC5 in the other systems block. ControlProtocol.txt also
  gets the Baldrick (0xC4) and Twinkly (0xFA) rows it was missing.
- DetectJBoardsController reads the board's /api/system/summary for its
  hostname, model, firmware version, UUID, channel ranges and sync role.
- A JBoards board in remote mode is a unicast sync target.
- The MultiSync page polls JBoards status, uptime and version, and the
  platform filter has a JBoards entry.
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.

2 participants