Boards

Each cat's main board and the module boards wired to it. Pick a module to see which of its pins goes to which pin of the main board.

Left cat

Left finger module, 21 keys → main board

Left finger module, 21 keys left-F21 in review

Its header J1 (PH2.54-1X10P-H25 (LCSC C42431810), 1×10 vertical 2.54 mm, bottom side) stands out of the board's bottom; the drawing shows the bottom face, ▪ marks pin 1. The board's page

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDFO1: matrix column 1 (firmware column 0), output — driven low to scan; index · outerFO2: matrix column 2 (firmware column 1), output — index · innerFO3: matrix column 3 (firmware column 2), output — middle; the left board's m0 is on column 1FO4: matrix column 4 (firmware column 3), output — ringFO5: matrix column 5 (firmware column 4), output — pinky · innerFO6: matrix column 6 (firmware column 5), output — pinky · outerFI1: matrix row 1 (firmware row 0), input, pull-up — physical bottom rowFI2: matrix row 2 (firmware row 1), input, pull-upFI3: matrix row 3 (firmware row 2), input, pull-upFI4: matrix row 4 (firmware row 3), input, pull-up — physical top rowFO1FO2FO3FO4FO5FO6FI1FI2FI3FI4

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • key matrix
Header pinSignalMain-board pinRow · positionWhat it carries
J1·1 FO1GPIO1 pin 26 J3·4matrix column 1 (firmware column 0), output — driven low to scan; index · outer
J1·2 FO2GPIO2 pin 27 J3·5matrix column 2 (firmware column 1), output — index · inner
J1·3 FO3GPIO42 pin 28 J3·6matrix column 3 (firmware column 2), output — middle; the left board's m0 is on column 1
J1·4 FO4GPIO41 pin 29 J3·7matrix column 4 (firmware column 3), output — ring
J1·5 FO5GPIO40 pin 30 J3·8matrix column 5 (firmware column 4), output — pinky · inner
J1·6 FO6GPIO39 pin 31 J3·9matrix column 6 (firmware column 5), output — pinky · outer
J1·7 FI1GPIO38 pin 32 J3·10matrix row 1 (firmware row 0), input, pull-up — physical bottom row
J1·8 FI2GPIO37 pin 33 J3·11matrix row 2 (firmware row 1), input, pull-up
J1·9 FI3GPIO36 pin 34 J3·12matrix row 3 (firmware row 2), input, pull-up
J1·10 FI4GPIO35 pin 35 J3·13matrix row 4 (firmware row 3), input, pull-up — physical top row

Left thumb module, 11 keys → main board

Left thumb module, 11 keys left-T11 qualified

Its header J1 (PH2.54-1X10P-H25 (LCSC C42431810), 1×10 vertical 2.54 mm, bottom side) stands out of the board's bottom; the drawing shows the bottom face, ▪ marks pin 1. The board's page

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (GND, 3V3) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDGND: ground — LED return, encoder common, sensor ground3V3: 3.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)LED_DATA: LED data, output — WS2812-protocol data to LED1 DIN (RMT channel 0)TO1: matrix column 1 (firmware column 0), output — arc positions 1–2: PCB columns a, bTO2: matrix column 2 (firmware column 1), output — arc position 3: PCB column c, with the center keyTO3: matrix column 3 (firmware column 2), output — arc positions 4–5: PCB columns d, eTI1: matrix row 1 (firmware row 0), input, pull-up — physical bottom rowTI2: matrix row 2 (firmware row 1), input, pull-up; `tk` only — the joystick thumb (tkj) has no keys on rows 2 and 4: its stick's axes take their pinsTI3: matrix row 3 (firmware row 2), input, pull-upTI4: matrix row 4 (firmware row 3), input, pull-up; `tk` only — physical top rowGND3V3LED_DATATO1TO2TO3TI1TI2TI3TI4

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • ground
  • supply
  • LED data
  • key matrix
