GregDMeyer / IT8951

Driver for the IT8951 e-paper controller on Raspberry Pi
MIT License
151 stars 55 forks source link

communication with device failed #62

Open galshd opened 5 months ago

galshd commented 5 months ago

I'm using the 7.5inch display, https://www.waveshare.com/wiki/7.5inch_HD_e-Paper_HAT. I've browsed through similar issues (e.g. https://github.com/GregDMeyer/IT8951/issues/18) and tried the following:

However I'm still getting "communication with device failed" when running

python3.8 test.py

in IT8951/test/integration

For what it's worth, the C WaveShare code from https://www.waveshare.com/wiki/7.5inch_HD_e-Paper_HAT works fine.

Is there something I might be missing here? I've also read that using the Waveshare code might leave the display in a weird state - is there any way I can completely reset the display? Not sure why rebooting does not work here.

Appreciate any pointers :) thank you!

Nico04 commented 3 months ago

Same here. Using a Raspberry Pi Zero worked fine, but with my new Pi 5 I have this issue, so sad. Using https://www.waveshare.com/wiki/9.7inch_e-Paper_HAT (Works fine with demo sample of Waveshare)

Same issue with a Pi 4 (again, works fine with demo code)

GregDMeyer commented 2 months ago

Please let me know if you have any luck figuring out what is going on---unfortunately since I cannot reproduce the issue I don't have a good way of debugging what is happening. I am certainly open to pull requests if you figure out a fix!

brookstalley commented 2 months ago

Having the same issue. Here's what I know:

I am testing on a RPI 4B / 8GB, running the latest 64-bit Lite OS, and python 3.12.4.

I'm at a loss, but commenting in the hopes someone solves it.

brookstalley commented 1 month ago

Dove deeper -- no solution but leaving notes in case anyone else runs across this.

The example file in the waveshare repo works when compiled. I've double-checked everything I can find to align implementations between this repo and that one. I confirmed that all constants for pins and message values are the same.

There are a couple of differences between the two. The waveshare version:

I've aligned my local copy of this repro with the waveshare implementations... and still no luck.

brookstalley commented 1 month ago

While the example file in IT8951-ePaper does work when compiled with the default BCM driver, it DOES NOT work when compiled to use GPIOD (make -j4 LIB=GPIOD). The program starts but it does not successfully control the display at all.

Similarly, manually accessing the SPI ports using pigpiod / pigs also fails the same way: no errors, but all read bytes are returned as zero.

So I'm pretty confident that this issue is not in this IT8951 library at all, but something at the GPIOD level.

pipplo commented 1 week ago

@brookstalley did you have any luck? I'm having what appears to be the same issue. Waveshare examples work when using GPIOD but I end up with a 'communication with device failed' error as well.

pipplo commented 1 week ago

Dove deeper -- no solution but leaving notes in case anyone else runs across this.

The example file in the waveshare repo works when compiled. I've double-checked everything I can find to align implementations between this repo and that one. I confirmed that all constants for pins and message values are the same.

There are a couple of differences between the two. The waveshare version:

  • Implements reset with high for 200ms, low for 10ms, high for 200ms
  • Sets CS low at beginning of write() command and high after write
  • Waits for HRDY / ready between sending preamble and payload

I've aligned my local copy of this repro with the waveshare implementations... and still no luck.

Do you happen to have these changes available that you can push? I also noticed a few differences in the startup sequence. It looks like gpiod works for me but not for you so maybe your changes will work on my side?

pipplo commented 1 week ago

Well a small update, I just tried refreshing with a new image and not installing or following any of the waveshare instructions. The same hardware with the new image works fine. So something leads to an incompatibility here

🤷