Skip to content

add switcam b200 - #117

Open
Puzzak01 wants to merge 45 commits into
OpenIPC:masterfrom
Puzzak01:master
Open

add switcam b200#117
Puzzak01 wants to merge 45 commits into
OpenIPC:masterfrom
Puzzak01:master

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, customizer, and exclude list

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

Grey Divider

AI Description

• Add SSC337DE Ultimate board profile for Switcam B200 NAND-16M builds.
• Provide device-specific customizer settings and an excludes list to trim unused drivers.
• Update device support table and remove legacy GitHub Actions build/manifest automation.
Diagram

graph TD
  A["Build system (builder.sh)"] --> B["Device defconfig"] --> E["Firmware image (.tgz)"] --> F["GitHub Releases"]
  A --> C["Rootfs overlay: customizer.sh"] --> E
  A --> D["Excludes list"] --> E
  G["README device matrix"] --> B
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Keep CI workflows and only extend the build matrix
  • ➕ Avoids losing scheduled/nightly builds and manifest generation
  • ➕ Lower risk to release/distribution automation for existing platforms
  • ➖ Requires maintaining GitHub Actions complexity and runner time costs
  • ➖ May be undesirable if CI was intentionally migrated elsewhere
2. Derive from an existing SSC337DE Ultimate device template
  • ➕ Reduces duplication and drift across SSC337DE Ultimate board configs
  • ➕ Makes future changes (kernel/toolchain/package defaults) easier to propagate
  • ➖ Requires introducing shared include/template structure if not present
  • ➖ May complicate per-device overrides if differences are substantial
3. Move device-specific Majestic defaults into a versioned config artifact
  • ➕ Makes settings changes auditable/versioned independently of firmware builds
  • ➕ Allows shipping minimal firmware changes for tuning-only updates
  • ➖ Adds an extra configuration distribution/update mechanism
  • ➖ May be overkill for single-device bring-up

Recommendation: The device bring-up approach (new defconfig + overlay customizer + excludes) is consistent with per-board support in this repo. The main review question is the intentional removal of GitHub Actions workflows (build/manifest/cleanup/build-one): if CI is being migrated or deprecated, consider adding a brief note in README or CONTRIBUTING about the new build/release path; otherwise, prefer keeping workflows and only adding the new platform to the matrix.

Files changed (4) +128 / -0

Enhancement (1) +26 / -0
customizer.shAdd device customizer for upgrade URL and Majestic defaults +26/-0

Add device customizer for upgrade URL and Majestic defaults

• Adds a first-boot customizer that sets a device-specific upgrade URL and applies Majestic settings for codec, image orientation, IR-cut pins, backlight pin, and audio defaults.

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

Documentation (1) +1 / -0
README.mdDocument Switcam B200 support in the device matrix +1/-0

Document Switcam B200 support in the device matrix

• Adds a new line entry for Switcam B200, identifying it as SSC337DE with NAND flash and marked done.

README.md

Other (2) +101 / -0
ssc337de_ultimate_switcam-b200_defconfigAdd Buildroot defconfig for SSC337DE Ultimate Switcam B200 (NAND/UBI) +68/-0

Add Buildroot defconfig for SSC337DE Ultimate Switcam B200 (NAND/UBI)

• Introduces a new platform defconfig targeting arm cortex-a7 with Sigmastar Infinity6b0 (ssc337de) and the 'ultimate' variant. Configures kernel source/config, NAND/UBI rootfs outputs, and core OpenIPC packages (Majestic, WireGuard, osdrv, etc.).

devices/ssc337de_ultimate_switcam-b200/br-ext-chip-sigmastar/configs/ssc337de_ultimate_switcam-b200_defconfig

ssc337de_ultimate.listAdd excludes list to remove unused sensors/modules for Switcam B200 +33/-0

Add excludes list to remove unused sensors/modules for Switcam B200

• Defines files and kernel modules to exclude from the image, primarily unused sensor binaries/drivers and NFS-related modules, to reduce firmware size and surface area.

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

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

qodo-free-for-open-source-projects Bot commented Aug 10, 2026

Copy link
Copy Markdown

Code Review by Qodo

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

Grey Divider


Action required

1. Upgrade URL uses -nand.tgz 📘 Rule violation ☼ Reliability
Description
customizer.sh sets fw_setenv upgrade to ssc337de_ultimate_switcam-b200-nand.tgz instead of the
required ssc337de_ultimate_switcam-b200-nor.tgz. This can break device self-update because the URL
won’t match the CI artifact naming convention required by policy.
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
PR Compliance ID 4 requires the upgrade artifact filename in fw_setenv upgrade to be exactly
-nor.tgz. The added customizer.sh sets it to .../ssc337de_ultimate_switcam-b200-nand.tgz,
which does not match the required artifact name.

