Skip to the content
PCBKitNew board
2 layers52 × 65 mmBase, the printed circuit board in 3D

A high polling rate pointing device designed for osu!

Size
52 × 65 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
25
Pads
52
Tracks, vias
82, 8
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
19 Jul 2026
Updated
12 Oct 2026

Overview

Base is an open-source printed circuit board by DexonRax, from the DexonRax/tabletto repository on GitHub, published under the AGPL-3.0 licence. It is a 2-layer board of 52 × 65 mm with 12 parts on 25 nets, routed with 82 tracks and 8 vias.

It is built around the RP2040-ZERO. Its parts include 4 resistors, 1 IC, 1 connector and 1 switch. It belongs with the RP2040 boards of this library.

Main components

1

README

README.md

Tabletto V1S

A ridiculously fast DIY osu! "tablet" built around a SCARA arm mechanism, powered by an RP2040 (RP2040-Zero) and dual AS5600 magnetic rotary encoders.

Tabletto V1S was designed with one goal in mind: the lowest possible input latency using inexpensive, easy-to-source components, fully 3D printed mechanics, and custom open-source PCBs.


Gallery

Tabletto image


Features

  • ⚡ 1000 Hz report rate (1 ms USB HID polling)
  • 🎯 Minimal cursor jitter
  • 🚀 Faster than most commercial graphics tablets
  • 🖨️ Fully 3D printable mechanical design
  • 🔩 Custom open-source KiCad PCBs (base + arm sensor board)
  • 🧠 On-device forward kinematics — standalone, works with OpenTabletDriver
  • 🔘 Physical button: short press toggles the tablet, hold 3 s to calibrate
  • 💾 Calibration stored in the RP2040's flash, survives power cycles

How it works

Tabletto uses a SCARA (Selective Compliance Assembly Robot Arm) mechanism.

Two AS5600 magnetic rotary encoders measure the angle of each arm joint — one lives on the base PCB, the other on a small board at the elbow. The RP2040 firmware reads both encoders over two separate I2C buses and computes the pen position with forward kinematics, then sends it to the host as a vendor-defined HID report.

Because the sensors provide high-resolution angle measurements and the mechanism has very little moving mass, the result is an extremely responsive pointing device well suited for rhythm games like osu!.


Hardware

Required components:

QuantityPart
1RP2040-Zero (or similar module)
2AS5600 Magnetic Rotary Encoder
2MR128ZZ 8x12x3.5mm Bearings
44.7kΩ Resistor
1100nF Capacitor
1JST XH 2.54mm straight connector
1JST XH 2.54mm male cable
1Keyboard Switch
410mm M3 Screws
16mm M3 Screws
24x3mm Diametral magnets
—3D Printed Parts
—PCBs - from V1S/pcb

Both boards have 3.2 mm M3 mounting holes.


PCBs

The electronic design is open source and lives in V1S/pcb:

  • pcb/base — base board: RP2040-Zero module, one AS5600, 4.7kΩ I2C pull-ups, calibration button, and a 4-pin connector to the arm board.
  • pcb/arm — elbow board: the second AS5600 with a 100 nF decoupling cap, connected over a short 4-pin cable.

Open the .kicad_sch / .kicad_pcb files in KiCad 8+ and order them from any PCB fab (both boards are two-layer).

Firmware pin mapping

FunctionPin
I2C0 SDA (base)GP0
I2C0 SCL (base)GP1
I2C1 SDA (arm)GP2
I2C1 SCL (arm)GP3
Calibration btnGP4

Firmware

Located in V1S/firmware. Built with the Raspberry Pi Pico SDK and TinyUSB.

Flashing (easiest)

A precompiled build is included at V1S/firmware/precompiled/tabletto.uf2:

  1. Plug the RP2040-Zero into USB while holding BOOT
  2. Drag and drop tabletto.uf2 onto the USB drive that appears
  3. Done — the device enumerates as a HID tablet (VID 0x1209, PID 0x0001)

Building from source

Requires the Pico SDK and CMake:

text
cd V1S/firmware
cmake -B build -DPICO_SDK_PATH=/path/to/pico-sdk
make -C build

The resulting build/tabletto.uf2 can be flashed as above.


Driver

Tabletto exposes a standard vendor-defined HID report, so no custom driver is needed — just use OpenTabletDriver.

Import the configuration from V1S/driver/OpenTabletDriver Configuration/TablettoV1S.json into OpenTabletDriver (restart needed):

  • Linux: ~/.local/share/OpenTabletDriver/Configurations/ (create it if missing: mkdir -p ~/.local/share/OpenTabletDriver/Configurations)
  • Windows: %LOCALAPPDATA%\OpenTabletDriver\Configurations

It defines:

  • Work area: 180 × 112.5 mm (X 0–18000, Y 0–11250, 0.01 mm units)
  • Input report length: 9 bytes
  • libinputoverride: 1 for reliable Linux behavior

