Skip to content
All projects
Systems / Native2026

⚠ Work in Progress — research & tooling phase, not a shipped app yet

Fuji Recipes

A macOS/iOS app, still in early research, for browsing Fujifilm film-simulation recipes and eventually writing them straight to an X100VI or other X-Trans V camera over USB — currently a protocol-research phase plus a working recipe scraper and viewer, with on-camera writes not yet proven.

FujifilmPTP ProtocolImageCaptureCoremacOSiOSCamera Control

Research phase, WIP

Status

80 (77 parsed clean)

Recipes scraped

Not yet

Camera writes proven

Fuji Recipes is a work in progress, not a shipped app yet. The goal is a native macOS/iOS tool that lets a Fujifilm shooter browse film-simulation recipes and load them directly onto an X100VI (or other X-Trans V body) over USB-C, instead of re-typing a dozen settings by hand every time they want to switch looks. So far the work has been entirely research and tooling: mapping Fujifilm's PTP vendor protocol and the exact public iOS/macOS API path to talk to it, and building a private scraper and viewer for a real recipe library to design the app's data model against. The single biggest open question — whether a camera's C1–C7 custom slots can actually be written over PTP, and how — is deliberately unanswered until it can be tested safely against a real camera, in stages, rather than guessed at.

Highlights

  • Work in progress: no SwiftUI app exists yet and no camera write has been attempted — this is a research and tooling phase, documented as such rather than presented as finished
  • Mapped Fujifilm's PTP vendor-extension protocol (vendor ID 0x0000000E) from public libgphoto2 data — identified the recipe-relevant device properties (film simulation, dynamic range, white balance tune, highlight/shadow tone, grain effect, custom setting) and their PTP property codes
  • Identified the exact App Store-safe API path before writing any app code: iOS/macOS's public ImageCaptureCore framework (ICCameraDevice.requestSendPTPCommand, ptpEventHandler) can send raw PTP commands without needing private or undocumented APIs
  • Built a working scraper that pulled Fuji X Weekly's full X-Trans V recipe index — 80 recipe pages, 77 parsed cleanly into structured JSON/CSV, 3 flagged for manual review as multi-recipe pages rather than silently mis-parsed
  • Built a local dark-mode static viewer for browsing the scraped recipe library before any native app exists, to validate the data model against real recipes first
  • Wrote a phased, safety-first test plan for the biggest unknown — discovery, then safe reads, then manually observing C1–C7 slot behavior, then reversible test writes — explicitly to avoid destructive writes to a real camera before the protocol is proven
  • Treated scraped third-party recipe content as private/personal-use only pending permission from the source, rather than assuming it's free to redistribute

Architecture & Infrastructure

01

PTP command layer over a public framework

The plan uses ImageCaptureCore's requestSendPTPCommand with hand-packed, little-endian PTP command containers (operation code, transaction ID, up to five parameters) rather than any private USB API — a deliberate constraint to keep the eventual app App Store-eligible.

02

Recipe data kept raw until a separate mapping layer

Scraped settings are stored as their original strings first (e.g. ‘Auto, +1 Red & -2 Blue’) rather than immediately converted to camera values, so an unusual or ambiguous setting isn't silently lost — numeric/PTP-property conversion is planned as its own explicit import step.

03

Safety-first camera validation plan

A five-phase test plan — safe discovery, safe reads, manual C1–C7 slot observation, reversible test writes, then slot-commit research — exists specifically so no step touches a real camera's custom slots destructively before its behavior is actually understood.

Stack

SwiftSwiftUI (planned)ImageCaptureCorePython (tooling)PTP over USB-C