arendst / Tasmota

Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at
https://tasmota.github.io/docs
GNU General Public License v3.0
22.21k stars 4.81k forks source link

Wemos SSD1306 128x64 0.96 not working with Universal Display Driver #22206

Closed ThomasDesloovere closed 1 month ago

ThomasDesloovere commented 1 month ago

PROBLEM DESCRIPTION

I have multiple types of oled display most of them have the SSD1306 driver. Since Tasmota came out with the Universal Display Driver they are a bit more of a pain in the ass to configure. I have a ESP running Tasmota 13.2.0 with SSD1306 display from Wemos/Lolin that is working great, i wanted to replicate the setup with a newer version of Tasmota with the same display (known good) I configured a new esp with Tasmota 14.2.0.6 Here the lolin display doesn't work, if i connect an off brand random display with the SSD1306 driver it works perfecly fine.

REQUESTED INFORMATION

Make sure your have performed every step and checked the applicable boxes before submitting your issue. Thank you!

- [x] If using rules, provide the output of this command: `Backlog Rule1; Rule2; Rule3`:
```lua
  Rules output here:
20:00:14.286 RSL: RESULT = {"Rule1":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":0,"Free":511,"Rules":""}}
20:00:14.495 RSL: RESULT = {"Rule2":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":0,"Free":511,"Rules":""}}
20:00:14.697 RSL: RESULT = {"Rule3":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":168,"Free":343,"Rules":":H,SSD1306,128,64,1,I2C,3c,*,*,* :S,0,2,1,0,30,20 :I AE D5,80 A8,3F D3,00 40 8D,14 20,00 A1 C8 DA,12 81,9F D9,F1 DB,40 A4 A6 AF :o,AE :O,AF :A,00,10,40,00,00 :i,A6,A7 #"}}
- [ ] Set `weblog` to 4 and then, when you experience your issue, provide the output of the Console log:
```lua
  Console output here:

TO REPRODUCE

Connect and configure a Lolin / Wemos 128*64 SSD1306

EXPECTED BEHAVIOUR

A functional display.

SCREENSHOTS

If applicable, add screenshots to help explain your problem.

ADDITIONAL CONTEXT

Add any other context about the problem here.

(Please, remember to close the issue when the problem has been addressed)

sfromis commented 1 month ago

Did you make sure to include universal display support in your build? #define USE_UNIVERSAL_DISPLAY

And what did you do to include the display descriptor? Without a file system, that could be using the suggestion for doing it in rule set 3. I've seen it work with this:

Rule3 :H,SSD1306,128,64,1,I2C,3c,*,*,* :S,0,2,1,0,30,20 :I AE D5,80 A8,3F D3,00 40 8D,14 20,00 A1 C8 DA,12 81,9F D9,F1 DB,40 A4 A6 AF :o,AE :O,AF :A,00,10,40,00,00 :i,A6,A7 #

You could also make it into a 4M build, to have room for a local file system, a good place to have a display.ini

BTW. You may also need to make sure that the display is powered on, like last toggle in the web UI.

ThomasDesloovere commented 1 month ago

Yes, as stated the version I compiled works on other ssd1306 displays, if connect the wemos display it stays blank. Same i2c address. Yes that is indeed the rule I use. Display toggle was turned on as the other display functions properly.

sfromis commented 1 month ago

Well, if you have verified that Tasmota is doing what it should, it would seem to be up to hardware-level differences, including connections and wiring. "Known good" is not a sufficient indicator of "everything should be ok".

ThomasDesloovere commented 1 month ago

While that is true, there really can’t be any wiring problem. The display connects with a 4 wire cable pre-made that works on the other one, the connector on this esp is also known good as it functions with temperature sensors. If I scan the i2c bus I get the address back from the display. There seems to be a driver difference between 13.2.0 and the universal driver.

sfromis commented 1 month ago

Yes, the universal display driver is a total rewrite of the old concept with separate display drivers per display type. But still, since one display works, and not another, that indicates some hardware-level difference, where details of that would be key to any fix for making it work for both.

ThomasDesloovere commented 1 month ago

Yeah I do understand that.

Lolin display https://www.wemos.cc/en/latest/d1_mini_shield/oled_0_96.html

Generic display that works https://www.az-delivery.de/a/s/products/0-96zolldisplay

It's kind of wird because I haven't come across this issue with any other driver. I have used both perfectly fine with Arduino and a SSD1306 library

sfromis commented 1 month ago

Maybe @gemu2015 has some insights or questions?

gemu2015 commented 1 month ago

according to the driver source code of your display these init cmds are send try with this slightly modified descriptor

  :H,SSD1306,128,64,1,I2C,3c,*,*,*
  :S,0,2,1,0,30,20
  :I
  AE
  D5,F0
  A8,3F
  D3,00
  40
  8D,14
  20,00
  A0
  C0
  DA,12
  81,CF
  D9,F1
  DB,40
  A4
  A6
  2E
  AF
  :o,AE
  :O,AF
  :A,00,10,40,00,00
  :i,A6,A7
  #
ThomasDesloovere commented 1 month ago

Hi, thanks for looking in to it. I just tried it, the generic one still functions but the Wemos one still stays black.