mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 00:04:28 +01:00
[GH-ISSUE #267] Gicisky BLE EPD BWR 2.9" does not refresh #1258
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @andorardo on GitHub (Mar 8, 2024).
Original GitHub issue: https://github.com/OpenEPaperLink/OpenEPaperLink/issues/267
Describe the bug
The ESP32 AP recognizes the Gicisky 2.9", but the epaper screen doesn't refresh. Using "Force refresh" doesn't get the paper to refresh either.
To Reproduce
Configuration:
Expected behavior
epaper screen refresh with image
Screenshots

Additional context
Using https://github.com/atc1441/ATC_GICISKY_ESL, I can pair with the tag, and although it's a 2.9" device instead of the 4.2" in the demo, the tag updates (with a messed up image) and refreshes.
@andorardo commented on GitHub (Mar 8, 2024):
@atc1441 since he added the BLE capability and might know how to debug further.
@atc1441 commented on GitHub (Mar 8, 2024):
Please insert fresh batteries in the Display 🙂
@andorardo commented on GitHub (Mar 8, 2024):
Voltage is back up to 3.3V :)
Sadly, that didn't quite fix it. :(
Additional info: When I enqueue a
Reboot tagmessage, it just sits there, and the tag does not reboot.Oddly enough, ATC_GICISKY_ESL does get it to refresh. Do you by any chance have a 296x128 image to try uploading with that, just to double check?
@atc1441 commented on GitHub (Mar 8, 2024):
Please delete the tag as well from the AP and let it find it again, the Fw version is wrong displayed
@andorardo commented on GitHub (Mar 8, 2024):
Deleted tag a few times, rebooted AP, deleted tag again, comes up with same:
fw:33025 0x8101What should it be?
@atc1441 commented on GitHub (Mar 8, 2024):
Then tha fw might be using a different upload method which leads to a bug.
Please share the uart logs from the AP.
What AP are you using and what RF interface is connected? Esp32-C6?
@atc1441 commented on GitHub (Mar 8, 2024):
Ah sorry V4 Mini AP.
Please share then only the Uart logs in the BLE advertising section
@andorardo commented on GitHub (Mar 8, 2024):
Here's the relevant looking part:
This recurs periodically with other RSSI values.
(do you need the other devices?)
@andorardo commented on GitHub (Mar 8, 2024):
There's also a bit more of this, when I do
Clear pending status:(The ping fail is from the lack of attached tag)
@nlimper commented on GitHub (Mar 8, 2024):
The C6 part needs to work, or content will not be generated. If the AP showes 'failed', you should not expect it to work, even if you just have BLE tags. ;-)
@andorardo commented on GitHub (Mar 8, 2024):
Ah :)
How do I turn off the C6 part?
For option 2, I looked into the configs, but wasn't sure which flags to comment out...
@atc1441 commented on GitHub (Mar 8, 2024):
Exactly what @nlimper mentiones.
Otherwise the Manufacturer data looks good
The error message "BLE Could not create buffer" also hints into the problem direction.
@andorardo why can you not just flash the C6 and use it with it? EDIT ok you dont have the V4 Mini AP now i get it... yes that way it will just not work
@nlimper commented on GitHub (Mar 8, 2024):
nope... The BLE part is very new. We didn't have a situation yet where there is just BLE with no IEEE801.15.4 radio present.
If you compile it yourself: make sure that a ping just returns true, for a start. The AP will show 'online' then. It might work after that, You also might get other issues, just tackle them one by one ;-)
@andorardo commented on GitHub (Mar 8, 2024):
Although I have a C6 somewhere, I think this would be a good feature, so I'm trying the software route.
I hardwired sendPing to return true.
The error I get is at
2408b34c2b/ESP32_AP-Flasher/src/makeimage.cpp (L324)no matter if
BOARD_HAS_PSRAMis set.If I uncomment
BOARD_HAS_PSRAM, then instead I get an error at2408b34c2b/ESP32_AP-Flasher/src/ble_writer.cpp (L168)presumably because now there is not enough heap.
So I made both allocations
malloc, and reduced the BUFFER_MAX_SIZE_COMPRESSING to 20k.Now it gets to the point of trying to connect to the BLE tag, and
So some questions are:
ps_mallocfailing? Does that have anything to do with the absence of the C6?EDIT: On the AP info page it says `psram size: 0@andorardo commented on GitHub (Mar 8, 2024):
For good measure, here is the output of the debug stuff in setup():
Should I be suspicious of that zero PSRAM part?
@nlimper commented on GitHub (Mar 8, 2024):
Yes. Make sure your psram is working, as it is needed for the buffers.
In platformio.ini are some more settings about the kind of psram your board is using. The default settings assume you have 16MB flash and 8MB psram, but in your first post you stated you have 2 MB psram. That should be enough, but make sure it's detected.
@andorardo commented on GitHub (Mar 8, 2024):
What's the difference between the R2 and R8?
AFAICT the R2 has QD Quad SPI, which is already configured (??)
board_build.psram_type=qspi_opiI'm not sure which config bit is relevant to the PSRAM -- can you give a clue?
@nlimper commented on GitHub (Mar 8, 2024):
A clue: check the data sheets, and the documentation on the board_build.psram_type, which is currenly set to octal instead of quad using that option.
@andorardo commented on GitHub (Mar 8, 2024):
Aha
board_build.arduino.memory_type = qio_qspifixed it.
For some reason it was the board_build.arduino.memory_type, rather than the psram_type.
Now there are no memory issues. 👍
Things still go awry:
Somehow it never gets as far as
BLE_MAIN_STATE_UPLOAD.What's the source of this panic?
@andorardo commented on GitHub (Mar 8, 2024):
A bit of logging narrows down the error while it's waiting here:
roughly here:
adc2aee2f0/src/BLEClient.cpp (L435)(Reproducibly)
@andorardo commented on GitHub (Mar 8, 2024):
This:
EXCVADDR: 0x00000000looks like null pointer access.@andorardo commented on GitHub (Mar 9, 2024):
One more thing I discovered: It is enough to simply wait 1-2 seconds (
vTaskDelayafter theesp_ble_gattc_search_service) and the panic is triggered.This seems to be way deep in the ESP infra. (?!)
@atc1441 , any thoughts on what might be causing this?
Is this a bug we're tickling, or still some interaction with the AP tasks or being low on memory?
@jrtraynor commented on GitHub (May 6, 2024):
I had the same issue regarding corrupt ble displays as you described. I was also just using a C3 with no C6 connected, (with the ping set to return true as described above). My two Gickisky 4.2 EPD screens also didn't often respond to updates although were detected just fine in OEPL. Anyway, noticed this morning of some new BLE updates were added by @atc1441 , so rebuilt the C3 from the latest code. and now they're both working just fine and not corrupt at all.
Also noticed that the range wasn't great so added this to the ble_writer.cpp line 155
Serial.println("BLE task started"); BLEDevice::init("ESP32"); BLEDevice::setPower(ESP_PWR_LVL_P12);And the range is much better, but that might just be on my Lolin C3
@atc1441 commented on GitHub (May 6, 2024):
Perfect, and yes the issue should be fixed now
@atc1441 commented on GitHub (May 6, 2024):
Gonna leave the BLE Power for now
@andorardo commented on GitHub (Jun 3, 2024):
As of the recent 2.60 version https://github.com/OpenEPaperLink/OpenEPaperLink/releases/tag/2.60b, the new "BLE only AP" firmware Just Works. Bravo 👍
@MajorAutomation commented on GitHub (Jun 16, 2025):
Just an FYI,
I have these working using a json file on my HA instance, Node Red creates a JSON file using a function node and saves a file that you can call from the web interface JSON with for example http://:8123/homeassistant/www/epaper/dinner.json.
Node red function looks like this.... it is listening to an anylist dinner string in my example.
Which works perfectly and updates as the file changes.
You can design the layout here: https://atc1441.github.io/oepl_json_designer/ and then use this in the function node.
Just thought I'd share this as it was so much easier to setup custom displays.

This one looks like this