Open-source project
Qengineering/Jetson-Nano-Ubuntu-20-image avatar
Qengineering/Jetson-Nano-Ubuntu-20-image

Qengineering's Jetson Nano Ubuntu 20.04 Image: A Prebuilt SD Card for JetPack 4.6.1

Jetson Nano with Ubuntu 20.04 image

981 stars101 forksUnknownBSD-3-Clause

At a glance

What is it?
This is a downloadable disk image, not a package you install. It ships Ubuntu 20.04 with OpenCV 4.8.0, PyTorch 1.13.0, TorchVision 0.14.0 and TensorRT 8.0.1.6 on a Jetson Nano, and its real constraint is the 32 GB card the README warns you against.
Who is it for?
Adopt this image if you want a Jetson Nano booting into Ubuntu 20.04 with OpenCV 4.8.0, PyTorch 1.13.0 and TensorRT 8.0.1.6 already present, and you accept that the whole install is a single maintainer's snapshot rather than a package you can upgrade. Do not adopt it if you need a supported NVIDIA L4T release, a reproducible build you control, or a 32 GB card, since the README states the image already occupies more than 21 GB.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 52 days ago.
What is it written in?
GitHub does not report a main language for this repository.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

Who This Image Is Actually For

Building a working deep learning stack on a Jetson Nano is a day of compiling. OpenCV has to be built against the right CUDA and cuDNN, PyTorch has to match the Python version and the ARM architecture, and TensorRT has to line up with the CUDA version the board ships. Qengineering's project removes that day by handing you the result as a disk image. You flash it, insert the card, and the README says the password is jetson. That is the whole onboarding.

The audience is narrow and specific. It is people holding first-generation Jetson Nano hardware who want Ubuntu 20.04 rather than the 18.04 that NVIDIA's JetPack 4.x line was built around, and who want the Python side of the stack preinstalled. The repository topics list cuda, deep-learning, opencv, pytorch, tensorflow, tensorrt, torch and torchvision, which is an accurate inventory of what the image is meant to save you from installing. If you are on an Orin, a Xavier, or anything NVIDIA still ships current JetPack for, this project is not aimed at you.

What Is on the Card and What Is Not

The README's update log is the most useful part of the repository, because it dates every component. The 7-15-2023 entry pins OpenCV at 4.8.0, PyTorch at 1.13.0, TorchVision at 0.14.0, and adds TensorRT 8.0.1.6. The 7-13-2023 entry explains why TensorRT stops there: versions newer than 8.0.1.6 require CUDA 11 or later, and the README states plainly that CUDA 11 is not supported on a Jetson Nano. That single sentence is the ceiling on the whole project. No amount of image rebuilding moves a Nano past CUDA 10.2, so the image is not a lagging snapshot that will catch up. It is the end state of that hardware.

The image is also not overclocked. The README contrasts the two downloads directly: the TensorFlow and PyTorch image runs at the regular 1479 MHz, while the separate bare image is overclocked at 1900 MHz. So the convenience build and the fast build are mutually exclusive, and choosing one means giving up the other. The bare image is 5.6 GB and, per the README, contains Ubuntu 20.04 with JetPack 4.6.1 and no TensorFlow or PyTorch.

Flashing It: Sizes, Commands and Checksums

The README gives a 32 GB card as the minimum and then immediately argues against it. The download is JetsonNanoUb20_3b.img.xz at 8.7 GB, and the extracted system, according to the README, is overflowing with software at more than 21 GB. On a 32 GB card that leaves very little room, and the README's own advice is to flash onto a 64 GB or larger card and grow the partition with GParted, installed via sudo apt-get install gparted. Treat the 32 GB figure as a floor that technically works and practically does not.

Two operational details in the README are worth following literally. First, the README cites issue #17 in stating that you should flash the xz archive directly, not an unzipped img. Second, it cites issue #101 in noting that the Raspberry Pi Imager sometimes works better than balenaEtcher. After flashing, the README gives an md5sum of D738F1FE20088A1BDBD10E2358B512F7 for the full image and DB4FC5A1B09876B37FF57F42540B3250 for the bare image. Verify those before you write to a card.

If the 8.7 GB download keeps failing, the project provides a split version: 14 files of roughly 700 MB each, named JetsonNanoUb20_3b.img.xz.001 through .013 in the listing. Place them in one folder and run 7z x JetsonNanoUb20_3b.img.xz.001, which extracts the first part and pulls in the rest in order, producing the original .img.xz. On Windows, if 7z is not on the path, the README shows the full-path form: "C:\Program Files\7-Zip\7z.exe" x JetsonNanoUb20_3b.img.xz.001. Note that the README describes 14 files but the list stops at .013, so count what you actually download against the checksum rather than against the prose.

The Maintenance Model Is a Person, Not a Pipeline

There is no build script in the material. The distribution channel is a file on storage.qengineering.eu plus a Google Drive mirror, and the README asks you to use Drive sparingly because the daily download cap is lower than the project's average traffic. That is a real availability risk for a 8.7 GB artifact hosted outside any package registry. If the server is slow in your region, the split download is the documented workaround, not a mirror list.

