Nouveau support for Jetson Nano kernel

I think the issue is that Nvidia is marketing the Jetson product line to a niche community of AI enthusiasts and computer learning developers.

If they had set their sights on the broader community of ppl who just enjoy playing around with embeded tech for home use cases like media consumption or just messing around with linux, things might be different.

Actually, I think an important target for jetson is embedded systems. Anything from animated advertising display signs, and hotel elevator infotainment, to modern car navigation/radio systems, seems like fair game for the Jetsons.

I bet you’ve never developed a device driver.
Without documentation.
For a system that doesn’t have the ability to hook up a bus/logic analyzer to reverse engineer another driver.

I can help file a feature request for nouveau driver. But for MST, it is as what snarky said. It is even not supported on tegra display driver.

You covered the kiosk. Point of sale is there as well. Hotel set top boxes and cable / internet combo boxes. In flight entertainment (especially since the modules can just be popped out and upgraded). Lots and lots or applications. The more display outputs it supports, the better. Some people might want a single nano/tx to drive a whole row of seats, for example. Display port would probably work for that.

Yeah, there is a reason it’s not done well, and at least one kernel developer has some stong feelings about this :P

To those who manage, who are willing to brave through it and are smarter than I, I salute you, but please, don’t frustrate yourself unnecessarly :)

Ask Nvidia nicely to implement this feature if the hardware is at all capable and I’m sure they will. It’s a lot, and I mean a lot, easier. It’s a good suggestion.

Yes, please add it :) I have multiple display port devices as well and can probably help test some of this.

Nouveau and kernel-next 5.2 rc5 already have support for p3450-0000, GM20b / Tegra210

the development is happening regardless.

but if like mdegans mentioned nvidia could support accelerated libavcodec that would be great.

linux really lacks standardization and i’m sure it’s nearly impossible to make everyone happy.

maybe i’m missing your point snarky.

Also keep in mind that Nouveau, like its desktop PC NVIDIA drivers, is for PCI GPUs. If all other conditions are met, then the Nouveau driver would have to be ported to using the GPU integrated with the memory controller. Anything expecting PCI will fail.

So far I have managed to boot the nano using kernel-next 5.2 Rc5 and the nouveau module. I’m also using an upstream u-boot.

The kernel is failing to load the usb firware so I think I’ll need to create an initrd, or should I say learn how to create an initrd.

I’m really learning as I go …I only started using Linux about 6 months ago. I’m sure someone with more knowledge could have things running smoothly.

I personally could care less about the nouveau drivers - I just want nvidia to support a kernel version that is at least 5.x. I need to use drivers that aren’t supported on 4.9 and am not keen on backporting them. Seriously - 4.9 is ridiculous.

Has the nouveau situation improved much? Given the age of l4t’s kernel I could get by with decent GPU performance as long as I could use other hardware drivers that will not build on 4.9.

Hmmmm… @mr.chrismitchells could you explain how you get nouveau to work? I compiled kernel branch form repo mentioned here https://elinux.org/Jetson/Nano/Upstream . I have same issue with USB driver (tried with and without linux-firmware installed), but my main issue is that nouveau don’t want to work. All nouveau, Tegra DRM and host1x options are enabled in kernel config.

Nouveau only “works” on the upstream Linux kernel like version 5.4 and above .

And even then support is very limited last I checked.

Probably it still would be best way to have GPU acceleration with upstream kernel/in armhf apps.

If you want to try it you will need to build the latest upstream Linux kernel ,

Install the kernel to the rootfs.

Copy new kernel and kernel dtb to the boot directory.

Edit extlinux to use your new kernel and dtb.

Remove Nvidia systemd services from etc/systemd and startup scripts.

Then cross your fingers.

Last time I tried the upstream kernel I couldn’t get the usb ports to work.

They removed the ability to compile named firmware blobs into the upstream kernel which was required for early loading of the usb firmware.

Oh you may also need to build upstream u-boot for things to work properly as well.

That’s a lot of work for a half functioning driver.

There is no possibility of any Nouveau kernel ever supporting GPU acceleration. Never has, and barring something extraordinary, never will. Also, 64-bit ARM is not armhf, which is 32-bit. You can call it one of arm64/aarch64/ARMv8-a. If you see an application which is armhf, then it won’t work on a Nano (at least not directly…it may be possible to use emulation or compatibility modes).

@linuxdev Sorry, but you’re wrong. Nano can handle armhf without issue. Nvidia is one not supporing 32 bit with their software, but Nano can handle it. Armhf will always be slower, but it’s a lot of apps that are still for armhf-only.

I can run them without and issue using multi-arch or chroot untill moment when they are trying to use opengl/es/egl as libs are not provided by Nvidia in 32-bit version. I tried using vtest to have acceleration, but performance is really poor.

I am considering a Nano with its installed environment. If you’ve installed a custom 32-bit support, sure, the hardware can do it (with reduced performance compared to a dedicated 32-bit system like the TK1).

Nouveau might be a special case. If Nouveau is able to use opengl/es/egl on a non-PCI GPU for software only use (the GPU just being access to a framebuffer and not participating in any rendering), then Nouveau can work, and with added 32-bit support (software), then Nouveau 32-bit would also work. You’d be disappointed.

The user space driver NVIDIA provides is the only method of hardware acceleration via the GPU. This is 64-bit only. To use with 32-bit you’d have to provide some sort of adapter layer. If you use Nouveau, then this removes the possibility of using the NVIDIA driver, and also removes the possibility of hardware acceleration from the GPU. The NVIDIA driver itself is not open source, so you are stuck with either 64-bit to run hardware acceleration, or some 32-bit to 64-bit adapter (the GPU would still be running NVIDIA 64-bit and no Nouveau would be involved).