Wanhao Duplicator i3 Plus 3D Printer

Everything (almost) I know about the Wanhao Duplicator i3 Plus 3D printer and its clones.

Wanhao Duplicator i3 Plus 3D Printer

Note: Wanhao has released (in February) a new flavor of the Wanhao Duplicator i3 Plus (Mark II). I will update this document with the information I know about this new printer. Do not hesitate to send me the information you have if you are the owner of a Mark II,

Everything I know about the Wanhao Duplicator i3 Plus 3D printer and its clones.


I am not affiliated, associated, authorized, endorsed by, or in any way officially connected with Wanaho, or any of its subsidiaries or its affiliates.

USE THESE INFORMATION AT YOUR OWN RISK. I am not responsible for any damage done to your printer or LCD when using these information. I hope you find them useful, I try to make as accurate as possible but they may contain mistakes.


The Wanhao Duplicator i3 Plus 3D printer (and its clones: Monoprice Maker Select Plus, Cocoon Create,...) is manufactured by Wanhao, a Chinese company in the town of Jinhua. It is sold by several resellers like Ultimate 3D Printing Store in the US, 3D Prima in Europe, but also Amazon, etc.

Like several 3D printers, it is a derivative on the Reprap Prusa i3 but several enhancement including a LCD touch screen.

In this document, I will try to describe everything I know about this 3D printer, regarding hardware and software. Do not expect a review or guides to do this or that. This document is about technical details, deep details.


LCD Touch screen

The LCD panel is manufactured by AMP Display Inc. and uses Mini DGUS (DWIN Graphic User System) developed by DWIN Technologies.

There are currently (at least) two different models of LCD panel:

The LCD panel has the following characteristics and components:

  • 4.3 inches
  • resolution of 480 x 272 pixels
  • 65536 colors
  • Power voltage: 5V (typical)
  • Between 240 mA and 100 mA (backlight off)
  • 2 serial ports (8N1, 3.3V, TTL/CMOS):
    • 1 connector 10 pins FFC 1.0 mm
    • 1 connector 4 pins FFC 1.0 mm (only for DMT48270M043_05W)
  • 1 microSD slot
  • 1 buzzer
  • 1 RTC (real-time clock)

There are differences between the two LCD panels. In particular:

Panel Graph Channels
DMT48270M043_05WT 4
DMT48270M043_02WT 2

For complete characteristics, look at the datasheets. On the board, it is possible to read the name of some chips:

The name of other chips has been intentionally erased, probably to protect the Intellectual Property.

On of the serial connector (with 10 pins) is used to communicate with the Wanhao i3 Plus main board.

The pinout is the following:

Pin # Description Pin # Description
2 GND 7 not used
3 GND 8 +5V
4 not used 9 +5V
5 TXD 10 +5V

The cable is a standard 1.0 mm pitch flat flexible (FFC) jumper cable. I buy some from a local reseller, manufactured by Wurth Elektronik.


Contrary to previous versions of Wanhao i3 printers (that were using a Melzi board), the Wanhao i3 Plus has a custom mainboard. The only reference on the board itself is a "V5.1".

It runs an Atmel ATMEGA2560-16AU microcontroller. It is thus the equivalent of an Arduino Mega 2560 clone.

Some of the components of the motherboard are the following:

  • Atmel ATMEGA2560-16AU, a microcontroller
  • WCH CH340G, a cheap USB-to-Serial bridge
  • a USB Type B connector
  • TI LMV358, a Low-Voltage (Rail-to-Rail) Amplifiers
  • NXP 74HC4050D, a level shifter
  • a 10 pins serial connector FFC 1.0 mm (connected to the LCD Touch Screen)
  • a SD card slot
  • a 16 pins IDC connector (connected to the Interface Board)
  • 4 3-wire JST XHP connector (to connect X, Y, Z1 and Z2 motors)
  • 3 2-wire JST XHP connector (to connect the Y-min and Z-min end-stops and the heated bed thermistor)
  • 1 3-wire (or 2-wire, not sure) unheaded JST XHP connector labelled "Z-probe". See below
  • 1 10-wire unheaded IDC connector labeled "Ext". See below
  • 1 6-wire headed IDC connector without label. It is the ISP/SPI connector. See below

Atmel ATMEGA2560

The following table describes how the Atlmel MEGA2560 microcontroller is used and the corresponding definitions in the Marlin firmware:

WARNING: I am not 100% sure of MEGA2560 pins. The information is deduced from the fastio_1280.h file.

