Repository navigation
Remove D400 bundeled FW - #15063
Merged
Merged
Remove D400 bundeled FW#15063
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR removes the bundled D400 firmware pipeline and shifts firmware updates toward user-supplied/downloaded firmware files across core SDK, viewer/common UI, REST/react viewer, Android, tests, docs, and build configuration.
Changes:
- Removed bundled firmware CMake target/options, generated firmware resources, and D400 recommended-firmware registration.
- Removed REST/react-viewer bundled firmware update flow and replaced UI install prompts with firmware download links.
- Updated Android, unit-test, and documentation paths to require externally supplied firmware binaries.
Reviewed changes
Copilot reviewed 37 out of 37 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
CMakeLists.txt |
Stops adding bundled firmware subproject. |
CMake/lrs_options.cmake |
Removes IMPORT_DEPTH_CAM_FW option. |
CMake/android_config.cmake |
Removes Android override for bundled firmware import. |
common/fw/CMakeLists.txt |
Deletes bundled firmware download/embed target. |
common/fw/empty.c |
Deletes empty firmware target source. |
common/fw/firmware-version.h |
Deletes bundled D400 firmware version definition. |
common/fw/fw.c.in |
Deletes firmware binary C source template. |
common/fw/fw.h.in |
Deletes firmware access header template. |
common/fw/fw.rc |
Deletes Windows firmware resource include. |
common/fw/fw.rc.in |
Deletes Windows firmware resource template. |
common/fw-update-helper.h |
Removes bundled firmware helper APIs; adds download URL helper. |
common/fw-update-helper.cpp |
Removes bundled image resolution and exposes firmware download URL. |
common/device-model.h |
Removes bundled firmware notification/config declarations. |
common/device-model.cpp |
Removes bundled firmware notification logic and adds firmware download link in device info. |
common/viewer.cpp |
Removes “Recommend Bundled Firmware” setting. |
common/ux-window.cpp |
Removes default config keys for bundled/RC firmware recommendations. |
src/ds/d400/d400-device.h |
Removes D400 recommended firmware member. |
src/ds/d400/d400-device.cpp |
Stops using bundled firmware version and registering recommended firmware info. |
src/ds/d500/d500-device.h |
Removes unused D500 recommended firmware member. |
src/ds/d500/d500-device.cpp |
Removes dead commented recommended firmware registration. |
tools/tools_common.cmake |
Removes firmware target linkage and INTERNAL_FW define. |
tools/realsense-viewer/realsense-viewer.cpp |
Removes bundled firmware header include/define fallback. |
tools/enumerate-devices/readme.md |
Updates sample output to omit recommended firmware version. |
wrappers/android/tools/camera/build.gradle |
Removes Gradle firmware download task. |
wrappers/android/tools/camera/src/main/java/com/intel/realsense/camera/FirmwareUpdateProgressDialog.java |
Requires user-supplied firmware file instead of raw bundled resource. |
wrappers/rest-api/app/api/endpoints/firmware.py |
Removes REST firmware update endpoint. |
wrappers/rest-api/app/services/rs_manager.py |
Removes bundled firmware discovery/download/update flow and reports unknown/no recommended firmware. |
wrappers/rest-api/tools/react-viewer/src/api/client.ts |
Removes firmware update API and socket progress callbacks. |
wrappers/rest-api/tools/react-viewer/src/components/DevicePanel.tsx |
Removes install/update modal flow and adds firmware download link. |
wrappers/rest-api/tools/react-viewer/src/components/FirmwareProgressModal.tsx |
Deletes firmware progress modal component. |
wrappers/rest-api/tools/react-viewer/src/store/index.ts |
Removes firmware update store action/state transitions. |
wrappers/rest-api/tools/react-viewer/tests/mocks/api-handlers.ts |
Updates firmware mock response and removes update mock endpoint. |
wrappers/rest-api/tools/react-viewer/tests/unit/components/DevicePanel.test.tsx |
Removes mocked updateFirmware action. |
unit-tests/test-fw-update.py |
Requires custom firmware path and removes bundled image lookup. |
doc/viewer-sw-fw-update.md |
Replaces offline bundled firmware docs with download instructions. |
.github/skills/testing.md |
Documents mandatory custom firmware path for firmware-update tests. |
.github/skills/build.md |
Removes IMPORT_DEPTH_CAM_FW from build flag docs. |
Nir-Az
reviewed
May 17, 2026
| @@ -5,10 +5,6 @@ | |||
| import threading | |||
Collaborator
There was a problem hiding this comment.
Please make sure rest API viewer works with this change
Nir-Az
approved these changes
May 18, 2026
3 tasks
Nir-Az
added a commit
that referenced
this pull request
May 18, 2026
Nir-Az
added a commit
that referenced
this pull request
May 18, 2026
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Tracked on [RSDSO-21514]
D400 now behaves like D500: the SDK no longer downloads, embeds, or auto-suggests a "recommended" firmware binary. Users update firmware exclusively with a user-supplied .bin via rs-fw-update -f or the viewer's "Update Firmware..." menu, with binaries downloaded from https://dev.realsenseai.com/docs/firmware-updates.
Changes
CMake: deleted IMPORT_DEPTH_CAM_FW option, the entire common/fw/ subproject (which downloaded and embedded D4XX_FW_Image-*.bin), the -DINTERNAL_FW define, and the android-config override.
Core SDK: stopped registering RS2_CAMERA_INFO_RECOMMENDED_FIRMWARE_VERSION for D400 (src/ds/d400/d400-device.{h,cpp}); dropped the dead "uncomment when D500 FW exists" line from d500-device.{h,cpp}. Public enum kept for ABI.
Viewer / common UI: removed check_for_bundled_fw_update and should_bundle_fw_be_recommended, the bundled-FW notification, the "Recommend Bundled Firmware" settings checkbox, and the dead recommend_updates / allow_rc_firmware config keys. Added a discreet "Download firmware..." hyperlink in the device-info panel.
rs-fw-update tool: unchanged (already file-only).
Android wrapper: removed the gradle downloadFirmware task and the R.raw.fw_d4xx auto-update branch in FirmwareUpdateProgressDialog; the dialog now requires a user-supplied file path.
REST API + react-viewer: deleted the POST /firmware/{id}/update endpoint plus all bundle-resolution helpers; replaced the "Install update" button with a "Download firmware →" link. (Neither surface had a file-upload path before — net effect: FW update is no longer possible via REST/React, matching the rest of the cleanup.)
Tests: test-fw-update.py now requires --custom-fw-d400 / --custom-fw-d555 and skips with a warning otherwise.
Docs: removed the "Offline updates" section from doc/viewer-sw-fw-update.md; added a "Where to get firmware" pointer; removed the IMPORT_DEPTH_CAM_FW row from build.md; updated testing.md to note the now-mandatory custom-FW flag.
Companion PR
A separate PR in librealsense-deploy sets CUSTOM_FW_D400_URL to a real signed-FW URL (Signed_Image_UVC_5_17_0_10.bin) by default in three Groovy files, so Jenkins test-fw-update continues to exercise D400 instead of silently skipping after this change lands.