nVidia Jetson Nano: Desktop Use, Kernel Builds, and Deeper Analysis

Last week, I unboxed the Jetson Nano, set it up, and did some basic benchmarking on it.  This week continues the Jetson Nano analysis.  I’m making it into a desktop, I’m measuring power use, and I’m poking at various other places I find interesting or useful.


This is a companion discussion topic for the original entry at https://www.sevarg.net/2019/04/14/nvidia-jetson-nano-desktop-use-kernel-builds/

(Comments from Blogger)

2019-04-14 by Unknown

DVI uses dual links all the little pins are live, (not including the 4 by the spade off to the side)

Because DVI is a dead standard they haven’t upped the pixel clock, HDMI has been upping the clock and does 4k60 as of 2.0

DisplayPort is great, use that. I did get a ‘plugable’ brand active DP to HDMI, because HDTVs are 4k, but usually don’t come with DP, only HDMI, and Intel onboard video is usually not up to HDMI 2.0

I was researching this because I have an old 27" ips QHD (4x 720p), and it only uses DP or dual link dvi to get full 1440p, my B360 motherboard does not even have HDMI out at all, and Dual link DVI isnt a popular option at all.

I like the Nano, price is sad now due to scalpers. Put it in a real case with an SSD bay (m.2? The adata XPG 8200 is FAST)


2019-04-15 by Russell Graves

I have a mini-displayport to dual link DVI adapter running in my office.

I considered getting one of the chassis that supports a proper SSD, but I’m not convinced the performance gains would be worth the cost there. The chassis are as much as the board, which defeats the point.

And, yes, prices are high right now. That’s true of any new device, though - you see it with gaming consoles all the time, and things stabilize.


2019-04-16 by Unknown

is there an inbuilt power measurement tool? how did you do it?


2019-04-16 by jmandawg

Can you post a video with desktop usage so we can see the speed/performance of web pages loading and usability?


2019-04-16 by Russell Graves

I used a bench power supply (the DPS6015A I commonly use), and measured power into the USB port that way. I’m not aware of an onboard power measurement capability on the boards.


2019-04-16 by Russell Graves

I suppose I could try to do that - not a thing I really am familiar with doing, though. Unless the system is under a ton of stress, it scrolls about the same as a desktop.


2019-04-16 by Philo

Have you explored overclocking the CPU or RAM?


2019-04-16 by Russell Graves

I have, and have mostly accomplished a variety of ways to render the system not-exactly-booting in the process.

If you look at the tegra 210 DVFS files in the kernel, you’ll be in the right spot to mess with the frequency/voltage/etc, but I’m simply not that familiar with those bits of the kernel, and didn’t want to spend the time to learn them in a week. I expect someone from the Android world, familiar with the Tegra DVFS systems, could manage it. I’ve just got too much on my plate for that at the moment.


2019-04-16 by Philo

I’ve looked around on XDA and don’t see much developers playing around with Tegra unfortunately. But for Nintendo Switch there has been some people who have overclocked it even overclock the CPU to 1.9Ghz (from 1Ghz on the Switch). I’m not familiar with it myself as well, but hopefully someone can look at the switch.


2019-04-17 by Guillaume Ausset

Try running ‘tegrastats’


2019-04-17 by Guillaume Ausset

Hi,

Awesome post and blog !

Can you try running in high power mode through the barrel jack ? Maybe it will draw more. I’m interested in what the maximum powerdraw is so I can decide between the Pololu 5V, 5A Step-Down Voltage Regulator D24V50F5 and Pololu 5V, 9A Step-Down Voltage Regulator D24V90F5 :slight_smile: ( or maybe someone familiar with the Pololu D24V50F5 can tell me if it get unreasonably hot / drop voltage at 3a or it’s fine for real up to 5a )

Thanks


2019-04-17 by Unknown

@Russell Graves could you check whether there is an inbuilt power measuring way?


2019-04-17 by Russell Graves

So, it turns out, Guillaume Ausset’s suggestion was right. You can’t get “whole board” stats, but if you look at the output of tegrastats, the last few entries show power in mW.

