Skip to the content
PCBKitNew board
4 layers86 × 56 mmRv1106, the printed circuit board in 3D

Raspberry Pi-style SBC based on the Rockchip RV1106G3

Size
86 × 56 mm
Copper layers
4
Thickness
1.61 mm
Parts
217
Nets
243
Pads
905
Tracks, vias
2,042, 415
Pours
21
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
14 Aug 2026
Updated
1 Nov 2026

Overview

Rv1106 is an open-source printed circuit board by EPSILON0-dev, from the EPSILON0-dev/Raven1106 repository on GitHub. It is a 4-layer board of 86 × 56 mm with 217 parts on 243 nets, routed with 2,042 tracks and 415 vias.

It is built around the RV1106G3, PAM2306AYPAA and CH334F, with the EA3036CQBR, ESP32-C6-MINI-1 and FSUSB42MUX among its other parts. Its parts include 89 capacitors, 77 resistors, 8 ICs, 8 connectors and 7 diodes. It belongs with the computers and single-board computers boards and the ESP32 and RISC-V boards of this library.

Main components

12

README

README.md

Raven1106

Raspberry Pi-like single board computer based on the Rockchip RV1106G3.

Assembled Board PhotoBoard Render

Overview

Raven1106 is a custom open-hardware SBC. This repository contains everything related to the project including: the board schematics and the PCB design, build scripts, configurations, device trees and file system overlays for the operating system images and all the patches needed to get everything working.

  • CPU: Single-core Cortex-A7 @ 1.6 GHz
  • RAM: 256MB DDR3L @ 924MHz
  • Storage: SD card
  • Ethernet: Full-size 100 MBit/s Ethernet port
  • USB: Four USB-A ports routed through CH334F or one OTG USB-C port
  • WiFi: ESP32C6 with ESP-Hosted firmware (currently not functional)
  • Kernel: Linux 5.10 (Rockchip BSP)
  • U-Boot: 2017.09 (Rockchip BSP)
  • OS images: Debian 12 (bookworm, armhf)

Why does it exist?

TLDR: It's a learning project

The main goal of this project was to be a learning experience for designing complex high-speed digital PCBs. Creating an SBC that is almost capable enough to do basic tasks like hosting simple servers or running AI harnesses is a nice bonus. RV1106 was chosen specifically for its simplicity, integrated RAM meant no DDR routing and QFN package meant I could solder the board manually relatively easily.

What this chip lacked in the hardware it made up for in the software side of things -- BSP is absolutely terrible, outdated, barely documented (though with a lot of spelling mistakes). Programming it wasn't much better either with only a few barely working flashing tools and a USB controller that might not actually be compliant with the USB spec, as most machines can't even enumerate it. It might have been genuinely easier to make this project around a more complex BGA part than this SoC.

PCB

The board is designed in KiCad (4-layer). pcb/ contains two revisions:

  • pcb/v1.0 — first revision
  • pcb/v1.1 — revision with component value fixes (no PCB layout changes)
Layer 1 - SignalLayer 2 - Ground PlaneLayer 3 - Power PlanesLayer 4 - Signal
layer1layer2layer3layer4

Known v1.0 hardware issues and their fixes

USB Impedance Miscalculation - Turns out that FSUSB42MUX doesn't act as a retransmitter but like a normal switch which adds ~10 ohm impedance to the line. Fix: Swap RN301 with 0-ohm and change R301 and R302 from 22 ohm to 10 ohm. This results the line impedance that is well in spec.

No pullups on FSPI Flash - Speaks for itself, thankfully the RV1106 has internal pull-ups that enable the chip and disable the write protection. And we don't even use it so it's a non-issue. Cannot fix this without board changes.

LED resistors too small - The LEDs shine too brightly with 1k resistors. Fix: Change R3, R4 and R5 from 1k to 10k resistors.

USB Hub crystal load too large - The CH334F is designed to work with a crystal with no load caps, adding them causes the oscillation to die down. Fix: Change R309 from 1k to 10 ohm, remove C302 and C303.

Boot button pull-up too strong - With 1k the button does not affect the chip's boot at all. Fix: Change R6 from 1k to 10k.

Wrong ESP_BOOT pin exposed - It should be pin 9, not pin 8. Fix: No way to fix it without modifying the board unfortunately, just flash the bootloader before soldering the ESP.

Reference clock not connected to the camera - Turns out not all camera modules have their own crystal oscillators. SC3336 requires a reference clock; RV1106 has two reference clock outputs, one of them is connected to the camera's reset and the other one to the IMU interrupt pin. Fix: Add a jumper from R508 to R515.

Most of these problems could have been prevented with "RTFM" (Reading The F***ing Manual).

Repository layout

PathContents
configs/Defconfigs (kernel, U-Boot, crosstool-ng), device tree source, SD image layout, U-Boot env, user table
kernel/Linux 5.10 Rockchip BSP kernel
uboot/U-Boot 2017.09 Rockchip BSP
debian/, overlayfs/Debian rootfs staging area and overlay
crosstool-ng/, legacy-toolchain/Legacy uClibc toolchain (kernel/U-Boot builds)
esp-hosted/ESP32-C6 host driver source (esp_hosted_ng)
rkbin/Rockchip binary blobs (DDR init, trust)
scripts/build.shImage assembly, Debian rootfs, Docker environment
images/Build artifacts and final sdcard.img
pcb/KiCad hardware design
docs/RV1106 datasheet / reference manuals

Building

Build environment

All builds run inside a Docker container. The first invocation builds the rv1106-build image, then drops you into a shell with the repository mounted at /work:

sh
make docker

Toolchain

Before building any image build the legacy toolchain for the Kernel and U-Boot.

sh
make toolchain

Debian image

sh
make            # default target: debian-image
# or explicitly:
make debian-image

Known issue: If build fails on stage 2 debootstrap because of "Invalid format", just delete the debian/ directory, restart the container and try to build again. It does that sometimes...

This builds the kernel, device tree, and U-Boot, then creates a Debian 12 (bookworm, armhf) rootfs with debootstrap (using qemu-user-static/binfmt for the second stage) and assembles images/sdcard.img.

Notes:

  • Default login: user debian, password raven (sudo user, SSH enabled). Override with the BOARD_USER and DEBIAN_PASSWORD environment variables.
  • Included packages: systemd, ifupdown, openssh-server, sudo, dhcp client, busybox, vim-tiny, ca-certificates (see DEBIAN_PACKAGES in scripts/build.sh).
  • Rootfs image size: 1 GB (DEBIAN_ROOTFS_SIZE).
  • For now there's no autoresize, run sudo resize2fs /dev/mmcblk1p5 after the first boot.

Component targets

TargetDescription
make kernelBuild the kernel using the legacy toolchain
make dtbPreprocess and compile configs/device-tree.dts into images/
make ubootBuild U-Boot (SPL + idblock + uboot.img)
make espdriverBuild the ESP32-C6 host driver against the kernel
make toolchainBuild the crosstool-ng uClibc toolchain
make dockerBuild/enter the Docker build environment
make *-cleanClean kernel / U-Boot build trees

Configuration targets

Each of these copies the stored defconfig from configs/, opens menuconfig, and saves the result back to configs/:

sh
make kernel-config
make uboot-config
make toolchain-config

Output artifacts

All artifacts land in images/:

FileDescription
sdcard.imgFinal flashable SD card image
download.bin, idblock.img, uboot.imgBootloader stages
Image, zImage, device-tree.dtbKernel and device tree
env.imgU-Boot environment (from configs/image-env.txt)
boot.vfatFAT32 boot partition (kernel + dtb)
rootfs.ext4, rootfs.tarRoot filesystem

SD card layout

The image has no MBR/GPT; partitions are defined by the kernel command line (blkdevparts, see configs/sdcard-image.cfg and configs/image-env.txt):

PartitionOffsetSizeContents
env0x032 KiBU-Boot environment
idblock0x8000512 KiBRockchip ID block (SPL)
uboot0x88000256 KiBU-Boot
boot4 MiB64 MiBFAT32: kernel image + device tree
rootfs68 MiBremainderext4 root filesystem

Flashing and first boot

sh
sudo dd if=images/sdcard.img of=/dev/sdX bs=4M status=progress conv=fsync

Serial console: ttyFIQ0 at 115200 baud.

WiFi setup

The WiFi interface (ESP32-C6 running ESP-Hosted firmware over SDIO) is set up at boot on a running system, it is not configured during the image build. The helper script overlayfs/usr/local/bin/start-network (installed on the image at /usr/local/bin/start-network) performs the entire sequence:

  1. Module reset - GPIO 2 is exported, pulsed low and released, which resets the ESP32. The pin is then unexported and the script waits 2 s.
  2. Driver loading - the required modules are inserted from /lib/modules/5.10.252/: the crypto primitives (libaes, libarc4, ecc, ecdh_generic), bluetooth, the wireless stack (cfg80211) and finally the ESP-Hosted SDIO host driver (esp32_sdio.ko). The script then waits 5 s for the module to appear as wlan0. (The host driver is built separately with make espdriver.)
  3. Association - wpa_passphrase <ssid> <password> generates a config into /tmp/wpa.conf and wpa_supplicant -iwlan0 is started in the background, followed by a 15 s wait for the connection to come up.
  4. Addressing - static IP configuration: 192.168.0.100/24 on wlan0 with the default route via 192.168.0.1.

Configuring the network

