# AON3D M2+ - BTT Octopus Pro v1.0.1 Conversion

Controller board upgrade from Azteeg X3 to BigTreeTech Octopus Pro v1.0.1 running Klipper firmware.

## Machine Configuration

| Component | Specification |
|-----------|---------------|
| Printer | AON3D M2+ (IDEX) |
| Controller | BTT Octopus Pro v1.0.1 |
| Firmware | Klipper |
| Host | Raspberry Pi 4/5 (FluiddPi) |
| Stepper Drivers | External DM542T |
| Kinematics | Cartesian with Dual Carriage (IDEX) |

## Motor Assignments

| Motor Slot | Axis | Function |
|------------|------|----------|
| MOTOR0 | X | Primary carriage |
| MOTOR1 | X2 | Dual carriage (IDEX) |
| MOTOR2 | Y | Y axis |
| MOTOR3 | Y1 | Y axis (second motor) |
| MOTOR4 | Z | Z axis |
| MOTOR5 | Z1 | Z axis (second motor) |
| MOTOR6 | E0 | Extruder 0 |
| MOTOR7 | E1 | Extruder 1 |

## Build Volume

- X: 450mm (540mm total with dual carriage travel)
- Y: 450mm
- Z: 600mm
- Heated Chamber: Yes (up to 175°C)

## Project Structure

```
AON3D-M2/
├── klipper/
│   ├── printer.cfg      # Main Klipper configuration
│   └── macros.cfg       # G-code macros (IDEX, pause/resume, etc.)
├── original/
│   └── klipper_config/  # Original Azteeg X3 configs (reference)
├── docs/
│   └── wiring.md        # Wiring guide for Octopus Pro
└── README.md
```

## Quick Start

1. **Flash Klipper** to the Octopus Pro (see [docs/wiring.md](docs/wiring.md))

2. **Wire the board** according to the pin assignments in [docs/wiring.md](docs/wiring.md)

3. **Copy config files** to your Pi:
   ```bash
   scp klipper/*.cfg pi@192.168.86.20:~/printer_data/config/
   ```

4. **Update serial port** in `printer.cfg`:
   ```bash
   ssh pi@192.168.86.20
   ls /dev/serial/by-id/*
   # Edit printer.cfg with the correct serial ID
   ```

5. **Restart Klipper** and verify connection

## Key Differences from Original Setup

| Setting | Original (Azteeg X3) | New (Octopus Pro) |
|---------|---------------------|-------------------|
| MCU | ATmega2560 (Arduino) | STM32F446 |
| Pin format | `ar##` aliases | Direct STM32 pins |
| Communication | FTDI USB-Serial | Native USB |
| Voltage reference | 5V ADC | 3.3V ADC |

## Calibration Checklist

After wiring, perform these calibrations:

- [ ] Verify motor directions (invert DIR pins if needed)
- [ ] Check endstop triggering (`QUERY_ENDSTOPS`)
- [ ] Verify thermistor readings at room temperature
- [ ] PID tune extruders: `PID_EXTRUDER` / `PID_EXTRUDER1`
- [ ] PID tune bed: `PID_BED`
- [ ] PID tune chamber: `PID_CHAMBER`
- [ ] Calibrate Z endstop: `Z_ENDSTOP_CALIBRATE`
- [ ] Run bed mesh: `BED_MESH_CALIBRATE`
- [ ] Verify IDEX tool changes: `T0` / `T1`

## Useful Commands

```gcode
T0                    # Switch to extruder 0
T1                    # Switch to extruder 1
CALIBRATE_M2          # Full calibration routine
PID_EXTRUDER TEMP=250 # PID tune extruder at 250°C
PID_BED TEMP=110      # PID tune bed at 110°C
LOAD_FILAMENT         # Load filament
UNLOAD_FILAMENT       # Unload filament
```

## Links

- [Klipper Documentation](https://www.klipper3d.org/)
- [BTT Octopus Pro GitHub](https://github.com/bigtreetech/BIGTREETECH-OCTOPUS-Pro)
- [Klipper Config Reference](https://www.klipper3d.org/Config_Reference.html)
- [IDEX Configuration](https://www.klipper3d.org/Config_Reference.html#dual_carriage)
