From 27b27e89b0ba42cefa4ac8bd327402bb11755a9b Mon Sep 17 00:00:00 2001 From: Brad Barnett <127794626+bdbarnett@users.noreply.github.com> Date: Sun, 8 Nov 2026 16:21:25 -0600 Subject: [PATCH 1/2] Stack: orientation, mp4mux, and QMA6100P among the IMUs Rows for what PyDevices/pydevices gains with the ESP32-P4X-EYE board config. The paths exist once that pull request merges, and mp4mux reaches the mip index after it. --- data/stack.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data/stack.json b/data/stack.json index 684061d..32aa3d7 100644 --- a/data/stack.json +++ b/data/stack.json @@ -100,6 +100,7 @@ {"name": "multimer", "group": "app", "does": "Use one `machine.Timer`-shaped timer and one clock on every interpreter.", "repo": "pydevices", "path": "lib/multimer", "guide": "docs/guides/timers.md", "get": ["mip:pydevices", "pip:pydevices", "firmware"], "runs": "MP, CP, Desktop, Web, Android"}, {"name": "events", "group": "app", "does": "Handle input as SDL2 and PyGame-style event types.", "repo": "pydevices", "path": "lib/events.py", "guide": "docs/modules.md", "get": ["mip:pydevices", "pip:pydevices", "firmware"], "runs": "MP, CP, Desktop, Web, Android"}, {"name": "keys", "group": "app", "does": "Name keys with SDL-style key codes and modifier masks.", "repo": "pydevices", "path": "lib/keys.py", "guide": "docs/modules.md", "get": ["mip:pydevices", "pip:pydevices", "firmware"], "runs": "MP, CP, Desktop, Web, Android"}, + {"name": "orientation", "group": "app", "does": "Turn a screen to 0, 90, 180 or 270 degrees from an accelerometer's tilt, steady against a shaky hand.", "repo": "pydevices", "path": "lib/orientation.py", "guide": "docs/modules.md", "get": ["mip:pydevices", "pip:pydevices", "firmware"], "runs": "MP, CP, Desktop"}, {"name": "backends", "group": "app", "does": "Add a display or audio backend of your own, so the automatic choosers can pick it.", "repo": "pydevices", "path": "lib/backends.py", "guide": "docs/modules.md", "get": ["mip:pydevices", "pip:pydevices", "firmware"], "runs": "MP, CP, Desktop, Web, Android"}, {"name": "appkit", "group": "app", "does": "Run several apps in one program, switch between them, and get each app's memory back when it closes.", "repo": "apps", "path": "lib/appkit", "get": ["mip:appkit", "pip:omnipython-applibs"], "runs": "MP, CP, Desktop"}, {"name": "applibs", "group": "app", "does": "Install every shared app library at once.", "repo": "apps", "path": "lib", "get": ["mip:applibs", "pip:omnipython-applibs"], "runs": "MP, CP, Desktop"}, @@ -173,6 +174,7 @@ {"name": "cameraif", "group": "vision", "does": "Use a MIPI-CSI camera as a Python object, with its sensor found by probing.", "repo": "micropython-pydevices", "path": "modules/cameraif", "get": ["firmware"], "runs": "MP on ESP32-P4"}, {"name": "h264enc", "group": "vision", "does": "Encode RGB565 frames as H.264 in hardware.", "repo": "micropython-pydevices", "path": "modules/h264enc", "get": ["firmware"], "runs": "MP on ESP32-P4"}, + {"name": "mp4mux", "group": "vision", "does": "Record H.264 video and PCM sound into an MP4 file that plays everywhere.", "repo": "pydevices", "path": "packages/mp4mux", "guide": "packages/mp4mux/README.md", "get": ["mip:mp4mux"], "runs": "MP, CP, Desktop"}, {"name": "tsmux", "group": "vision", "does": "Wrap H.264 in MPEG-TS and cut it into HLS segments, so anything that plays HLS can watch a board.", "repo": "micropython-pydevices", "path": "modules/tsmux", "get": ["firmware"], "runs": "MP"}, {"name": "castif", "group": "vision", "does": "Stream what your app draws to a screen across the room.", "repo": "micropython-pydevices", "path": "modules/castif", "get": ["firmware"], "runs": "MP on ESP32-P4"}, {"name": "vision", "group": "vision", "does": "Run image models and handle pictures with ESP-DL, plus H.264 and RTSP on the P4.", "repo": "micropython-pydevices", "path": "modules/vision", "get": ["optin"], "runs": "MP on ESP32-S3, P4"}, @@ -186,7 +188,7 @@ {"name": "Audio codecs", "group": "drivers", "does": "Set up ES7210, ES8311, ES8388 and AW88298 audio chips.", "repo": "pydevices", "path": "drivers/codec", "get": ["chipmip"], "runs": "MP"}, {"name": "Environment sensors", "group": "drivers", "does": "Read temperature, humidity and pressure from AHTx0, BMP280 and DPS310.", "repo": "pydevices", "path": "drivers/env", "get": ["clone"], "runs": "MP"}, {"name": "Haptics", "group": "drivers", "does": "Buzz a DRV2605 motor driver.", "repo": "pydevices", "path": "drivers/haptic", "get": ["chipmip"], "runs": "MP"}, - {"name": "IMUs", "group": "drivers", "does": "Read motion from BMA423, LIS3DH and QMI8658.", "repo": "pydevices", "path": "drivers/imu", "get": ["chipmip"], "runs": "MP"}, + {"name": "IMUs", "group": "drivers", "does": "Read motion from BMA423, LIS3DH, QMA6100P and QMI8658.", "repo": "pydevices", "path": "drivers/imu", "get": ["chipmip"], "runs": "MP"}, {"name": "Buttons and keypads", "group": "drivers", "does": "Wire physical buttons, keypads and encoders into `appdev`.", "repo": "pydevices", "path": "drivers/input", "get": ["chipmip"], "runs": "MP"}, {"name": "I/O expanders", "group": "drivers", "does": "Add pins with CH422G, PCA9554, PI4IOE5V and XL9535.", "repo": "pydevices", "path": "drivers/io_expander", "get": ["chipmip"], "runs": "MP"}, {"name": "Infrared", "group": "drivers", "does": "Send and receive NEC remote-control codes.", "repo": "pydevices", "path": "drivers/ir", "get": ["chipmip"], "runs": "MP"}, From 9fddb79d509eb63e592ca20003e0af762fefb9d0 Mon Sep 17 00:00:00 2001 From: Brad Barnett <127794626+bdbarnett@users.noreply.github.com> Date: Sun, 8 Nov 2026 21:46:46 -0600 Subject: [PATCH 2/2] Stack: mp4mux is a clone until the next pydevices release puts it in the index --- data/stack.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/stack.json b/data/stack.json index 32aa3d7..90b403a 100644 --- a/data/stack.json +++ b/data/stack.json @@ -174,7 +174,7 @@ {"name": "cameraif", "group": "vision", "does": "Use a MIPI-CSI camera as a Python object, with its sensor found by probing.", "repo": "micropython-pydevices", "path": "modules/cameraif", "get": ["firmware"], "runs": "MP on ESP32-P4"}, {"name": "h264enc", "group": "vision", "does": "Encode RGB565 frames as H.264 in hardware.", "repo": "micropython-pydevices", "path": "modules/h264enc", "get": ["firmware"], "runs": "MP on ESP32-P4"}, - {"name": "mp4mux", "group": "vision", "does": "Record H.264 video and PCM sound into an MP4 file that plays everywhere.", "repo": "pydevices", "path": "packages/mp4mux", "guide": "packages/mp4mux/README.md", "get": ["mip:mp4mux"], "runs": "MP, CP, Desktop"}, + {"name": "mp4mux", "group": "vision", "does": "Record H.264 video and PCM sound into an MP4 file that plays everywhere.", "repo": "pydevices", "path": "packages/mp4mux", "guide": "packages/mp4mux/README.md", "get": ["clone"], "runs": "MP, CP, Desktop"}, {"name": "tsmux", "group": "vision", "does": "Wrap H.264 in MPEG-TS and cut it into HLS segments, so anything that plays HLS can watch a board.", "repo": "micropython-pydevices", "path": "modules/tsmux", "get": ["firmware"], "runs": "MP"}, {"name": "castif", "group": "vision", "does": "Stream what your app draws to a screen across the room.", "repo": "micropython-pydevices", "path": "modules/castif", "get": ["firmware"], "runs": "MP on ESP32-P4"}, {"name": "vision", "group": "vision", "does": "Run image models and handle pictures with ESP-DL, plus H.264 and RTSP on the P4.", "repo": "micropython-pydevices", "path": "modules/vision", "get": ["optin"], "runs": "MP on ESP32-S3, P4"},