It should work, but there’s definitely some risk when connecting the device and cables for communication using a VM instead of the actual hardware (VMs are generally fine for high-level processing, but their proficiency with low-level I/O-oriented tasks varies…).
For rewriting SD cards, it seems to work fine on Mac or Windows.
Short version:
- You don’t always need a separate Ubuntu PC.
- For some things (writing SD-card images) a Mac alone is fine.
- For full “SDK Manager” flashing (especially QSPI bootloader / NVMe), NVIDIA still expects an x86-64 Ubuntu host. That can be a real PC or an Ubuntu VM/emulator on your Mac, but VMs are a bit fiddly.
Below is the breakdown with context so you can choose a path that actually fits your situation.
1. Two different “flash” jobs
On a Jetson Orin Nano devkit you usually care about two layers:
- Root filesystem / OS (what lives on the microSD card or NVMe)
- QSPI bootloader firmware (tiny flash chip on the module – basically “BIOS/UEFI + early boot”)
NVIDIA exposes two official installation methods for devkits:
- SD Card Image Method – write a prebuilt JetPack image to a microSD card.
- NVIDIA SDK Manager Method – use a host PC running Ubuntu + SDK Manager over USB to flash QSPI and/or rootfs. (Qiita)
Your dpkg errors (nvidia-l4t-bootloader, nvidia-l4t-kernel etc.) are essentially the “QSPI/bootloader update” part misbehaving. Reflashing is about getting both layers back into a consistent state.
2. What you can do with just a Mac
2.1. Re-image the SD card (rootfs) – Mac is completely fine
For the SD Card Image Method, NVIDIA’s own getting-started guide for the Orin Nano devkit literally shows using Balena Etcher on macOS to write the image.
Process (high level):
- On your Mac, download the JetPack SD card image for “Jetson Orin Nano Developer Kit” from NVIDIA’s download center / JetPack page.
- Install Balena Etcher (macOS build).
- Use Etcher to flash the
.imgfile to a microSD card. - Put the card in the Jetson, power on, go through the normal Ubuntu setup.
This completely resets the root filesystem on that microSD.
No Linux PC is required for this part.
This by itself may already clear a lot of “random dpkg mess” that came from experimenting on the old OS.
2.2. Limitation: QSPI bootloader updates for JetPack 6.x
The catch is the QSPI bootloader:
- NVIDIA’s JetPack 6.x notes say: if you use a JetPack 6.x SD card image for the first time, you must first update the QSPI bootloaders by installing JetPack 6 once using SDK Manager. After that one-time step, future JetPack 6.x SD-card images can be used directly. (Qiita)
So:
- If you stay on JetPack 5.x (e.g., 5.1.2 / 5.1.3 / 5.1.4), you can usually get away with just SD-card flashing from the Mac and not worry about SDK Manager right away.
- For a first-time move to JetPack 6.x, or for certain QSPI fixes, NVIDIA still expects you to run a proper flash from an Ubuntu x86-64 host at least once.
Given your current errors are around nvidia-l4t-bootloader wanting to go to 35.5.0, a clean SD-card reflash to a known-good JetPack 5.x image (and then resisting the urge to “apt dist-upgrade to the next major JetPack”) is already a big step towards stability, and can be done from Mac only.
3. Using a Mac + Ubuntu VM/emulator for full SDK Manager flashing
When you do want to properly update QSPI or flash NVMe, then you’re in “SDK Manager territory”.
3.1. Official requirement: x86-64 Linux host
SDK Manager’s system requirements say the host must be Ubuntu Desktop on x86-64 (16.04 / 18.04 / 20.04 – newer docs also mention 22.04) or a similar Linux, not macOS or Windows. (NVIDIA Docs)
So NVIDIA’s official options are:
- A physical x86-64 machine running Ubuntu, or
- An x86-64 Linux environment reached via VM/emulation.
macOS itself is not a supported host for SDK Manager.
3.2. Intel Mac: Ubuntu VM is common (but unofficial)
If your Mac is Intel:
- You can install VirtualBox, VMware Fusion, etc., and run Ubuntu x86-64 as a guest.
- Inside that Ubuntu VM you install SDK Manager and flash the Jetson over USB.
Plenty of people have done this successfully; there are tutorials and forum posts describing the steps and USB pass-through quirks.
Typical gotchas:
- You must configure the VM’s USB settings so that the “NVIDIA Corp. APX” device (the Jetson in recovery mode) is attached to the VM, not to macOS.
- If the USB device disconnects or snaps back to macOS mid-flash, SDK Manager will hang or fail.
NVIDIA doesn’t officially “support” this, but it’s a widely used workaround.
3.3. Apple Silicon (M1/M2/M3) Mac: needs x86 emulation
On Apple Silicon:
- The usual virtualisation tools (Parallels/UTM/VMware) default to ARM64 Ubuntu guests.
- SDK Manager is built for x86-64, so you need an Ubuntu x86-64 guest under emulation (e.g., UTM with QEMU) if you want to run it.
People have successfully done exactly this: running an emulated Ubuntu 22.04 (x86-64) under UTM on an M-series Mac, installing SDK Manager there, and flashing a Jetson Orin Nano.
Trade-offs:
- It works, but it’s slower and more fragile than a real x86-64 PC.
- You still have to get USB passthrough right (UTM/Parallels must hand the Jetson’s USB device to the guest).
So: it’s doable if you’re patient and careful, but not “one click”.
4. Is a separate Ubuntu PC absolutely necessary?
Putting it all together:
-
To just reinstall the OS on SD (clean JetPack 5.x or a consistent JetPack 6.x SD image):
︎ No, a separate Ubuntu PC is not required. Your Mac + Balena Etcher is enough. -
To do NVIDIA’s official “first-time” QSPI bootloader update and full JetPack install (especially for JetPack 6.x, or NVMe flashing):
︎ Yes, you effectively need some Ubuntu x86-64 environment – but it can be:- A physical Ubuntu PC, or
- An Ubuntu x86-64 VM/emulator running on your Mac, with USB passthrough configured.
-
There are advanced host-less paths (like upgrading Orin Nano from JetPack 5 to 6 using only SD cards and on-device
aptsteps) that avoid SDK Manager, but they are more complex and easy to get wrong. For where you are now, I’d treat those as “later, when you’re comfortable and after reading the full guide”.
5. Practical suggestion for you right now
Given your situation (beginner, already on Python 3.9.5, and seeing scary nvidia-l4t-* dpkg errors):
-
Short term, Mac-only “stabilise things” plan
-
Pick a JetPack 5.x SD-card image for Jetson Orin Nano Devkit (e.g. 5.1.3 or 5.1.4, whichever NVIDIA recommends for your use). (Qiita)
-
On the Mac, use Balena Etcher to flash that image to a new or freshly erased microSD card.
-
Boot the Jetson from that card and do the initial setup.
-
On that fresh system:
- Avoid
do-release-upgradeor largedist-upgradejumps that push you into a new JetPack/L4T major version; follow Jetson-specific guides instead of generic Ubuntu ones. - Use your Python 3.9.5 + venv approach for ML work.
- Avoid
This already gets you onto a known-good base and should avoid the broken
nvidia-l4t-*state you hit earlier. -
-
Later, when/if you want JetPack 6 or full QSPI reset
-
Decide whether you’re willing to:
- Borrow or build a small x86-64 Ubuntu box, or
- Invest time in setting up an Ubuntu x86-64 VM/emulator on your Mac and learning how to pass the Jetson’s USB device through reliably.
-
When you do that, run SDK Manager once to flash the board fully (QSPI + rootfs) to a JetPack version you want.
-
After that one-time QSPI update, future SD-card images for the same JetPack major line are much simpler. (Qiita)
-
Tiny summary
-
Standard Ubuntu guides can be dangerous on Jetson because they assume a normal PC – Jetson’s firmware stack (the
nvidia-l4t-*packages) is much more tightly coupled to the hardware. -
For re-imaging the SD card, you can absolutely use just your Mac – that is officially documented and common practice.
-
For full “flash everything including QSPI” (especially for first-time JetPack 6.x use), NVIDIA still expects an x86-64 Ubuntu host. That can be:
- a real Ubuntu PC, or
- an Ubuntu x86-64 VM/emulator on your Mac with USB passthrough, which works but is more work to set up.
-
A sensible path for you is: stabilise the board via SD-card reflash from Mac now, and only worry about SDK Manager / full QSPI flashing once you’re ready and have some form of Ubuntu host available.