Skip to content

Error BlockingIOError: [Errno 11] Resource temporarily unavailable on armbian 25.x (armv7l) #397

@lequan81

Description

@lequan81

Type of Raspberry Pi

Orangepi Zero H3 LTS (armv7l) running latest Armbian 25.x (minimal/IOT version) based on Debian 12 (bookworm)

Linux Kernel version

Linux kernel version 6.6.62
Linux orangepizero 6.6.62-current-sunxi #2 SMP Sun Nov 17 14:08:59 UTC 2024 armv7l GNU/Linux

Expected behaviour

OLED display (SSD1306) show current stats of boards using I2C protocol on i2c-0

Actual behaviour

The screen does not show up, the i2cdetect -y 0 return OLED address at 0x3c
When running i2cdetect -F 0, it returns the result

Functionalities implemented by /dev/i2c-0:
I2C                                 yes
SMBus Quick Command                 yes
SMBus Send Byte                     yes
SMBus Receive Byte                  yes
SMBus Write Byte                    yes
SMBus Read Byte                     yes
SMBus Write Word                    yes
SMBus Read Word                     yes
SMBus Process Call                  yes
SMBus Block Write                   yes
SMBus Block Read                    no
SMBus Block Process Call            no
SMBus PEC                           yes
I2C Block Write                     yes
I2C Block Read                      yes

traceback info:

Traceback (most recent call last):

  File "$user/stats/main.py", line 92, in <module>
    main()
  File "$user/stats/main.py", line 86, in main
    stats()
  File "$user/stats/main.py", line 65, in stats
    with canvas(device) as draw:
  File "$user/stats_env/lib/python3.11/site-packages/luma/core/render.py", line 43, in __exit__
    self.device.display(self.image)
  File "$user/stats_env/lib/python3.11/site-packages/luma/oled/device/__init__.py", line 311, in display
    self.data(list(buf))
  File "$user/stats_env/lib/python3.11/site-packages/luma/core/device.py", line 55, in data
    self._serial_interface.data(data)
  File "$user/stats_env/lib/python3.11/site-packages/luma/core/interface/serial.py", line 128, in data
    write(list(data[i:i + block_size]))
  File "$user/stats_env/lib/python3.11/site-packages/luma/core/interface/serial.py", line 137, in _write_large_block
    self._bus.i2c_rdwr(self._i2c_msg_write(self._addr, [self._data_mode] + data))
  File "$user/stats_env/lib/python3.11/site-packages/smbus2/smbus2.py", line 660, in i2c_rdwr
    ioctl(self.fd, I2C_RDWR, ioctl_data)

BlockingIOError: [Errno 11] Resource temporarily unavailable

And here is my main.py

I believe the Python code worked flawlessly on the previous kernel, 6.2.x. However, after updating to kernel 6.6.62, it is mostly broken, and it seems like something changed that made the current SMBus library seem to be working poorly.

Would you please be so kind to help me on this issue?
Best regards and thanks,
lequan81

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions