How it works

A chess board that runs software you control.

Sensors under every square, a light under every square, and an install button in your browser. That's the whole idea.

Playing on it

  • 01

    Set up the pieces

    Every piece has a magnet in its base. A hall-effect sensor under each of the 64 squares knows the moment a piece lands or leaves.

  • 02

    Lift a piece

    The square lights up and every legal destination lights with it — green for a quiet move, orange-red for a capture.

  • 03

    Play the move

    Put the piece down and the board confirms it. Try something illegal and it flashes amber and waits for you to put it back.

  • 04

    Or play someone far away

    The board can pair with a second board over the air, talk to an engine over Wi-Fi, or connect to this site over USB.

A green and white Open Chess board with its starting position set up, the squares under each piece glowing green.

See Open Chess in action

A walkthrough video goes here — unboxing, first game, and installing a new game mode from the browser.

Video coming soon

Installing new software

New games install directly from this website. Your browser talks to the board over the USB cable using a web standard called Web Serial — there is no app to install and no code to compile.

  1. 1

    Pick a game

    Browse the marketplace and open any game. Each one lists exactly what it does and what it needs.

  2. 2

    Plug in the USB cable

    Connect the board to your computer with the USB-C cable. Nothing to install, no drivers to hunt down.

  3. 3

    Press Connect

    Your browser asks which device to allow. Choose your board and approve it — this permission stays local to your computer.

  4. 4

    Press Install

    The software downloads, writes to the board, verifies itself, and restarts. It usually takes under a minute.

What you need

  • Google Chrome or Microsoft Edge, version 89 or newer
  • A desktop or laptop — phones cannot do USB installs
  • A USB-C data cable (charge-only cables will not work)

Your board never leaves your desk

The connection is between your browser and the board over the cable in front of you. We host the software files; your computer downloads them and writes them locally. No account, and nothing about your board is sent anywhere.

If your board doesn't show up

Close Arduino IDE or any other serial monitor first — only one program can hold the port. If it still doesn’t appear, hold BOOT, tap RESET, release BOOT, then press Connect again.

Hardware reference

  • An empty 3D-printed Open Chess enclosure with the USB-C and button cutouts visible.

    The shell

    3D printed, and the files are yours. Print it in any colour you like.

  • A lithium-polymer battery seated in the printed enclosure.

    Power

    A single-cell battery and a USB-C cable — 6+ hours of continuous play per charge.

  • The sensor board installed in the enclosure, showing 64 square outlines and the ESP32 module.

    The senses

    64 hall-effect sensors read every piece, scanned by an ESP32-S3.

  • The board lifted out of its enclosure with all 64 addressable LEDs lit warm white.

    The lights

    64 addressable LEDs, one per square. Every game decides what they mean.

Specifications

Microcontroller
ESP32-S3 (8 MB flash), USB-C
Piece sensing
64 × AH3411 hall-effect sensors, one per square
Lighting
64 × RGBW addressable LEDs (WS2812B compatible)
Square scanning
74HC595 shift register drives one column at a time
Controls
Two tactile buttons, plus BOOT and RESET
Power
Single-cell LiPo with USB-C charging and power path
Wireless
Wi-Fi 2.4 GHz and Bluetooth built into the ESP32-S3

Pin assignments

For anyone writing their own sketch. Every game in the marketplace uses these same pins, so code moves between games unchanged.

  • IO1LED data line
  • IO45 / IO47 / IO46Shift register data / latch / clock
  • IO35 – IO42Row sensor inputs (row 0 is White's back rank)
  • IO9 / IO10Button A / Button B
  • IO6 / IO7I²C to the battery charger
  • IO0 / ENBoot select / reset
A render of the Open Chess sensor and LED circuit board.

Sensor and LED board — one hall-effect sensor and one addressable LED per square.

Schematic of the ESP32-S3 module, its USB connection, and the sensor multiplexing.

Controller: ESP32-S3, USB, and the shift-register column scan.

Schematic of the battery charger and power regulation circuit.

Power: single-cell charger, protection, and 3V3 regulation.

Board protocol

Firmware that wants to appear on the Connect page speaks a small line-based protocol over USB serial at 115200 baud: one JSON object per line, each with a t field. Unknown types are ignored on both sides, so the board and this site can be updated independently.

Board → computer
{"t":"hello","board":"open-chess","fw":"1.2.0"}
{"t":"state","fen":"<FEN>","turn":"w"}
{"t":"occupancy","squares":"ffff00000000ffff"}
{"t":"lift","sq":"e2"}
{"t":"place","sq":"e4"}
{"t":"move","uci":"e2e4"}
{"t":"battery","percent":87,"charging":true}
{"t":"result","result":"checkmate","winner":"w"}
Computer → board
{"t":"ping"}
{"t":"identify"}
{"t":"newgame","mode":"atomic"}
{"t":"hint","squares":["e4","d5"]}
{"t":"led","sq":"e4","color":[0,255,0,0]}
{"t":"leds","clear":true}
{"t":"brightness","value":120}
{"t":"move","uci":"e7e5"}

Older firmware still works

Sketches that only print debug text are treated as log output, so the Connect page shows the raw serial stream instead of a live board rather than failing. The occupancy field is 16 hex characters — 64 bits, a1 through h8.