// the find
gbrault/gattclient
A gatt client, based on bluez stack -- just using socket
A standalone GATT client extracted from bluez's btgatt-client.c tool, talking to BLE devices over a raw socket instead of D-Bus. Useful if you want a minimal, low-level C example of GATT operations (read/write/notify, signed writes, security levels) without pulling in the full bluez daemon stack.
Does real legwork most people skip: it documents the exact ~25 files you need to pull out of bluez/src/shared to compile btgatt-client.c standalone, which is genuinely annoying to figure out yourself. The CLI covers the full GATT operation set (read-long-value, write-prepare/execute, register-notify, signed writes with CSRK) rather than a toy subset. Doxygen docs are generated and hosted, which is more than most repos this size bother with.
Dead since 2015 — bluez has since pushed hard toward D-Bus-based GATT APIs (bluez-dbus, BlueZ 5.4x GATT profile), so the raw-socket approach here is increasingly out of step with how modern bluez expects you to talk to adapters. The repo ships compiled .o/.d build artifacts and an Eclipse project as the only build system, with no Makefile or CMake for anyone not using Eclipse CDT. The documentation folder is a grab-bag of unrelated files (a Korean-language conference slide deck, random PDFs, a Windows .chm help file) that suggests nobody cleaned up what got committed.