Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

Square Off Pro BLE Protocol (Reverse Engineered)

Legal Notice

This project is based on independent reverse engineering for interoperability purposes.

No proprietary code, firmware, or assets from Square Off are included.

This repository only documents observed communication behavior.

If you are the rights holder and have concerns, please open an issue.

This document describes the reverse engineered BLE protocol of the Square Off Pro smart chessboard. All information was obtained through real BLE sniffing, testing, and validation on hardware.

Overview

The board does not handle chess logic internally. It behaves as:

A sensor (detects piece movements)

An actuator (LEDs + buzzer)

A state reporter

All game logic (legal moves, rules, AI, etc.) is handled externally (mobile app or custom software).

BLE Service

The board uses the Nordic UART Service (NUS):

Service UUID 6e400001-b5a3-f393-e0a9-e50e24dcca9e

TX (board → app, notifications) 6e400003-b5a3-f393-e0a9-e50e24dcca9e

RX (app → board, write) 6e400002-b5a3-f393-e0a9-e50e24dcca9e

Protocol Commands Connection / Initialization

14#GO* → Board ready, connection validated, initial sync OK

30#* → Send full board state (used for initial synchronization)

Piece Events (Board → App)

0#e2u* → Piece lifted from e2 (u = up)

0#e4d* → Piece placed on e4 (d = down)

Board State

30#R* → Request current board state

30#* → Board returns full state (64-bit representation)

Used for:

state reading

synchronization

validation

Error Handling & Buzzer

0#e2e2* → Mark square e2 as incorrect → Triggers a beep → Causes persistent blinking

General format: 0#*

Examples: 0#a5a5* 0#d8d8*

Behavior:

Each command triggers a beep

LEDs remain blinking until correction

Board LEDs (Squares)

25#e2e4* → Highlight squares e2 and e4

25#e2e3e4* → Highlight multiple squares

General format: 25#...*

Used for:

move guidance

highlighting legal moves

animations

Status LED (Control Module)

Controls the LED on the side module (not the board squares):

26#ISG* → Green 26#ISR* → Red 26#ISB* → Blue

Notes:

No OFF command found

Only changes color

Keep-Alive / Anti-Sleep

27#po* → Keeps the board awake → Prevents low-power mode → Improves responsiveness

No visible LED or sound effect

End of Game

27#wt* → White wins 27#bl* → Black wins 27#dw* → Draw

Typical Communication Flow Initialization

APP → 30#<initial_state>* BOARD → 14#GO*

Move Example (e2 → e4)

APP → 25#e2e4* BOARD → 0#e2u* BOARD → 0#e4d* APP → 30#R* BOARD → 30#*

Error Example

APP → 0#a5a5* APP → 0#d8d8*

Effect:

Beep on each command

Persistent blinking until corrected

Key Insights

The board does not validate moves

It only reports physical actions

Game logic is entirely external

Beep is triggered by 0#...* commands

LEDs are controlled separately:

25# → board squares

26# → status LED

Command Summary

14#GO* → init OK 0#...u* → piece lifted 0#...d* → piece placed 0#xx* → error + beep 25#...* → board LEDs 26#ISX* → status LED color 30#R* → read state 30#...* → state data 27#po* → keep-alive 27#wt* → white win 27#bl* → black win 27#dw* → draw

Disclaimer

This protocol is based on reverse engineering and testing. It is not official documentation from Square Off. Behavior may vary depending on firmware versions.

About

Protocole SquareOffPro for using without offical app.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors