Skip to content

hisilicon-cv200: build 18 sensor drivers from openhisilicon source#2042

Merged
widgetii merged 1 commit into
masterfrom
sensor/cv200-source-built-sensors
May 4, 2026
Merged

hisilicon-cv200: build 18 sensor drivers from openhisilicon source#2042
widgetii merged 1 commit into
masterfrom
sensor/cv200-source-built-sensors

Conversation

@widgetii

@widgetii widgetii commented May 4, 2026

Copy link
Copy Markdown
Member

Summary

Switches all hi3516cv200 sensors that have source code in openhisilicon from binary blobs to source-built drivers. Bumps HISILICON_OPENSDK_VERSION from 45b17cc to cd1c21d (latest main, includes the work landed in OpenIPC/openhisilicon PRs #75#80).

The cv200 sensor list grows from 1 (ov2710 only) to 18:

Sony Aptina OmniVision SmartSens Panasonic Silicon Optronics (JX)
imx222 9m034, ar0230 ov2710, ov2718, ov9712, ov9732, ov9750, ov9752 sc1135, sc2035, sc2135, sc2235 mn34222 jxf22, jxf23, jxh42

Plus ar0130.

Reproducibility

Every cv200 build now compiles those 18 sensors from C source. 17 binary .so blobs deleted from general/package/hisilicon-osdrv-hi3516cv200/files/sensor/ (ov2710 was already missing — already built from source in the previous opensdk pin). Plus the legacy libsns_ov9750_v2.so blob, which was a stale variant superseded by the source-built libsns_ov9750.so.

Sensors without source code remain as binary blobs (intentional per the request — only delete blobs we have source for):

ar0237, gc1034, gc2023, imx122, imx291, imx323_i2c_dc_v1,
jxh62, jxh65, ov2735, sc1145, sc1235

Verification

  • Bumped HISILICON_OPENSDK_VERSION triggered a fresh fetch of openhisilicon at cd1c21d into output/build/hisilicon-opensdk-cd1c21d/.
  • Ran make CHIPARCH=hi3516cv200 -C libraries all from the openhisilicon source against the cached cv200 musleabi toolchain — all 18 sensor .so files produced cleanly (ARMv5 EABI5 soft-float, matching the camera ABI).
  • The dual-platform jxf22 + sc2235 sources (cv300 dir + vpath into cv200) build correctly under the firmware build env.

Real-hardware test

JXF22 was end-to-end verified on a real hi3518ev200 camera in openhisilicon PR #79 — built standalone, deployed via direct .so swap, RTSP streamed clean with no encoder timeouts. The other 17 sensors ship binary-identical artifacts to those individual openhisilicon PR builds; they're CI-build-tested here but not hardware-tested from this firmware PR (different physical sensor hardware would be needed for each).

Pre-existing kernel build issues in this branch's tree (rtl8188eu / usb gadget compat warnings tripping -Werror) prevented running a full make BOARD=hi3516cv200_lite end-to-end locally; the sensor-build verification was done by running just the userspace build stage of hisilicon-opensdk against the new pin. CI should exercise the full build path.

Test plan

  • CI Build (hi3516cv200_lite) job stays green
  • output/target/usr/lib/sensors/ ends up with the 18 source-built .so files plus the 11 still-binary blobs
  • Cameras with sensors covered by the 18 source-built drivers continue to stream after this lands

🤖 Generated with Claude Code

Bumps HISILICON_OPENSDK_VERSION from 45b17cc to cd1c21d (latest main
on github.com/OpenIPC/openhisilicon, includes all the cv200 sensor
work landed in PRs #75..#80).

Switches all hi3516cv200 sensors that have source in openhisilicon
from binary blobs (shipped via hisilicon-osdrv-hi3516cv200/files/sensor/)
to source builds (compiled by hisilicon-opensdk and installed via
HISILICON_OPENSDK_SENSORS_hi3516cv200). The cv200 sensor list grows
from 1 (omnivision_ov2710 only) to 18:

  aptina_9m034     omnivision_ov9712   smartsens_sc1135   soi_jxf22
  aptina_ar0230    omnivision_ov9732   smartsens_sc2035   soi_jxf23
  ar0130           omnivision_ov9750   smartsens_sc2135   soi_jxh42
  omnivision_ov2710 omnivision_ov9752  smartsens_sc2235   sony_imx222
  omnivision_ov2718 panasonic_mn34222

Deletes 17 binary .so blobs from
general/package/hisilicon-osdrv-hi3516cv200/files/sensor/ for the 17
sensors with source (ov2710 was already absent — built from source
in the previous opensdk pin). Also drops libsns_ov9750_v2.so which
was a stale variant superseded by the source-built libsns_ov9750.so.
The corresponding INSTALL lines in hisilicon-osdrv-hi3516cv200.mk
are removed; only sensors without source remain as binary installs
(ar0237, gc1034, gc2023, imx122, imx291, imx323_i2c_dc_v1, jxh62,
jxh65, ov2735, sc1145, sc1235, plus the imx323_i2c_dc compat
symlink).

Verified: built openhisilicon's libraries/ tree at the new pin
against the cached cv200 musleabi toolchain — all 18 sensor .so
files produced, ARMv5 EABI5 soft-float (matching the camera ABI).

Real-hardware testing: jxf22 was end-to-end verified on
hi3518ev200 hardware in openhisilicon PR #79 (deployed via direct
.so swap, RTSP streamed clean). The other 17 sensors are CI-built
but not hardware-tested from this firmware change — they ship
identical artifacts to the prior individual openhisilicon PR builds.

Net change: 17 binary blobs deleted (every build now reproducible
for those sensors), every cv200 build now compiles them from source.
@widgetii widgetii merged commit 817491b into master May 4, 2026
92 checks passed
@widgetii widgetii deleted the sensor/cv200-source-built-sensors branch May 4, 2026 11:56
widgetii added a commit that referenced this pull request May 7, 2026
Expands HISILICON_OPENSDK_SENSORS_hi3516cv500 from 3 sensors
(imx307, imx335, imx415) to 20 — every cv500 sensor that has source
in the openhisilicon repo at the current pin (680085e).

  galaxycore_gc2053          omnivision_os05a_2L         sony_imx307
  omnivision_os04b10         omnivision_os08a10          sony_imx307_2L
  omnivision_os05a           omnivision_ov12870          sony_imx327
  omnivision_ov2775          omnivision_ov9284           sony_imx327_2L
  panasonic_mn34220          primesensor_ps5260_2L       sony_imx335
  smart_sc4210                                           sony_imx335_ForCar
                                                         sony_imx390
                                                         sony_imx415
                                                         sony_imx458

Deletes 20 binary blobs from
general/package/hisilicon-osdrv-hi3516cv500/files/sensor/ — every
source-built libname has an exactly-matching binary blob (perfect
overlap), so the binary-deletion count exactly mirrors the list
expansion. The osdrv .mk uses files/sensor/*.so glob, so blob
deletion is sufficient — no .mk edit needed.

Five binary blobs without source counterparts remain (intentional):
  libsns_imx290.so          libsns_imx307_2l_slave.so
  libsns_imx307_i2c_lvds.so libsns_imx334.so
  libsns_imx377.so

Verified: all 20 source-built sensors compile cleanly with the cached
cv500 musleabi toolchain (arm-linux-musleabi-gcc 13.3.0). ELF target
ARMv5 EABI5 soft-float, matching the platform's ABI.

Tracks OpenIPC/openhisilicon#82. Same pattern as #2042 (cv200) and
INSTALL_TARGET_CMDS block at hisilicon-opensdk.mk:250.
widgetii added a commit that referenced this pull request May 8, 2026
Adds HISILICON_OPENSDK_SENSORS_hi3516cv100 with 17 sensors — every
cv100 sensor that has source in the openhisilicon repo at the
current pin (680085e):

  aptina_9m034            ov_9712              soi_jxh42
  aptina_ar0130           ov_9712+             sony_icx692
  aptina_ar0330           pana34031            sony_imx104
  aptina_mt9p006          pana34041            sony_imx122
  himax_1375              pixelplus_3100k      sony_imx138
                          soi_h22              sony_imx236

Wires the cv100 INSTALL_TARGET_CMDS block to install them via the
standard sensor foreach. The block was previously kernel-modules-
only.

Deletes 11 binary blobs from
general/package/hisilicon-osdrv-hi3516cv100/files/sensor/ — every
source-built libname that exact-matches a binary blob:
  libsns_9m034.so       libsns_imx138.so       libsns_mt9p006.so
  libsns_icx692.so      libsns_imx236.so       libsns_ov9712.so
  libsns_imx104.so      libsns_mn34041.so      libsns_ov9712_plus.so
  libsns_imx122.so                             libsns_po3100k.so

Nineteen binary blobs without exact-match source counterparts
remain (intentional). Variants of source-built sensors with bus/
resolution suffixes (libsns_ar0130_720p, libsns_imx138_i2c_dc,
libsns_jxh42_i2c, libsns_mn34031_720p, libsns_ov9712_i2c_dc) are
preserved as binary alongside the source-built unsuffixed versions
because the cv100 .ini configs reference these specific filenames.
Sensors with no source at all (ar0140, ar0330_1080p, gc1004ok,
imx222_spi_dc, imx225_*, ov2710, ov9732, sc1035_*) also stay.

Naming peculiarities preserved as-is (source uses platform
convention libsns_<model>; binary blobs use legacy non-standard
names that .ini files reference): libsns_hm1375 (source) vs
libsns_himax1375.so (binary, .ini); libsns_h22 (source) vs
libsns_soih22.so (binary, .ini). Both binary versions stay; the
source-built versions ship alongside.

The cv100 osdrv .mk uses files/sensor/*.so glob, so blob deletion
is sufficient — no osdrv .mk edit needed.

Tracks OpenIPC/openhisilicon#82. Closes the per-platform sweep
(after #2042 cv200, #2052 v101, #2053 cv500, #2054 ev200+gk7205,
widgetii added a commit that referenced this pull request May 8, 2026
…isilicon source

Expands HISILICON_OPENSDK_SENSORS_hi3516ev200 and the matching
gk7205v200 list (which inherits via $(HISILICON_OPENSDK_SENSORS_hi3516ev200)
since gk7205v200 is a symlink to hi3516ev200 in the openhisilicon
sensor tree) from 3 sensors (imx307, imx335, h63) to 30 — every
ev200/gk7205 sensor that has source in the openhisilicon repo at
the current pin (680085e):

  aptina_ar0237              omnivision_os02g10          sony_imx290
  bt656                      omnivision_os05a            sony_imx307
  galaxycore_gc2053          omnivision_ov2718           sony_imx307_2L
  galaxycore_gc2053_ForCar   smart_sc2231                sony_imx327
  galaxycore_gc4023          smart_sc2235                sony_imx327_2L
  galaxycore_gc4653_2L       smart_sc223a                sony_imx335
  galaxycore_gc5603          smart_sc3235                sony_imx335_2L
  imagedesign_mis2008        smart_sc3335                sony_imx335_fpv
  soi_f37                    smart_sc3336                superpix_sp2305
  soi_h63                    smart_sc4236
                             smart_sc500ai

Deletes 10 binary blobs from
general/package/hisilicon-osdrv-hi3516ev200/files/sensor/ — the ones
whose libnames overlap exactly with our source-built libnames. Five
binary blobs without source counterparts remain (intentional):
  libsns_f22.so       libsns_f23.so
  libsns_sc2232h.so   libsns_sc2239.so
  libsns_sc2315e.so

The hi3516ev200 osdrv .mk uses files/sensor/*.so glob, so blob
deletion is sufficient — no .mk edit needed.

Deletes 25 binary blobs from
general/package/goke-osdrv-gk7205v200/files/sensor/ for the same
reason. The goke .mk uses explicit per-blob INSTALL lines, so this
commit also rewrites the sensor INSTALL block to keep only the
remaining binary-only sensors (sc200ai, sc2232h, sc2239, sc223a_4l,
sc2335) with a comment explaining the source-built sensors are now
installed by hisilicon-opensdk.

Files retained as binary blobs in goke (no source available):
  libsns_f23.so       libsns_f23_dc.so
  libsns_gc1054.so    libsns_sc200ai.so
  libsns_sc2232h.so   libsns_sc2239.so
  libsns_sc223a_4l.so libsns_sc2335.so

Tracks OpenIPC/openhisilicon#82. Same pattern as #2042 (cv200),
generic else branch in hisilicon-opensdk.mk:272 that ev200 and
gk7205v200 both fall through to.
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