Header pinSignalMain-board pinRow · positionWhat it carries
J1·1 GNDGND pin 44 proposalJ3·22ground — LED return, encoder common, sensor ground
J1·2 3V33V3 pin 1 proposalJ1·13.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)
J1·3 LED_DATAGPIO17 pin 10 J1·10LED data, output — WS2812-protocol data to LED1 DIN (RMT channel 0)
J1·4 TO1GPIO18 pin 11 J1·11matrix column 1 (firmware column 0), output — arc positions 1–2: PCB columns a, b
J1·5 TO2GPIO8 pin 12 J1·12matrix column 2 (firmware column 1), output — arc position 3: PCB column c, with the center key
J1·6 TO3GPIO3 pin 13 J1·13matrix column 3 (firmware column 2), output — arc positions 4–5: PCB columns d, e
J1·7 TI1GPIO4 pin 4 J1·4matrix row 1 (firmware row 0), input, pull-up — physical bottom row
J1·8 TI2GPIO5 pin 5 J1·5matrix row 2 (firmware row 1), input, pull-up; `tk` only — the joystick thumb (tkj) has no keys on rows 2 and 4: its stick's axes take their pins
J1·9 TI3GPIO6 pin 6 J1·6matrix row 3 (firmware row 2), input, pull-up
J1·10 TI4GPIO7 pin 7 J1·7matrix row 4 (firmware row 3), input, pull-up; `tk` only — physical top row

Bottom module, gyro → main board

Bottom module, gyro BG planned

A purchased MPU-6050 breakout, GY-521, wired lead by lead. Its pins are drawn in its own row, from pin 1 (▪), each with the name printed beside it, 2.54 mm apart. The row is read from Fritzing's GY-521 part (fritzing-parts, core/InvenSense_MPU6050.fzp; the board gyro_ref.py draws): one row, pin 1 VCC, the order of the board's silkscreen. XDA and XCL (the MPU-6050's auxiliary I2C) and AD0 stay open.

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (3V3, GND) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDMPU-6050 breakout, GY-521VCCGNDSCLSDAXDAXCLAD0INT3V3: 3.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)GND: ground — LED return, encoder common, sensor groundSCL: sensor I2C SCL, output; `bg` only — I2C0 clock, open drain; the breakout's own pull-ups hold it highSDA: sensor I2C SDA, bidirectional; `bg` only — I2C0 data, open drain; the breakout's own pull-ups hold it highMOTION: sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active low

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • I2C
  • interrupt
  • supply
  • ground
LeadSignalMain-board pinRow · positionWhat it carries
SDA pin 4, “SDA”SDAGPIO11 pin 17 J1·17sensor I2C SDA, bidirectional; `bg` only — I2C0 data, open drain; the breakout's own pull-ups hold it high
SCL pin 3, “SCL”SCLGPIO12 pin 18 J1·18sensor I2C SCL, output; `bg` only — I2C0 clock, open drain; the breakout's own pull-ups hold it high
INT pin 8, “INT”MOTIONGPIO9 pin 15 J1·15sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active low
VCC pin 1, “VCC”3V33V3 pin 2 proposalJ1·23.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)
GND pin 2, “GND”GNDGND pin 22 proposalJ1·22ground — LED return, encoder common, sensor ground

Battery → main board

The LiPo battery 952540, 3.7 V 1000 mAh plugs its own lead, ending in a 2-pin JST 1.25 mm, into the main board's socket CN1, a 2-pin MX 1.25 mm on the board's top side. Its + conductor runs through the SPDT slide switch SS-12F15-G4 on the way.

Measure the plug before connecting it. Its polarity is not verified (which plug contact is +: MakerFocus does not publish it; measure before plugging in). The socket's + is contact 1.

  • The lead is not measured yet: its kind and length are unknown.
  • Switch: LCSC rates it 300 mA at 5 V, below the Leaf-S3's 500 mA charge current: check the datasheet's carry rating, or choose a switch rated for it.
antenna endUSB-C endJ1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDCN1+ lead, red+ lead, red− lead, black+−power switch1 throw2 common3 throwbattery+−

The socket's contacts and position are from Banana Pi's schematic (contacts) and dimension drawing (position), measured off the drawing, ±0.3 mm; the switch's pins are 4.7 mm apart (the pin pitch measured by Stas (2026-09-29); body 19.5 × 5.6 mm (LCSC C698212)). The rest is placed schematically; ▪ marks pin 1 and contact 1.

