Release Note

86Duino Coding 501 – 2026.04

This release introduces the new QEC M02 board, broad board-family expansion across PPC 9″/10.4″/15″ and HMI-043T, new third-party device support in 86EVA, a refreshed 86HMI, additional ArduBlock blocks, and numerous library and firmware updates.


86Duino IDE — Core Updates

New Board Support

  • Added QEC M02 to the board list.
  • Added HMI-043T to the board list (uses the EXm2 CPU).
  • Added PPC 9″, PPC 10.4″, and PPC 15″ board support across the IDE and libraries.

QEC M02 Features

  • Multi-Slot programming: Up to 10 independent program slots can be flashed to a single QEC M02. Each slot has its own independent resource folder, and the M02 automatically detects the external rotary selector position to determine which slot to run.
  • Run/Stop switch support: New qecm02_start(), qecm02_stop(), and qecm02_inStop() weak functions. When the Run/Stop button is pressed, timing functions (millis(), delay(), micros()) automatically subtract the stop-state shift time so elapsed-time logic remains correct.
  • Digital pin naming convention: QEC M02 digital pins are named X00X37 (inputs) and Y00Y37 (outputs).
  • Fast digital I/O access: Added digitalWriteAll() and digitalReadAll(). When GPIO addresses are contiguous, the functions automatically use 16-bit batch read/write for speed; otherwise they fall back to per-port access.
  • Fault indication: M02 flashes a red LED when the user program crashes, giving a clear visual fault signal.
  • External thermistor: CPU temperature on M02 (and M01) is now read from an external thermistor for improved accuracy.
  • A/B board auto-detection: digitalInit() and digitalWrite() automatically detect the M02 A/B hardware revision and select the correct GPIO port.
  • Local digital I/O now supports a 24-IN / 8-OUT mode in addition to the existing modes.

HMI-043T Features

  • Added GP26 pin control for LCD backlight (Japanese customer requirement).
  • Corrected GPIO pin mapping: GP70GP77 now correctly map to digital pins 1–7.
  • Added support for Serial5, Serial6, and the Ethernet library.

Build System & Compilation

  • Rebuilt arduino-builder to fix a link-stage error when the command-line string exceeds 30,000 characters.
  • platform.txt now adds -I{build.path}/sketch so libraries located inside the sketch folder are searched during compilation.
  • Reordered the IDE compile/link sequence to prevent link errors.
  • Added __FlashStringHelper back to WString.h to support the MFRC522 library.
  • USBAPI.h and HardwareSerial.h now include using Stream::setTimeout.
  • CDC.cpp: removed the com_GetDTR() check.
  • MCM.cpp: added EX3 CPU support; when MCM initialization fails, GetMCIRQ() returns 0xff and skips configuration.
  • When the resource folder exists but is empty, programming falls back to the standard flow (no resource bundle).
  • Fixed inability to compile LVGL 9.3.0 assembly code.
  • LVGL86 and upstream LVGL 9.3.0 can now coexist in the same project.
  • Updated LVGL86 bundled examples to work with the new 86HMI.

Runtime

  • Calling delay() or delayMicroseconds() inside setup() now automatically yields to helperYield().
  • Fixed touch-screen coordinate jitter when a USB keyboard is rapidly typed at the same time.

86Duino IDE — Libraries

SD Library

  • Expanded _name internal buffer from 12 to 256 bytes; SD.remove() and SD.open() now work correctly with long file paths.
  • Added FILE_WRITE_TRUNC mode — use fwrite(filename, "w") to create an empty file.
  • Fixed SD.open("/") not honoring setBank() when only the root is specified.
  • Fixed SD.mkdir() missing the drive letter, which prevented directory creation.
  • Fixed automatic const char*char* conversion for the first argument of SD.open().
  • setBank() now also checks whether the SD folder exists on eMMC and creates it automatically if missing.
  • The SD library now reads _brdn.v86 to determine the default bank — QEC-series boards default to the USB flash drive.

LVGL86

  • Added 1280 × 720 resolution support for QEC M02.
  • Added 640 × 480 resolution support for HMI-043T.
  • 86Duino One rendering resolution fixed at 1024 × 600.
  • Refined the DISABLE state so disabled components are visually distinct in color and text.
  • Extended the FileBrowser plugin: _focus method, folder-level focus on back navigation, setFileBrowserFolder(), focusFileBrowserFilePath(), and support for non-root paths and long-text truncation.
  • getFileBrowserFilePath() now accepts an index and returns the file path or folder name.
  • getLine() now returns an empty string when out of range instead of misbehaving.
  • LVGL Console write() now safely skips '\0' bytes.
  • Fixed an image-scaling bug and the long-idle “image disappears” issue.
  • Added support for an external RS232 touchscreen: HDMI displays the screen, RS232 returns the touch coordinates.

