Skip to content

ssc377qe fpv: drop the prebuilt imx335 module - #139

Merged
widgetii merged 1 commit into
masterfrom
drop-ssc377qe-imx335-blob
Aug 31, 2026
Merged

ssc377qe fpv: drop the prebuilt imx335 module#139
widgetii merged 1 commit into
masterfrom
drop-ssc377qe-imx335-blob

Conversation

@widgetii

Copy link
Copy Markdown
Member

@tipoman9 — your device directory, so please veto this if you would rather keep the blob for now.

This overlay carries a 25 KB sensor_imx335_mipi.ko because the driver OpenIPC built at the time could not reach the rates this board needs: 2560x1920@60 served 30 fps and the 90 fps mode produced no usable output at all. The blob shadowed the built module and fixed it for this one device, and for nobody else.

The source behind it is now what OpenIPC builds:

Why removal is safe for this device

  • sigmastar-osdrv-sensors is unpinned (VERSION = HEAD), and builder clones firmware from master, so both changes reach this build with nothing to bump.
  • This device's defconfig already pulls the sensors package: BR2_PACKAGE_SIGMASTAR_OSDRV_INFINITY6C=y selects BR2_PACKAGE_SIGMASTAR_OSDRV_SENSORS, so sensor_imx335_mipi.ko is built and installed to /lib/modules/5.10.61/sigmastar/ regardless. The overlay copy was only ever shadowing it.
  • This overlay has no load_sigmastar override, so it picks up the merged loader and its lane_num=4.
  • Nothing else in the device references the file.

Measured, not assumed

The built driver is a later revision than the blob (72ad30b against the 30fdac4 it came from) and measures the same or better on an SSC377QE, rebooting before every mode:

mode blob built from source
2592x1944@59 59.2 59.2
2560x1920@60 58.4 60.1
2208x1248@90 89.5 89.5
1920x1080@120 119.6 116.1

Then verified end to end with the built module and the merged loader and nothing else: the loader applies lane_num=4 on its own, and a 60 fps request delivers 60.0.

The one place the blob is ahead is 120 fps, by about 3%. If that matters to you I would rather fix it in star6c_sensor than keep a binary here.

Removing it means this device tracks the driver instead of freezing a copy of it — the next person who needs a mode changed can change it.

Refs: OpenIPC/firmware#1953

This overlay carried a 25KB sensor_imx335_mipi.ko because the driver OpenIPC
built at the time could not reach the rates this board needs: its 2560x1920@60
mode served 30fps and its 90fps mode produced no usable output at all. The blob
shadowed the built module and fixed it for this one device, and for nobody else.

The source behind it is now what OpenIPC builds. openipc/sensors carries it as
sigmastar/infinity6c/sensor_imx335_mipi.c instead of a symlink to the infinity6e
driver (OpenIPC/sensors#3), and the infinity6c loader states the lane count it
needs (OpenIPC/firmware#2343). sigmastar-osdrv-sensors is unpinned, and this
device's defconfig already selects it -- BR2_PACKAGE_SIGMASTAR_OSDRV_INFINITY6C
selects BR2_PACKAGE_SIGMASTAR_OSDRV_SENSORS -- so the module is built and
installed to /lib/modules/5.10.61/sigmastar either way. The overlay copy was
only ever shadowing it.

Removing it means this device tracks the driver instead of freezing a copy of
it, which is the point: the next person who needs a mode changed can change it.

The built driver is a later revision than the blob (72ad30b against the
30fdac4 it came from) and measures the same or better on an SSC377QE, rebooting
before every mode:

  2592x1944@59    59.2 fps   (blob 59.2)
  2560x1920@60    60.1 fps   (blob 58.4)
  2208x1248@90    89.5 fps   (blob 89.5)
  1920x1080@120  116.1 fps   (blob 119.6)

Verified end to end on hardware afterwards: with the built module and the
merged loader and nothing else, the loader applies lane_num=4 on its own and a
60fps request delivers 60.0.

Nothing else in the overlay changes.
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Use the built IMX335 driver for SSC377QE FPV

⚙️ Configuration changes ✨ Enhancement 🕐 10-20 Minutes

Grey Divider

AI Description

• Removes the device-local IMX335 binary superseded by the upstream Infinity6C driver.
• Prevents overlay shadowing so SSC377QE builds track maintainable sensor source.
• Relies on existing sensor-package selection and merged four-lane loader configuration.
Diagram

graph TD
  A["Device defconfig"] -->|"selects"| B["Sensor package"] -->|"builds"| C["IMX335 module"] -->|"installed into"| D["Firmware image"] -->|"drives"| F["IMX335 sensor"]
  E["Device overlay"] -. "no longer shadows" .-> C
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Retain the device-local binary
  • ➕ Preserves the exact previously deployed module behavior
  • ➕ Avoids dependence on upstream source changes
  • ➖ Keeps an opaque, device-only artifact
  • ➖ Continues shadowing the maintained package module
  • ➖ Prevents source-level fixes and review
2. Pin the sensor source revision
  • ➕ Provides reproducible source-based module behavior
  • ➕ Avoids retaining the prebuilt binary
  • ➖ Changes the repository's unpinned update model
  • ➖ Can delay unrelated sensor fixes and improvements
  • ➖ Expands the scope beyond this device overlay

Recommendation: Remove the blob and use the package-built driver. The upstream Infinity6C source and four-lane loader now cover this board, the package is already selected, and measured modes show equivalent or improved behavior except for a small reported 120 fps regression that should be fixed in source rather than preserved in a binary override.

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can type 'qodo, fix this' on a finding and the fix lands right on your PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@widgetii
widgetii merged commit 4f640b3 into master Aug 31, 2026
6 checks passed
@widgetii
widgetii deleted the drop-ssc377qe-imx335-blob branch August 31, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant