1
0
Fork
You've already forked fuji-mount
0
No description
  • Python 100%
2026年03月13日 01:18:15 +01:00
captures import current progress 2026年03月08日 13:30:14 +01:00
fuji-G-mount @95f270432b import 2026年03月08日 15:22:21 +01:00
libsigrokdecode @0f53f9f170 parse packets containing 2-n transactions 2026年03月12日 18:00:35 +01:00
photos import current progress 2026年03月08日 13:30:14 +01:00
.gitmodules import 2026年03月08日 15:22:21 +01:00
jsontrace.py run sigrok-cli automatically 2026年03月12日 23:07:37 +01:00
packets.py Only show unique request-response combos 2026年03月13日 01:18:15 +01:00
plot.py import current progress 2026年03月08日 13:30:14 +01:00
README.md run sigrok-cli automatically 2026年03月12日 23:07:37 +01:00

Fujifilm X mount

Pin out

pins are numbered left to right when looking at lens

Pin Voltage Usage
1 3.2V constant
2 0V constant
3 3.2V SPI MISO
4 3.2V SPI CLK
5 3.2V SPI MOSI
6 3.2V constant
7 3.2V pulses of variable length, seems related to focusing
8 0V ground
9 0V constant
10 5V constant

Capture settings

PulseView

24MHz 100M samples (= 4 seconds), with some trigger on the clock. After capture, manually crop down the time range so CLK is high at the beginning (otherwise everything is shifted by one bit)

CLK frequency is ~1.5MHz

SPI decoder: CPOL=1 CPHA=1

CLK often idles high

MISO idles high, but often stays low for a while after the transaction ends. This depends on the lens?? wtf. same for MOSI it seems

helpful commands

# Update submodules when pulling
git config submodule.recurse true
# But only fetch submodules when updated in our repo
git config fetch.recurseSubmodules 'on-demand'
sigrok-cli -i captures/on-expose-off-xt2-70-300mm.sr -P spi:miso=MISO:mosi=MOSI:clk=CLK,fujifilm_x_mount -A fujifilm_x_mount=transaction_miso_row:transaction_mosi_row --protocol-decoder-samplenum --protocol-decoder-ann-class
./jsontrace.py captures/idle-xs10-70-300mm.sr

Checksum

The last byte of a transaction is not just based on the previous bytes within that same transaction :(

09 00 80 1A 1001 0000
0B 00 8C 1A 1011 1100
0D 00 88 1A 1101 1000
0F 10 80 1A 1111 1 0000
09 00 8C 0A 1001 1100
0B 00 88 0A 1011 1000
0C 00 86 0A 1100 0110
0D 10 80 0A 1101 1 0000
0F 00 80 0A 1111 0000
04 02 08 02
08 00 8C 02
0A 00 88 02
0C 10 80 02
0E 00 80 02
0B 00 8C 1A 1011 1100 0001
09 00 8C 0A 1001 1100 0000
00 00 05 14
00 00 05 56
00 00 05 96 fuck
00 00 08 20
00 00 08 A2
00 00 09 24
00 00 09 A6
00 00 09 E8
00 00 0C 30
00 00 0C 72
00 00 0C B2
00 00 0F C0
00 00 05 14 [('3369452-3369964', 'transaction_mosi:'), ('3402702-3403214', 'transaction_miso:')]
00 00 05 56 [('3705987-3706499', 'transaction_mosi:'), ('3738869-3739381', 'transaction_miso:')]
00 00 05 96 [('4009992-4010504', 'transaction_mosi:'), ('4042794-4043306', 'transaction_miso:')]

request response

for each transaction from MOSI, MISO seems to respond 2-5 (but mostly 2) transactions later

Fujifilm G mount

Scott Rapson provided dumps for the Fujifilm G mount: https://github.com/Scottapotamas/fuji-G-mount/

The protocol looks very similar.