Reflash a stock supermarket shelf tag to push your own images over BLE
Drive RTL-based e-paper tags from a Home Assistant OpenEPaperLink integration
Build a hobbyist e-paper signage setup using cheap surplus price tags
Needs arm-none-eabi-gcc toolchain plus physical UART wiring and manual DL-to-ground pulldown or a DTR/RTS auto-reset circuit on the tag.
ATC_RTL_BLE_OEPL is custom firmware for two specific Realtek chips, the RTL8762ESL and the RTL8752HJL. These chips are found inside small battery powered electronic shelf labels, the kind of tiny e-paper price tags used in supermarkets. The stock firmware on those tags only talks to the manufacturer's own access point. This project replaces that firmware so the tags will instead join an open source ecosystem called OpenEPaperLink (OEPL), letting a hobbyist push their own images to them. The firmware supports the OEPL protocol over two different radios. One build talks Bluetooth Low Energy. A second build, kept in a folder with a "ZB" prefix, talks IEEE 802.15.4. The README is careful to say this is not standard Zigbee even though the chip's SDK calls the radio Zigbee. It uses a custom OEPL 802.15.4 protocol and will not work with a normal Zigbee coordinator. The feature list says it can receive raw 1 bit per pixel and 2 bit per pixel images (the second covers black, white, red, and yellow tags) and also accepts ZLIB compressed images for faster transmission. The external SPI flash chip is used to hold up to five images in different slots, so the access point does not have to resend an image every refresh. Over the air firmware updates over BLE are supported, the chip is put into Deep Sleep between updates to save battery, and the current battery voltage is sent back to the access point each time. Two specific tags have been verified: the 3.5 inch ELM35R2C4P (224 by 480 pixels, four color) running on the RTL8752HJL chip, and the 5.85 inch ELO58R2CRN (272 by 792 pixels, three color) running on the RTL8762ESL chip. Building the firmware needs the arm-none-eabi-gcc toolchain, GNU make, and Python 3 with pyserial. The build is a normal make inside the chosen project's gcc folder. Flashing is done over a USB to UART adapter wired to the tag's TX, RX, DL, RST, and 3.3V pads, either by manually pulling the DL pin to ground or by using a DTR and RTS auto reset circuit. Once flashed, the tag can be driven by an OEPL access point, a Home Assistant integration, or a small web upload page hosted on GitHub Pages.
Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.