Arduino Pin MEGA2560 Description Marlin
1 PF1 / ADC1 Heater temperature TEMP_0_PIN
2 PF2 / ADC2 EXT connector -
3 PE5 / PWM3 Heated bed Pin HEATER_BED_PIN
4 PG5 / PWM4 Heater Pin HEATER_0_PIN
13 PB7 / PWM13 Onboard LED LED_PIN
14 PK6 / ADC14 Bed temperature TEMP_BED_PIN
23 PA1 / AD1 Z endstop Z_MIN_PIN
24 PA2 / AD2 Y endstop Y_MIN_PIN
25 PA3 / AD3 Z-Probe connector Z_MAX_PIN
32 PC5/ A13 EXT connector Pin #7 -
33 PC4 / A12 EXT connector Pin #8 -
34 PC3 / A11 EXT connector Pin #5 -
35 PC2 / A10 EXT connector Pin #6 -
36 PC1 / A9 EXT connector Pin #3 -
37 PC0 / A8 EXT connector Pin #4 -
40 PG1 / !RD EXT connector Pin #1 -
RESET RESET SPI connector Pin #4 -
50 PB3 / MISO SPI connector Pin #6 -
51 PB2 / MOSI SPI connector Pin #2 -
52 PB1 / SCK SPI connector Pin #5 -
53 PB0 / SS SD card SS (Select Signal) SDSS
54 PF0 / A0 X endstop X_STOP_PIN
57 PF3 / A3 E Stepper Motor / Enable Pin E0_ENABLE_PIN
58 PF4 / A4 E Stepper Motor / Step Pin E0_STEP_PIN
59 PF5 / A5 E Stepper Motor / Direction Pin E0_DIR_PIN
60 PF6 / A6 X Stepper Motor / Enable Pin X_ENABLE_PIN
61 PF7 / A7 X Stepper Motor / Step Pin X_STEP_PIN
62 PK0 / A8 X Stepper Motor / Direction Pin X_DIR_PIN
63 PK1 / A9 Y Stepper Motor / Enable Pin Y_ENABLE_PIN
64 PK2 / A10 Y Stepper Motor / Step Pin Y_STEP_PIN
65 PK3 / A11 Y Stepper Motor / Direction Pin Y_DIR_PIN
66 PK4 / A12 Z Stepper Motor / Enable Pin Z_ENABLE_PIN
67 PK5 / A13 Z Stepper Motor / Step Pin Z_STEP_PIN
69 PK7 / A15 Z Stepper Motor / Direction Pin Z_DIR_PIN

Z-probe connector

Pin ATMEGA2560 Pin Arduino
1 24V or 5V -
2 75 / PA3 (AD3) 25
3 GND -

Pin #1 (24V or 5V) is selected by one of the two jumpers near it: 24V if there is a jumper in the second position (default), 5V if there is a jumper in the first position.

Y-endstop, Z-endstop and Bed temperature connectors


Pin ATMEGA2560 Pin Arduino
1 GND -
2 76 / PA2 (AD2) 24


Pin ATMEGA2560 Pin Arduino
1 GND -
2 76 / PA1 (AD1) 23

Bed temperature

Pin ATMEGA2560 Pin Arduino
1 GND -
2 83 / PK6 (ADC14) 14

SPI connector

Serial Peripheral Interface (SPI) is a synchronous serial data protocol used by microcontrollers for communicating with one or more peripheral devices quickly over short distances. The pinout is the following:

WARNING: Contrary to what I wrote previousl, it is the same pinout than for the Arduino

Pin ATMEGA2560 Pin Arduino Pin ATMEGA2560 Pin Arduino Pin ATMEGA2560 Pin Arduino
5 30 / !RESET RESET 3 20 / PB1 (SCK) 52 1 22 / PB3 (MISO) 50
6 GND - 4 21 / PB2 (MOSI) 51 2 VCC

EXT connector

The pinout is the following:

Pin ATMEGA2560 Pin Arduino Pin ATMEGA2560 Pin Arduino
1 52 / PG1 (!RD) 40 6 55 / PC2 (A10) 35
2 95 / PF2 (A2) 2 7 58 / PC5 (A13) 32
3 54 / PC1 (A9) 36 8 57 / PC4 (A12) 33
4 53 / PC0 (A8) 37 9 GND -
5 56 / PC3 (A11) 34 10 VCC -

Interface Board

This board is in the back of the printer and is connected to the mainboard by a 16 pins IDC connector.

IMPORTANT: The diagram published previously was wrong.

The pinout of the 16 pins IDC connector is the following:

Pin Connected to Pin Connected to
1-4 Heater - 5-8 Heater +
9,11,13,15 E-motor
10 PWM Fan - 12 Temp +
14 X-min + 16 GND