Tegra Linux Driver documents it - the various POM_ fields (POM_5V_IN, POM_5V_GPU, POM_5V_CPU) show the current power (in mW) as the first entry, with the average power (over some period of time - unsure what) as the second entry.

With the reduction and cpuburn running, I can see nearly 8W showing there. This is lower than I measured externally by about 2-2.5W - which is consistent across the board. Idle, it shows 1.3W, vs my measured ~3.5W - which would include the external power conversion circuitry, my SSD, etc. So the offset should be pretty consistent.

Take a look at that and you should be able to work out what you need!


2019-04-17 by Russell Graves

Unless you have a ton of peripherals hung off it, you should be fine with the 5A version. It normally pulls around 1A, and you have to really load it up deliberately to get near 2A. Even with the standard Chinese derating applied, the 5A one should be fine.

I don’t think the barrel jack will impact the compute card load - it’s mostly useful if you have some hungry USB accessories hanging off the stack. I don’t have an adapter built to do that test either, but I can’t see why it would have a real impact.


2019-04-17 by Unknown

you can use the jetson_clocks utility (located in /usr/bin) to check and set the clock rates. Don’t know if you can overclock it though


2019-04-17 by Guillaume Ausset

So, I managed to test it :slight_smile:

I tried to load the Nano as hard as I could and I can’t even reach 11W, with the plug. I could try to find an FP16 test but eh, doubt it will even reach 11-12W.

Pretty impressed. Guess I have no excuse to buy an overpowered buck converter

Imgur: The magic of the Internet


2019-04-17 by Russell Graves

Well, I think you got more power out than I did - that’s 12-13W on the board. Still properly impressive for as much power as it packs!


2019-04-19 by sushant

Excellent article! I had a quick question for the experts on here : Will a piplate motorplate be compatible with the Jetson Nano?


2019-04-22 by Unknown

thank you Russel ijust wanted to know the power consumed by the board!


2019-04-24 by Mayday19

Good article for nano new comers! An additional question, is there a way to force nano works under a specific hdmi resolution and timing, despite of any physical monitor connected? Usually we do that through a config.txt file under /boot partition for RPi board. In some case, we can force RPi HDMI port work even without a physical monitor plugin.


2019-04-26 by Unknown

Would you have any interest in looking into getting hardware transcoding running when using the Nano as a Plex Media Server?

So far I haven’t been able to find much on it, but I know that the Shield TV (which uses the same chip, just more cores) has it enabled on Android


2019-04-27 by MatthewMackes

Hello!
Any Chance you could share your finished, compiled Kernel and scripts? I would love to added them to a clean LXQT Ubuntu installation!
Thank you,
Matt


2019-04-27 by Russell Graves

Not really. It should be possible, but I simply don’t know that much about the ARM side of hardware acceleration on video transcoding, and with Plex being mostly closed source, it either works or doesn’t - there’s not an awful lot I could do from my end to fix things. If you’re having to regularly realtime transcode high def content, x86 is likely the right answer. I’ve got a Plex server, and it’s a halfway modern x86 box, but I simply don’t find myself transcoding newer content. Direct Play for h.264 works fine, and while some content is transcoded, it’s usually ancient stuff at low resolution (old kids TV shows or something that were encoded years before h.264 was a thing) - so even a Core 2 Duo can keep up with that sort of load.

If the Shield TV can do it, it’s likely technically possible, but that may be something the Plex developers have to enable.

I’d take a stab at it as contract work, but it’s just not of any particular interest to me otherwise.


2019-04-27 by Russell Graves

I could, but the steps provided should be sufficient for you to replicate the build.

You shouldn’t trust random people’s binaries…


2019-05-09 by Krste

Which Pololu board did you use in the end Guillaume? The difference between the differnt pololu dc converters would be mainly in the voltage dropout. If you look into the datasheets of each, you can see that the 9amp has a much lower voltage droupout. Hence, this mean that if you have a lots of headroom on your battery supply, i.e. have high voltage, for example a 2s lipo, you should be safe with the 5amp. assume you pull the maximum 4amps, you will get a 1.1V droupout, hence you voltage at your batteries must be atleast 6.1V. If you use a lipo this is not an issue, but if you plan to run the jetson from example a lifepo4 battery or 5pack nimh your are on the limit. With the 9amp regulator you only get around 0.8 volt droupout. So while it is not much there is some differnce, and I also assume the larger board will do better power dissapation!?