EtherCAT (Virtual)

  • VirtualCNC: new gcode(const String &s) overload that accepts a String argument.
  • VirtualServo: new APIs for reading T600 voltage, current, and temperature.

EtherCAT

  • Updated to the 2025-11-18 release.

Ethernet

  • Added IPAddress.cpp / IPAddress.h APIs to align with the ArduinoMDNS library, and updated the Ethernet library to the latest Arduino API.

Modbus

  • Fixed a Modbus ASCII bug.

Motion86

  • First-stage port to the EX2 CPU, supporting QEC7, QEC9, and QEC15.
  • Completed the Custom Machine mechanism; added overridable IoHelper methods and config_Controller_Callback hooks.
  • Added Motion86_Ethercat, providing an EcatMachine plugin class bound to 86EVA, with an attach method that automatically invokes the EtherCAT version of IoHelper.
  • Fixed a large-number overflow bug in planner/stepper calculations.
  • Fixed an issue where the motor’s maximum acceleration could not be set.

RTCZero

  • Fixed an issue where checking the UIP field could cause overall program lag.

SCoop & _Helper

  • Added the ability to measure how many times a Task runs per second.

Built-in Libraries

  • Added RBDL2 as a built-in library, including headers and the pre-built .a archive.
  • Eigen: added to the DJGPP toolchain; resolved Arduino min / max macro conflicts via NOMINMAX; WString.h‘s F() macro no longer conflicts with Eigen; Macros.h and MathFunctions.h modified for the Arduino environment.

86Duino IDE — Toolchain

  • Java JRE updated from 1.8.0_231 to 1.8.0_461.
  • v86dude.exe: fixed transfer issues on EX2 and increased transfer speed.
  • USB Device: HMI-043T can flash HMI resources through the current bootloader on EX CPUs; the USB ON/OFF pin is now configurable rather than fixed.
  • EX bootloader: fixed boot failure after flashing the bootloader on 86Duino Zero / One / EduCake / AI (the previously bundled bootloader was out of date).

86Duino IDE — LDmicro Plug-In

  • Initial integration of the LDmicro plug-in; GPIO can be dragged in to control local digital I/O on QEC M02.
  • Opening LDmicro now sends the selected board name to LDmicro.exe.
  • LDmicro.exe ships as a release build and includes the three required DLLs.
  • Added convenience options: “Disable LDmicro auto-save”, “Auto-open if a save file exists”, and “Auto-close after generating Arduino code”.

86Duino IDE — Project Protection

  • When a built-in example is opened in the IDE, the 86HMI, ArduBlock, LDmicro, and 86EVA buttons remain disabled until the project is saved under a new name, preventing accidental modification of the examples.

Bootloader

  • A/B partitions updated to FreeDOS 1.3.
  • Added the CREATE_SLOT command, which automatically creates slot folders and corrects the UIRPATH.
  • Updated deltree parameters to match FreeDOS 1.3.
  • Programming progress bar changed from a horizontal bar to an ArcBar, with size and percentage-text sizing adjusted automatically based on the board model.

Firmware

  • MP3S firmware updated to v1.11.
  • MV3S firmware updated to v1.06.
  • T600 firmware updated to v1.04.

86EVA

FOE (Firmware-over-EtherCAT)

  • Added FOE: detects attached firmware, checks the version, and conditionally shows an “Update” button.
  • Firmware flashing works correctly even when the project is located under a Chinese-character folder path.
  • After a successful flash, the UI automatically returns to the main screen and blocks re-entry to the device page.
  • Whenever an incorrect tool-firmware version is detected, an “Exit” button is shown.

L-Board Firmware Flashing

  • Added MV3S L-board firmware flashing.
  • Expanded L-board firmware coverage to all DIO / AIO / CIO devices.
  • DIO / AIO / CIO L-board firmware is hidden by default to prevent accidental misuse.

