gkoh / furble

A wireless remote shutter release/button for Fujifilm (eg. GFX100II, GFX100S, X-H2S, X-S10, X-T3, X-T30, X-T4, X-T5, X100V) and Canon EOS (eg. M6, RP) cameras.
https://furble-web-installer.koh.wtf
MIT License
54 stars 8 forks source link
ble bluetooth bluetooth-low-energy canon canon-camera esp32 fujifilm fujifilm-cameras m5stack m5stickc m5stickc-plus m5stickcplus shutter-release

furble - FUjifilm Remote Bluetooth Low Energy

PlatformIO CI

A wireless remote shutter release originally targeted at Fujifilm mirrorless cameras.

The remote uses the camera's native Bluetooth Low Energy interface so additional adapters are not required.

furble is developed as a PlatformIO project for the M5StickC, M5StickC Plus and M5StickC Plus2 (ESP32 based devices). Additionally, it can be used on the M5Stack Core2.

Supported Cameras

The following devices have actually been tested and confirmed to work:

What Works

Installation

Easy Install

The simplest way to get started is with the web installer. Follow the instructions on the wiki: Easy Web Install

PlatformIO

PlatformIO does everything assuming things are installed and connected properly. In most cases it should be:

More details are on the wiki: PlatformIO

Usage

The top level menu has the following entries:

On first use, put the target camera into pairing mode, then hit Scan. If the camera advertises a known, matching signature, it should appear in the list. You can then connect to the target camera, which, if successful, will save the entry and show the remote menu.

Upon subsequent use it should be enough to hit Connect, selecting the previously paired device and leads to the remote menu.

From the remote menu you may choose to disconnect or control the shutter.

GPS Location Tagging

For Fujifilm cameras, location tagging is supported with the M5Stack GPS unit:

GPS support can be enabled in furble in Settings->GPS, the camera must also be configured to request location data.

Intervalometer

The intervalometer can be configured via three settings in Settings->Intervalometer:

Count can be configured up to 999 or infinite. Delay and shutter time can be figured with custom or preset values from 0 to 999 in milliseconds, seconds or minutes.

Shutter Lock

When in Shutter remote control, holding focus (button B) then release (button A) will engage shutter lock, holding the shutter open until a button is pressed.

Motivation

I found current smartphone apps for basic wireless remote shutter control to be generally terrible. Research revealed the main alternative was attaching a dongle to the camera, of which there were many options varying in price and quality. I really just wanted the Canon BR-E1, but for my camera.

Possibly Supported Cameras

Fujifilm

Given reports from the community and access to additional cameras, it seems many (all?) Fujifilm cameras use the same Bluetooth protocol. Reports of further confirmed working Fujifilm cameras are welcome.

Canon

With access to a Canon EOS M6, I was able to implement support for it. Other Canon cameras might work, but I suspect the shutter control protocol will be different. @wolcano kindly implemented support for the Canon EOS RP.

Protocol Reverse Engineering

Android supports snooping bluetooth traffic so it was trivial to grab a HCI log to see what the manufacturer supplied camera app was doing.

For all supported cameras, a snoop log of:

was analysed with Wireshark.

It was then an experiment in reducing the interaction to the bare minimum just to trigger the shutter release.

Supporting More Cameras

The best way is to repeat the previous steps, analyse the bluetooth HCI snoop log with Wireshark, implement, then test against the actual device.

Background Story

Requirements

Hardware

I wanted a complete solution out of the box to have:

My search concluded with the M5StickC from M5Stack. The M5StickC and M5StickC Plus have since been EOL and replaced with the M5StickC Plus2.

The M5StickC is an ESP32 based mini-IoT development kit which covered all of the requirements (and more). At time of writing, M5Stack sell the M5StickC for US$9.95. The M5StickC Plus sells for US$19.95.

Software

The project is built with PlatformIO and depends on the following libraries:

Things To Do

Links

Inspiration for this project came from the following project/posts:

Related projects: