doceme / py-spidev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Conflict with spidev 3.5 and kernel 5.4.51 using Raspberry Pi and luma.led_matrix

linuxminty opened this issue · comments

Following a recent upgrade to kernel 5.4.51 on my Raspberry Pi, I got the following error when trying to run luma.led_matrix:

Traceback (most recent call last):
  File "luma7datetime.py", line 58, in <module>
    main()
  File "luma7datetime.py", line 47, in main
    serial = spi(port=0, device=0, gpio=noop())
  File "/usr/local/lib/python3.7/dist-packages/luma/core/interface/serial.py", line 285, in __init__
    self._spi.cshigh = cs_high
SystemError: error return without exception set

rm-hull has solved the issue for me by suggesting a downgrade to spi 3.4. For details see: rm-hull/luma.led_matrix#225

Although the problem has been resolved for me by reverting to spidev 3.4, it seems appropriate to open an issue here so that you're aware of this conflict with spidev 3.5.

The use of cshigh is no longer supported by the underlying ioctls, IE: no change will occur, so when spidev attempts to read back the chain it will fail in this manner.

I raised this upstream for an explanation, see: raspberrypi/linux#3745

If a display genuinely requires cshigh to be True (I think False is the default?) then I believe manual, GPIO Chip-Select control would be required independent of the SPI drivers.

Spidev 3.4 doesn't fix the problem so much as fail silently. I'm going to hazard a guess in your case that cs_high is False, and thus the fact that changing this property is silently failing will have no bearing on your hardware.

I don't think anything should necessary change in spidev, but the code that checks whether cshigh (aka SPI_CS_HIGH) has been successfully set should probably fail with a slightly clearer exception.