CLAUDE.md: Customizer Upgrade URL Must Reference the Correct CI Artifact Name (<device>-nor.tgz): CLAUDE.md: Customizer Upgrade URL Must Reference the Correct CI Artifact Name (<device>-nor.tgz): CLAUDE.md: Customizer Upgrade URL Must Reference the Correct CI Artifact Name (<device>-nor.tgz): CLAUDE.md: Customizer Upgrade URL Must Reference the Correct CI Artifact Name (<device>-nor.tgz): CLAUDE.md: Customizer Upgrade URL Must Reference the Correct CI Artifact Name (<device>-nor.tgz): CLAUDE.md: Customizer Upgrade URL Must Reference the Correct CI Artifact Name (<device>-nor.tgz): CLAUDE.md: Customizer Upgrade URL Must Reference the Correct CI Artifact Name (<device>-nor.tgz): CLAUDE.md: Customizer Upgrade URL Must Reference the Correct CI Artifact Name (<device>-nor.tgz)
devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[8-8]
CLAUDE.md[103-105]

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 device `devices/ssc337de_ultimate_switcam-b200/.../customizer.sh` sets the upgrade URL to a filename that is not exactly `<device>-nor.tgz`.
## Issue Context
Compliance requires builder release URLs in `fw_setenv upgrade` to reference the CI artifact name `<device>-nor.tgz`.
## Fix Focus Areas
- devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[6-9]

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


2. CI release pipeline removed ✓ Resolved 🐞 Bug ☼ Reliability
Description
This PR removes the GitHub Actions workflows/scripts that the repo documents as producing and
publishing nightly/latest firmware artifacts, generating the gh-pages manifest, and pruning old
releases, so latest assets and manifests will stop being refreshed. At the same time, the new
Switcam B200 customizer.sh (and other repo tooling) hardcodes downloads from
releases/download/latest, meaning self-upgrade and downstream consumers will increasingly see
stale or missing artifacts over time.
Code

.github/workflows/master.yml[L1-4]

-name: Build
-on:
-  schedule:
-    - cron: '0 3 * * *'
Evidence
The repository documentation identifies .github/workflows/master.yml, manifest.yml, and
.github/scripts/enrich_manifest.py as the official CI pipeline that builds the device matrix,
uploads artifacts to the latest tag/nightly/latest, and produces manifest.json/manifest.flat
while pruning old releases; removing these files eliminates the automated producer for those assets
and the manifest. This is directly problematic because existing tooling like repack.sh is
described as expecting artifacts under releases/download/latest/..., and the newly added Switcam
B200 explicitly sets upgrade to a
releases/download/latest/ssc337de_ultimate_switcam-b200-nand.tgz URL, so without CI publishing
there is no guaranteed path for that upgrade target to be created and kept current.

CLAUDE.md[136-151]
README.md[8-12]
repack.sh[1-29]
devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[6-9]
CLAUDE.md[119-121]
CLAUDE.md[138-144]

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

## Issue description
This PR removes the CI workflows/scripts that the repo documentation describes as the authoritative pipeline for building firmware, publishing `nightly/latest` (and `releases/download/latest/...`) artifacts, generating `manifest.json/manifest.flat` for gh-pages, and pruning old releases. Because repo tooling and the new Switcam B200 device configuration hardcode `latest` download URLs for repacking and self-upgrade, deleting this automation without an explicit replacement will cause the manifest and `latest` assets (including `ssc337de_ultimate_switcam-b200-nand.tgz`) to become stale or missing over time.
## Issue Context
- Repo docs describe `.github/workflows/master.yml`, `manifest.yml`, and `.github/scripts/enrich_manifest.py` as the official release + manifest pipeline, and state the workflow/device matrix is the only build registry and CI uploads images to the `latest` tag.
- Other repo tooling (e.g., `repack.sh`) expects builder artifacts under `releases/download/latest/...`.
- The newly added Switcam B200 `customizer.sh` sets `upgrade` to a `releases/download/latest/ssc337de_ultimate_switcam-b200-nand.tgz` URL, so it specifically depends on a reliably produced/refreshed `latest` release asset.
## Fix Focus Areas
- .github/workflows/master.yml[1-4]
- .github/workflows/master.yml[58-60]
- .github/workflows/manifest.yml[38-43]
- .github/scripts/enrich_manifest.py[1-24]
- CLAUDE.md[119-121]
- CLAUDE.md[136-151]
- CLAUDE.md[138-144]
- repack.sh[1-29]
- devices/ssc337de_ultimate_switcam-b200/general/overlay/usr/share/openipc/customizer.sh[6-9]

ⓘ 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 reply 'qodo' on any finding to push back, ask questions, or dig deeper

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

1. Upgrade url uses -nand.tgz 📘 Rule violation ☼ Reliability

customizer.sh sets fw_setenv upgrade to ssc337de_ultimate_switcam-b200-nand.tgz instead of the
required ssc337de_ultimate_switcam-b200-nor.tgz. This can break device self-update because the URL
won’t match the CI artifact naming convention required by policy.
Agent Prompt
## Issue description
The device `devices/ssc337de_ultimate_switcam-b200/.../customizer.sh` sets the upgrade URL to a filename that is not exactly `<device>-nor.tgz`.

## Issue Context
Compliance requires builder release URLs in `fw_setenv upgrade` to reference the CI artifact name `<device>-nor.tgz`.

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

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

Comment thread .github/workflows/master.yml

@flyrouter flyrouter left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

For a major overhaul.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Critical error. The system file has been deleted.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Critical error. The system file has been deleted.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Critical error. The system file has been deleted.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Critical error. The system file has been deleted.

@flyrouter flyrouter Aug 10, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Confirmed.

Comment thread .github/CODEOWNERS

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Critical error. The system file has been deleted.

@flyrouter flyrouter Aug 10, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Modified

@flyrouter flyrouter Aug 10, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Modified

Comment thread README.md

@flyrouter flyrouter Aug 10, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Confirmed.

@flyrouter flyrouter Aug 10, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Confirmed.

Puzzak01 and others added 3 commits August 10, 2026 22:38
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.

2 participants