Summary:
openWB 2.x fails to start on Raspberry Pi OS Trixie (Debian 13) with Python 3.13. The system shows "Lade Einstellungen..." indefinitely.
Environment:
- Raspberry Pi OS Trixie (Debian 13)
- Python 3.13
- openWB 2.2.0 (master branch)
Errors found (in order of occurrence):
1. evdev==1.5.0 uses removed @asyncio.coroutine
asyncio.coroutine was removed in Python 3.11. evdev 1.5.0 uses it internally.
Fix: Upgrade to evdev==1.9.3 (tested and working).
2. paho-mqtt 1.6.1 API broken in paho-mqtt 2.x
mqtt.Client(name) without callback_api_version raises an error in paho-mqtt 2.x (which Debian 13 pip might install).
Fix: Update broker.py to use callback_api_version=mqtt.CallbackAPIVersion.VERSION1 and bump requirements to paho_mqtt==2.1.0.
3. atreboot.sh pip installs fail on Debian 13 (PEP 668)
Debian 13 enforces PEP 668 (externally managed environment). pip3 install without --break-system-packages fails.
Proposed Changes
requirements.txt
-evdev==1.5.0
+evdev==1.9.3
-paho_mqtt==1.6.1
+paho_mqtt==2.1.0
packages/helpermodules/broker.py
diff
class BrokerClient:
def __init__(self, name, on_connect, on_message, host="localhost", port=1886):
try:
self.name = f"openWB-{name}-{get_name_suffix()}"
- self.client = mqtt.Client(self.name)
+ self.client = mqtt.Client(
+ client_id=self.name,
+ callback_api_version=mqtt.CallbackAPIVersion.VERSION1
+ )
self.client.on_connect = on_connect
self.client.on_message = on_message
self.client.connect(host, port)
class InternalBrokerPublisher:
def __init__(self):
try:
- self.client = mqtt.Client(f"openWB-python-bulk-publisher-{get_name_suffix()}")
+ self.client = mqtt.Client(
+ client_id=f"openWB-python-bulk-publisher-{get_name_suffix()}",
+ callback_api_version=mqtt.CallbackAPIVersion.VERSION1
+ )
self.client.connect("localhost", 1886)
runs/atreboot.sh (two places)
diff
-pip3 install -r requirements.txt
+pip3 install --break-system-packages -r requirements.txt
-pip uninstall urllib3 -y
+pip uninstall urllib3 -y --break-system-packages 2>/dev/null; true
Additional Notes for ARM / Debian 13
Some packages cannot be compiled from source on ARM with Python 3.13:
jq==1.1.3 (longintrepr.h removed in Py 3.12) -> Use apt install python3-jq
grpcio==1.60.1 (OOM on Pi during compile) -> Use apt install python3-grpcio
lxml==4.9.1 -> Use apt install python3-lxml
Suggested addition to atreboot.sh before pip install:
bash
if python3 -c "import sys; exit(0 if sys.version_info >= (3,12) else 1)" 2>/dev/null; then
apt-get install -y python3-grpcio python3-jq python3-lxml python3-protobuf 2>/dev/null || true
fi
Summary:
openWB 2.x fails to start on Raspberry Pi OS Trixie (Debian 13) with Python 3.13. The system shows "Lade Einstellungen..." indefinitely.
Environment:
Errors found (in order of occurrence):
1.
evdev==1.5.0uses removed@asyncio.coroutineasyncio.coroutinewas removed in Python 3.11.evdev 1.5.0uses it internally.Fix: Upgrade to
evdev==1.9.3(tested and working).2.
paho-mqtt 1.6.1API broken in paho-mqtt 2.xmqtt.Client(name)withoutcallback_api_versionraises an error in paho-mqtt 2.x (which Debian 13 pip might install).Fix: Update
broker.pyto usecallback_api_version=mqtt.CallbackAPIVersion.VERSION1and bump requirements topaho_mqtt==2.1.0.3.
atreboot.shpip installs fail on Debian 13 (PEP 668)Debian 13 enforces PEP 668 (externally managed environment).
pip3 installwithout--break-system-packagesfails.Proposed Changes
requirements.txt