Device & Board Support

  • QEC M02, PPC 9″, PPC 10.4″, PPC 15″.
  • Added Beckhoff EL1889 and EL2889; refreshed product images for EK1814, EL2008, and EL3008.
  • Added EtherCAT HUB support, including display of the corresponding AX58100 network port number.
  • Added Delta R1EC5500D0E and R1EC5621D0.
  • Added MOONS M56S.
  • Added Oriental Motor EtherCAT AC motor driver AZD4A-KED.
  • Added QEC-R11HU8S, QEC-R00HU8S, QEC-R11CT0U, and several other QEC-R models.
  • Added R11MV6S 6-axis motor controller (G-code mode only).
  • Added third-party machine support for NPM and Ezi.

EEPROM Detection

  • Added detection for empty slave EEPROMs, prompting the user when a device has not yet had its SII EEPROM written.

Code Generation

  • Generates QECmcp21.js.
  • Old QECmcp**.js files are deleted before new generation to avoid stale residue.
  • Scanned object-pointer arrays moved from local to global scope.
  • setIntegerDataPin now handles the CIQ type.
  • myeva.cpp now generates the Virtual-series object-pointer arrays.

UI Improvements

  • When Master is configured for DC, a callback function is generated automatically and EtherCAT SYNC mode is enabled.
  • MP3S UI: removed Max Acc/Dec; “Max Velocity” renamed to “Max Motor Speed”.
  • Other motor-brand UIs: removed Max Velocity, Max Acc, and Max Dec.
  • Encoder UI: added Encoder Count and Position Feedback computed fields (Scale / Offset). The encoder-to-motor mapping can now be changed, and the corresponding Encoder Label updates accordingly.
  • G-code mode: added a MaxError field for 3-axis lost-step compensation.
  • CiA402 mode: each axis can now individually select its speed unit (pulses/sec or rpm).
  • Fixed missing Advance entries and voltage/current readings on PPC 9″.
  • Fixed firmware-tool update failures on PPC 10.4″ and PPC 15″.
  • Fixed R11ACSS inability to configure Virtual Pins or modify remote voltage.
  • Corrected the tooltip typo “coonect” → “connect”.
  • Fixed incorrect CIQ digital-pin configuration count.
  • MV6S: fixed returning -1 when scanning extremely large double values; axis names changed from UVW to ABC.

86HMI

Board Support

  • HMI-043T is now a production-supported control board.

Bug Fixes

  • Fixed empty folders being created on import.
  • Fixed a paste-object bug.
  • Fixed incorrect ordering of audioInit / audioLoad.
  • Preview now plays at the original sample rate to avoid stutter caused by 22 kHz conversion.
  • Fixed a crash when closing the window during playback.
  • Fixed bugs in setBarValue, setImageBarValue, setSliderValue, setImageSliderValue, and setArcBarValue.
  • Fixed the decimal-display behavior of setNumberInputValue.
  • Fixed image content disappearing when 86HMI is reopened.
  • Directory deletion now clears the read-only attribute and retries multiple times.
  • Button and ToggleButton symbols are no longer offset when no text is present.

Theme & Components

  • Theme updated so disabled components are visually distinct.
  • Extended selection APIs: setListSelectedItem, setDropDownListSelectedItem, and setRollerSelectedItem.
  • ProcessingBox is now asynchronous, so the progress bar feels real-time.
  • Audio default output changed to 48 kHz.
  • Sound resources are transcoded with ffmpeg to MP3 / WAV at 22 kHz on import, with a progress bar during import.

New Features

  • Added getButtonState and getImageButtonState.
  • Added a console component.
  • Supports QEC M02, PPC 9″, and PPC 10.4″ display resolutions.
  • Fixed missing fonts and images when the project path contains Chinese characters.

ArduBlock

UX

  • Holding Ctrl now moves a single block instead of the entire stack below it.

New Blocks

  • RTC block for retrieving year / month / day / hour / minute / second — used in most public demos.
  • HMI array blocks.
  • Production Modbus blocks.
  • CiA402 “get current position” block.
  • getCurrentPageNumber() and consolePrint() blocks, with a new Console icon.

Behavior Changes

  • When an EtherCAT block is used, an empty callback is always generated; the user fills it in if needed.
  • Fixed a bug in CNC mode where the “get current angle” block generated an extra ;\n.

Project Protection

  • When the project file is read-only, the SAVE, OPEN, and CODEGEN buttons are disabled.

Character Blocks

  • Fixed character blocks being converted to strings after code generation.
  • Character blocks chained together now automatically concatenate into a string.


86Duino Coding 500 – 2024.06.08

