-
Notifications
You must be signed in to change notification settings - Fork 0
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 | 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.
| Feature | Status |
|---|---|
| REST API | Not available |
| TCP Control | Full functionality |
| Authentication | None required |
| Camera | HTTP MJPEG on port 8080 |
| Discovery | Legacy UDP protocol |
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.
- Primary target: 2023-era firmware (
finder-rush-mips/ffstartup-mipslelineage) - Historical comparison: 2018 firmware also documented
All control is via TCP port 8899 using text-based G/M codes prefixed with ~.
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
| Command | Description |
|---|---|
~M601 S1 |
Request control session |
~M602 |
Release control session |
| 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 |
| Command | Description |
|---|---|
~M23 0:/user/<file> |
Select and start printing file |
~M24 |
Resume paused print |
~M25 |
Pause current print |
~M26 |
Stop/cancel current print |
| 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 |
| Command | Description |
|---|---|
~M104 S<temp> |
Set extruder temperature |
~M140 S<temp> |
Set bed temperature |
| 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.
| 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 |
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.
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.
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.
| 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 |
Implement all printer operations using the G/M code protocol on port 8899.
Use port 8080 endpoint for video streaming only when hardware is present.
Build parsers that handle variations in text-based responses. M119 status strings may have subtle format differences between firmware versions.
Do not use M144/M145 for LED control. Use M146 for safe runtime control without EEPROM wear.
- Always send M602 before disconnecting
- Implement reconnection logic for dropped connections
- Send periodic keep-alive commands (M27) during idle periods
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
1. Send: ~M661
2. Wait for: ok
3. Read data following ok (delimited file list)
4. Parse file paths from response
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
- Previous connection not properly closed
- Another client is connected
- Wait 30 seconds and retry, or power cycle printer
- "Not enough space": Delete files via M661/listing and appropriate delete command
- "File Is Not Available": File size mismatch between M28 and actual data
- Polling interval too short - use 1-2 second intervals
- Connection may have dropped - implement reconnection logic