LeadConductorFromTo
+ (positive)redBattery +Switch pin 2 (common)
+ (positive)redSwitch pin 1 (throw)CN1 contact 1
− (negative)blackBattery −CN1 contact 2

LiPo battery 952540, 3.7 V 1000 mAh. One 3.7 V 1000 mAh (3.7 Wh) cell with its own protection board and a 2-pin JST 1.25 mm plug, which fits the main board's MX 1.25 mm socket, + on its pin 1 (electronics/wiring-harness.toml [main_board.battery]). Its size is the Blender model's (mechanical/associations.toml). The BPI-Leaf-S3 charges at 500 mA (Banana Pi's wiki), exactly the cell's 0.5C maximum charge current (MakerFocus's page); any replacement cell needs 1000 mAh or more for the same margin. Sold in packs of four.

SPDT slide switch SS-12F15-G4. Three solder pins, the middle one common; the + lead uses the common and one outer pin, the other stays open. Body 19.5 × 5.6 mm (LCSC), panel ears with Ø2.5 mm holes 15 mm apart (BC Robotics), held by the lid's Lid-Switch-Holder. Off, it also cuts the charger: the Leaf-S3 charges the cell through the same socket, so the battery charges only while the switch is on.

Schematic of the left cat

The whole hand in one KiCad schematic: the main board, each module's header or sensor breakout, and the battery through its switch to CN1. Opens full size in a new tab.

Schematic of the left cat

Right finger module, 20 keys + scroll wheel → main board

Right finger module, 20 keys + scroll wheel right-F20W in review

Its header J1 (KH-2.54PH180-1X13P-L11.5 (LCSC C2932703), 1×13 vertical 2.54 mm, bottom side) stands out of the board's bottom; the drawing shows the bottom face, ▪ marks pin 1. The board's page

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (GND) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDGND: ground — LED return, encoder common, sensor groundWA: scroll encoder channel A, input, pull-up — EVQWGD001; fkw onlyWB: scroll encoder channel B, input, pull-up — EVQWGD001; fkw onlyFO1: matrix column 1 (firmware column 0), output — driven low to scan; index · outerFO2: matrix column 2 (firmware column 1), output — index · innerFO3: matrix column 3 (firmware column 2), output — middle; the left board's m0 is on column 1FO4: matrix column 4 (firmware column 3), output — ringFO5: matrix column 5 (firmware column 4), output — pinky · innerFO6: matrix column 6 (firmware column 5), output — pinky · outerFI1: matrix row 1 (firmware row 0), input, pull-up — physical bottom rowFI2: matrix row 2 (firmware row 1), input, pull-upFI3: matrix row 3 (firmware row 2), input, pull-upFI4: matrix row 4 (firmware row 3), input, pull-up — physical top rowGNDWAWBFO1FO2FO3FO4FO5FO6FI1FI2FI3FI4

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • ground
  • scroll encoder
  • key matrix
Header pinSignalMain-board pinRow · positionWhat it carries
J1·1 GNDGND pin 23 proposalJ3·1ground — LED return, encoder common, sensor ground
J1·2 WAGPIO43 pin 24 J3·2scroll encoder channel A, input, pull-up — EVQWGD001; fkw only
J1·3 WBGPIO44 pin 25 J3·3scroll encoder channel B, input, pull-up — EVQWGD001; fkw only
J1·4 FO1GPIO1 pin 26 J3·4matrix column 1 (firmware column 0), output — driven low to scan; index · outer
J1·5 FO2GPIO2 pin 27 J3·5matrix column 2 (firmware column 1), output — index · inner
J1·6 FO3GPIO42 pin 28 J3·6matrix column 3 (firmware column 2), output — middle; the left board's m0 is on column 1
J1·7 FO4GPIO41 pin 29 J3·7matrix column 4 (firmware column 3), output — ring
J1·8 FO5GPIO40 pin 30 J3·8matrix column 5 (firmware column 4), output — pinky · inner
J1·9 FO6GPIO39 pin 31 J3·9matrix column 6 (firmware column 5), output — pinky · outer
J1·10 FI1GPIO38 pin 32 J3·10matrix row 1 (firmware row 0), input, pull-up — physical bottom row
J1·11 FI2GPIO37 pin 33 J3·11matrix row 2 (firmware row 1), input, pull-up
J1·12 FI3GPIO36 pin 34 J3·12matrix row 3 (firmware row 2), input, pull-up
J1·13 FI4GPIO35 pin 35 J3·13matrix row 4 (firmware row 3), input, pull-up — physical top row

Right thumb module, 11 keys → main board

Right thumb module, 11 keys right-T11 qualified

Its header J1 (A2541WV-10P (LCSC C225485), 1×10 vertical 2.54 mm, bottom side) stands out of the board's bottom; the drawing shows the bottom face, ▪ marks pin 1. The board's page

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (3V3, GND) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDTI4: matrix row 4 (firmware row 3), input, pull-up; `tk` only — physical top rowTI3: matrix row 3 (firmware row 2), input, pull-upTI2: matrix row 2 (firmware row 1), input, pull-up; `tk` only — the joystick thumb (tkj) has no keys on rows 2 and 4: its stick's axes take their pinsTI1: matrix row 1 (firmware row 0), input, pull-up — physical bottom rowTO3: matrix column 3 (firmware column 2), output — arc positions 4–5: PCB columns d, eTO2: matrix column 2 (firmware column 1), output — arc position 3: PCB column c, with the center keyTO1: matrix column 1 (firmware column 0), output — arc positions 1–2: PCB columns a, bLED_DATA: LED data, output — WS2812-protocol data to LED1 DIN (RMT channel 0)3V3: 3.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)GND: ground — LED return, encoder common, sensor groundTI4TI3TI2TI1TO3TO2TO1LED_DATA3V3GND

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • key matrix
  • LED data
  • supply
  • ground
Header pinSignalMain-board pinRow · positionWhat it carries
J1·1 TI4GPIO7 pin 7 J1·7matrix row 4 (firmware row 3), input, pull-up; `tk` only — physical top row
J1·2 TI3GPIO6 pin 6 J1·6matrix row 3 (firmware row 2), input, pull-up
J1·3 TI2GPIO5 pin 5 J1·5matrix row 2 (firmware row 1), input, pull-up; `tk` only — the joystick thumb (tkj) has no keys on rows 2 and 4: its stick's axes take their pins
J1·4 TI1GPIO4 pin 4 J1·4matrix row 1 (firmware row 0), input, pull-up — physical bottom row
J1·5 TO3GPIO3 pin 13 J1·13matrix column 3 (firmware column 2), output — arc positions 4–5: PCB columns d, e
J1·6 TO2GPIO8 pin 12 J1·12matrix column 2 (firmware column 1), output — arc position 3: PCB column c, with the center key
J1·7 TO1GPIO18 pin 11 J1·11matrix column 1 (firmware column 0), output — arc positions 1–2: PCB columns a, b
J1·8 LED_DATAGPIO17 pin 10 J1·10LED data, output — WS2812-protocol data to LED1 DIN (RMT channel 0)
J1·9 3V33V3 pin 1 proposalJ1·13.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)
J1·10 GNDGND pin 44 proposalJ3·22ground — LED return, encoder common, sensor ground

Bottom module, mouse sensor PMW3389 → main board

Bottom module, mouse sensor PMW3389 BM-PMW3389 qualified

A purchased PMW3389 motion sensor breakout, wired lead by lead. Its pins are drawn in its own row, from pin 1 (▪), each with the name printed beside it. The row is read from the sellers' product photos on Tindie: one row, pin 1 the square pad at VIN (citizenjoe/pmw3389-motion-sensor); the original JACK Enterprises board has the same order, labelled VI, MI, MO, SC, SS, MT, GD, RS (jkicklighter/pmw3389-motion-sensor). The pitch is not stated.

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (3V3, GND) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDPMW3389 motion sensor breakoutVIN VDDIOMISOMOSISCK SCLKSS NCSMT MOTIONGNDRST NRESET3V3: 3.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)MISO: sensor SPI MISO, input; `bm-pmw3389` only — SPI2 data inMOSI: sensor SPI MOSI, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 data out; the PMW3610's one half-duplex data line (SDIO) is this pin, then also an inputSCLK: sensor SPI SCLK, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 clock, idle highNCS: sensor SPI NCS, output; `bm-pmw3389`, `bm-pmw3610` only — chip select, driven by software, idle highMOTION: sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active lowGND: ground — LED return, encoder common, sensor groundNRESET: sensor reset, output; `bm-pmw3389` only — active low, idle high; a boot strap (Strapping pins)

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • SPI
  • interrupt
  • reset
  • supply
  • ground
