Stoatworks Labs

bdplay

A USB stick as a source on an NDI decoder

In developmentFirmwareGo
bdplay — A USB stick as a source on an NDI decoder
bdplay's own control page at port 8091 on a real PLAY mid-playlist — the library read off the drive, the transport, and the log that answers most of the "why won't this play" questions.

What it does

A BirdDog PLAY is an NDI and SRT decoder: it shows whatever the network sends it. bdplay makes a USB stick one more thing the network can be. Plug one in, pick USB from the source list in the decoder's own web UI, and it plays what's on the stick out of the HDMI: video, stills and PDFs, in filename order or shuffled, looping until you pick something else.

Nearly all of this was already on the box, doing nothing. The hardware decoder, the media framework and the display sink all ship in the stock firmware. What's missing is anything that mounts a stick, and the web UI checks the chosen source against a list with no USB on it. So bdplay mounts the volume itself, always read-only, because these get yanked out mid-write, and takes over the dropdown rather than trying to teach the vendor's handler a new word. The unit's stored configuration never changes, which is why going back to NDI is instant.

The awkward bit is the display. Only one process can own the screen at a time, so playing from USB means standing the decoder's own video process down and putting it back afterwards. A unit with that process stopped has a dark output and a perfectly happy web page, which looks just like a brick. Every way out restores it, including being killed, and the restore checks the picture actually came back rather than trusting that the request was accepted.

  • USB added to the source list in the decoder's own web UI
  • Video, stills and PDFs, hardware-decoded to HDMI with audio
  • Sequential or shuffled, looping, with the shuffle reordered per cycle so nothing starves
  • FAT, NTFS and exFAT — the last through FUSE, with no kernel change and no reflash
  • PDFs through PDFium, so nothing copyleft ends up on the device
  • Mounted read-only, and the decoder's own video process restored on every exit path
  • A control page of its own on port 8091: the library off the drive, the transport, live status and a log
  • Installed as a checkbox in the PLAY Patcher, which assembles the firmware package in the browser — no toolchain

Where it stands

Working end to end on a real PLAY on firmware 1.0.30, including a real exFAT volume and PDF rendering on the device. That's one unit on one firmware version, and USB hotplug with a physical stick is still untested: the testing ran off a loop device and internal storage. One thing worth knowing before you install it: cycling the decoder's video process makes it unstable. The vendor's own code aborts during teardown, and the damage builds up over a session rather than showing at the moment of the switch. bdplay handles recovering from that state, but to be fair, bdplay is what causes it. There's no tagged release yet.