2019-05-24 by Urs Utzinger

I already boot from USB SSD (without zswap) and I would like to enable zswap and additional kernel configs.
After compiling kernel and modules, what do I need to copy back to microSD card?


2019-05-29 by Unknown

I tried to follow this instructions for a Xavier and was able to complete all steps, but the kernel modules that I activated do not actually remain activated/work.

Is there anything about this that is known to fail on other Jetson family members?


2019-06-01 by renewableenergyspace

Thanks for your Jetson Nano blog posts, hope you can keep them coming. Tried Jetsonhacks version of booting from a usb drive, but it didn’t work for me. Mine is a 120GB SSD SATA III 6GB/s as shown in this raspberry pi posting because the SSD is so close to a zero form factor: 120 GB SATA and Zero - Raspberry Pi Forums. I will try your approach. Question afterwards is how do you do update/upgrade, from the microSD or from the USB connected drive? Also, how would you back up the microSD after implementing your configuration? Can’t seem to do it with Win32DiskImager. Thanks again.


2019-06-01 by Russell Graves

If you build things the way I do (static vs module support), just copy the kernel image back over to the SD card.


2019-06-01 by Russell Graves

I don’t know anything about the Xavier. You should be able to find kernel build instructions for it and modify them as needed to get the support for zswap, though.


2019-06-01 by Russell Graves

There’s not an awful lot left to say about it I haven’t already said (at least for my use cases). I’m not using it for robotics or anything - just as a desktop.

Anything that needs to be updated on the /boot partition (the kernel image, typically) needs to be on the SD card, because the firmware can’t read the USB SSD during boot. Once the kernel is online, it can read the USB SSD, so everything else is fine.


2019-06-01 by renewableenergyspace

OK, thanks for the reply. Just as an FYI, outdated Octane 2.0 score before ssd and swap 7671, and after 7798. Your approached worked. I set up a 100GB sda1 and 10GB sda2. Three cups of coffee ~smiley~.


2019-06-06 by renewableenergyspace

is this command: sed -i ‘s/memset_l(page, value, PAGE_SIZE / sizeof(unsigned long));/memset(page, value, PAGE_SIZE);/g’ mm/zswap.c
supposed to be sed -i ‘s/memset_l(page, value, PAGE_SIZE \ sizeof(unsigned long));/memset(page, value, PAGE_SIZE);/g’ mm/zswap.c
see the difference?


2019-06-09 by Russell Graves

I see you’ve dropped the forward slash (division) that I escaped with the backslash on purpose, yes…

Pretty sure my command is correct.


2019-07-15 by nip

Can you clarify how this works for me? Are bootloader and kernel still on sdcard, bootloader quickly loads kernel in memory at startup, kernel uses usb’s filesystem and memory card isn’t used after that? What about dynamic kernel modules, are those fetched from sdcard at runtime? Also are the any downsides to this approach?


2019-07-15 by Russell Graves

The bootloader and kernel load from the SD card, and once the kernel is online, all filesystem accesses are to the root filesystem on the SSD - so kernel modules are loaded from the SSD. They’re not normally in /boot anyway…

I’m not aware of any downsides. It’s working great so far!


2019-07-15 by nip

This means that sdcard presents no real slowdown, as it’s not used after loading initial bootloader+kernel, which together shouldn’t be more than 70MB? This is amazing btw :slight_smile:


2019-07-15 by Russell Graves

Correct. After the system has booted, the SD card is not a bottleneck at all - it’s never used.

One might consider mounting a scrap volume on it, or (with zswap) putting swap partition on it (as the bulk of swap never actually sees the disk), but all the daily file IO comes off the SSD over USB3.


2019-07-16 by nip

Would it be also possible to modify or replace default bootloader on sdcard to point at grub2 bootloader, which could figure out to boot kernel from usb device? Or is usb driver bound to kernel and can’t be used until kernel is loaded?
I assume only benefits would be those that using grub2 brings?


