Skip to main content

Hardware, Wiring & Self-Assembly

Target Hardware

This page describes the current Aiden development-board reference setup. It is intended for prototyping and development. Complete all FPC and Dupont-wire connections with the power disconnected, then recheck power and signal wiring before first power-on.

Board markings, header orientation, and connector placement can vary by module revision, so always follow the markings on the physical module.

HardwarePurposeQuantity
Luckfox Pico Zero (RV1106)Main board. Runs Aiden firmware and provides CSI, USB HID, and networking.1
Firefly HDMI TO MIPI CSI (RK628D)Four-lane HDMI-to-CSI video capture board, powered from 5 V.1
HDMI ESD protectorProtects the HDMI video-input path.1
USB-to-TTL moduleSerial-console debugging when the Pico Zero USB port is in use.1 (optional)
ASRPro 2.0 development boardVoice recognition module.1
Type-C hub (with HDMI and USB)Breaks out the target device's Type-C connection into HDMI video and USB data/power.1
USB-C-to-USB-A data cableConnects the hub's USB-A port to the Pico Zero.1
HDMI cableConnects the hub, ESD protector, and RK628D board.1
Custom 30P-to-22P FPC adapterConnects the Firefly RK628D CSI output and control signals to the Pico Zero CSI input.1
1 W / 8 Ω speakerVoice playback through the Pico Zero speaker output.1
Dupont wiresConnect the ASRPro, Pico Zero, and USB-to-TTL module. Prepare male-to-male, male-to-female, and female-to-female wires.As needed

Core Connection Topology

The target device (iPhone / PC) connects to Aiden through a USB-C hub. The hub splits the connection into HDMI output (for screen capture) and USB-C output (for data/power to the Pico Zero):

Target Device (iPhone / PC)
│ USB-C

USB-C Hub
├─ HDMI out ──→ Firefly RK628D (HDMI to CSI bridge)
│ │ four-lane CSI + I2C + reset
│ ▼
└─ USB-A out ──→ Luckfox Pico Zero (CSI input + USB)

├─ Video capture: /dev/video0 (from RK628D CSI)
├─ HID keyboard/pointer/control: /dev/hidg0, /dev/hidg1, /dev/hidg2
├─ Audio codec / ALSA
└─ Network: Wi-Fi or USB gadget network

Physical wiring summary:

  1. Target device USB-C → USB-C hub input
  2. Hub HDMI output → Firefly RK628D HDMI input
  3. Firefly RK628D 30-pin output → custom adapter → Pico Zero 22-pin CSI input
  4. Hub USB-A output → Pico Zero USB-C port (data + power)

RK628D 30-pin to Pico Zero 22-pin Adapter

Number pins from the connector markings on each board, not from the visible copper direction of a flipped FPC cable.

Firefly 30-pinSignalPico Zero 22-pinSignal
1SDA, 1.8 V21SDA
2SCL, 1.8 V20SCL
4HDMIIN_RESET17RST
11D0P3D0P
12D0N2D0N
14D1P6D1P
15D1N5D1N
17CLK_P9CLK_P
18CLK_N8CLK_N
20D2P12D2P
21D2N11D2N
23D3P15D3P
24D3N14D3N
305 V input5 V5 V
GND pinsGNDGND pinsGND

Keep every available ground return between the differential pairs; do not reduce the adapter to one shared ground wire. The Firefly board specification lists both pins 29 and 30 as the same 5 V input rail; the current adapter feeds pin 30. Pico 22-pin MCLK (pin 18) and 3.3 V (pin 22) remain unconnected.

Firefly pins 7 (HDMIIN_INT) and 8 (HDMIRX_DET) are also unconnected in the current adapter. The kernel therefore uses the RK628 driver's I2C polling path. The board has its own oscillator, so no Pico MCLK is required.

The Pico drives HDMIIN_RESET from GPIO3_C5 as an active-low push-pull output with no internal pull-up or pull-down. I2C4 runs at 100 kHz for reliable RK628D 32-bit register transfers; the same bus also retains support for TC358743.

Assembly Steps

  1. Connect the target phone or computer to the upstream Type-C port of the Type-C hub.
  2. Connect the hub HDMI output to the HDMI ESD protector, HDMI cable, and Firefly RK628D HDMI input in sequence.
  3. Use the custom 30P-to-22P adapter to connect the RK628D output to the Pico Zero CSI connector. Ensure both connector latches are closed and verify pin numbering before applying 5 V.
  4. Use the USB-C-to-USB-A data cable to connect the hub USB-A port to the Pico Zero USB-C port. This connection provides the USB data path and power between the target device and Pico Zero.
  5. Connect ASRPro power, ground, and control signals to the Pico Zero. Connect the 1 W / 8 Ω speaker directly to the Pico Zero speaker output, not to the ASRPro. Verify each connection against the board markings.
  6. If serial debugging is needed, connect the Pico Zero debug header to the USB-to-TTL module. Do not connect the TTL module's power wire to the Pico Zero unless the power design has been explicitly verified.

Pre-Power Checklist

  • HDMI, FPC, and USB cables are fully seated; the FPC cable is neither reversed nor damaged.
  • ASRPro and Pico Zero power and ground wires have been verified against the board markings; no Dupont wires short adjacent pins.
  • The speaker is connected directly to the Pico Zero speaker output, not to ASRPro.
  • The HDMI ESD protector is installed between the hub and RK628D board.
  • The RK628D adapter supplies 5 V only; Pico MCLK and 3.3 V are not connected.
  • All four MIPI lanes, the clock pair, I2C, reset, and the available ground returns are continuous end to end.
  • The USB-to-TTL module uses only signal and ground wires, with TX and RX crossed.
  • During first-time testing, confirm that the system detects the video capture device before testing USB HID and voice features.

iOS HID Prerequisites

To control an iOS device via USB HID, enable on the target iOS device:

Settings > Accessibility > Touch > AssistiveTouch

It is also recommended to enable Show Onscreen Keyboard on the AssistiveTouch page for a more stable keyboard input experience.

Default Device Nodes

CapabilityDefault node / pathDescription
Video capture/dev/video0RK628D or TC358743 bridge output to the V4L2 capture device
HDMI subdevAuto-detected rk628-csi or tc358743 nodeEDID / DV timings / HDMI sync; the exact /dev/v4l-subdevX index can vary
Keyboard HID/dev/hidg0Default keyboard device for Go Agent and example tools
Mouse/touch HID/dev/hidg1Go Agent uses the same HID device for mouse/touch input
Auxiliary control HID/dev/hidg2Android extension keys in touchscreen mode; Consumer Control media, volume, brightness, and screenshot keys in absolute mode
Frame socket/run/frame_service/frame_service.sockDefault path for system service deployment
Audio socket/run/audio_service/audio_service.sockDefault path for system service deployment

When running the binary directly during development, the default frame socket is /tmp/frame_service.sock; after deployment with the firmware startup script, it defaults to /run/frame_service/frame_service.sock.