LeadSignalMain-board pinRow · positionWhat it carries
SCLK pin 4, “SCK”SCLKGPIO12 pin 18 J1·18sensor SPI SCLK, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 clock, idle high
MOSI pin 3, “MOSI”MOSIGPIO11 pin 17 J1·17sensor SPI MOSI, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 data out; the PMW3610's one half-duplex data line (SDIO) is this pin, then also an input
MISO pin 2, “MISO”MISOGPIO13 pin 19 J1·19sensor SPI MISO, input; `bm-pmw3389` only — SPI2 data in
NCS pin 5, “SS”NCSGPIO10 pin 16 J1·16sensor SPI NCS, output; `bm-pmw3389`, `bm-pmw3610` only — chip select, driven by software, idle high
MOTION pin 6, “MT”MOTIONGPIO9 pin 15 J1·15sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active low
NRESET pin 8, “RST”NRESETGPIO46 pin 14 J1·14sensor reset, output; `bm-pmw3389` only — active low, idle high; a boot strap (Strapping pins)

⚠ Boot strap: with a PMW3389 fitted, the BOOT-button download may fail; disconnect the sensor's NRESET lead for the download. not bench-verified

VDDIO pin 1, “VIN”3V33V3 pin 2 proposalJ1·23.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)
GND pin 7, “GND”GNDGND pin 22 proposalJ1·22ground — LED return, encoder common, sensor ground

