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.