I’m curious if anyone has tried to build a BalenaDash type app for the Jetson Nano. I’ve had some things the Raspberry Pi’s just don’t play out smoothly and was curious if the Jetson Nano might have any better luck.
I’ve had an ask around and nobody at Balena has tried it, but there was certainly some interest if you can make it work! One suggestion I’ve been told to pass along is first trying to run chrome with the
--egl flag to see if it can actually utilise the GPU.
based on my experience with Jetson Nano, I don’t think that adding
--egl / --use-gl=egl flag will help here. NVIDIA provides NVIDIA JetPack SDK, which can either download DEB packages & drivers & configurations or prepare & flash the OS for you. The are two problems:
- you/we are not allowed to redistribute due to the license,
- you can’t use this prepared OS directly with balenaCloud.
But you can prepare your own image.
- Register at NVIDIA developers portal
- Download NVIDIA JetPack SDK
- Launch SDK manager, sign in, select packages and download them (Linux required or VMware Fusion running Linux if you’re on a Mac)
- If everything goes well, all packages & drivers are in the
Prepare for Dockerfile
There’s a lot of files in the
sdkm_downloads folder and you don’t need all of them. You have to write a script, like this one, which can extract what you need and place it in some folder. Check this part mainly. You’ll need:
Sample Dockerfile. Minimised version:
# NVIDIA JetPack SDK & drivers (1.7GB) ADD nvidia /usr/src/app/nvidia # Install NVIDIA JetPack SDK & drivers & toolchain RUN \ tar xjf nvidia/nvidia_drivers.tbz2 -C / && \ tar xjf nvidia/config.tbz2 -C / --exclude=etc/hosts --exclude=etc/hostname && \ cp /usr/lib/aarch64-linux-gnu/tegra-egl/nvidia.json /usr/share/glvnd/egl_vendor.d/10_nvidia.json && \ echo "/usr/lib/aarch64-linux-gnu/tegra" > /etc/ld.so.conf.d/nvidia-tegra.conf && \ echo "/usr/lib/aarch64-linux-gnu/tegra-egl" > /etc/ld.so.conf.d/nvidia-tegra-egl.conf && \ ldconfig && \ rm -rf nvidia
What it does?
- Extracts drivers
- Extracts configurations
- Tells the system to prefer NVIDIA EGL instead of the MESA
/usr/lib/aarch64-linux-gnu/tegra-eglto the libraries paths
Not sure if you really need this step for your use case, but it won’t hurt. I had to use
docker-compose.yml file, because
SYS_RAWIO capability was required. It looked like it’s working, but it wasn’t till I did add it. Here’s an example. IIRC it was because of the camera, you probably don’t need it, but mentioning it anyway.
I think that now is the time to test the
Thanks for the feedback! I had ordered a Jetson Nano to experiment with. I like to think I’m a little bit saavy with some of these things some of it may be a bit above my skill level. I’ll post back if I figure anything out.