Skip to main content
← projects

September 27, 2025

Canon BT Remote

BLE shutter remote for Canon cameras

FlutterDartBluetooth LEWear OS

Objective

Built for an upcoming Japan trip where I wanted a clean way to take tripod shots without a visible remote or a 10-second timer run. A Flutter app split across phone and Wear OS: the phone handles BLE pairing with the camera, the watch is the one-tap trigger.

Tools & Technologies

BLE GATT

Wear OS Data Layer

Share This

Details

Canon BT Remote is a Flutter application split into two companion apps: one for an Android phone and one for a Wear OS watch. Together they let you trigger a Canon camera shutter wirelessly over Bluetooth.

The phone app handles BLE GATT pairing and communication with the camera, exposing the same services Canon's own remote app uses. The watch app provides a simple one-tap shutter interface, sending commands to the phone via the Wear OS Data Layer Message API. The phone then relays them to the camera over BLE.

Tested and confirmed working with the Canon EOS RP. Both apps maintain background services to keep the BLE session and data layer listener alive.

I learned more than I expected about BLE protocol internals, GATT service and characteristic discovery, and the various ways Android and Wear OS can make cross-device communication annoying.

Source Code


Source available on GitHub.

Gallery

Phone app

Phone app

Phone app (scanning)

Phone app (scanning)

Watch app

Watch app

// related writing

Read the full write-up