jetson nano and the keyboard conundrum

Connector edge of Jetson Nano

You’re looking at the fully filled connector edge of my Jetson Nano. Starting from the left, there’s the barrel connector for the 5V 4A switching power adapter, the HDMI cable to the back of the monitor, then a TP-LINK WiFi dongle, with the USB connector beneath it for my Apple aluminum keyboard with built-in two port USB 2 hub. On the right are the final two USB 3 ports, with the Coral TPU Accelerator plugged in the top and a Crucial 500GB SSD plugged in the bottom. Let’s now take this apart, figuratively speaking.


The Nano is capable of being powered from two sources; via micro USB on the far right or the barrel jack power connect on the far left. I started with a micro USB power supply specifically for the Raspberry Pi 3B (5v 2.5A) and it worked great for just getting the Nano up and running. I soon switched to the barrel jack power with a 5V 4A power supply (Shenzhen GEAO Technology Co. Ltd, Model GEO241DA-0540) I’d purchased years ago along with a BeagleBoneBlack SBC. In the photo above you’ll see I have shorted J48, the power select jumper block. Which leads me to my first negative comment.

I don’t know who at Nvidia made the decision not to include a shorting block for J48, but it was short sighted on someone’s part. If you’re going to run the Nano at full power and with all the USB ports filled then you need to select the barrel power connector as I’ve done. They could have avoided a lot of end-user annoyance and bad press if they’d placed a shorting block onto J48 along with a note on the single cardboard card that comes with the Nano that the board is set up to use the barrel jack, and to pull it off if they want to power from micro USB.

I got past this easily because I have an old Plano blue-and-grey ABS plastic tackle box I’ve had with me since college (decades ago), just filled with all sorts of odds and ends from my electronic hardware projects over the years. I went looking and sure enough, in one corner of the top tray there was a small collection of these left over from my days building IBM PC, PC XT, and PC AT clones, when they were needed for configuration strapping on ancient bronze-age motherboards and peripheral cards.

WiFi Networking

The Nano, unlike the Raspberry Pi 3 and 4, does not come with built-in WiFi. If you want WiFi, you can spend upwards of US$25 and get a special WiFi card that plugs into the GPU card, and comes with two big ol’ antenna. Which is a bit annoying if you don’t want those two big ol’ antenna lying around (literally) while in use, unless you want to spend more bucks getting a case that can physically mount everything. So I went back into my collection of bits and bobs and dug out this TP-Link USB adapter (150Mbps Wireless N Nano USB Adapter, model TL-WN725N) and plugged it right in. Ubuntu found it immediately and away we went configuring WiFi and bringing it up.

It’s a bit harder for me to ding the designers for the lack of built-in WiFi considering all the silicon already around in the environment. The main question is where would you put it so that it would work reliably. The boards pretty tightly packed, and the daughter GPU card with its heat sink pretty much precludes putting a WiFi adapter on the top surface of the bottom card. Right now, for my work, consuming a USB port with a WiFi dongle is the best compromise. If I want more sophistication or if I really need that USB port back, then I’ll look at the other WiFi solution for the Nano. But until then, the dongle works just fine.


Now we get to the reason for the title of this post. I’ve been using a Logitech MK710 wireless keyboard, bundled with an M510 mouse, since the Raspberry Pi 3. The key feature of this combination is that they both share a single wireless dongle, and thus save a precious USB port on the board. And it worked wonderfully when the only ports used on the Nano were for keyboard/mouse and WiFi.

Then I discovered that if I plugged anything else into the two empty ports the mouse stopped working. The keyboard was still operational, but the mouse would not move the cursor on the desktop. No playing with moving everything around changed the behavior. The workaround for now was to reach back into my cabinet and pull out my Apple aluminum USB wired keyboard, model A1243.

The Apple keyboard has one really nice feature, a built-in two port USB hub. I thus have a wireless mouse (Logitech M325) plugged into the side of the keyboard, keeping the Nano’s USB port usage down to a minimum, just as before. Now when I plug other devices, such as the Coral TPU Accelerator and Crucial 500GB SSD into the other two open USB ports, it all works together.

This isn’t the only board where this problem has appeared. I’ve seen the same problem on the Raspberry Pi 4 with Raspbian Buster, but not nearly as bad. On the Raspberry Pi 4 I can switch the mouse off and then on again to get it working for a while, before it stops moving the desktop cursor yet again. I can’t prove it definitively but this has all the earmarks of a Linux kernel driver bug in combination with this particular Logitech keyboard. I believe this to be a recent issue/bug that’s shown up in the Linux kernel, and perhaps is unique to just the ARM build, but it is a recent repeatable problem across at least two different ARM platforms.

Fan and TPU and SSD

The fan running on the top of the heat sink is the recommended NF-A4x20 5V PWM Noctua fan, and it works a treat. I don’t know what drugs the critics of this fan are taking, but there’s nothing more to using this than plugging it into the purpose build J15/Fan connector on the motherboard and enabling it with ‘sudo jetson_clocks’. It immediately fires right up and keeps the entire board nice and cool. Mine is just sitting on top of the heat sink. When I get around to it I’ll find a more permanent way to physically affix the Noctua to the heatsink. For now it keeps everything nice and cool just sitting there and I can barely hear it spinning. Winning all around. So much winning…

The last two items are for a later post. I’ve spent enough time on this post and I’m beginning to ramble.