Creating binaries for Jetson Nano ( without physically having Jetson Nano)


I have a bunch of ROS packages, for which I need to generate debians that could run on Jetson Nano (ARM v8).
I use bloom-generate followed by fakeroot on a particular kind of architecture to generate the debians for that specific architecture.

Now I have x86 system (intel i5) and an arm v7 system (rosbot, I think with UP Board) with me. Jetson Nano is ARM v8, I do not physically have the jetson nano board with me. Any suggestions on how should I go about creating binaries which could be used on Jetson Nano?

Is there an AWS ec2 instance for it, which I can use to compile the binaries?


We don’t support this case. Would suggest you get a Jetson Nano and flash system image and all packages through SDKManager.

Thank you @DaneLLL for your suggestion.

I want to provide debians for all the Jetson series (Xavier, Tx2 and future releases). How do you suggest I should go about it? Should I buy all these boards, compile and create binaries?

Further, we have a team which works from home. It becomes a bit of challenge to buy multiple boards for multiple people in the team.

Is thee a more optimal way to approach it?

We have cross-compile support in building jetson_multimedia_api samples. Please check

If you have aarch64 cross compiler on the x86 host, you should be able to do Debian packages.

If you were to run a few Jetsons (of whichever type you use) at your main business, and set up ssh keys, then you could natively compile with ease without every single developer having a Jetson. It just depends on how many developers and types of Jetsons you are speaking of. This would not work for most firmware or boot work, but would work for user space.

You might need to install a virtual desktop server, e.g., Vino, and not have everyone use it at the same time. Desktop servers would only be used for running software, and would not be needed for compile.

The main issue would be needing a physical presence to flash over USB. This is why I suggest you might want multiple devices…one for each release you work with.

You could actually have pairs working together, and set up the GPIO of one to force reboot of another and watch its serial boot logs as a sort of safety in case something went wrong. A desktop PC available via ssh, if already set up with the correct USB cable, could even flash without your physical presence if you have a way to force recovery mode (and this is something GPIO from another Jetson might be used for). Lots of creative ways to work with this which are not mandatory, but useful at times.

NOTE: I suspect a Jetson with more RAM (e.g., Xavier) could be used to compile for less powerful systems, e.g., for Nanos, provided their release version is the same. One might need to set CUDA release information for a GPU type not on the Xavier, but it could be done.