| captures | import current progress | |
| fuji-G-mount @95f270432b | import | |
| libsigrokdecode @0f53f9f170 | parse packets containing 2-n transactions | |
| photos | import current progress | |
| .gitmodules | import | |
| jsontrace.py | run sigrok-cli automatically | |
| packets.py | Only show unique request-response combos | |
| plot.py | import current progress | |
| README.md | run sigrok-cli automatically | |
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.