Skip to content

Releases: haksolot/PhysDAQ

PhysDAQ v1.2.1 — BLE link stability

Choose a tag to compare

@github-actions github-actions released this 28 Aug 00:38
69be128

Nodes "kept disconnecting" over BLE. They were rebooting, not losing the radio. This release fixes the three stacked causes in both firmwares and adds the diagnostics that made them visible.

Fixes

  • bt_gatt_notify() blocks with K_FOREVER on TX-buffer exhaustion; called from main() it starved the watchdog. The radio is now driven by a dedicated ble_tx thread behind a bounded queue.
  • The BLE controller ran 27 B link-layer packets, splitting every line into five and saturating the link. Data Length Extension is on; TX pools are 6 deep.
  • Zephyr's default fatal handler halted with interrupts locked, making crashes invisible. crashlog.c records the fault and reboots at once.
  • Watchdog fed inside the FIFO-drain loop; connection-parameter auto-update disabled (crashed on Windows); ID line sent when notifications are actually enabled and when the USB port is opened; a cabled node no longer sleeps while the host holds the port.

Diagnostics — after every new link the node reports Boot: cause=…, and Crash: / Hang: when the previous boot ended that way; the Power: line shows BLE lines dropped under back-pressure; the bridge logs OS-side drops and tears down zombie links after 8 s.

Flash physdaq.uf2 (node) or physdaq-hub.uf2 (hub) via the UF2 bootloader; the desktop app is 1.2.1. The hub firmware carries the same code but was not run on hardware for this release.

Full changes: #27

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Aug 22:03
47791f8

What's Changed

  • feat: dual-PPG microSD hub, host command channel, app support by @haksolot in #26

Full Changelog: v1.1.0...v1.2.0

PhysDAQ v1.1.0

Choose a tag to compare

@haksolot haksolot released this 10 Aug 22:22
5a31e9c

Finding and setting up a node no longer means reading raw MAC addresses or
leaving the app for a build toolchain.

Download

Your machine File
Windows physdaq-1.1.0-setup.exe
Mac (Apple Silicon) physdaq-1.1.0-arm64.dmg
Linux physdaq-1.1.0-x86_64.AppImage or physdaq_1.1.0_amd64.deb

physdaq.uf2 is the node firmware. You do not need to download it — it ships
inside the app — but it is here for flashing by hand.

All downloads are unsigned; your system will warn you the first time.
Windows: More info → Run anyway. macOS: right-click → Open. Linux:
chmod +x the AppImage.

What's new

The BLE list only shows your nodes. The scan filters on the sensor's service
UUID instead of returning every phone and pair of headphones in range — in
testing, 19 nearby devices dropped to just the nodes. A "show all BLE devices"
checkbox is there if you ever need the unfiltered list. Results are sorted by
signal strength, so the node in your hand comes first.

Every node has its own name. Nodes used to advertise the identical string
PhysDAQ, so a scan could not tell two of them apart. Each one now appends a
suffix from its chip's factory ID — PhysDAQ-4F2A — which is stable across
reboots and reflashes. Reflash your nodes to get this.

You can name your nodes. Give a node a name like "chest strap" and the app
remembers it, so you recognise it in the list next time wherever you place it.

The device pickers are searchable. Type part of a name, a MAC address or a
COM port to filter, instead of scrolling.

You can flash a node from the app. Connect it over USB, press Flash this
node
, double-tap its RST button. No Zephyr toolchain, no command line.

The flashing flow has not yet been run against real hardware — the image it
installs is built and verified in CI, but if something goes wrong on a real
node, please open an issue. make flash remains available as a fallback.

Research instrument — not a medical device. Nothing here is validated for
diagnosis, and no claim of clinical accuracy is made.

What's Changed

  • docs: all four platform builds are published by @haksolot in #21
  • Make nodes findable: filter the BLE scan, searchable pickers, per-node names by @haksolot in #22
  • Flash a node from the desktop app by @haksolot in #24
  • chore: release v1.1.0 by @haksolot in #25

Full Changelog: v1.0.0...v1.1.0

PhysDAQ v1.0.0

Choose a tag to compare

@haksolot haksolot released this 10 Aug 17:45
f6cbcd0

First published build of PhysDAQ — a wearable research instrument for
multi-point photoplethysmography and inertial motion capture.

Download

Your machine File
Windows physdaq-1.0.0-setup.exe
Mac (Apple Silicon) physdaq-1.0.0-arm64.dmg
Linux physdaq-1.0.0-x86_64.AppImage or physdaq_1.0.0_amd64.deb

All downloads are unsigned — PhysDAQ is a lab instrument, not a commercial
product, and a signing certificate is not something the project has. Your system
will warn you the first time:

  • Windows — SmartScreen shows "Windows protected your PC". Click
    More info → Run anyway.
  • macOS — the app is blocked on a double-click. Right-click → Open, then
    confirm. Once only.
  • Linux — chmod +x physdaq-*.AppImage first. For USB you also need to be in
    the dialout group.

The Windows build has been run and verified. The macOS and Linux builds have
not.
This is the first release for those platforms — they compile and package
cleanly in CI, but no one has yet launched them on real hardware. If you hit
something, please open an issue.

What it does

Records the raw red and infrared pulse-oximetry waveform plus 6-axis motion at
100 Hz, from several wearable sensor nodes at once, and writes one CSV per
sensor per session to Documents/PhysDAQ_Sessions/. Nodes connect over USB or
Bluetooth Low Energy. No Python installation is needed — the acquisition bridge
ships frozen inside the download.

New here? Start with the
User Guide.

Research instrument — not a medical device. Nothing here is validated for
diagnosis, and no claim of clinical accuracy is made.