Custom BLE firmware for Hanshow E-Paper Shelf Labels / Price Tags using the TLSR8359 ARM SOC
As BLE can be enabled on the Telink TLSR8359 so i decided to make a custom firmware instead of reversing the stock firmware and its 2.4Ghz RF Protocol
This repo is made together with this explanation video:(click on it)
WebSerial Firmware flasher Tool: https://atc1441.github.io/ATC_TLSR_Paper_UART_Flasher.html
WebBluetooth Image Uploader: https://atc1441.github.io/ATC_TLSR_Paper_Image_Upload.html
Alternative Image sending using a screen manager where you can connect APIs like weather or G. Calendar https://cale.es
WebBluetooth Firmware OTA Flashing: https://atc1441.github.io/ATC_TLSR_Paper_OTA_writing.html
Python needs to be installed
To compile under windows navigate with a command prompt to the "Firmware" folder
Enter "makeit.exe" and wait till the Compiling is done.
Navigate with a Terminal into the "Firmware" Folder
Enter "make" and wait till the Compiling is done.
Open the Compiled .bin firmware with the WebSerial Flasher and write it to Flash.
On first Connection it is needed to Unlock the flash of the TLSR8359
The e-ink panel used in this ESL is 250 by 122 pixels, black and white (no gray levels...yet).
Larry Bank added his OneBitDisplay and TIFF_G4 libraries to make it easy to generate text and graphics. For anyone wanting to write directly to the display buffer, the memory is laid out like a typical 1-bpp bitmap except that it is rotated 90 degrees clockwise. In other words, the display is really 122 wide by 250 tall, but laying on its side. Each byte contains 8 pixels with the most significant bit on the left. Black is 0 and white is 1. Each row of 122 pixels uses 16 bytes. Here is an example function to set a pixel given the x,y of the orientation (portrait) that the display is used:
void SetPixel(int x, int y, uint8_t *pDisplayBuffer)
{
uint8_t *d = &pDisplayBuffer[(y >> 3) + (249-x)*16];
*d &= ~(0x80 >> (y & 7)); // set pixel to black
}