I've seen the display crashing with the following error:
Apr 12 07:42:08 twrpi1 python[8301]: Traceback (most recent call last):
Apr 12 07:42:08 twrpi1 python[8301]: File "<frozen runpy>", line 198, in _run_module_as_main
Apr 12 07:42:08 twrpi1 python[8301]: File "<frozen runpy>", line 88, in _run_code
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/src/simoc_sam/displays/ssd1327.py", line 87, in <module>
Apr 12 07:42:08 twrpi1 python[8301]: asyncio.run(main())
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~^^^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/usr/lib/python3.13/asyncio/runners.py", line 195, in run
Apr 12 07:42:08 twrpi1 python[8301]: return runner.run(main)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/usr/lib/python3.13/asyncio/runners.py", line 118, in run
Apr 12 07:42:08 twrpi1 python[8301]: return self._loop.run_until_complete(task)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/usr/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
Apr 12 07:42:08 twrpi1 python[8301]: return future.result()
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/src/simoc_sam/displays/ssd1327.py", line 80, in main
Apr 12 07:42:08 twrpi1 python[8301]: await asyncio.gather(
Apr 12 07:42:08 twrpi1 python[8301]: ...<2 lines>...
Apr 12 07:42:08 twrpi1 python[8301]: )
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/src/simoc_sam/displays/ssd1327.py", line 50, in update_display
Apr 12 07:42:08 twrpi1 python[8301]: display.refresh()
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/busdisplay/__init__.py", line 299, in refresh
Apr 12 07:42:08 twrpi1 python[8301]: self._refresh_display()
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~~~~~~~^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/busdisplay/__init__.py", line 308, in _refresh_display
Apr 12 07:42:08 twrpi1 python[8301]: self._refresh_area(area)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~~~~^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/busdisplay/__init__.py", line 389, in _refresh_area
Apr 12 07:42:08 twrpi1 python[8301]: self._core.set_region_to_update(subrectangle)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/displayio/_displaycore.py", line 320, in set_region_to_update
Apr 12 07:42:08 twrpi1 python[8301]: self.send(data_type, chip_select, data)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/displayio/_displaycore.py", line 373, in send
Apr 12 07:42:08 twrpi1 python[8301]: self._send(data_type, chip_select, data)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/i2cdisplaybus/__init__.py", line 126, in _send
Apr 12 07:42:08 twrpi1 python[8301]: raise error
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/i2cdisplaybus/__init__.py", line 120, in _send
Apr 12 07:42:08 twrpi1 python[8301]: self._i2c.writeto(self._dev_addr, buffer=command_bytes)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/busio.py", line 223, in writeto
Apr 12 07:42:08 twrpi1 python[8301]: return self._i2c.writeto(address, buffer, stop=True)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 68, in writeto
Apr 12 07:42:08 twrpi1 python[8301]: self._i2c_bus.write_bytes(address, buffer[start:end])
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: File "/home/pi/simoc-sam/venv/lib/python3.13/site-packages/Adafruit_PureIO/smbus.py", line 303, in write_bytes
Apr 12 07:42:08 twrpi1 python[8301]: self._device.write(buf)
Apr 12 07:42:08 twrpi1 python[8301]: ~~~~~~~~~~~~~~~~~~^^^^^
Apr 12 07:42:08 twrpi1 python[8301]: OSError: [Errno 5] Input/output error
A simple try/except around the display.refresh() should fix the issue.
I've seen the display crashing with the following error:
A simple
try/exceptaround thedisplay.refresh()should fix the issue.