Create and manage Fujifilm camera profiles, with ease and speed. Connect your camera and you are good to go!
TypeScript
439
8 commits
updated Mar 26, 2026
Browser-based preset manager and RAW converter for Fujifilm X-series cameras for desktop and mobile.
Desktop
Android
This is author's cat. Shoutout to Fuji X Weekly for awesome presets!
Note that the app is in BETA. It's currently tested on X100VI only. It likely works with other X-series cameras that support Fujifilm's RAW conversion protocol (X-T5, X-H2, X-T30, etc.), but this has not been verified. If you have a different camera and want to help, see Supporting New Cameras below.
Just like Fujifilm X RAW STUDIO, FilmKit uses WebUSB to connect directly to your camera, your camera's own image processor handles the conversion. FilmKit is a static client-side app, hosted on Github Pages.
Browser that supports WebUSB, this includes Chromium-based browswer like Google Chrome on desktop and Android.
Appropriate udev rule required if the browser is running in Flatpak, ex:
SUBSYSTEM=="usb", ATTR{idVendor}=="04cb", MODE="0666"
FilmKit communicates PTP (Picture Transfer Protocol) over USB, the same protocol that X RAW STUDIO uses. The camera does all the heavy lifting: it receives the RAF file and conversion parameters, processes them, and returns a JPEG.
For preset management, FilmKit reads and writes individual preset properties (D18E–D1A5) using standard PTP GetDevicePropValue / SetDevicePropValue operations.
See QUICK_REFERENCE.md for full protocol documentation.
FilmKit's protocol implementation was built with the following reference materials:
The camera's native d185 profile format (625 bytes) uses different field indices and encoding from the format in RAF files. FilmKit uses a patch-based approach: copy the base profile byte-for-byte, only overwrite fields the user changed, to preserve EXIF sentinel values.
FilmKit has only been tested on the X100VI. If you have a different Fuji X-series camera and want to help expand support, you can capture USB traffic with Wireshark:
USBPcap1:\\.\USBPcap1).pcapngFilter Wireshark with usb.transfer_type == 0x02 (bulk transfers) to see only PTP traffic.
Open an issue on GitHub with:
.pcapng filesAdditional captures may be required with various property values (ex. for ranged-based value, typically preset save or profile read of min/max values are good enough, but we may face another case of HighIsoNR weirdness).
This project does not accept any pull requests.
What is welcome:
When filing a bug report, please include:
Made with ♥ by eggricesoy · @eggricesoy
8 commits
TypeScript
79.6%
HTML
20.4%
Create and manage Fujifilm camera profiles, with ease and speed. Connect your camera and you are good to go!
TypeScript
439
8 commits
updated Mar 26, 2026
Browser-based preset manager and RAW converter for Fujifilm X-series cameras for desktop and mobile.
Desktop
Android
This is author's cat. Shoutout to Fuji X Weekly for awesome presets!
Note that the app is in BETA. It's currently tested on X100VI only. It likely works with other X-series cameras that support Fujifilm's RAW conversion protocol (X-T5, X-H2, X-T30, etc.), but this has not been verified. If you have a different camera and want to help, see Supporting New Cameras below.
Just like Fujifilm X RAW STUDIO, FilmKit uses WebUSB to connect directly to your camera, your camera's own image processor handles the conversion. FilmKit is a static client-side app, hosted on Github Pages.
Browser that supports WebUSB, this includes Chromium-based browswer like Google Chrome on desktop and Android.
Appropriate udev rule required if the browser is running in Flatpak, ex:
SUBSYSTEM=="usb", ATTR{idVendor}=="04cb", MODE="0666"
FilmKit communicates PTP (Picture Transfer Protocol) over USB, the same protocol that X RAW STUDIO uses. The camera does all the heavy lifting: it receives the RAF file and conversion parameters, processes them, and returns a JPEG.
For preset management, FilmKit reads and writes individual preset properties (D18E–D1A5) using standard PTP GetDevicePropValue / SetDevicePropValue operations.
See QUICK_REFERENCE.md for full protocol documentation.
FilmKit's protocol implementation was built with the following reference materials:
The camera's native d185 profile format (625 bytes) uses different field indices and encoding from the format in RAF files. FilmKit uses a patch-based approach: copy the base profile byte-for-byte, only overwrite fields the user changed, to preserve EXIF sentinel values.
FilmKit has only been tested on the X100VI. If you have a different Fuji X-series camera and want to help expand support, you can capture USB traffic with Wireshark:
USBPcap1:\\.\USBPcap1).pcapngFilter Wireshark with usb.transfer_type == 0x02 (bulk transfers) to see only PTP traffic.
Open an issue on GitHub with:
.pcapng filesAdditional captures may be required with various property values (ex. for ranged-based value, typically preset save or profile read of min/max values are good enough, but we may face another case of HighIsoNR weirdness).
This project does not accept any pull requests.
What is welcome:
When filing a bug report, please include:
Made with ♥ by eggricesoy · @eggricesoy
8 commits
TypeScript
79.6%
HTML
20.4%