2019-07-19 by Russell Graves

I have no idea. You’re on your own for stuff like that - the firmware might support USB booting, but it didn’t seem to try, so if you want to do firmware dev on that board, have fun.


2019-07-31 by indiandragon

H Russell, excellent write up as always. I was wondering whether you enabled Ext4 Encryption in the config?

I enabled Ext4 Encryption in the config using menuconfig, but the particular config is replaced after kernel is built and copied. All other changes as done by you persists.

When I verify the modified .config before building the kernel, it shows correctly as

CONFIG_EXT4_ENCRYPTION=y
CONFIG_EXT4_FS_ENCRYPTION=y
CONFIG_FS_ENCRYPTION=y

But after building the kernel and replacing the kernel, the running config shows -

# CONFIG_EXT4_ENCRYPTION is not set
# CONFIG_FS_ENCRYPTION is not set

I would appreciate your views on this. Thank you/


2019-08-04 by Russell Graves

I did not - I’m simply not that familiar with it. If I need disk encryption, I’ll use the dm-crypt extensions to encrypt the entire block device. No ideas, sorry!


2019-08-21 by Sang

Hello!

Thanks for your Jetson Nano blog posts, hope you can keep them coming.

I bought a JN30 backplane for the nano.


https://auvidea.eu/download/datasheet/JN30_1.2.pdf


It can be recognized after installing Samsung’s nvme. Read and write speeds are above 1Gb/s.

But I don’t know how to boot from nvme, or let the root directory of the system run on the nvme disk.

I modified extlinux.conf, but it seems that the kernel did not load the nvme driver when the system was started, so it failed.

Does any friend know how to operate?

Thanks again.


2019-08-29 by Sang

Thanks for your Jetson Nano blog posts, hope you can keep them coming.

I bought a JN30 backplane for the nano.

It can be recognized after installing Samsung’s nvme. Read and write speeds are above 1Gb/s.

But I don’t know how to boot from nvme, or let the root directory of the system run on the nvme disk.

I modified extlinux.conf, but it seems that the kernel did not load the nvme driver when the system was started, so it failed.

Does any friend know how to operate?


2019-09-04 by Russell Graves

You’d probably need to do the same thing I did with the kernel build and put the proper NVMe driver and firmware in the kernel.


2019-09-15 by Siddhartha

Hello Dear Russell!

Thank you very much for your guide and brief analysis of the Nano as a desktop. Yours is the only article on the internet currently that discusses this issue in any detail!

The latest Raspberry Pi 4 has come with an improved processor and 4GB of DDR4 RAM. It’s being billed as the Pi that finally can act as a proper simple desktop replacement.

How do you think our Nano made Desktop would compare to it?

I am interested in using an ARM based desktop as my daily driver, with some python programming and office based productivity tasks on an ultra wide 21:9 monitor.

Would you kindly suggest me which would be the better of the two, RPi 4 or Netaon Mano?

Thank you very much!


2019-09-16 by Russell Graves

I haven’t played with the Pi4 enough to be able to make a strong statement one way or another. It’s on my list of hardware to obtain and play with. If you applied the same techniques, using an external SSD, it would probably be fine. The real key is not using the SD card for the OS beyond the early boot - this is true on the Pi3s, the Nano, and I would assume the Pi4 as well.

The Nano certainly has a higher quality GPU - a full on desktop grade Maxwell GPU, which is nice. The Pi4 is likely faster on the CPU side, but how this works in actual use, I simply don’t know.

I expect either one will work fine, though!


2020-04-18 by Rene Thomsen

Tried following your instructions to build a new kernel. I get the following error when running make:
.
.
OBJCOPY arch/arm64/boot/Image
GZIP arch/arm64/boot/Image.gz
cp -u arch/arm64/boot/dts/
cp: missing destination file operand after 'arch/arm64/boot/dts/'
Try ‘cp --help’ for more information.
arch/arm64/boot/dts/Makefile:136: recipe for target ‘dtbs’ failed
make[1]: *** [dtbs] Error 1
arch/arm64/Makefile:154: recipe for target ‘dtbs’ failed
make: *** [dtbs] Error 2

Any idea to what is causing this problem?