i'm new to the ESP32 and it's also my first attempt using micropython. I've some experience with AVR and STM32 using GCC.<br/>
I've tried to use a 128x64 ssd1306 OLED display using the follwing library :

Unfortunately there is a problem with the latest version of the driver ssd1306.py. Until this is resolved please use the previous version which has the same functionality and interface. A copy is available here.

Thanks for your reply. The display is initialized and accepts commands like 'contrast', 'poweroff' etc.
Unfortuneately the display is corrupted. A lot of scattered points and a black bar occurs.
In the bar the text commanded with the text() command flashes shortly after sending show().
Additional pullups and other pins wont work. I think there is a timing-problem?. CPu frequency is 240 MHz.

@SpotlightKid Indeed. Alas that's the least of its problems. @Damien introduced a change to enable the framebuf class to be subclassed. I modified the SSD1306 driver to use this, a simple change which worked first time when I tested it.

Except that I'd forgotten that my test rigs had ssd1306.py implemented as frozen bytecode. So my testing was against the old proven build. When first tried using the new driver I had problems. I spotted the missing parens and realised that my testing must have gone awry I seem to get dumber with every passing year

It then emerged that the change @Damien introduced appears to have issues where a subclassed framebuf is itself subclassed. This has been raised on GitHub.

Until this is sorted out the solution is to use the old version as I suggested above.

@Swessels I have today been running the version of ssd1306.py which I recommended with I2C and SPI devices without issue. The hosts are Pyboards. So I suggest you tell us more about your test conditions.

What ESP32 board are you using? Is your display I2C or SPI connected? If you let us know, and post code which shows the pin numbers you're using I can test with an ESP32. You should use soft I2C/SPI (i.e. pass Pin instances to the constructor). Neither interface should be timing sensitive so it really ought to work. I would suggest trying pins which aren't used by the hardware I2C/SPI in case these are being used elsewhere - I think the Loboris port uses at least one of these hardware interfaces. Check this PDF for notes on pin allocations.

I have previously run an I2C SSD1306 display on ESP32 with the following pinout and code. While I can't fault what you've done so far I suggest you try this as a last chance. I used the official firmware with 4K7 external pullups to 3.3V.

Secondly I don't know which version of ssd1306.py you're using but the line number doesn't correspond to the official version or the one I recommended. I suggest you try with this one. This is the version prior to the current problematic one.