FlashForge Printer Emulator A comprehensive dual-protocol network emulator for FlashForge 3D printers
Test FlashForge client applications without physical hardware
Full support for both legacy TCP protocol and modern HTTP API
Protocol Port Status Description UDP Discovery 48899 Full Support Automatic printer detection on network TCP Commands 8899 Full Support Legacy G-code protocol for all FlashForge printers HTTP API 8898 Full Support Modern REST API for Adventurer 5M/Pro/5X series Dual-Mode All Full Support Run both protocols simultaneously
Printer Model Emulation Status Camera Support Material Station Filtration System Adventurer 5M Full No No No Adventurer 5M Pro Full Yes No Yes Adventurer 5X Full Yes Yes (4-slot IFS) Yes Legacy Models (3/4) Full No No No
Feature Description Dual Protocol Operation Run TCP and HTTP servers simultaneously or independently Complete Protocol Implementation Fully emulates both FlashForge network protocols Discovery Protocol UDP broadcast for automatic printer detection Material Station Emulation 4-slot IFS support for AD5X multi-color printing Enhanced File Management File metadata, thumbnails, and upload support Persistent Configuration JSON-based auto-save/load configuration system Cumulative Statistics Track lifetime print time and filament usage Real-time Simulation Dynamic temperature changes and print progress Multi-platform Windows, macOS, and Linux support
Endpoint Method Description /product POST Get printer control states and capabilities /detail POST Get comprehensive printer status and metrics /control POST Send control commands (temperature, LED, fans, etc) /gcodeList POST Get list of recent and local files /gcodeThumb POST Get base64 thumbnail for file preview /uploadGcode POST Upload new G-code files to printer /printGcode POST Start printing a file from storage
Feature Description HTTP Monitoring UI Real-time inspection of all API requests and responses Network Simulation Simulate latency, packet loss, and connection failures Print Status State Machine Multiple states: ready, busy, printing, paused, completed, cancelled, error Temperature Simulation Realistic heating and cooling curves Material Station Control Manage filament slots, colors, and material types for multi-color prints File Metadata Management Track print time, filament usage, layer counts, and tool configurations Configuration Auto-save Automatic persistence with restart scheduling
Step Command / Description Start the emulator python main.py GUI Application Modern ttkbootstrap interface with tabbed controls UDP Discovery Automatically broadcasts on port 48899 TCP Server Listens on port 8899 for legacy G-code commands HTTP Server Listens on port 8898 for REST API requests Protocol Mode Choose TCP-only, HTTP-only, or Dual-mode operation
Setting Description Printer Name Customize the name displayed to client applications Serial Number Set a unique identifier for the emulated printer Machine Type Set printer model (5M, 5M Pro, 5X, etc) Firmware Version Set the reported firmware version MAC Address Required for HTTP API clients Check Code Authentication code for HTTP API
Mode TCP Server HTTP Server Use Case TCP Only Running Stopped Test legacy clients and older printers HTTP Only Stopped Running Test modern API clients (5M/Pro/5X) Dual Mode Running Running Test comprehensive client compatibility
Mode Model Emulated Camera Filtration Material Station 5M Adventurer 5M No No No 5M Pro Adventurer 5M Pro Yes Yes No AD5X Adventurer 5X Yes Yes Yes (4-slot IFS)
Material Station (AD5X Mode) Setting Description Slot Count Number of filament slots (default: 4) Current Slot Active slot being used for printing Slot Configuration Configure material type, color, and presence per slot Material Mappings Define tool-to-slot mappings for multi-color prints Loading State Simulate filament loading and unloading operations
Setting Description Print Status Set to ready, busy, printing, paused, completed, cancelled, or error Print Progress Adjust the reported progress percentage (0-100) Current File Set the filename of the currently printing model Layer Progress Automatically calculated based on print progress Print Duration Elapsed time for current print job Remaining Time Estimated time remaining for print completion Filament Estimates Set total filament length and weight for current job
Setting Description Hotend Temperature Set current and target temperatures for the hotend Bed Temperature Set current and target temperatures for the heated bed Chamber Temperature Set chamber temperature (Pro/5X models) Simulation Mode Realistic heating and cooling curves with configurable rates Idle Temperatures Default temperatures when not printing
Setting Description Network Interface Select which network interface to use for discovery Latency Simulation Add artificial delay to responses (testing robustness) Packet Loss Simulate random connection failures Connection Failures Test client retry and error handling
Statistic Description Cumulative Print Time Total lifetime print time in minutes Cumulative Filament Total lifetime filament usage in meters Job History Track completed prints and their metadata Auto-persistence Statistics saved automatically to configuration file
TCP Protocol - Status Commands Command Description M115 Get printer information and capabilities M105 Get current temperature readings M119 Get endstop and machine status M27 Get print status and progress M114 Get current position (X/Y/Z)
TCP Protocol - Control Commands Command Description M601/M602 Login and logout authentication M146 Control LED on/off M405/M406 Control filament runout sensor G28 Home all axes G1 Move printer head to position M24/M25/M26 Resume, pause, and stop print M104/M140 Set extruder and bed temperature M109/M190 Set and wait for temperature targets M661 List files on printer storage M662 Get thumbnail image for a file
HTTP API - Control Commands Command Parameters Description switchLight status: open/close Control printer LED setTargetTemperature heaterIndex, temperature Set target temperature for extruder or bed setChamberTemperature temperature Set chamber target temperature (Pro/5X) setExternalFan status: open/close Control external filtration fan (Pro/5X) setInternalFan status: open/close Control internal filtration fan (Pro/5X) pause - Pause current print resume - Resume paused print cancel - Cancel current print
Tab Description Main Basic controls, server start/stop, protocol mode selection, status logging Configuration Printer identity, protocol mode, printer mode, virtual file management Printer State Temperature controls, print status, progress simulation, filament estimates Material Station 4-slot IFS configuration for multi-color printing (AD5X mode) HTTP Monitor Real-time inspection of all HTTP API requests and responses Network Interface selection, network simulation settings Printer Details Hardware specifications and dimensions Filesystem Virtual file system and metadata management Logs Application logging and debugging output
Property Value Protocol UDP Broadcast Port 48899 Response Format Binary format with printer name and serial number Purpose Automatic printer detection by FlashForge clients Compatibility All FlashForge printers and client software
Property Value Protocol TCP Port 8899 Command Format ~GCODE [parameters] Response Format CMD GCODE Received.[newline][response data][newline]ok Use Case Legacy protocol for Adventurer 3/4 and older models Client Compatibility FlashPrint, OrcaSlicer (legacy mode), custom clients
Property Value Protocol HTTP/1.1 Port 8898 Format JSON request/response bodies Authentication Serial number and check code validation Use Case Modern protocol for Adventurer 5M/Pro/5X series Client Compatibility FlashForgeUI, OrcaSlicer (new API mode), custom clients
Feature Description Virtual Files Pre-configured test files with metadata File Upload Simulate file uploads via HTTP API Thumbnail Storage Base64-encoded preview images File Metadata Track print time, filament usage, layer counts Multi-color Files Support for Material Station tool mappings Recent Files Return last 10 files for client display Local Files Full file list with detailed metadata (mode-dependent)
Field Description gcodeFileName Name of the G-code file printingTime Estimated print duration in seconds uploadTime ISO timestamp of file upload fileSize File size in bytes totalFilamentWeight Total filament weight in grams useMatlStation Whether file uses Material Station (multi-color) gcodeToolCnt Number of tools/extruders used gcodeToolDatas Array of tool configurations with slot mappings
Client Software Protocol Testing Status Notes FlashForgeUI HTTP API Fully Tested All printer modes supported OrcaSlicer TCP + HTTP Fully Tested Both legacy and new API modes Orca-FlashForge TCP Fully Tested Legacy protocol support FlashPrint TCP Fully Tested Official FlashForge software Custom Clients Both Supported Full protocol documentation available
Tool Purpose Claude Code Integration CLAUDE.md file provides AI assistant context Configuration Persistence JSON auto-save prevents data loss Hot Reload Configuration changes applied without restart where possible HTTP Monitoring Built-in request/response inspection for debugging Network Simulation Test client robustness under adverse conditions
Component File Description Core Emulator emulator/printer.py Central state management and coordination TCP Server emulator/server.py Legacy protocol server HTTP Server emulator/http_server_async.py Async HTTP API server using aiohttp Command Processing emulator/commands.py G-code command parser and dispatcher HTTP Responses emulator/http_responses.py JSON response generation for REST API File Manager emulator/file_manager.py Enhanced file and metadata management Printer Modes emulator/printer_modes.py Mode-specific features and Material Station Configuration config.py Centralized configuration and defaults
Package Purpose ttkbootstrap Modern GUI theming and widgets Pillow Thumbnail image processing aiohttp Async HTTP server implementation Standard Library asyncio, threading, json, socket, struct