Battery → main board

The LiPo battery 952540, 3.7 V 1000 mAh plugs its own lead, ending in a 2-pin JST 1.25 mm, into the main board's socket CN1, a 2-pin MX 1.25 mm on the board's top side. Its + conductor runs through the SPDT slide switch SS-12F15-G4 on the way.

Measure the plug before connecting it. Its polarity is not verified (which plug contact is +: MakerFocus does not publish it; measure before plugging in). The socket's + is contact 1.

  • The lead is not measured yet: its kind and length are unknown.
  • Switch: LCSC rates it 300 mA at 5 V, below the Leaf-S3's 500 mA charge current: check the datasheet's carry rating, or choose a switch rated for it.
antenna endUSB-C endJ1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDCN1+ lead, red+ lead, red− lead, black+−power switch1 throw2 common3 throwbattery+−

The socket's contacts and position are from Banana Pi's schematic (contacts) and dimension drawing (position), measured off the drawing, ±0.3 mm; the switch's pins are 4.7 mm apart (the pin pitch measured by Stas (2026-09-29); body 19.5 × 5.6 mm (LCSC C698212)). The rest is placed schematically; ▪ marks pin 1 and contact 1.

LeadConductorFromTo
+ (positive)redBattery +Switch pin 2 (common)
+ (positive)redSwitch pin 1 (throw)CN1 contact 1
− (negative)blackBattery −CN1 contact 2