The SSID, passphrase and addresses are hardcoded in /usr/local/bin/start-network, so edit them on the board (or in overlayfs/usr/local/bin/start-network and rebuild/flash the image):

sh
sudo vi /usr/local/bin/start-network

Replace ssid and password in the wpa_passphrase call with your network name and passphrase, and adjust the ip addr add and ip route replace default via lines for your address and gateway. There is no DHCP client call for wlan0.

systemd service

The script runs automatically at boot via the systemd unit overlayfs/etc/systemd/system/start-network.service (/etc/systemd/system/start-network.service on the image) - a oneshot service started after network.target, running as root with RemainAfterExit=yes, and logging all output to /tmp/wifi.log. Use it to start/stop the WiFi bring-up manually or to check the log:

sh
sudo systemctl start start-network
sudo systemctl status start-network
less /tmp/wifi.log

Note: the ESP32 must already carry the ESP-Hosted firmware (flash the bootloader/ESP before soldering it, see the PCB section above).

Parts

217
QtyValueFootprintReferences
44100nCapacitor_SMD:C_0402_1005MetricC105, C107, C108, C124, C125, C129, C130, C132, C133, C134, C135, C136, C137, C138, C139, C140 +28
2610u 6.3VCapacitor_SMD:C_0603_1608MetricC102, C103, C104, C109, C113, C114, C115, C116, C117, C118, C119, C122, C123, C126, C127, C131 +10
1810kResistor_SMD:R_0402_1005MetricR101, R103, R201, R313, R401, R406, R407, R408, R409, R420, R421, R501, R506, R507, R510, R511 +2
1722Resistor_SMD:R_0402_1005MetricR2, R205, R301, R302, R410, R411, R412, R413, R414, R415, R416, R417, R418, R419, R508, R515 +1
121kResistor_SMD:R_0402_1005MetricR3, R4, R5, R6, R8, R303, R307, R308, R309, R311, R312, R403
7100Resistor_SMD:R_0402_1005MetricR7, R9, R402, R404, R503, R505, R509
618pCapacitor_SMD:C_0402_1005MetricC1, C2, C3, C4, C302, C303
622Resistor_SMD:R_Array_Convex_4x0402RN301, RN302, RN303, RN402, RN501, RN502
51u5Inductor_SMD:L_1008_2520MetricL101, L102, L103, L104, L105
5220pCapacitor_SMD:C_0402_1005MetricC110, C111, C112, C120, C121
4100k 1%Resistor_SMD:R_0402_1005MetricR106, R107, R112, R113
41uCapacitor_SMD:C_0402_1005MetricC128, C153, C401, C508
4MountingHoleMountingHole:MountingHole_2.7mm_M2.5H1, H2, H3, H4
20Resistor_SMD:R_0402_1005MetricR202, R502
2100kResistor_SMD:R_0402_1005MetricR102, R104
21MResistor_SMD:R_0402_1005MetricR1, R310
247k 1%Resistor_SMD:R_0402_1005MetricR109, R114
25k1Resistor_SMD:R_0402_1005MetricR304, R306
2DNPCapacitor_SMD:C_0402_1005MetricC101, C106
2USB_A_StackedConnector_USB:USB_A_Wuerth_61400826021_Horizontal_StackedJ303, J304
10 (0603)Resistor_SMD:R_0603_1608MetricR117
110kResistor_SMD:R_Array_Convex_4x0402RN401
110nCapacitor_SMD:C_0402_1005MetricC6
1127k 1%Resistor_SMD:R_0402_1005MetricR115
112MHzCrystal:Crystal_SMD_2520-4Pin_2.5x2.0mmY301
118kResistor_SMD:R_0402_1005MetricR314
11nCapacitor_SMD:C_0402_1005MetricC5
1200kResistor_SMD:R_0402_1005MetricR105
1200k 1%Resistor_SMD:R_0402_1005MetricR110
1240 1%Resistor_SMD:R_0402_1005MetricR116
124MHz 20ppmCrystal:Crystal_SMD_2520-4Pin_2.5x2.0mmY2
132.768kHzCrystal:Crystal_SMD_2012-2Pin_2.0x1.2mmY1
140.2k 1%Resistor_SMD:R_0402_1005MetricR111
16.04k 1%Resistor_SMD:R_0402_1005MetricR305
19.1k 1%Resistor_SMD:R_0402_1005MetricR108
1ACTLED_SMD:LED_0603_1608MetricD2
1AudioJackConnector_Audio:Jack_3.5mm_CUI_SJ-3523-SMT_HorizontalJ501
1BAT60ADiode_SMD:D_SOD-323D201
1BootButton_Switch_SMD:SW_Push_SPST_NO_Alps_SKRKSW1
1CH334FPackage_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.7x2.7mmU303
1CameraFPC_Connector:FPC_20_0.5mm_MP_BottomSideJ502
1EA3036CQBPackage_DFN_QFN:QFN-20-1EP_3x3mm_P0.4mm_EP1.65x1.65mmU101
1ESP32-C6-MINI-1RF_Module:ESP32-C6-MINI-1U402
1ESP_BootTestPoint:TestPoint_Pad_D1.5mmTP401
1ESP_LED0LED_SMD:LED_0603_1608MetricD401
1ESP_LED1LED_SMD:LED_0603_1608MetricD402
1ESP_ResetTestPoint:TestPoint_Pad_D1.5mmTP402
1ESP_USBMTestPoint:TestPoint_Pad_D2.0mmTP404
1ESP_USBPTestPoint:TestPoint_Pad_D2.0mmTP405
1FDG1024NZPackage_TO_SOT_SMD:SOT-363_SC-70-6Q501
1FSUSB42MUXPackage_SO:MSOP-10_3x3mm_P0.5mmU302
1FlashPackage_SON:WSON-8-1EP_8x6mm_P1.27mm_EP3.4x4.3mmU202
1GPIOConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalJ1
1HR913129AEConnector_RJ:RJ45_Hanrun_HR911105A_HorizontalJ302
1LSM6DSRPackage_LGA:LGA-14_3x2.5mm_P0.5mm_LayoutBorder3x4yU501
1MSM421ACT006Microphone:LGA4-1.9x2.8MIC501
1Micro_SD_Card_Det1Connector_Card:microSD_HC_Hirose_DM3D-SFJ201
1PAM2306AYPAAPackage_DFN_QFN:WDFN-12-1EP_3x3mm_P0.45mm_EP1.7x2.5mmU102
1PESD3V3S1ULDiode_SMD:D_SOD-882D501
1POWERLED_SMD:LED_0603_1608MetricD1
1RV1106G3library:Rockchip_QFN-128-1EP_12.3x12.3mm_P0.35mm_EP7x7mmU1
1ResetButton_Switch_SMD:SW_Push_SPST_NO_Alps_SKRKSW2
1USB_C_Receptacle_USB2.0_14PConnector_USB:USB_C_Receptacle_G-Switch_GT-USB-7010ASVJ301
1USB_SelectButton_Switch_SMD:SW_SPDT_PCM12SW301
1USERLED_SMD:LED_0603_1608MetricD3

