feat: load i2c-dev kernel module on startup #14

Merged
pstruebi merged 1 commits from fix/temp_sensor into main 2025-12-18 15:27:41 +00:00
+19
View File
@@ -146,6 +146,25 @@ _stream_lock = asyncio.Lock() # serialize initialize/stop_audio on API side
async def _init_i2c_on_startup() -> None:
# Ensure i2c-dev kernel module is loaded (required for /dev/i2c-* access)
try:
proc = await asyncio.create_subprocess_exec(
"sudo", "modprobe", "i2c-dev",
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
stdout, stderr = await proc.communicate()
if proc.returncode != 0:
log.warning(
"modprobe i2c-dev failed (rc=%s): %s",
proc.returncode,
(stderr or b"").decode(errors="ignore").strip(),
)
else:
log.info("i2c-dev module loaded successfully")
except Exception as e:
log.warning("Exception running modprobe i2c-dev: %s", e, exc_info=True)
# Table of (register, expected_value)
dev_add = "0x4a"
reg_table = [