InstantLink¶
InstantLink is an open-source Rust CLI and native macOS app for printing to Fujifilm Instax Link printers (Mini, Square, Wide) via Bluetooth Low Energy.
The Instax Link BLE protocol has been fully reverse-engineered by the open-source community (javl/InstaxBLE, linssenste/instax-link-web). InstantLink provides a clean, well-engineered Rust implementation.
Components¶
| Crate | Description |
|---|---|
| instantlink-core | BLE protocol, image processing, device communication |
| instantlink-cli | Command-line interface with progress bars and JSON output |
| instantlink-ffi | C FFI bindings for native GUIs (Swift, etc.) |
Supported Printers¶
| Model | Resolution | Film Type |
|---|---|---|
| Instax Mini Link | 600x800 | Instax Mini |
| Instax Square Link | 800x800 | Instax Square |
| Instax Wide Link | 1260x840 | Instax Wide |
Features¶
- Print any image (JPEG, PNG, etc.) to Instax Link printers
- Auto-resize with crop, contain, or stretch fit modes
- Rich and Natural color modes (vivid vs classic film look)
- Auto JPEG quality reduction to fit printer limits (105KB)
- Battery level, film count, charging state, and print history queries
- LED color control with solid, blink, and breathe patterns
- BLE scanner to discover nearby printers
- JSON output mode for integration with other tools
- Native macOS app with image editor, camera capture, self-timer, film orientation toggle, film border preview, printer profiles, and auto-updates
- C FFI (17 functions) for building native UIs
Architecture¶
InstantLink mirrors the architecture of StatusLight, with the core library providing async BLE communication via btleplug, a CLI that calls core directly, and an FFI layer that the SwiftUI macOS app loads via dlopen/dlsym.
Unlike StatusLight, there is no daemon crate. Instax printing is a one-shot operation (connect, print, disconnect) rather than a continuous service.