Questions

How big is the Rv1106 PCB?

It measures 86 × 56 mm and has 4 copper layers, 1.61 mm thick.

What parts does the Rv1106 use?

217 parts, built around the RV1106G3, PAM2306AYPAA, CH334F and EA3036CQBR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Rv1106 KiCad files?

From the EPSILON0-dev/Raven1106 repository on GitHub, at the commit this page was made from: the board is pcb/v1.0/rv1106.kicad_pcb and its schematic pcb/v1.0/rv1106.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Rv1106 design in my own project?

Its repository states no licence, so its author keeps all rights: ask EPSILON0-dev before reusing the design.

Similar boards

  • 4 layers100 × 60 mmMicro stratux, the printed circuit board in 3D

    Micro stratux

    ciborg971/micro_stratux

    compact and self powered project stratux fork

    145 parts1
  • 4 layers117.5 × 30 mm4reel ee, the printed circuit board in 3D

    4reel ee

    o7-machinehum/4reel

    Stereo machine vision camera for outdoor mobile robotics.

    179 parts34MIT
  • 6 layers38 × 53.6 mmLayercam main, the printed circuit board in 3D

    Layercam main

    offgridevices/offgrid-hardware

    Open hardware from OffGrid Devices. One folder per board. CERN-OHL-S.

    168 partsCERN-OHL-S-2.0
  • 4 layers75 × 65 mmCRImier MyKiCad vaio re, the printed circuit board in 3D

    CRImier MyKiCad vaio re

    punkfab/pcb-corpus

    235 real KiCad boards from open-source hardware repositories, prepared as a placement and routing benchmark

    289 parts1
  • 2 layers13.5 × 18 mmPam2306 breakout, the printed circuit board in 3D

    Pam2306 breakout

    CRImier/MyKiCad

    My KiCad boards. Can't be bothered uploading individually anymore, so here you go.

    15 parts253GPL-3.0
  • 2 layers55 × 48.8 mmMtch6102 breakout, the printed circuit board in 3D

    Mtch6102 breakout

    sekigon-gonnoc/mtch6102_breakout

    Breakout board of MTCH6102, a 2D capacitive touch sensor, for DIY split keyboards with TRRS connectors.

    78 parts32
  • 2 layers23.8 × 13.5 mmVlakinostalo, the printed circuit board in 3D

    Vlakinostalo

    andrejcampa/WiFi-motor-controller

    WiFi based controller for DC motor

    25 parts2LGPL-3.0