ESL Reverse Engineering

Pricer ESL tags with custom images.

Project Description

What originally started as a bet by a friend has led me into a deep dive on how electronic shelf labels(ESL) work, how to communicate with their specific protocols, and eventually how to get them to display custom images.

The first focus was on Pricer ESLs. I found Furrtek's reverse engineering research on this matter, and saw that these digital price tags work over IR. The firmware supports a 16 bit key for "security" reasons, but every tag I've come across has the default key of 0.

I tried to create my own flasher with hardware I had laying around(arduino, IR leds, bluetooth transmitter) as per an opensource project called PricehaxBT. I found the 1.25 MHz communication signal to be a bit too difficult for my hardware to maintain, resulting in failed transmissions on more complicated images that took longer to be transmitted over to the ESL. I even created a custom dithering algorithm to lessen the complexity of the images transmitted(TODO: Add example of custom ordered dithering image), but that was just a stopgap until I'd resolve that issue.

The fix was to just purchase known good hardware that works reliably. I found Furrtek created and sold their own USB IR flasher that talks over serial and can reliably transmit at the correct timing to send complex images over. This now lets me control each individual pixel on the E-Ink panel without needing to worry about transmission length or custom dithering.

The python script wasn't the simplest to set up and use, especially if I wanted to flash a bunch of tags at once. I converted their python code that handles image conversion and transmission to javascript, and created some decent image generator and transmitter tools that let you scale adjust your image to fit each ESL tag, with the page links listed below. I also am working on a WIP tool that works with other certain ESL tags that communicate over bluetooth, so there's no custom usb dongle required to flash them.

I also purchased a Zebra TC-51 to have an android device with a functional barcode scanner that'll make it easier to scan the serial/barcode on these devices. I modified Furrtek's Android app to remove the camera barcode scanner code(which caused the app to crash on my older Android devices anyways) and have used it with a usb adapter to work with their ESL Blaster USB dongle.

Custom web based image generators and transmitter pages

Links