Calibration

  1. With the tablet connected, pull the arm straight down (toward you), so both sensors read their reference position.
  2. Hold the button for 3 seconds.
  3. Short-press the button at any time to toggle the tablet on/off.

Direction tuning lives in the firmware (X_DIR / Y_DIR in main.c) if the axes ever need flipping.


Why SCARA?

Unlike traditional graphics tablets, Tabletto directly measures arm angles with magnetic encoders.

Advantages include:

  • extremely low latency
  • high update rate
  • no pressure to use specialized tablet hardware
  • inexpensive components
  • entirely repairable and printable

3D Printing

All .stl files can be found in V1S/models:

FilePurpose
arm1_up.stlArm segment 1 (magnet-up variant)
arm1_down.stlArm segment 1 (magnet-down variant)
arm2.stlArm segment 2 (elbow to pen)
base_down_workarea.stlBottom side of the base
base_up_debug.stlUpper side of the base (debug has a cutout for RP2040 buttons)
workarea.stlFlat work area plate
offset_nib_3.6mm.stlNut-like offset for spacing (6 needed)

Every structural component is designed to be 3D printed — no CNC machining or laser cutting required. Place the magnets that came with the AS5600s on top of the bearings.


Repository layout

text
V1S/
├── driver/    OpenTabletDriver configuration (JSON)
├── firmware/  RP2040 firmware (Pico SDK + TinyUSB) + precompiled UF2
├── models/    3D printable STL files
└── pcb/       KiCad sources: base board + arm sensor board

License

Copyright (C) 2026 Dexon Rax

Tabletto is free and open source (AGPLv3) for personal and noncommercial use — this covers the RP2040 firmware, the OpenTabletDriver configuration, the 3D printable models, and the KiCad PCB sources.

💡 Want to manufacture or sell Tabletto commercially, or use it in a closed product? Contact me for licensing — see LICENSE-COMMERCIAL.md.

Parts

12
QtyValueFootprintReferences
44.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3, R4
1AS5600AS5600:SOIC8U1
1Conn_01x04_PinConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ1
1RP2040-ZeroRP2040-Zero:RP2040-ZeroRZ1
1SW_PushButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW1

The 8 most common of 12 parts.

Questions

How big is the Base PCB?

It measures 52 × 65 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Base use?

12 parts, built around the RP2040-ZERO. 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 Base KiCad files?

From the DexonRax/tabletto repository on GitHub, at the commit this page was made from: the board is V1S/pcb/base/1.kicad_pcb and its schematic V1S/pcb/arm/2.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Base design in my own project?

Its repository publishes it under the AGPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from DexonRax/tabletto

1
  • 2 layers65 × 13 mmArm, the printed circuit board in 3D

    Arm

    DexonRax/tabletto

    A high polling rate pointing device designed for osu!

    4 parts5AGPL-3.0

Similar boards

  • 2 layers132.3 × 94.9 mmCheapino, the printed circuit board in 3D

    Cheapino

    tompi/cheapino

    An affordable split 36 keys keyboard

    59 parts1.2kCC-BY-4.0
  • 2 layers321 × 92.3 mmMx40, the printed circuit board in 3D

    Mx40

    zzeneg/stront

    Split keyboards with 38 or 40 keys, LCD display and Cirque trackpad

    181 parts353MIT
  • 2 layers255.9 × 99.3 mmZerosprey42, the printed circuit board in 3D

    Zerosprey42

    beekeeb/zerosprey42

    Zerosprey42 Keyboard is a wired, beginner friendly, choc hotswap, MonoBlockSplit (Unibody), column-staggered, DIY mechanical keyboard.

    96 parts140
  • 2 layers146.3 × 69.5 mmStress, the printed circuit board in 3D

    Stress

    GroooveBob/Stress

    Pocket Arcade Fight Pad

    22 parts102MIT
  • 2 layers54 × 64 mmDonConIOmini, the printed circuit board in 3D

    DonConIOmini

    ravinrabbid/DonCon2040

    RP2040 based firmware and hardware for DIY Taiko no Tatsujin Drum Controllers

    96 parts66MIT
  • 2 layers52 × 50 mmRP2040-TestPatternGenerator VGA, the printed circuit board in 3D

    RP2040-TestPatternGenerator VGA

    nmur/RP2040-TestPatternGenerator

    A simple test pattern generator running on the RP2040 microcontroller

    12 parts64GPL-3.0
  • 2 layers120 × 40 mmBuinchiez40, the printed circuit board in 3D

    Buinchiez40

    ChrisChrisLoLo/bunchiez40

    A pocket keyboard that makes use of mouse switches to achieve a miniscule size

    90 parts56GPL-3.0
  • 2 layers305.2 × 76.2 mmSoroka, the printed circuit board in 3D

    Soroka

    kapee1/soroka

    40% DIY-keyboard with base kit support

    126 parts47Unlicense