icssw-org / MeshCom-Firmware

MeshCom Client 4.0
https://icssw.org/meshcom/
MIT License
19 stars 6 forks source link

TBEAM wird vermutlich mit dem falschen u8g2-Treiber initialisiert... #52

Closed dl9sec closed 1 month ago

dl9sec commented 1 month ago

Describe the bug Einige TBEAMs zeigen am linken Display-Rand zwei Spalten mit (zufälligen) Pixeln.

Siehe auch https://groups.io/g/meshcom/message/293

Additional context Wie auch unter dem Link oben beschrieben vermute ich eine Initialisierung mit dem falschen u8g2-Treiber.

Wenn ich es richtig sehe, wird TBEAM mit dem SH1106-Treiber initialisiert: esp32_main.cpp:

...
#include <U8g2lib.h>

#if defined(BOARD_HELTEC)
    extern U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2;
#elif defined(BOARD_HELTEC_V3)
    extern U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2;
#elif defined(BOARD_RAK4630)
    extern U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2;
#elif defined(BOARD_E290)
    extern U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2;
#else
    extern U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2;
#endif
...

TBEAM hat jedoch (zumindest meines) einen SD1306-OLED-Controller. Die Treiber sind zwar ähnlich aber in einem kleinen Detail anders (Beschreibung von Oli Kraus siehe hier: https://forum.arduino.cc/t/whats-the-difference-between-adafruit-ssd1306-and-sh1106/247368/5).

Folgende Initialisierung sollte aus meiner Sicht verwendet werden (zusätzliches "ifdef" für "BOARD_TBEAM"):

...
#include <U8g2lib.h>

#if defined(BOARD_HELTEC)
    extern U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2;
#elif defined(BOARD_HELTEC_V3)
    extern U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2;
#elif defined(BOARD_TBEAM)
    extern U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2;
#elif defined(BOARD_RAK4630)
    extern U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2;
#elif defined(BOARD_E290)
    extern U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2;
#else
    extern U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2;
#endif
...

Ich vermute, es ist reiner Zufall, wenn es TBEAMs gibt, bei denen diese zwei Pixelspalten nicht auftauchen. Vermutlich sind die Speicherzellen da einfach zufällig so, dass diese Pixel aus sind. Das sollte sich aber mit einer Lupe feststellen lassen. Ich gehe mal davon aus, dass der Text erst in Spalte 7 statt in Spalte 5 beginnt...

Vielen Dank.

Gruß, Thorsten

dl9sec commented 1 month ago

Es ist mir gelungen mit PlatformIO Core die Firmware mir den genannten Änderungen zu bauen. Leider war diese Idee nicht die Lösung des Problems...

dl9sec commented 1 month ago

Habe etwas übersehen. Das Display funktioniert jetzt ohne "Pixelspalten". PR folgt...