LibreArm – Breathing New Life into QardioArm Devices

3 hours ago 1

September 28, 2025

When Qardio, Inc. went bankrupt, they didn’t just close their doors — they took their app with them. Overnight, the official QardioArm app vanished from the App Store. For those of us who had already invested in the hardware, this was a real problem. The cuff still worked perfectly, but with no app to drive it, it became a dead piece of kit.

I looked at my own QardioArm sitting there and thought: there must be a way to bring this back to life. That was the start of what became LibreArm.

Step 1: Sniffing the device

The first challenge was simple: I had no documentation. Qardio was gone. No developer notes, no protocol guide, no SDKs. All I had was the hardware in my hand.

So I turned to nRF Connect, a Bluetooth Low Energy (BLE) exploration app. By connecting directly to the QardioArm, I could see the services and characteristics it exposed. That gave me my first map: service 0x1810, characteristic 0x2A35 — the standard Blood Pressure Measurement service defined by Bluetooth SIG.

But there was also a vendor-specific characteristic, with a long UUID. That, it turned out, was the key to actually telling the cuff when to inflate and when to stop.

Step 2: Figuring out the byte arrays

Knowing the services is one thing. Talking to them is another. The device wasn’t going to respond to just any message. It needed a very specific sequence of bytes.

Through trial, error, and more than a little hex-dump detective work, I pieced together what the app had been sending before Qardio disappeared. Certain byte sequences would trigger the pump to start inflating. Others would cancel a measurement. The measurement results came back as structured packets — systolic, diastolic, pulse — encoded in the standard GATT format.

This was the most technical and, honestly, the most fun part of the project. There’s something deeply satisfying about watching a device come to life when you finally get the right command sequence.

Step 3: Building the app

With the protocol understood, the next step was wrapping it in an iOS app. I wanted this to be as simple and privacy-first as possible:

  • No accounts, no cloud
  • Just a clean interface with a start/stop button
  • Readings written directly to Apple Health, where they belong

I used Swift + SwiftUI for the app, and CoreBluetooth for the BLE connection. The integration with HealthKit was straightforward — Apple provides good APIs for saving blood pressure and heart rate data.

One tricky detail was ensuring that only complete readings got saved. The cuff emits partial values while inflating, and if you saved those directly, you’d fill Health with junk entries. We solved that by adding a simple check: only write to Health when both systolic and diastolic (and ideally pulse) values are present. That way, interrupted or incomplete cycles don’t pollute your health record.

Step 4: The App Store challenge

I thought the hard part was over. It wasn’t.

Submitting LibreArm to the App Store opened a whole new can of worms. Apple’s App Review team quite rightly flagged that the app connected to a medical device. That meant regulatory clearance was required — FDA documentation, CE marking, the works.

Normally, this is something the manufacturer provides. But Qardio no longer existed. That left me in a difficult spot: how do you prove compliance for a device whose maker is gone?

After several rounds of review and clarification, referencing old FDA and EC documentation, Apple finally accepted that LibreArm itself wasn’t a medical device — it’s just a wellness logging app. It doesn’t interpret results, give medical advice, or do anything beyond passing readings into HealthKit. That distinction was enough to get approval.

👉 LibreArm on the App Store

Step 5: Going open source

From the beginning, I knew this shouldn’t just be my private workaround. There were thousands of other people with the same problem. That’s why LibreArm is fully open source, up on GitHub. Anyone can audit the code, contribute improvements, or fork it if they want.

Open sourcing also makes the app more resilient. If Apple ever decides to remove it from the store, the code will still be out there. You can still sideload it yourself. The community has control.

👉 LibreArm on GitHub

What I learned

This project reminded me that hardware is only half the story. Without software, it’s useless. And when companies fold, that software can vanish overnight, leaving customers stranded.

LibreArm is my way of saying: it doesn’t have to be that way. With some curiosity, a bit of reverse engineering, and the support of open source, we can keep good hardware alive.

LibreArm is now live on the LibreArm on the App Store. You can also grab the code on LibreArm on GitHub. Most importantly, if you’ve got a QardioArm sitting in a drawer gathering dust, you can use it again.

That’s the real win.

Screenshots

Here are some screenshots from the app:

Read Entire Article