SPI display working on 16GB but not on 8GB

Hello,

We bought about 50 Radxa-Zero v1.51 units. Some of them are 16GB EMMC and some are 8GB EMMC.

We ported the Waveshare 2.13 inch e-paper display driver to the Radxa-Zero. It works nicely for some time already.

Then we made a 6GB image from that.

Interesting enough, we found out that when we flash the image to the 16GB EMMC version of the device, everything works perfectly. But when we flash that same image to the 8GB EMMC version of the device, everything works except the display, which is always blank.

We get no errors, nothing, and everything works, just the display is blank.

Only other thing that I would mention is that initially, the 8GB would not boot at all. Then I found out this post: Debian won't boot on new Radxa Zero where it is said that some devices have a u-boot problem.

Ok, so I followed https://wiki.radxa.com/Zero/dev/u-boot and built u-boot myself. I tested it and it also works perfectly on the 16GB. On the 8GB though, it fixed the boot problem (it started to boot), everything works but blank display.

As we don’t get any errors (when the display wiring is wrong, we get “busy” errors), I am assuming that the wiring is all ok now.

Are not the 16GB and 8GB the very same thing, except for the EMMC size? Both are v1.51.

Any tips are very welcome.

Thank you.

For different production batches some components are exchangeable, it should not cause any additional problems, sometimes there is something faulty on individual board too. If You have more than one - have You tried with more than one? Have You found anything different on 8 and 16 version just comparing them visually?

Interesting, how did you port the driver? I have a couple of these e-ink displays lying around.

I have experimented with different bootloader versions and trimmed images until I got it booting and working properly like in the original.

Not sure about what was exactly the problem but it seems to me that I was having some bootloader problem. It seems to be always working now.

I got the original Waveshare display driver source-code – it is freely available, and then for each function inside the files DEV_Config.c and DEV_Config.h, I added a new #else for the conditional compilation, specific for libmraa (which is available for Radxa).

I cannot publish the port but here is a little tip, inside DEV_Config.h for example I added like this…

...
#ifdef RPI
    #ifdef USE_BCM2835_LIB
        #include <bcm2835.h>
    #elif USE_WIRINGPI_LIB
        #include <wiringPi.h>
        #include <wiringPiSPI.h>
    #elif USE_DEV_LIB
        #include "RPI_sysfs_gpio.h"
        #include "dev_hardware_SPI.h"
    #elif USE_MRAA_LIB
        #include <mraa/gpio.h>
        #include <mraa/spi.h>
    #endif
#endif
...

And similar inside DEV_Config.c, where on the #else for libmraa, I used libmraa calls…

Good luck.

Thanks for the tip, I’ll take a look

Well, I have issue enabling SPI (I have Zero 3W card)

Which pins did you use ?