Connectors
The three Attaky connectors and the full pinout of every BTB, FPC, and 7-pin position.
This is the technician reference for the Attaky connector standard: the three connector types and the complete pinout of every position. For the high-level picture of how modules join, start with the Overview; for which combinations are valid, see the Compatibility Matrix.

The three connectors
| Connector | Where (on the Core) | Pins | Host side | Module side |
|---|---|---|---|---|
| Board-to-board (BTB) | Back | 50 | F-BTB | M-BTB |
| Flat-flex (FPC) | Left, right, bottom | 12 | C-FPC | M-FPC |
| Power (SH1.0) | Bottom | 7 | C-PIN | M-PIN |
These are standard connector types — a board-to-board (BTB) on the back, a 12-pin flat-flex (FPC), and a 7-pin SH1.0 power connector — and the docs refer to them this way throughout. The per-position tables below give exactly what each one carries.
Position numbering
Every position has a host-side label and a module-side label. The prefixes differ on purpose
so the two are never confused: the host (Core) side uses F-BTB / C-FPC / C-PIN, and the
module side uses M-BTB / M-FPC / M-PIN.
Host-side and module-side numbers are not 1:1 — the connectors mate with a fixed
crossover, so a given host position lands on a different module position. For the 50-pin BTB
the mapping is F-BTB(n) ↔ M-BTB(76 − n) for positions 26–50 and F-BTB(n) ↔ M-BTB(26 − n)
for positions 1–25 (so F-BTB29 ↔ M-BTB47, F-BTB50 ↔ M-BTB26). Every table below is the
host-side view. Each module's own datasheet gives its module-side
numbering.
Board-to-board (BTB) — 50-pin
The back connector. Of its 50 positions, 34 are signal — 22 straight from the MCU and 12 from the Core's two on-board GPIO expanders — and the other 16 are supply rails, ground, and a few unused positions.
The BTB is the most delicate connector — swap carefully
The board-to-board connector has a limited mating-cycle rating, so it's not built for frequent swaps. Change modules only when you need to, always with the device powered off, and ease modules on and off gently and squarely — never force them on or off. Forcing a module is the quickest way to damage a BTB.
Power and ground
| Signal | Positions |
|---|---|
| GND | F-BTB14, F-BTB15, F-BTB26 |
| +3V3 | F-BTB16, F-BTB17 |
| VBAT 4.2 V | F-BTB18, F-BTB19 |
| 5 V system | F-BTB20, F-BTB21 |
| VBAT boost 5 V | F-BTB22, F-BTB23 |
| USB 5 V | F-BTB24, F-BTB25 |
| Not connected | F-BTB12, F-BTB13, F-BTB27 |
Signal pins
| Position | Source | Function |
|---|---|---|
F-BTB1 | Expander 0x58 P10 | GPIO (spare) |
F-BTB2 | Expander 0x58 P11 | GPIO (spare) |
F-BTB3 | Expander 0x58 P12 | GPIO (spare) |
F-BTB4 | Expander 0x58 P13 | GPIO (spare) |
F-BTB5 | Expander 0x58 P00 | GPIO (spare) |
F-BTB6 | Expander 0x58 P01 | GPIO (spare) |
F-BTB7 | Expander 0x58 P02 | Power gauge alert (ALRT#) |
F-BTB8 | Expander 0x59 P17 | GPIO (spare) |
F-BTB9 | Expander 0x59 P16 | GPIO (spare) |
F-BTB10 | Expander 0x59 P15 | GPIO (spare) |
F-BTB11 | Expander 0x59 P14 | GPIO (spare) |
F-BTB28 | Expander 0x58 P03 | GPIO (spare) |
F-BTB29 | IO1 | I²C SCL (main bus) |
F-BTB30 | IO2 | I²C SDA (main bus) |
F-BTB31 | IO42 | I²C SDA (secondary bus) |
F-BTB32 | IO41 | I²C SCL (secondary bus) |
F-BTB33 | IO40 | GPIO (spare) |
F-BTB34 | IO39 | SPI SCK / I²S clock |
F-BTB35 | IO48 | GPIO (spare) |
F-BTB36 | IO47 | GPIO (spare) |
F-BTB37 | IO21 | I²S / radio interrupt |
F-BTB38 | IO9 | I²S WS / reset |
F-BTB39 | IO46 | GPIO |
F-BTB40 | IO3 | GPIO (spare) |
F-BTB41 | IO20 | GPIO (spare) |
F-BTB42 | IO19 | GPIO (spare) |
F-BTB43 | IO8 | SPI CS |
F-BTB44 | IO18 | UART TX / I²S |
F-BTB45 | IO17 | UART RX / I²S BCK |
F-BTB46 | IO16 | I²S DIN |
F-BTB47 | IO15 | GPIO (spare) |
F-BTB48 | IO7 | SPI MISO |
F-BTB49 | IO6 | SPI MOSI |
F-BTB50 | IO5 | SPI SCK |
Signal lines are shared across Expands
Several signal pins are multiplexed — the same line is SPI for one Expand, an SD interface for
another, and an I²S bus for a third. That's why exactly one Expand runs in a build. The
per-line breakdown is on each Expand's datasheet, and the rule is in the
Compatibility Matrix. IO41 / IO42 are a second I²C
bus, separate from the main one on IO1 / IO2.
Flat-flex (FPC) — 12-pin
The Core exposes three FPC taps — left, right, and bottom — all the same 12-line bus, so a Control module attaches to whichever is convenient. Control modules pass the bus straight through (an UP and a DOWN connector), so one chains below another — a keyboard and a gamepad can be used together this way.
| Position | Source | Function |
|---|---|---|
C-FPC1 | — | 5 V system |
C-FPC2 | — | +3V3 |
C-FPC3 | IO2 | I²C SDA (main bus) |
C-FPC4 | IO1 | I²C SCL (main bus) |
C-FPC5 | Expander 0x58 P14 | Left-half interrupt (L_INT) |
C-FPC6 | Expander 0x58 P07 | Right-half interrupt (R_INT) |
C-FPC7 | — | GND |
C-FPC8 | Expander 0x58 P01 | GPIO (spare) |
C-FPC9 | Expander 0x58 P00 | GPIO (spare) |
C-FPC10 | Expander 0x59 P15 | GPIO (spare) |
C-FPC11 | Expander 0x59 P16 | GPIO (spare) |
C-FPC12 | Expander 0x59 P17 | GPIO (spare) |
The two interrupt lines (C-FPC5, C-FPC6) are shared — a keyboard and a gamepad drive the
same pair — so when one fires, the firmware scans both devices to see which it was. That's what
lets a keyboard and a gamepad be used together on the same bus; each still has its own I²C
address.
Power (SH1.0) — 7-pin
A cable channel for the Power module, on the bottom of the Core. It carries the supply rails, the shared I²C bus (so the battery gauge stays on the main bus), and the gauge's alert line. Because it's a separate connector from the BTB, a Power module can attach here while an Expand sits on the back.
| Position | Source | Function |
|---|---|---|
C-PIN1 | — | USB 5 V |
C-PIN2 | — | VBAT boost 5 V |
C-PIN3 | — | VBAT 4.2 V |
C-PIN4 | — | GND |
C-PIN5 | IO2 | I²C SDA (main bus) |
C-PIN6 | IO1 | I²C SCL (main bus) |
C-PIN7 | Expander 0x58 P02 | Power gauge alert (ALRT#) |
On Power: Standard Cell 1.0, the 7-pin connector and the back BTB are alternative routes,
never simultaneous — the gauge alert line (C-PIN7 and F-BTB7) is the same net, so only one
form is used in a given build. Check another Power module's datasheet for its supported routes.
On the module side
Each module uses the connector channel for its category, but passthrough is not a feature of every module:
- Expand module — its
M-BTBmates with the Core's backF-BTB, or with a compatible Power module's rear passthrough. Current Expand modules end the stack; they do not provide a rear connector for another Expand. - Power module — the supported connection route is listed on that module's datasheet. A
Power module may use a front
M-BTB, a 7-pinM-PIN, or both as alternatives. It can sit between the Core and an Expand only when its datasheet explicitly lists a rearF-BTBpassthrough. Power: Standard Cell 1.0 provides this passthrough; it connects by BTB or by the 7-pin cable, never both at once. - Bottom Control module — the current Keyboard and Gamepad each use an UP
M-FPCand a DOWNM-FPCpassthrough. That lets the two bottom Control modules share the bus and chain below the Core.
See also
- I²C Address Map — every address on each bus
- Frame — how the connectors are used to assemble a build
- Swap a Module — handling connectors safely
- Compatibility Matrix — which modules can share the bus