Can I install FreeBSD on Jetson Nano?

For sure not natively. But I think it can work if the ubuntu kernel is recompiled enabling kvm. This is exactly what I would like to do.
 
Here is a primer.
These Jetsons ship with Tegra4Linux installed to eMMC.
You must update that to boot from u-boot. They use a custom bootloader for thier Ubuntu installation.

The whole process was a pain. You have to flash from a ubuntu host to wipe it.
But you don't want to wipe the whole thing....
I used a internet tutorial on my tk1 and converted it to u-boot.
Bunches of update files you need from nvidia website.

So question. Are you running u-boot now on your Jetson? Have you updated your Nano's Ubuntu?
 
One more thing. This Jetson is a serial console only box for me. No PCIe support either.
I would be surprised if Xorg video drivers for the Nvidia worked on Arm. Most likely they don't.
 
It does not worth it. I read what the developers say in the nvidia forum. If you want to install FreeBSD physically on the board you will lose many, too many, nvidia features. It pays to emulate FreeBSD with qemu-kvm and I'm doing it now.
 
Can he install FreeBSD on Jetson?

Yes he can.

No you cannot run a desktop from it on FreeBSD. But notice he didn't ask that. He needs USB support. It has that.
Just no x11/nvidia-driver on FreeBSD Arm. SCFB driver would work if you really wanted a desktop.
 
yes,he can,but probably he does not know that he will lose a lot of features created by nvidia and added inside their ubuntu customized image version. Here is explained how much will be hard the road :


much more easy is to virtualize FreeBSD with qemu-kvm on the jetson nano. The USB seems to does not work because the device tree has been created for Linux and should be modified to work on FreeBSD :

The background is that many parts of a computer are not “plug-n-play”. The concept of plug-n-play is that the component can self-describe, and then the operating system can decide how to deal with it. Pin functions, routing to peripherals, and just about everything on the carrier board are not plug-n-play. Thus these need manual specification.

I imagine this is similar in FreeBSD, but I’ve never touched it, so what I’m about to say might be off. If this is Linux, then the device tree is used for such specification. I consider it likely FreeBSD uses device trees as well, although it might have a different format and compile tool.

During boot of Linux the device tree is read. As the Linux kernel loads each kernel driver can see the device tree. If a tree node is not of interest to the driver, then it simply ignores the node. However, if the driver recognizes a tree node applies to it, then that information is passed as an argument to the driver as it loads. Information such as a physical device address to find the device at gets used to find and set up the device.

If you use FreeBSD, then your drivers probably listen for device tree content (don’t know for sure), but the Linux node might need to be rewritten for how a FreeBSD driver uses a device tree. The device tree is big, so this is a lot of work.

Also, you’d still need to use all of the boot stage software from the default Jetson install. Instead of loading the Linux kernel you’d need to set it up to hand off instead to the FreeBSD kernel. I don’t know what changes that would involve. However, a complication is that these earlier boot stages have also been set up (often, not always) to read the device tree. Bootloaders could need the tree as well, in which case you might end up with a separate tree for items where FreeBSD differs from what boot stage software uses. The fact that fairly universal bootloader software, e.g., Das U-Boot has built in abilities to use a device tree says there is a strong chance much of the tree structure would be an exact match between Linux and FreeBSD, but I don’t know…never tried to port to FreeBSD.

If the device tree is correct for USB and HDMI, then these should work if the FreeBSD has drivers for those particular devices.
 
Nice if USB works. But I'm not sure that the nvidia Jetpack works correctly. In the meantime,I have enabled kvm and I'm going to install FreeBSD on a VM with qemu.

Screenshot_2023-03-23_12-35-45.png
 
Anyway,nvidia is slowly dropping significant support and upgrades for the Jetson Nano device. They assume we all want the new Jetson Orin, which will be available in the coming months. So,if a huge amount of work should be done to support the JetPack,I think that it worth switching to Orin.
 
I saw the date. The problem is I did not feel the reply was very accurate.
I am running a Jetson board and they are loosely supported by our code base.
So saying this disrespects @mmels work to port this to FreeBSD for us.

