Skip to content

Switcam B200 - #156

Open
Puzzak01 wants to merge 6 commits into
OpenIPC:masterfrom
Puzzak01:patch-3
Open

Puzzak01 wants to merge 6 commits into
OpenIPC:masterfrom
Puzzak01:patch-3

Conversation

@Puzzak01

Copy link
Copy Markdown
Contributor

No description provided.

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

Copy link
Copy Markdown

PR Summary by Qodo

Add Switcam B200 SSC337DE device profile

✨ Enhancement ⚙️ Configuration changes 📝 Documentation 🕐 10-20 Minutes

Grey Divider

AI Description

• Add an SSC337DE NAND profile for the Switcam B200 camera.
• Configure video, audio, night mode, GPIO mappings, and device-specific upgrades.
• Reduce firmware contents by excluding unused NFS and SunRPC kernel modules.
Diagram

graph TD
  A["Firmware build"] --> B["B200 profile"] --> C["Customizer"] --> F["Runtime settings"]
  B --> D["GPIO map"]
  B --> E["Module excludes"]
Loading
High-Level Assessment

The device-scoped profile is the appropriate approach because the upgrade artifact, GPIO assignments, and Majestic defaults are specific to the Switcam B200 and follow existing repository conventions. Sharing these settings through a generic SSC337DE profile would risk applying hardware-specific behavior to unrelated cameras.

Files changed (4) +45 / -0

Documentation (1) +1 / -0
README.mdList Switcam B200 as a supported camera +1/-0

List Switcam B200 as a supported camera

• Adds the completed Switcam B200 to the device compatibility table with its SSC337DE SoC, SC223A sensor, and NAND storage.

README.md

Other (3) +44 / -0
customizer.shConfigure Switcam B200 runtime defaults +26/-0

Configure Switcam B200 runtime defaults

• Adds the device upgrade URL and configures H.264 video, image orientation, night-mode GPIOs, and AAC audio defaults through the OpenIPC CLI.

devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh

gpio.confDefine Switcam B200 GPIO assignments +13/-0

Define Switcam B200 GPIO assignments

• Maps GPIOs 13 and 12 to the IR-cut controls and GPIO 52 to infrared illumination. Marks unsupported or unused peripherals with disabled assignments.

devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/gpio.conf

ssc337de.listExclude unused network filesystem modules +5/-0

Exclude unused network filesystem modules

• Removes NFS, NFSv3, lockd, grace, and SunRPC kernel modules from the device firmware package.

devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de.list

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

qodo-free-for-open-source-projects Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (2) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

1. New camera cannot enter build matrix ✓ Resolved 📘 Rule violation ≡ Correctness
Description
The ssc337de_ultimate_switcam-b200 device directory contains only its customizer, GPIO
configuration, and exclusion list, with no matching
br-ext-chip-sigmastar/configs/ssc337de_ultimate_switcam-b200_defconfig. Because builder.sh and
the CI matrix derive targets exclusively from matching *_defconfig files, explicit selection
resolves no source tree, CI omits the camera, and no build can copy its configuration or produce the
NAND archive referenced by its upgrade URL.
Code

devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[8]

+fw_setenv upgrade 'https://github.com/OpenIPC/builder/releases/download/latest/ssc337de_ultimate_switcam-b200-nand.tgz'
Evidence
Rules 2, 3, and 9 and the README require a board-named defconfig for a buildable image, while local
discovery, explicit board resolution, and CI all derive their targets exclusively from matching
*_defconfig files. The device currently contains only general/, so there is no registered target
capable of configuring the camera or producing its referenced upgrade archive.

Rule 2: Registered Devices Must Include the Required Files and Layout
Rule 2: Defconfig Name and Hardware Settings Must Match the Device
Rule 8: Device Firmware Must Build and Fit the Declared Flash Size
devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[8-8]
builder.sh[88-92]
builder.sh[120-122]
.github/scripts/ci-matrix.py[145-152]
README.md[146-157]
builder.sh[88-96]
builder.sh[120-154]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The Switcam B200 device has no board-specific defconfig, so repository discovery, explicit builds, and CI do not recognize it as a build target and cannot produce the referenced NAND archive.
## Fix Focus Areas
- devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[8-8]
## Recommended Fix
Add `devices/ssc337de_ultimate_switcam-b200/br-ext-chip-sigmastar/configs/ssc337de_ultimate_switcam-b200_defconfig`, based on the closest SSC337DE ultimate configuration. Configure it with hardware-appropriate SoC, variant, flash and NAND layout, toolchain, kernel, SC223A sensor, and required package settings.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. First boot requests a missing update 📘 Rule violation ☼ Reliability
Description
customizer.sh stores an upgrade URL ending in ssc337de_ultimate_switcam-b200-nand.tgz instead of
the required ssc337de_ultimate_switcam-b200-nor.tgz. When the camera invokes its seeded updater,
it requests a filename outside the board artifact convention used by the release flow.
Code

devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[8]

+fw_setenv upgrade 'https://github.com/OpenIPC/builder/releases/download/latest/ssc337de_ultimate_switcam-b200-nand.tgz'
Evidence
Rule 4 requires the seeded URL to end with exactly -nor.tgz; the added command instead stores a
URL ending in -nand.tgz.

Rule 3: First-Boot Customizer Must Use Correct Device Runtime Configuration
devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[8-8]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The first-boot upgrade URL names a NAND archive rather than the required board-specific NOR release artifact.
## Fix Focus Areas
- devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[8-8]
## Recommended Fix
Change the URL suffix from `ssc337de_ultimate_switcam-b200-nand.tgz` to `ssc337de_ultimate_switcam-b200-nor.tgz`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Firmware keeps unwanted kernel modules 📘 Rule violation ➹ Performance
Description
The new exclusion file is named ssc337de.list instead of the flavor-qualified lookup key
ssc337de_ultimate.list, even though the device identity declares the ultimate flavor and the
repository selects _.list. Because the device payload is copied without renaming files, builds for
this target do not consume its five module deletions, retaining the listed NFS modules and
preventing those exclusions from contributing to image sizing.
Code

devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de.list[1]

+/lib/modules/4.9.84/kernel/fs/lockd/lockd.ko
Evidence
Repository documentation requires exclusion-list filenames to include both processor and flavor and
explains that these lists delete rootfs paths for image sizing. The board token declares the
ultimate flavor, the existing SSC337DE lite device demonstrates the same flavor-qualified
convention, and the added file is named only ssc337de.list, so it cannot match the required
ssc337de_ultimate.list lookup.

Rule 4: Exclude Lists Must Preserve Required Drivers and Use the SoC-Flavor Filename
devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de.list[1-5]
README.md[153-157]
builder.sh[153-154]
README.md[146-159]
CLAUDE.md[54-70]
CLAUDE.md[110-114]
devices/ssc337de_lite_zte-k543/general/scripts/excludes/ssc337de_lite.list[1-24]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The exclusion filename omits the target's `ultimate` flavor, so it does not match the SoC-and-flavor lookup used for this board and its exclusions are not applied.
## Fix Focus Areas
- devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de.list[1-5]
## Recommended Fix
Rename `devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de.list` to `devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de_ultimate.list`, preserving all current exclusion entries unchanged.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can hide the parts of a finding you never read, like the evidence or the agent prompt

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

#
# Set custom upgrade url
#
fw_setenv upgrade 'https://github.com/OpenIPC/builder/releases/download/latest/ssc337de_ultimate_switcam-b200-nand.tgz'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

2. First boot requests a missing update 📘 Rule violation ☼ Reliability

3

customizer.sh stores an upgrade URL ending in ssc337de_ultimate_switcam-b200-nand.tgz instead of
the required ssc337de_ultimate_switcam-b200-nor.tgz. When the camera invokes its seeded updater,
it requests a filename outside the board artifact convention used by the release flow.
Agent Prompt
## Issue description
The first-boot upgrade URL names a NAND archive rather than the required board-specific NOR release artifact.

## Fix Focus Areas
- devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[8-8]

## Recommended Fix
Change the URL suffix from `ssc337de_ultimate_switcam-b200-nand.tgz` to `ssc337de_ultimate_switcam-b200-nor.tgz`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@@ -0,0 +1,5 @@
/lib/modules/4.9.84/kernel/fs/lockd/lockd.ko

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

3. Firmware keeps unwanted kernel modules 📘 Rule violation ➹ Performance

4

The new exclusion file is named ssc337de.list instead of the flavor-qualified lookup key
ssc337de_ultimate.list, even though the device identity declares the ultimate flavor and the
repository selects <soc>_<flavor>.list. Because the device payload is copied without renaming
files, builds for this target do not consume its five module deletions, retaining the listed NFS
modules and preventing those exclusions from contributing to image sizing.
Agent Prompt
## Issue description
The exclusion filename omits the target's `ultimate` flavor, so it does not match the SoC-and-flavor lookup used for this board and its exclusions are not applied.

## Fix Focus Areas
- devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de.list[1-5]

## Recommended Fix
Rename `devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de.list` to `devices/ssc337de_ultimate_switcam-b200/general/scripts/excludes/ssc337de_ultimate.list`, preserving all current exclusion entries unchanged.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

This branch has not been deployed

No deployments
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