Embedded Systems · ESP8266 · 9-Bit SPI
PURPLNOVA
← Projects
Open Source
MALYANLINK
ESP8266EX · ILI9488 · Custom 9-Bit SPI · Recycled Hardware
C++ 68% Python 32%
GitHub — temporarily offline

The ILI9488 modules found in Malyan M300/M320 printer UI boards don't use standard 4-wire SPI — they lack a D/C pin and require a 9th bit per byte to distinguish commands from data. No standard library handles this. MalyanLink solves it with a custom bit-banging driver using direct ESP8266 register access (GPOS/GPOC) for high-speed updates. On top: real-time PC telemetry over UDP, hardware volume control via the board's physical buttons — all running on the recycled printer PCB without a single new component.

The Technical Challenge

Standard SPI uses a separate D/C (Data/Command) pin to tell the display whether an incoming byte is a command or pixel data. The ILI9488 on these boards encodes that information as the 9th bit of every SPI transfer instead. Arduino's hardware SPI is 8-bit only. The solution: bit-bang every bit manually using direct register writes (GPOS to set high, GPOC to set low) — fast enough to avoid visible lag on the display.

Hardware Pinout

SignalESP8266 GPIOMalyan PCB Label
CS15LCD_CS
RST2LCD_RST
MOSI13LCD_SDI
CLK14LCD_SCK
VOL_DN4BTN_1
VOL_UP5BTN_2

Features

Installation

  1. Flash firmware from /Firmware to your ESP8266
  2. Install Python dependencies: pip install psutil pycaw comtypes
  3. Run python MalyanLink_Host.py on your PC

What Came Next

MalyanLink proved the hardware works. The next step was putting that same ESP8266EX back to work as a proper printer interface — see MalyanLink Bridge.

License

MIT License — Developed by PURPLNOVA