jetson-optimize-memory

Reclaim DRAM on Jetson devices by disabling unused display, camera, and SWIOTLB carveouts.

2|Updated Aug 20, 2026
One-click install
npx skills add https://github.com/atomicrajat/industry_safety_monitoring_system --skill jetson-optimize-memory-atomicrajat
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: jetson-optimize-memory
Source: https://github.com/atomicrajat/industry_safety_monitoring_system/tree/main/.claude/skills/jetson-optimize-memory
Command: npx skills add https://github.com/atomicrajat/industry_safety_monitoring_system --skill jetson-optimize-memory-atomicrajat

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Jetson BSP images ship with DRAM carveouts reserved for display, camera, and DMA subsystems even when a deployment never uses them. This Skill reclaims that reserved memory by editing MB1 BCT, MB2 BCT, kernel reserved-memory, and SWIOTLB configuration across the four boot layers. ## Core Features & Use Cases - Validated scenario recipes: Apply the headless recipe to disable DCE/display carveouts or the no-camera recipe to disable RCE/VI/ISP carveouts, with chip-specific carveout tables for T234 (Orin) and T264 (Thor). - Four-layer boot-order edits: Generate explicit DTS overrides for MB1 BCT carveouts, MB2 BCT cluster loading controls and AST deletions, kernel DTB node disabling via dtc, and SWIOTLB pool sizing through CMDLINE_ADD. - Mandatory verification workflow: Reproduce the BSP compile/decompile round-trip with gcc -E and dtc to confirm zeroed carveouts, disabled clusters, and deleted AST nodes, then validate on the booted target with /proc/iomem, sysfs, and dmesg checks. - Use Case: Deploying an Orin Nano (p3767) as a headless edge server with no display attached — apply the headless recipe to zero the DCE-family carveouts, disable the display node in the kernel DTB, set multi-user.target, and free the reclaimed DRAM for the application workload. ## Quick Start Ask the agent to run the jetson-optimize-memory headless recipe for your Orin Nano deployment to reclaim the DCE and display DRAM carveouts.

Frequently Asked Questions about jetson-optimize-memory

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I reclaim DRAM on a headless Jetson Orin deployment?

Apply the headless recipe: zero the DCE-family carveouts (CARVEOUT_BPMP_DCE, CARVEOUT_DCE, CARVEOUT_DCE_TSEC, CARVEOUT_TSEC_DCE, CARVEOUT_DISP_EARLY_BOOT_FB) in the MB1 BCT misc DTS, disable the DCE auxp_controls and delete its AST in MB2 BCT, disable the display node in the kernel DTB, then set multi-user.target post-boot.

How do I disable camera carveouts on Jetson to free memory?

Use the no-camera recipe, which zeros the RCE/VI/ISP-family carveouts in MB1 BCT, disables each RCE instance's auxp_controls and ASTs in MB2 BCT, and sets status = "disabled" on the vi, isp, and nvcsi nodes under host1x in the kernel device tree.

Can I set swiotlb=0 to reclaim the full DMA bounce pool?

No, setting SWIOTLB to 0 is explicitly refused because some peripherals cannot use the IOMMU. Instead, shrink the pool by editing CMDLINE_ADD (never CMDLINE) with a non-zero value such as swiotlb=2048 for a 4 MiB pool, where total bytes equal the value times 2048.

Does this work on both Jetson Orin and Thor chips?

Yes, the recipes include chip-specific carveout tables for T234 (Orin) and T264 (Thor). The GPU software stack must match the chip — nvgpu for T234 and OpenRM for T264 and later — and mismatches should stop the workflow rather than be guessed.

Why does my Jetson fail to boot after disabling an MB1 BCT carveout?

Boot failure means the disabled carveout is mandatory for the active SoC. Restore the pristine misc DTS and re-flash the device. Only carveouts listed in the validated scenario recipes should be disabled; ad-hoc subsystem disables are refused.

How do I verify carveout changes actually freed memory on Jetson?

Verify the merged BCT binary with a gcc -E and dtc compile/decompile round-trip using the BSP's bct_flags, confirming zeroed aux_info sizes and deleted AST nodes. On the booted target, check /proc/iomem, /proc/device-tree/reserved-memory/, dmesg carveout logs, and free -m.