Upgrades are the harder problem. Because the image is a filesystem, not a set of packages, there is no apt upgrade path that moves you from OpenCV 4.8.0 to a later build with matching CUDA bindings. You either reflash a newer image when the maintainer publishes one, or you rebuild the libraries yourself, which is the work the image existed to avoid. The update log shows the maintainer refreshing Ubuntu 20.04 and bumping library versions on their own schedule, with no release tags in the repository. There are no releases retrieved for this repository, so version tracking happens by reading the README date stamps.

The licence is BSD-3-Clause, which covers the repository. It does not relicense the Ubuntu packages, the NVIDIA JetPack components, OpenCV, PyTorch or TensorRT that are baked into the image, each of which carries its own terms. Redistributing the image or shipping it inside a product means checking those separately; the BSD-3-Clause badge in the README tells you nothing about them.

Where This Image Is the Wrong Choice

The failure mode is storage, and it is documented rather than hypothetical. A 21 GB payload on a 32 GB card leaves a working system with almost no headroom, and the README's remedy is a larger card plus a GParted resize, which is a manual step you can get wrong. If you flash to 32 GB and skip the resize, you will hit a full filesystem during the first dataset download or model checkpoint, and the symptom will look like an application bug.

The second failure mode is the CUDA 10.2 ceiling. Anything that requires a newer TensorRT, a newer PyTorch, or a CUDA 11 toolchain cannot be made to work here, because the constraint is the Nano's hardware and driver stack, not the image. Projects that have moved to recent PyTorch releases will not run on this board at all. The image is a fixed target, and the README is honest about that in the TensorRT note.

The third case is the one the README itself flags: ROS users. It points to a separate repository, JetsonNano-ROS2, rather than claiming this image covers that use case. If your project is ROS-based, the README's own signpost says start there.

The Alternative: Flash JetPack Yourself

The direct alternative is NVIDIA's own JetPack 4.6.1 SD card image for the Jetson Nano. The difference in approach is what you get and what you give up. NVIDIA's image is the supported baseline: it comes from the vendor, it is what the L4T documentation describes, and its component versions are whatever that JetPack release pins. Qengineering's image is a third-party derivative of that baseline, with Ubuntu 20.04 instead of 18.04 and with OpenCV 4.8.0, PyTorch 1.13.0 and TorchVision 0.14.0 already built and installed.

So the trade is support and reproducibility against setup time. Choosing JetPack means you spend the time compiling OpenCV and PyTorch yourself, and in exchange you know exactly how they were built and you can rebuild them. Choosing this image means you skip that work and inherit whatever build flags the maintainer used, with no build recipe in the repository to inspect. For a one-off prototype on a desk, the time saved is the whole point. For anything that has to be rebuilt by someone else six months from now, the missing recipe is a problem.

A middle path exists inside the project itself: the bare image. It gives you Ubuntu 20.04 with JetPack 4.6.1 and no TensorFlow or PyTorch, overclocked at 1900 MHz. You get a leaner base and the overclock, and you install the Python stack yourself. That is the option for someone who wants the Ubuntu 20.04 refresh but not the maintainer's library choices.

Adopt, Avoid, and What to Check First

Adopt this if you have a first-generation Jetson Nano, you want Ubuntu 20.04 with OpenCV 4.8.0, PyTorch 1.13.0 and TensorRT 8.0.1.6 present at boot, and you treat the card as a disposable appliance you can reflash. The bare image is the better pick if you want the overclock at 1900 MHz or you would rather install PyTorch yourself against JetPack 4.6.1.

Do not adopt it if you need a vendor-supported L4T configuration, a build you can reproduce from source, or any library that requires CUDA 11. The Nano cannot provide the last one, and the README says so.

Before flashing, check three things. Confirm the file's md5sum matches D738F1FE20088A1BDBD10E2358B512F7 for the full image or DB4FC5A1B09876B37FF57F42540B3250 for the bare image. Confirm your SD card is 64 GB or larger, since the README puts the installed system above 21 GB. And read the update log's newest entry to see which library versions you are actually getting, because that log is the only version manifest this repository publishes.

Editorial conclusion

Adopt this image if you want a Jetson Nano booting into Ubuntu 20.04 with OpenCV 4.8.0, PyTorch 1.13.0 and TensorRT 8.0.1.6 already present, and you accept that the whole install is a single maintainer's snapshot rather than a package you can upgrade. Do not adopt it if you need a supported NVIDIA L4T release, a reproducible build you control, or a 32 GB card, since the README states the image already occupies more than 21 GB. Before flashing, verify the md5sum D738F1FE20088A1BDBD10E2358B512F7 against the file you downloaded and check that your card is 64 GB or larger.

Official sources

  1. Issues
  2. License: BSD-3-Clause
  3. Project website
  4. Qengineering/Jetson-Nano-Ubuntu-20-image on GitHub
  5. README
Community notes

Community notes