For sure not natively.

Especially seeing the reason he thinks Nvida Jetpack is something everybody wants.
It is not. This is a nice embedded board with many uses. GPIO among one.

For me the first thing I wanted to do was to rip this Ubuntu installation the off the eMMC and run FreeBSD.
I have no use for Cuda Cores. I ran the demo install. It was nice. Then it was time to put the board to work.
 
Don't think with my head,please. I don't know if everybody wants the nvidia jetpack,but I know that's useful. In any case,I'm not against the installation of FreeBSD on the jetson nano. I have an empty sd card that I can use to start something. But I feel that this project is out of my technical knowledge (and I supposed it would have been for the OP,too) and I'm not able to start anything by myself.
 
I found this repo :

https://github.com/strejda/tegra

if I have understood correctly,it can install freebsd on the NVIDIA Jetson TK-1 board. And between the Jetson Nano e the TK-1 there is a good compatibility. So,maybe I can try to install the code on the Jetson Nano to see what works and what does not. Maybe the code needs only some minor changes to work on the Nano. What do you think ?
 
I am not sure of that repo.

Upstream u-boot has support for Jetson Nano.

configs/p3450_0000_defconfig
Check your model number. This is defconfig for the 2GB model.
So you need to clone this tree and compile u-boot with the defconfig for your board.

Do not overwrite anything until you study the docs. BootROM must stay along with the other stuff on eMMC.

You probably could try to boot from SD Card with u-boot so as to not interfere with the eMMC and Ubuntu.

So build u-boot then flash to SD-Card then flash FreeBSD aarch64 image to the SD Card.

You will want to use the dtb generated by u-boot as well. Copied to the EFI partiton and /boot/dtb/ of the SD Card.
 
Anyway,now that the NVIDIA Jetson TK-1 board is EOL for nvidia,I'm tempted to buy one of those boards at a low price to try to install the FreeBSD code of that repo. I'm sure that they added more stability and features than installing the "u-boot + FreeBSD for ARM" solution. The problem is that the author of that repo has not provided any email address so I can't ask him how much mature is his code.
 
He is a FreeBSD developer. Try just add @freebsd.org to end of his name. Look at the history. It is active.
Give it a try.

TK-1 was 32bit. So really you do want to skip that and use TX-1 or Nano. Don't they have an TX-2 out now?

For the dtb you want to use the u-boot generated dtb found here after compiling:
/u-boot-2023.01/arch/arm/dts/
They use the nvidia model numbers for defconfig name.
 
He is a FreeBSD developer. Try just add @freebsd.org to end of his name. Look at the history. It is active.
Give it a try.

TK-1 was 32bit. So really you do want to skip that and use TX-1 or Nano. Don't they have an TX-2 out now?

For the dtb you want to use the u-boot generated dtb found here after compiling:
/u-boot-2023.01/arch/arm/dts/
They use the nvidia model numbers for defconfig name.

it's a no go. I didn't know that the TK-1 was a 32 bit. So,no,I'm not interested. The support for the 32 bit for kvm has been stopped several years ago. I don't want to "play" with a board that does not support virtualization. Instead,the TX-1 is too much expensive for me. Do you remember that I'm poor ? I could spend only a small amount of money. And I could not.

---> Huh? What makes you think this repo works without u-boot ?

for sure he used the u-boot code of freebsd,but I suspect that he added some other features and fixes. His repo is updated from some time. I think that with his code I could get a working and almost stable FreeBSD installation for the TK-1 and maybe even for the Nano,with some small adjustement. Goal that I'm not able to reach if I compile and install u-boot and FreeBSD for ARM". His code seems to be more a ready to go solution once installed and configured everything. And what I should do next is to test and try to fix some bug asking for help here and there. This is what I can do by myself. My competence is not great. I can perform only separate and small tasks.
 
I could be wrong. I thought I recognized the name as a developer.
If I cared I would browse the list of active developers. Maybe drop the first letter as first name?

I try to tread lightly when using the official FreeBSD email address of developers.
Exhausting all known resources before reaching out..

Many do take the time to answer and that is super deluxe.
 
Back
Top