diff --git a/.gitmodules b/.gitmodules index 6efbe97a..7998285c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,4 @@ [submodule "rpi-rgb-led-matrix-master"] path = rpi-rgb-led-matrix-master url = https://github.com/hzeller/rpi-rgb-led-matrix.git + branch = master diff --git a/config/config.template.json b/config/config.template.json index 8eb664e1..b55220ef 100644 --- a/config/config.template.json +++ b/config/config.template.json @@ -112,7 +112,8 @@ "limit_refresh_rate_hz": 100 }, "runtime": { - "gpio_slowdown": 3 + "gpio_slowdown": 3, + "rp1_rio": 0 }, "display_durations": {}, "use_short_date_format": true, diff --git a/first_time_install.sh b/first_time_install.sh index 2c46ed7f..02e54a58 100644 --- a/first_time_install.sh +++ b/first_time_install.sh @@ -271,7 +271,7 @@ apt_update # Install required system packages echo "Installing Python packages and dependencies..." -apt_install python3-pip python3-venv python3-dev python3-pil python3-pil.imagetk build-essential python3-setuptools python3-wheel cython3 scons cmake ninja-build +apt_install python3-pip python3-venv python-dev-is-python3 python3-pil python3-pil.imagetk build-essential python3-setuptools python3-wheel cmake ninja-build # Install additional system dependencies that might be needed echo "Installing additional system dependencies..." @@ -821,20 +821,13 @@ else fi pushd "$PROJECT_ROOT_DIR/rpi-rgb-led-matrix-master" >/dev/null - echo "Building rpi-rgb-led-matrix Python bindings..." - # Build the library first, then Python bindings - # The build-python target depends on the library being built - if ! make build-python; then - echo "✗ Failed to build rpi-rgb-led-matrix Python bindings" - echo " Make sure you have the required build tools installed:" - echo " sudo apt install -y build-essential python3-dev cython3 scons" - popd >/dev/null - exit 1 - fi - cd bindings/python - echo "Installing rpi-rgb-led-matrix Python package via pip..." + echo "Installing rpi-rgb-led-matrix Python package (scikit-build-core + cmake)..." + echo " Build deps required: python-dev-is-python3 cmake" + echo " This compiles C++ — may take 2-5 minutes on Pi 4/5..." if ! python3 -m pip install --break-system-packages .; then echo "✗ Failed to install rpi-rgb-led-matrix Python package" + echo " Ensure build tools are installed:" + echo " sudo apt install -y python-dev-is-python3 cmake build-essential" popd >/dev/null exit 1 fi diff --git a/rpi-rgb-led-matrix-master b/rpi-rgb-led-matrix-master index 2cfff2a4..89072356 160000 --- a/rpi-rgb-led-matrix-master +++ b/rpi-rgb-led-matrix-master @@ -1 +1 @@ -Subproject commit 2cfff2a4b14825795e195d2bf3a9b2ef2ac93446 +Subproject commit 89072356305e272c2b1af32b8377a274df3d6d9f diff --git a/src/display_manager.py b/src/display_manager.py index 43433582..e548e86f 100644 --- a/src/display_manager.py +++ b/src/display_manager.py @@ -100,6 +100,17 @@ class DisplayManager: options.pwm_dither_bits = hardware_config.get('pwm_dither_bits') if 'inverse_colors' in hardware_config: options.inverse_colors = hardware_config.get('inverse_colors') + # Pi 5 only: 0=PIO/RP1 coprocessor (default, less CPU), + # 1=RIO/Registered IO (faster; gpio_slowdown effect is inverted in this mode) + if 'rp1_rio' in runtime_config: + if hasattr(options, 'rp1_rio'): + options.rp1_rio = runtime_config.get('rp1_rio') + else: + logger.warning( + "rp1_rio is set in config but the current RGBMatrixOptions " + "implementation does not support it (RGBMatrixEmulator or older " + "library version) — value will be ignored" + ) logger.info(f"Initializing RGB Matrix with settings: rows={options.rows}, cols={options.cols}, chain_length={options.chain_length}, parallel={options.parallel}, hardware_mapping={options.hardware_mapping}")