LiPo battery 952540, 3.7 V 1000 mAh. One 3.7 V 1000 mAh (3.7 Wh) cell with its own protection board and a 2-pin JST 1.25 mm plug, which fits the main board's MX 1.25 mm socket, + on its pin 1 (electronics/wiring-harness.toml [main_board.battery]). Its size is the Blender model's (mechanical/associations.toml). The BPI-Leaf-S3 charges at 500 mA (Banana Pi's wiki), exactly the cell's 0.5C maximum charge current (MakerFocus's page); any replacement cell needs 1000 mAh or more for the same margin. Sold in packs of four.

SPDT slide switch SS-12F15-G4. Three solder pins, the middle one common; the + lead uses the common and one outer pin, the other stays open. Body 19.5 × 5.6 mm (LCSC), panel ears with Ø2.5 mm holes 15 mm apart (BC Robotics), held by the lid's Lid-Switch-Holder. Off, it also cuts the charger: the Leaf-S3 charges the cell through the same socket, so the battery charges only while the switch is on.

Schematic of the right cat

The whole hand in one KiCad schematic: the main board, each module's header or sensor breakout, and the battery through its switch to CN1. Opens full size in a new tab.

Schematic of the right cat

Breakouts

A sensor breakout, purchased or a board of LYNX's own, is wired lead by lead, the same on either hand, whether the reference build fits it or not.

Bottom module, gyro → main board

  • The sensor of the gyro bottom module: the hand as an air mouse.
  • The reference build fits it: Left cat, bottom.
  • Still open: run the driver on a fitted gyro (variant BG); caliper a real board against the drawn one.

Bottom module, gyro BG planned

A purchased MPU-6050 breakout, GY-521, wired lead by lead. Its pins are drawn in its own row, from pin 1 (▪), each with the name printed beside it, 2.54 mm apart. The row is read from Fritzing's GY-521 part (fritzing-parts, core/InvenSense_MPU6050.fzp; the board gyro_ref.py draws): one row, pin 1 VCC, the order of the board's silkscreen. XDA and XCL (the MPU-6050's auxiliary I2C) and AD0 stay open.

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (3V3, GND) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDMPU-6050 breakout, GY-521VCCGNDSCLSDAXDAXCLAD0INT3V3: 3.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)GND: ground — LED return, encoder common, sensor groundSCL: sensor I2C SCL, output; `bg` only — I2C0 clock, open drain; the breakout's own pull-ups hold it highSDA: sensor I2C SDA, bidirectional; `bg` only — I2C0 data, open drain; the breakout's own pull-ups hold it highMOTION: sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active low

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • I2C
  • interrupt
  • supply
  • ground
LeadSignalMain-board pinRow · positionWhat it carries
SDA pin 4, “SDA”SDAGPIO11 pin 17 J1·17sensor I2C SDA, bidirectional; `bg` only — I2C0 data, open drain; the breakout's own pull-ups hold it high
SCL pin 3, “SCL”SCLGPIO12 pin 18 J1·18sensor I2C SCL, output; `bg` only — I2C0 clock, open drain; the breakout's own pull-ups hold it high
INT pin 8, “INT”MOTIONGPIO9 pin 15 J1·15sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active low
VCC pin 1, “VCC”3V33V3 pin 2 proposalJ1·23.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)
GND pin 2, “GND”GNDGND pin 22 proposalJ1·22ground — LED return, encoder common, sensor ground

Bottom module, mouse sensor ADNS-5050 → main board

  • The bottom module BM-ADNS5050: LYNX's own board with the ADNS-5050 sensor and its LED; runs from USB's 5 V only.
  • The reference build fits it on no hand.
  • Still open: the ADNS-5050 itself is discontinued: a source for the sensor.

Bottom module, mouse sensor ADNS-5050 BM-ADNS5050 in review

The ADNS-5050 mouse module (v3), a board of LYNX's own, wired lead by lead. Its pins are drawn in its own row, from pin 1 (▪), each with the name printed beside it, 2.54 mm apart. The row is read from the v3 board (EasyEDA PCB_PCB_adns5050, 2026-10-16), header H1: pin 1 the square pad, its nets and the silkscreen beside each pin; electronics/boards/bottom-module-mouse-sensor-adns5050 draws it 1:1, the header as J1. The board's page

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (5V, GND) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDADNS-5050 mouse module (v3)GNDV VDD5sclk SCLKsdio SDIOn NRESETnsc NCSGND: ground — LED return, encoder common, sensor ground5V: 5 V rail; `bm-adns5050` only — the main board's USB VBUS: live only while USB is plugged in, never from the battery; supply of the ADNS-5050 module alone, so its hand has no battery (build.toml [[rule]] battery-not-with-usb-only-sensor)sclk: sensor SPI SCLK, output; `bm-adns5050` only — SPI2 clock, idle high; v3's pin, main-board pin 20. The main board's battery divider (470 kΩ / 470 kΩ) hangs on it: the module never has a batterysdio: sensor SPI MOSI, bidirectional; `bm-adns5050` only — the one half-duplex data line (SDIO), SPI2 SIO0; v3's pin, main-board pin 19n: sensor reset, output; `bm-adns5050` only — NRESET, active low, idle high; v3's pin, main-board pin 18nsc: sensor SPI NCS, output; `bm-adns5050` only — NCS, driven by software, idle high; v3's pin, main-board pin 17

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • SPI
  • reset
  • supply
  • ground
LeadSignalMain-board pinRow · positionWhat it carries
SCLK pin 3, “sclk”sclkGPIO14 pin 20 J1·20sensor SPI SCLK, output; `bm-adns5050` only — SPI2 clock, idle high; v3's pin, main-board pin 20. The main board's battery divider (470 kΩ / 470 kΩ) hangs on it: the module never has a battery
SDIO pin 4, “sdio”sdioGPIO13 pin 19 J1·19sensor SPI MOSI, bidirectional; `bm-adns5050` only — the one half-duplex data line (SDIO), SPI2 SIO0; v3's pin, main-board pin 19
NCS pin 6, “nsc”nscGPIO11 pin 17 J1·17sensor SPI NCS, output; `bm-adns5050` only — NCS, driven by software, idle high; v3's pin, main-board pin 17
NRESET pin 5, “n”nGPIO12 pin 18 J1·18sensor reset, output; `bm-adns5050` only — NRESET, active low, idle high; v3's pin, main-board pin 18
VDD5 pin 2, “V”5V5V pin 21 proposalJ1·215 V rail; `bm-adns5050` only — the main board's USB VBUS: live only while USB is plugged in, never from the battery; supply of the ADNS-5050 module alone, so its hand has no battery (build.toml [[rule]] battery-not-with-usb-only-sensor)
GND pin 1, “GND”GNDGND pin 22 proposalJ1·22ground — LED return, encoder common, sensor ground

Bottom module, mouse sensor PMW3389 → main board

  • The sensor of the bottom module BM-PMW3389, with its lens; runs from the 3.3 V rail.
  • The reference build fits it: Right cat, bottom.
  • Still open: Sold out on Tindie since 2026-08-27 (seen 2026-09-27); the listing points to the seller's Lectronz shop.

Bottom module, mouse sensor PMW3389 BM-PMW3389 qualified

A purchased PMW3389 motion sensor breakout, wired lead by lead. Its pins are drawn in its own row, from pin 1 (▪), each with the name printed beside it. The row is read from the sellers' product photos on Tindie: one row, pin 1 the square pad at VIN (citizenjoe/pmw3389-motion-sensor); the original JACK Enterprises board has the same order, labelled VI, MI, MO, SC, SS, MT, GD, RS (jkicklighter/pmw3389-motion-sensor). The pitch is not stated.

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (3V3, GND) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDPMW3389 motion sensor breakoutVIN VDDIOMISOMOSISCK SCLKSS NCSMT MOTIONGNDRST NRESET3V3: 3.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)MISO: sensor SPI MISO, input; `bm-pmw3389` only — SPI2 data inMOSI: sensor SPI MOSI, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 data out; the PMW3610's one half-duplex data line (SDIO) is this pin, then also an inputSCLK: sensor SPI SCLK, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 clock, idle highNCS: sensor SPI NCS, output; `bm-pmw3389`, `bm-pmw3610` only — chip select, driven by software, idle highMOTION: sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active lowGND: ground — LED return, encoder common, sensor groundNRESET: sensor reset, output; `bm-pmw3389` only — active low, idle high; a boot strap (Strapping pins)

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • SPI
  • interrupt
  • reset
  • supply
  • ground
