Qt-only fork of vlachoudis/bCNC Original author: Vasilis Vlachoudis (@vlachoudis)
An advanced fully featured g-code sender for GrblHAL / GRBL. Cross-platform (Windows, Linux, Mac), written in Python with a PySide6 (Qt) interface. Includes autoleveling, g-code editing, digitizing, CAM operations, camera alignment, and 42+ plugins.
python -m venv .venv
source .venv/bin/activate # Linux/macOS (.venv\Scripts\activate on Windows)
pip install -e . # core deps (pyserial, numpy, Pillow, opencv, etc.)
pip install PySide6 # Qt toolkitpython -m bCNC # launch the app
python -m bCNC.qt.app # alternative entry point
python -m bCNC.qt.app file.gcode # open a file on startupAll commands should be run from the repository root.
- Python 3.8+
- PySide6 — Qt toolkit
- pyserial — serial communication
- numpy — numeric computation
- Pillow — image processing (autolevel height map)
- opencv-python (optional) — camera overlay, edge detection
- Dockable panel layout — tabbed sidebar with canvas center area, persistent window state
- 3-axis and 6-axis GUI modes (XYZ + ABC)
- Digital Readout (DRO) — live work/machine position display with configurable fonts
- Import/export G-code (
.ngc,.nc,.gcode), DXF, SVG files - 3D mesh slicing — STL and PLY files (requires
numpy-stl) - Fast G-code sender — works on Raspberry Pi and old hardware
- Workspace selection — G54-G59 quick-switch with live highlight
- User-configurable macro buttons — multi-line G-code, right-click to edit
- Spindle / override controls — feed, spindle, rapid override with real-time display
- Probing:
- Single-direction probing with auto-goto
- Center finder with probing ring
- Autoleveling — Z-probe grid scan with heatmap display
- Jog-and-record digitizer (with camera support)
- Manual tool change with automatic tool length probing
- Camera alignment — live OpenCV overlay, 10 anchor modes, edge detection, camera-to-spindle offset registration
- Orientation alignment — marker-based workpiece alignment with least-squares solve
- CAM operations — cut, drill, profile, pocket, tabs + 42 plugins
- G-code editor — tree view with block/line hierarchy, context menu, clipboard, undo/redo
- Serial terminal — color-coded log with command entry and history
- Web pendant — mobile-friendly HTTP interface for phone/tablet control
- We recommend FluidNC (github, wiki) for new builds
- GrblHAL (github) is fully supported (original GRBL also works but is reaching end-of-life on 8-bit MCUs)
- GRBL should use MPos reporting: set
$10=3(or$10=1as fallback) - Default units are millimeters — ensure
$13=0in GRBL - See GRBL v1.1 Configuration and GrblHAL Compatibility Level
Settings are stored in ~/.bCNC (INI format). Most parameters can be modified
from the Tools panel (Config / Controller). 6-axis mode can be enabled in
Config (requires restart).
The default configuration template is bCNC.ini in the installation directory.
Log serial communication by changing the port to:
spy:///dev/ttyUSB0?file=serial_log.txt&raw
spy://COM1?file=serial_log.txt&raw
If no file is specified, the log goes to stderr. The raw option outputs
data directly instead of hex dump. See pyserial URL handlers.
- USER-GUIDE.md — end-user guide for the Qt interface
- DEV-GUIDE.md — developer guide with architecture and conventions
- CHANGELOG.md — feature changelog
The software is made available "AS IS". It seems quite stable, but it is in an early stage of development. Hence there should be plenty of bugs not yet spotted. Please use/try it with care.