Skip to content

Adventurer 3 Series

GhostTypes edited this page Mar 21, 2026 · 4 revisions

Adventurer 3 Series

The Adventurer 3 series represents FlashForge's legacy printer lineup, using a TCP-only control protocol with no HTTP REST API.

Protocol Architecture

Protocol Port Purpose
TCP Control 8899 All printer control and status
Camera HTTP 8080 MJPEG video streaming (optional)

Important: The Adventurer 3 series has no REST API on port 8898 or elsewhere.

Key Characteristics

Feature Status
REST API Not available
TCP Control Full functionality
Authentication None required
Camera HTTP MJPEG on port 8080
Discovery Legacy UDP protocol

Variants

The Adventurer 3 series includes four models sharing an identical TCP protocol (37 commands):

Feature AD3 AD3 Lite AD3 Pro2 AD3C
Architecture MIPS:LE:32 MIPS:LE:32 ARM:LE:32:v8 MIPS:LE:32
Build Volume 150×150×150 mm 150×150×150 mm 150×150×150 mm 150×150×150 mm
Camera Optional accessory No Built-in (port 8080) No
Cloud Dual (Polar + FlashForge) Dual (Polar + FlashForge) Dual (Polar + FlashForge) Dual (Polar + FlashForge)
TCP Commands 37 37 37 37
Discovery UDP multicast 225.0.0.9 UDP multicast 225.0.0.9 UDP multicast 225.0.0.9 UDP multicast 225.0.0.9

Key finding: All AD3 variants use identical network protocols. A single TCP client implementation works for all models.

Firmware Coverage

  • Primary target: 2023-era firmware (finder-rush-mips / ffstartup-mipsle lineage)
  • Historical comparison: 2018 firmware also documented

Command Protocol

All control is via TCP port 8899 using text-based G/M codes prefixed with ~.

Connection Sequence

1. Connect TCP to port 8899
2. Send: ~M601 S1
3. Wait for: Control Success
4. Send commands as needed
5. Send: ~M602
6. Close connection

Essential Commands

Session Control

Command Description
~M601 S1 Request control session
~M602 Release control session

Information Queries

Command Description
~M115 Get printer info (name, SN, firmware, build volume)
~M27 Get print status and progress
~M105 Get temperatures
~M119 Get endstop and machine status
~M114 Get current position

Job Control

Command Description
~M23 0:/user/<file> Select and start printing file
~M24 Resume paused print
~M25 Pause current print
~M26 Stop/cancel current print

Motion

Command Description
~G28 Home all axes
~G28 X Y Home X and Y only
~G1 X<n> Y<n> Z<n> F<n> Linear move
~G90 Absolute positioning
~G91 Relative positioning

Temperature

Command Description
~M104 S<temp> Set extruder temperature
~M140 S<temp> Set bed temperature

LED Control

Command Description
~M146 r<R> g<G> b<B> F0 Set LED color (preferred)
~M144 LED on (avoid - EEPROM wear)
~M145 LED off (avoid - EEPROM wear)

Recommendation: Always use M146 for LED control. M144/M145 write to EEPROM and should be avoided for frequent use.

File Operations

Command Description
~M661 List files on printer storage
~M662 <path> Get PNG thumbnail for file
~M28 <size> 0:/user/<file> Start binary upload
~M29 End binary upload

Discovery

Adventurer 3 printers respond to the legacy discovery protocol:

Probe:

Send UDP packet to: 225.0.0.9:8899

Response: 140-byte packet with machine name at offset 0

Important: Serial number is NOT included in discovery packet. Query via ~M115 after TCP connection.

Camera Access

If the camera hardware is present and service is enabled:

URL: http://<printer-ip>:8080/?action=stream
Format: MJPEG (multipart/x-mixed-replace)

Use this URL in browsers, VLC, or other MJPEG-compatible clients.

State Model

The A3 print lifecycle uses multiple firmware flags and state strings. Client applications should handle:

State Description
IDLE No job active
READY File selected, waiting to start
PRINTING Job in progress
PAUSED Job suspended
ERROR Fault condition

Query state using ~M27 or ~M119.

Differences from 5M/AD5X

Feature A3 Series 5M/AD5X
REST API None Port 8898
TCP Protocol Primary control Fallback only
Authentication None CheckCode required
File Upload M28/M29 binary HTTP multipart
Discovery Legacy only Modern + Legacy
Material Station No AD5X only

Recommended Client Strategy

1. TCP-Only for Control

Implement all printer operations using the G/M code protocol on port 8899.

2. Camera via HTTP

Use port 8080 endpoint for video streaming only when hardware is present.

3. Robust Parsing

Build parsers that handle variations in text-based responses. M119 status strings may have subtle format differences between firmware versions.

4. Avoid EEPROM Commands

Do not use M144/M145 for LED control. Use M146 for safe runtime control without EEPROM wear.

5. Connection Management

  • Always send M602 before disconnecting
  • Implement reconnection logic for dropped connections
  • Send periodic keep-alive commands (M27) during idle periods

Implementation Example

Connect and Print

1. Connect to 10.0.0.42:8899
2. Send: ~M601 S1
3. Wait for: Control Success
4. Send: ~M23 0:/user/model.gcode
5. Poll: ~M27 (every 2 seconds for progress)
6. On completion, send: ~M602
7. Close connection

Get File List

1. Send: ~M661
2. Wait for: ok
3. Read data following ok (delimited file list)
4. Parse file paths from response

Upload File (Binary)

1. Send: ~M28 12345 0:/user/newfile.gcode
   (where 12345 is file size in bytes)
2. Wait for: ok
3. Send raw binary data (exactly 12345 bytes)
4. Send: ~M29
5. Wait for: ack: ok

Common Issues

"Control Failed" on M601

  • Previous connection not properly closed
  • Another client is connected
  • Wait 30 seconds and retry, or power cycle printer

File Upload Fails

  • "Not enough space": Delete files via M661/listing and appropriate delete command
  • "File Is Not Available": File size mismatch between M28 and actual data

State Not Updating

  • Polling interval too short - use 1-2 second intervals
  • Connection may have dropped - implement reconnection logic

Clone this wiki locally