LeadSignalMain-board pinRow · positionWhat it carries
SCLK pin 4, “SCK”SCLKGPIO12 pin 18 J1·18sensor SPI SCLK, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 clock, idle high
MOSI pin 3, “MOSI”MOSIGPIO11 pin 17 J1·17sensor SPI MOSI, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 data out; the PMW3610's one half-duplex data line (SDIO) is this pin, then also an input
MISO pin 2, “MISO”MISOGPIO13 pin 19 J1·19sensor SPI MISO, input; `bm-pmw3389` only — SPI2 data in
NCS pin 5, “SS”NCSGPIO10 pin 16 J1·16sensor SPI NCS, output; `bm-pmw3389`, `bm-pmw3610` only — chip select, driven by software, idle high
MOTION pin 6, “MT”MOTIONGPIO9 pin 15 J1·15sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active low
NRESET pin 8, “RST”NRESETGPIO46 pin 14 J1·14sensor reset, output; `bm-pmw3389` only — active low, idle high; a boot strap (Strapping pins)

⚠ Boot strap: with a PMW3389 fitted, the BOOT-button download may fail; disconnect the sensor's NRESET lead for the download. not bench-verified

VDDIO pin 1, “VIN”3V33V3 pin 2 proposalJ1·23.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)
GND pin 7, “GND”GNDGND pin 22 proposalJ1·22ground — LED return, encoder common, sensor ground