Update of the Arduino IDE from Version 1.8.9 to 1.8.19

  1. Theme Color Optimization: The theme colors have been optimized to use softer colors.
  2. Theme Font Optimization: The theme fonts have been optimized to use more suitable fonts and colors.
  3. Serial Monitor Update: Added a new 3000000 Baudrate option.
  4. Programmer Update: Updated the programmer (v86dude.exe) to support more necessary programming commands and to handle PL2303 pin operations.
  5. New QEC Series (with Vortex86EX2 CPU) Boards Added:
    • QEC M01
    • QEC M043T
    • QEC M070T
    • QEC M090T
    • QEC M150T
  6. Help and Example Menu Updates: The items displayed in the Help and Example menus will vary depending on the selected board.
  7. New Features for QEC Series Products.

Plugins and Tools

  1. 86HMI – Visual Human-Machine Interface Editing Tool (Beginner-Friendly):
    • Draw QEC UI interaction interface in a 1:1 screen ratio.
    • Full support for QEC M043T, M070T, M090T, M150T.
    • 33 types of UI components with necessary parameter settings.
    • Allows loading of custom images, sounds, fonts, etc.
    • Two theme styles available, customizable theme styles.
    • Automatically generates code in the IDE without writing any drawing code.
  2. 86EVA – Visual EtherCAT Configuration Tool (Beginner-Friendly):
    • Implements low-threshold EtherCAT operation using the concept of Virtual Arduino.
    • QEC Slave online position swapping; does not require reconfiguration after removal, the original program continues to work.
    • Automatically generates Arduino-style code.
    • Automatically generates GPT descriptive statements, allowing users to generate required code with ChatGPT assistance. (ArduBlock and GPT can only choose one).
  3. ArduBlock – Drag-and-Drop Block Programming (Beginner-Friendly):
    • Corresponds to 86HMI, EtherCAT functions, and provides basic Arduino functions (digitalWrite, analogWrite, etc.).
    • Fully provides 86HMI component blocks, implementing interactive behavior after components are triggered.
    • Provides QEC EtherCAT specific blocks, allowing completion of EtherCAT programs on QEC without writing any code, using 86EVA.
    • One-click generation and upload of programs.
  4. Resource File Upload Function: Uploads all files in the resource folder of the 86Duino project.
  5. Resource File Download Function: Downloads all files in the resource folder from the QEC machine (this function can be disabled in the Bootloader, enabled by default).
  6. QEC Reboot Function: Reboots QEC online (software reset), no need to manually toggle QEC power.

Firmware Package Programming

  1. Automatic Multi-Firmware and Tool Programming: Includes EtherCAT, 86EVA firmware tools, Bootloader Menu firmware tools, etc. Future IDE versions can update all firmware and tools on the QEC Master with this button (update time varies by model).
  2. One-Click Program and Resource Package Programming: During the programming process, if 86HMI resource files or 86EVA configuration files are detected, they will be automatically included.

Additional Features

  1. Three New Shortcut Buttons: Added to the top right corner, corresponding to 86HMI, 86EVA, ArduBlock, hidden when a non-QEC board is selected.
  2. New Libraries:
    • EtherCAT – EtherCAT Master library providing complete API needed for EtherCAT, suitable for basic developers.
    • SCoop – Cooperative multitasking library for writing multitasking programs in the Arduino environment.
    • FRAM – FRAM library for non-volatile data read/write similar to EEPROM.
    • MySQL
    • LVGL86 – 86HMI underlying library to assist in drawing QEC UI screens.

Bootloader Updates

  1. New Commands: Upload executable files + resource files, upload firmware packages, corresponding to the new programming functions in the IDE.
  2. Load Balance Programming Support: Enhances the number of programming cycles within the limited disk overwrite life.
  3. Automatic Disk Formatting and Recovery: Supports automatic disk formatting and work environment recovery upon disk damage.
  4. Built-in Menu on QEC M070T, QEC M090T, QEC M150T (Enter by pressing the top left corner of the screen):
    • Set Bootloader password, User App password, enable/disable IDE upload program function, enable/disable resource download function, providing data security for developers.
    • Real-time touchscreen calibration.
    • Set QEC display time.
    • Launch the built-in 86EVA program, scan QEC EtherCAT Slave devices, complete configuration file modifications/settings.
    • Modify/set EtherCAT Redundancy, CycleTime (without entering the BIOS menu).

BIOS Update

  1. EtherCAT Redundancy and CycleTime Settings: Support adjustments for these settings.

For the complete technical changelog and downloads, visit 86Duino.com. For technical inquiries, contact info@86duino.com or info@qec.tw.

Scroll to Top