atc1441 / atc_tlsr_paper Goto Github PK
View Code? Open in Web Editor NEWCustom BLE firmware for Hanshow E-Paper Shelf Labels / Price Tags
Custom BLE firmware for Hanshow E-Paper Shelf Labels / Price Tags
I did a successful (I believe) flash of a Stellar-M3N@ E31HA, after flashing it shows up as ATC_DF2C2C and I can pair in it a browser.
When trying to upload an image I get this error:
14:20:46 : Connecting to: ATC_DF2C2C
ATC_TLSR_Paper_Image_Upload.html:130 > Found GATT server
ATC_TLSR_Paper_Image_Upload.html:32 DOMException: No Services matching UUID 13187b10-eba9-a3ba-044e-83d3217d9a38 found in Device
Probing the thing with gatttool I got a bunch of different UUIDs but nothing similar to the missing one.
If anyone here has some pointers for me I'd be very thankful.
Hi,
I'm debugging the Hanshow Nebular 350R-N. I know that this model isn't currently supported with the current firmware - but the firmware does load and run, it just doesn't do anything with the display.
I'm looking at how far it's getting. I notice that EPD_BUSY pin is set to input, and it's constantly measuring a high (logic 1). I presume that an initial attempt to do something with the display is making the EPD busy, and then we are waiting for that operation to complete before doing anything else with the display.
But, with EPD_BUSY being constant high no further updates are attempted.
What can be the reason?
Last working stable commit is this one:
commit ff95759
Author: atc1441
Date: Sat Jan 15 17:24:03 2022 +0100
Final CRC check working
Sorry but I would really like to recommend to make a feature branch where others can test and only after testing merge in master.
Otherwise it's not so cool to break existing working behavior and just push it to main branch without letting at least other developers test the new feature, specially when you can now make a BLE OTA Firmware update (In case you remove Serial flashing cables) and you find out that it does not update.
I could not update.
Hi,
I notice that Firmware/components/application/print/u_printf.c has an implementation of sprintf(...) that call an internal "print" function.
The side effect of this is that whatever is being formatted doesn't just go to the specified char buffer, but also goes out the serial .
That's probably not the behaviour you want.
I've attached my 'hacked' version of that file which contains a local vsprintf which tries to accomplish the same task without outputting to serial. See attached.
It might be of some use to someone else too.
Ah, well, I tried to attach a file, with various formats, but github won't let me attach a file. If you want me to send you the file then please ask.
@atc1441 executing makeit fails with no expressive message.. May a wrong python version is installed on my system. Which major python version you use ?
Hi. I successfully flashed the e paper label and i saw u have a image uploader but there is no clear way (for me) to make my own image could you reccomed a program that could be useful for this (i saw one but i cant find it) or any other solution that could help.
Hi @atc1441 ,
Would it be possible to have a:
const char * serial = "517714";
I was just analyzing the Barcode and it seems to me an unique identifier:
Which has this number in my device:
Then if we build this firmware using that constant, we could get a bluetooth name like:
ESL_517714
My idea would be that we could scan this Barcode with a custom App and then we could automatically guess what is the device name. This can help to associate a device faster instead of browsing the hundred bluetooth around this days. But is just an idea, would be cool to have an unique serial and I just wanted to know where is the part of the code that generates the ESL_number.
For this device the name I get is: ESL_545778
On another topic, I'm designing a small 3D-printable tiny placement, in case you want to place this vertically in your table with a nice inclination so you can see it more clearly. Will share it in Thingiverse once done and tested!
It would be possible to add in the Readme also a link to https://cale.es/epaper/en/Hanshow/27 just to mention you can send the image using our free service?
I got my hands on a Hanshow Nebular 350F-N and could flash it via UART with ATC_Paper.bin successfully. However, there is no reaction; the screen does not change and no BLE device appears.
I understand that Nebular devices are not supported, but I have the impression that others had limited success? Any comments are welcome!
Hello!
I tried flashing various versions of this firmware with no luck getting BLE working, flashing works as flashing some test firmware that makes LED flash works.
How exactly is BLE working with TLSR8359? How can we test it's presence in hardware?
Thank you
I understand that the Hanshow Nebular does printf() - with the output coming out through the TXD pin.
But, can it also do serial input through the RXD pin ?
I have the model Stellar-XLN.
Can I try to flash without bricking it?
Or is there another way I test?
I think the Hanshow Nebular has different pinouts for the GPIO lines. I notice that the SPI comms are not working for the LUT tests.
So, in main.h I see:
#define EPD_RESET GPIO_PD4
#define EPD_DC GPIO_PD7
#define EPD_BUSY GPIO_PA1
#define EPD_CS GPIO_PB4
#define EPD_CLK GPIO_PB5
#define EPD_MOSI GPIO_PB6
#define EPD_ENABLE GPIO_PC5
But, some or all of those are wrong. Is it possible to obtain the correct pinouts for this device ?
Did someone already got hands on Nebular devices?
They are popping up in stores around here.
They've got BW/Yellow and BW/Red. Also there a ones which are big, like a DinA5 sheet...
I am wondering how in the world am I supposed to connect RTS pin from the display to RST pin on UART/serial converter?
I have 3 converters with different chips, and none of them have reset available on the header.
Instructions given here https://github.com/reece15/stellar-L3N-etag say this: The RTS flying wire is connected to the third pin of the CH340G chip (it can also be left unsoldered and manually connected to GND before burning).
But I have no idea which version of CH340 I do have, and their pinout differs between versions.
Plus, pin 3 is RXD on CH340G, while 14 is RST.
Finally, can someone figure out this "manually connected to GND before burning" instruction?
Can anybody explain how am I supposed to connect this pin from the display to any UART converter or eventually to GND itself in order to have the chip put into proper flashing mode?
Thank you.
Hi,
It's not an "issue", but are there any suggestions where to source individual or small qty of compatible ESLs?
Cant find a source for StellarN modules for consumers.
I would be helpful for advice, if there are sources or specific AliExpress listings, it might be worth to mention in a column of the table of compatible modules.
I have to check it's possible to do it in the Frontend javascript side.
miniz is also what Espressif uses and it's quite stable.
$ ./miniz c ATC_Paper.bin ATC.z
miniz.c version: 10.1.0
Mode: c, Level: 9
Input File: "ATC_Paper.bin"
Output File: "ATC.z"
Input file size: 107812
Total output bytes: 48047
Success.
So if it would be possible to implement this the BLE flashing over the air can take half the time and it would be then decompressed when it arrives to the device. Of course we need to check if there is enough RAM to do that, but I think it might be possible.
Are this ones the right specs for the TLSR8358 SOC ?
Just an enhancement idea. I will research if it's possible to compress with miniz in the javascript frontend. Otherwise it's just a very fast command line action (the miniz executable weights 159K)
I have a Stellar-XLN@ model which is a larger display of 84.22*63.02 mm and a battery life of 5 years. I have no idea what CPU is on board. I opened up the battery departments, and it reveals a test connector with following labels:
| O | O | VCC | GND |
| O | O | TMS | NRST |
| O | O | RXD | TO? |
| O | O | TEST | TXD |
The labels on the second row are hidden behind the plastic casing, but I think they are correct, except TO?
The other Stellar tags have a SWS connection that I don't see here. Any idea what TMS and TEST refer to, is one a SWS pin?
Thanks for your great work on the Hanshow ESLs.
Hi,
What does it mean when the LED in the top right hand corner is blinking every 10 seconds ?
I have test it , but dont konw how to display red text?
As reported in another thread here, the M3N@ version doesn't refresh its display properly. I flashed it thru UART and can now update it OTA. But the problem with the garbled display might come from not detecting the right BWR213 version. It displays it as BW213 which is not correct. Forcing the model version OTA, has no effect.
Hi,
Thank you for this fantastic SDK!
I make a paragliding variometer for me and I noticed a mistake for the temperature in the source code.
Basically the temperature must be int8_t everywhere instead of uint8_t to be able to get sub zero temperatures otherwise for -1'C you will get 255'C (for me I corrected it in "epd_bwr_154.c" and "epd.c")
IMPORTANT What do you use to read/write BLE on the phone? I cannot get the app name from your videos.
How could i debug this project so that i could add modifications to the project.
Hi,
The included firmware doesn't display anything and doesn't advertise BLE. I have confirmed the firmware does run by toggling the red LED in main.c.
It does seem my MN@ display's have slightly different product codes than yours but have the same PCB text.
I have been able to get working firmware on the display by rewriting the epd_driver_demo in the TLSR8359 SDK to support the display.
The displaying part might be because of a different EPD display, but that doesn't explain the tag not advertising BLE because it is a TLSR8359 and the same PCB.
Do you have any idea on what might be wrong?
Also, I had to change line 4 of the makefile:
TC32_COMPILER_PATH := tc32_windows\\bin\\
to TC32_COMPILER_PATH := tc32_windows/bin/
because of error /usr/bin/sh: tc32_windowsbintc32-elf-gcc: command not found
running Python 3.9.6 on Windows 10
how to dump TLSR8359 firmware from Stellar_MN?
Heya all!
I'm kinda new to all this so not sure where it went wrong or if my device just isn't compatible.
I flashed the ATC_Paper.bin to the Stellar-MFN@ E31A but the screen isn't doing anything and I am not able to chance anything, I am able to connect to it over bluetooth (ESL_FC09DB) But that's about it.
The LED flashes green occasionally.
Excuse my shoddy way of attaching the pins hahaha.
If anyone has some ideas or could offer some help I would be really grateful!
Hi! I've been tinkering with this display for some time now. The firmware works and I can flash firmware using Bluetooth. I have one problem: the device is not using a big part of the screen and I am not sure whether it is using the right EPD model. Forcing different EDP models via the bluetooth flasher does not do anything. The device is: Stellar-MN@ E31HA, so the 200x122 version. Here is a picture of the display with the problem visible.
can adapt Nowa-266R-N?
Hello, I have some not well known "Stellar Pro-213R-N "
The chip TLSR8359 seems to be elligible to be hacked, but the screen is 250x122 and it has 3 colors (BW+red).
Connecting to serial, seems to work (blue led is flashing while sending commands to it), but I can't say if it's working : any hint to read any output/debug from this ESL ?
Hi, the web interface for programming is great, but is there a C code to do the same - so that I can flash my Hanshow device using a Linux command line ?
I see the HTML page source in the web page probably gives me all the clues I need to convert it to C, but , if someone already has done that please upload it.
I tried to flash one of my STN-E31HA displays, but I didnt notice RX and SWS are separate pins on this board. I tried flashing with the following connections;
RX to TTL Converter TX
NRST to RTS
the flasher said flash was succesful, however there was no light flashing during the process and the contents of the display have not changed.
Then I noticed the separate SWS pin, so I tried again with the following connections;
SWS to TTL Converter TX
NRST to RTS
Now the light was flashing during the process, and again I get a message that flashing was succesful. The green light blinks, but the contents of the display still havent changed.
Did I mess up or am I missing something?
How could I achieve a connection with an Wemos ?! would like to convert this to a strange looking "smartwatch" (just receive text notifications on it)
Hi,
I've tried to upload the firmware but nothing changed. I've got no error messages but the image doesn't changed and the display did not even blink. I've used 2 different USB2TTL devices: based on cp2102 and ch340 chips. Is there any special thing that I must consider when making the upload ?
Thanks.
The hardware is all right now,and I'v already got the firmware done.
It cost me 5RMB(I think that's cheap enough)
And the contents on the screen doesn't change
Someone seems puzzled too,hahaha.
hanshow doc mentions a potential third color (red/yellow)
can this firmware use it ?
I saw in the code there was some written for the initialisation of the NFC chip. I do want to expand this myself.
On the internet there isn't anything to find or how to address this bus or to write to the EEPROM. Anyone here have a non Chinese datasheet with the bus and register information on it?
Hi,
I've getting a battery temperature value of 1162 from the get_temperature_c() function.
What does that 1162 equate to? How can I convert that to something human, like degrees celsius ?
Recently I got an 3.5" hanshow nebular pricetag. Orignally I wanted to reflash it with alternative firmware. But after some cuts into the back of case I found out that they changed the layout - the soldering pads for reflashing are not there as shown in this video:
https://www.youtube.com/watch?v=WRfZJ4xyYwc
Instead it looks like this:
Besides this other layout the also exchanged the battery type. Now it seems that theres a kind of LiPo instead of the two button cell batteries.
Nevertheless, did anybody of you already manage to reflash this new layout?
Hi,
What does it mean when gpio_read(..) returns 2?
Specifically, gpio_read(EPD_BUSY);
The source code comments implies that it can only return values 0 or 1.
Hi,
Sometimes my Hanshow Nebular 350R-N will go in to a special screen flashing sequence which last about 20 seconds.
The whole screen will flash from black to white. The flashing slows down, and changes to red then white.
I've seen it do this when I've used some incorrect commands in the firmware code that I'm playing with.
But, I can't reliably make it do that through software.
Is there a specific "doTheResetFlashingThingNow()" function on these devices?
I am trying to find out a way to send a picture to tags using the original atc1441 firmware, notably to BWR154, as the other forks of it only work on larger versions (BWR213, BWR296...) but they have modified the firmware and created a set of web pages/java scripts that allow uploading and keeping the pictures to those larger tags, including dithering and bunch of other cool stuff.
Alas, the smallest one, BWR154, only works with original firmware which accepts an image using hex format (I can convert and create them just fine, uploading them with the usual BLE uploader) but it does not stay on the display - as soon as the time for clock refresh hits, the display is updated and the image disappears, getting replaced by the default clock/battery/temperature combo.
So, is there a way to switch or force original atc1441 firmware to stop this auto update after sending the picture?
Maybe with some specific sequence of hex codes or something?
ATC_TLSR_Paper/Firmware/src/obd.inl
Line 2314 in 5a85959
iPitch = pOBD->width;
if (pDestination == NULL || pOBD == NULL || pOBD->ucScreen == NULL)
return -1;
Looks fishy to me, too. :-)
The floating point library is from here (I am not the author):
https://github.com/stephanosio/tc32-soft-float
I had to modify the makefile's in your ATC_TLSR_Paper to be able to use the floating points, and here I attach the whole library and makefiles required. Please add them for others to benefit too.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.