Bottom module, mouse sensor PMW3610 → main board

  • The sensor of the bottom module BM-PMW3610 (planned); needs no SROM.
  • The reference build fits it on no hand.
  • Still open: bench test: which revision randware ships, lens height. Its breakout (23.5 x 31.5 mm) fits no pocket of the mouse lid: it needs a smaller breakout or a lid of its own (mechanical/dimensions.json bottom_module open).

Bottom module, mouse sensor PMW3610 BM-PMW3610 planned

A purchased PMW3610 breakout board, wired lead by lead. Its pins are drawn in its own row, from pin 1 (▪), each with the name printed beside it, 2.54 mm apart. The row is read from siderakb's pmw3610-pcb rev 2.1 (github.com/siderakb/pmw3610-pcb, J1 1×7): the design randware builds, its shipped revision unconfirmed. RST (the sensor's NRESET) stays open: the driver does not wire it.

  • The cable is not measured yet: its kind, length and where each end is soldered are unknown.
  • The main-board pins of the rails (3V3, GND) are lynx-v4's proposal: no cat has been wired this way yet.
antenna endUSB-C endBPI-Leaf-S3 (ESP32-S3)J1J33V33V3RSTGPIO4GPIO5GPIO6GPIO7GPIO15GPIO16GPIO17GPIO18GPIO8GPIO3GPIO46GPIO9GPIO10GPIO11GPIO12GPIO13GPIO145VGNDGNDGPIO43GPIO44GPIO1GPIO2GPIO42GPIO41GPIO40GPIO39GPIO38GPIO37GPIO36GPIO35GPIO0GPIO45GPIO48GPIO47GPIO21GPIO20GPIO19GNDGNDPMW3610 breakout boardVIN VDDGNDSDIOSCLKCS NCSMOTRST3V3: 3.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)GND: ground — LED return, encoder common, sensor groundMOSI: sensor SPI MOSI, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 data out; the PMW3610's one half-duplex data line (SDIO) is this pin, then also an inputSCLK: sensor SPI SCLK, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 clock, idle highNCS: sensor SPI NCS, output; `bm-pmw3389`, `bm-pmw3610` only — chip select, driven by software, idle highMOTION: sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active low

The main board's pins are measured off Banana Pi's dimension drawing (bpi_leaf_s3_board_board_dimension.jpg), which dimensions none of them; not yet measured on a board, ±0.1 mm.

  • SPI
  • interrupt
  • supply
  • ground
LeadSignalMain-board pinRow · positionWhat it carries
SCLK pin 4, “SCLK”SCLKGPIO12 pin 18 J1·18sensor SPI SCLK, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 clock, idle high
SDIO pin 3, “SDIO”MOSIGPIO11 pin 17 J1·17sensor SPI MOSI, output; `bm-pmw3389`, `bm-pmw3610` only — SPI2 data out; the PMW3610's one half-duplex data line (SDIO) is this pin, then also an input
NCS pin 5, “CS”NCSGPIO10 pin 16 J1·16sensor SPI NCS, output; `bm-pmw3389`, `bm-pmw3610` only — chip select, driven by software, idle high
MOT pin 6, “MOT”MOTIONGPIO9 pin 15 J1·15sensor interrupt, input, pull-up — active low: motion or data to read; wakes the sensor task. The gyro's INT, which its driver sets active low
VDD pin 1, “VIN”3V33V3 pin 2 proposalJ1·23.3 V rail — supply of the thumbs' LEDs, the joystick thumb's stick and the bottom slot's sensor breakout (no GPIO can source it)
GND pin 2, “GND”GNDGND pin 22 proposalJ1·22ground — LED return, encoder common, sensor ground