Mac OS app for Opgal's "Therm-app" thermal camera. work-in-progress, that works.
No driver nor kernel nor 'sudo' needed.
ss.2025-01-03.at.4.04.57.AM.mov
ss.2025-01-03.at.4.27.09.AM.mov
The command line tools use libusb (so does the official Android apk), and are based on the public debug code.
The Swift app is 100% native and is inspired from Didaktek's Simple-USB and ftdi-synchronous-serial.
Everything is notarized and hardened.
Download from Releases or the Zip files directly, or compile yourself:
clang thermapp.c thermapp_main.c -I/opt/homebrew/include \ -L/opt/homebrew/lib -lusb-1.0 -lpthread \ -o thermapp
or thermapp_ffmpeg.c
instead of thermapp_main.c
.
I installed libusb
with brew install libusb
. Besides trying to update Python (insane thing), Homebrew has never made me lose time.
Command-line-tool as target, C as language, add info.plist in build settings, set a bundle name, set search paths for the libusb, setup hardened runtime in capability and authorize the library, automatic signing management with a Developper ID Application certificate, ,,, , compile and archive, zip the executable and finally upload for notarization via 'notarytool'.
How:
both command line tools expect libusb at /opt/homebrew/lib/libusb-1.0.dylib
notarized/gatekeeper approved but might need to be launched from terminal.
One can check notarization of command-line tools with spctl -assess --verbose --type install filepath
(or any filetype that can't have an embedded staple).
The swift app technically needs nothing, but until the why is figured out, it only recognizes the device after one of the command line tools has connected and exited at least once. Doing so actually creates a new row "Current Required"
, inside macOS' System Information:
CLI
mac-thermapp-libusb
fetches and saves 50 raw frames (frame_%04d.raw).
thermapp_ffmpeg
uses ffmpeg to fetch 1000 frames and saves a .mp4 (out.mp4) video.
I use a micro-usb to usb-c Anker branded cable.
Getting better, it's 25celcius, I don't know why image is flipped and rotated.