Power Supply (PSU)

It is a MEAN WELL LRS-200-24, 24V 8.8A, 115 Vac or 230 Vac.

Be careful, the input voltage (115 or 230 V) is selected by a switch, it is not automatic.

Stepper Motors

WANRING: Your motors can differ slightly.

Axis Motor Current
X C17HD40102-01N 1.02 A
Y C17HD40102-01N 1.02 A
Z C17HD6039-06N 0.39 A
E C17HD40102-01N 1.02 A

Microstepping Drivers

The drivers (hidden by heatsinks) are Allegro Microsystems A4988ET. The datasheet is available on the web site of the constructor.


The are two fans. Both are 24 V DC brushless fans: AAA HZHZ 4010MS DC24V 0.10A:

  • One is always on (on the left side of the extruder)
  • One is controlled by the mainboard and used to cool down printed parts

WARNING: The orientation of the cable is switched.


  • MK10 extruder.
  • 100k NTC 3950 HEX thermistor, JST XHP connector (Marlin Firmware TEMP SENSOR # 1)
  • 40W Heating core 24V

Heated bed

  • MK3
  • Aluminum Plate
  • 12 / 24 V (24 V for the Wanhao i3 Plus)
  • Max Temperature: 180 degree Celsius WARNING: This is unconfirmed
  • 100k NTC 3950 HEX thermistor, JST XHP connector


LCD Touch Screen

The LCD Touch Screen is build around the proprietary K600+ kernel and simplifies the development of user interfaces: the different screens are defined by a set of files (images, fonts, etc) stored in the flash memory of the panel and they can be customized using a graphical editor (part of DGUS SDK).

The LDC panel has thus two distinct software components:

  • A firmware, made by DWIN Technologies.
  • A set of resources, made by the manufacturer of the 3D printer (Wanhao, Monoprice, Coccon) or yourself. This component is often called "LCD firmware" even if it is wrong.

LCD resources

The images have the following format:

  • BMP (Windows 3.x Bitmap)
  • 480 x 272
  • 24 bits per pixel (3 x 8 bits, no alpha)
  • Bottom-up bitmap

The last point is very important. The LCD (i.e. DGUS) is not able to handle other formats like top-down bitmaps. To convert images to the right format, you can use ImageMagick convert:

convert 180.bmp -resize 480x272 BMP3:180.bmp

To convert all images:

for f in *.bmp; do convert "$f" -resize 480x272 BMP3:"$f"; done

Designing screens

The DGUS SDK includes tools to help you design LCD screens:


LCD resources can be flashed by inserting a microSD card into the slot of the screen.

IMPORTANT: You have to use a microSD card with a maximum capacity of 8GiB. If you use a microSD card with a greater capacity, the results are unreliable (sometimes it flashes, sometimes not). This is a limitation of the LCD display itself.

The microSD card has to be formatted with the following parameters: FAT32, 4096 bytes per cluster (i.e. 8 sectors). To format under Linux (and macOS with the dosfstools Homebrew package):

mkfs.fat -F 32 -n SD -s 8 -v /dev/disk2

Of course, replace /dev/disk2 with the right value.

To format under Windows (Command Prompt):

format G: /FS:FAT32 /V:LCD /A:4096 

Of course, replace G: with the right volume letter.


Wanhao fork

Based on the Marlin GitHub history and the sources published by Wanhao (for version 2.1.8), the Wanhao i3 Plus fork is based on the commit ac74f45 (February 9, 2014) in the Marlin history and the fork for the MakerLab Maker. After this point, the sources have diverged and were never merged back into the Marlin history.

The following files are changed (changes in comments are ignored):

  • Configuration.h
  • Configuration_adv.h
  • DOGMbitmaps.h
  • dogm_font_data_marlin.h
  • dogm_lcd_implementation.h
  • Marlin.h
  • MarlinBTSerial.h
  • MarlinBTSerial.cpp
  • Marlin_main.cpp
  • pins.h
  • ultralcd.cpp
  • ultralcd.h

The changes are the following:

  • Hardware parameters specific to this printer
  • Support of the Chinese language (in this fork, it is assigned the identifier 10 which conflicts with the official Marlin sources)
  • Support of the so called Mini LCD
  • Support of a second serial line (for the LCD). MarlinBTSerial.h and MarlinBTSerial.cpp are apparently taken from this project: Marlin3Serial.
  • The project was edited and compiled with Visual Micro, an add on for Visual Studio to handle Arduino projects

Most of the changes (such as for the second serial line or the Mini LCD) have nothing to do with the Wanhao i3 Plus, but deals with MakerLab Maker printer.