Notes and reverse-engineering findings about the RT809H universal programmer (the hardware used to read/write eMMC, SPI NOR, NAND, and EEPROM chips — commonly used by TV/phone repair technicians).
This is not a driver replacement, an official tool, or a clone of RT809H's device database. It's a running log of what's been confirmed about how the official Windows software talks to the hardware, gathered while exploring the feasibility of a Linux-native tool for the same programmer.
The official RT809H.exe software runs correctly under Wine 9.0 on Linux
Mint 22.2 (Ubuntu 24.04 base). Confirmed by successfully reading a full eMMC
dump from a real TV mainboard through a physical RT809H programmer connected
via USB — no crashes, no missing driver errors.
Static analysis of RT809H.exe (17MB, packed/obfuscated — ~27,000 strings,
no readable device identifiers) shows it statically imports FTD2XX.dll and
specifically uses:
FT_SetBitMode/FT_GetBitModeFT_Write/FT_Read
(confirmed via objdump -p against the ordinal-mapped export table of the
bundled ftd2xx.dll).
This means the RT809H hardware is an FTDI chip running in bit-bang mode —
the software directly writes/reads individual GPIO pin states as raw bytes
over the FTDI interface. FTDI bit-bang mode is publicly documented (FTDI
Application Note AN232R-01), and libftdi
(open source, Linux) speaks the same wire protocol as the closed-source
FTD2XX.dll.
Confirmed working setup: Wine 9.0, Linux Mint 22.2 (Ubuntu 24.04 base).
Copy the official RT809H software folder as-is into a Wine prefix (32-bit,
since RT809H.exe is a 32-bit Windows app) — RT809H.exe, its bundled
FTD2XX.dll, and the LIB/ folder of .DAT algorithm files all need to
stay together in the same directory, exactly as they ship from the vendor.
No installer is required; it runs directly from the folder.
The RT809H programmer identifies on USB as vendor 0403 / product 6010
(an FTDI FT2232-series dual-channel chip). By default, Linux's kernel
ftdi_sio driver claims this device automatically and exposes it as a
serial (/dev/ttyUSB*) port — but FTD2XX.dll (running under Wine) needs
raw, exclusive USB access instead, so the kernel driver has to be kept off
the device, and the device node itself needs to be readable/writable by a
normal user (not just root).
Create /etc/udev/rules.d/99-rt809h.rules:
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="0666"
SUBSYSTEM=="usb", DRIVER=="ftdi_sio", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", RUN+="/bin/sh -c 'echo $kernel > /sys/bus/usb/drivers/ftdi_sio/unbind'"
- Line 1 makes the raw USB device world-accessible (
0666), so libusb can open it without root. - Line 2 fires whenever the kernel's
ftdi_siodriver binds to this specific VID:PID and immediately unbinds it, so it doesn't hold the device before Wine gets a chance to claim it.
Apply it:
sudo udevadm control --reload-rules
sudo udevadm trigger
Then unplug and replug the RT809H (or power-cycle it) so the new rule applies to a fresh device attach.
wine RT809H.exe
launched from inside the software's folder. With the device plugged in and the udev rule applied, the software detects the programmer and can read/write chips normally — confirmed end-to-end by reading a full eMMC dump from a real TV mainboard.
LIB/ALGO_EMMC*.DAT(8 variants: 1BIT / 4BIT / ISP / BOOT_ISP / 1.8V / SYNC / SYNC_2 / MST_DEBUG_ON) — the first 644 bytes are a shared header, everything after that is encrypted (>60% byte-level difference even between the 1BIT and 4BIT variants). Not readable bytecode; cracking this would require reversing theRT809H.exeloader itself — not attempted, and not the goal here.DEVICE.INIis not the main eMMC device database — it's a template for community-contributed SPI NOR flash chip definitions.
The eventual goal (separate, ongoing project) is a Linux-native, open tool for reading/writing eMMC chips in-circuit, built around an ESP32-S3's hardware SDMMC peripheral rather than reverse-engineered RT809H hardware — this repo just documents what was learned about the RT809H side along the way, in case it's useful to others.
Findings documented here are shared as-is for reference. No RT809H
proprietary code, device database, or encrypted .DAT content is included
or reproduced in this repository.