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.

Power

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.

Keyboard

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.

 

jetson nano, baby steps

Ubuntu 18.04 desktop running on the Jetson Nano and LG 34UM61 monitor

I turned 66 earlier this month and in the process hit official retirement age. Guys who are rich enough usually go out and get something really blingy, like a new set of golf clubs or a deep sea fishing set, or something equally expensive and self-indulgent. Me, I went out and spent a whole $99 on the Jetson Nano. I figured if I was going to be “retired” then I’d go back in time and work with what got me started many decades ago, an embedded system. I started out as an electrical engineer and wrote assembly language drivers and test routines for embedded systems. As time went along, I drifted deeper into writing software as the hardware side of the business moved out of Atlanta and to places like Dallas and Silicon Valley. I never went with them because I’d traveled to those places and they weren’t as enjoyable as Atlanta and the South. And I can’t knock software development as it helped pay the bills and raise a family. Now I don’t need to do that anymore and I can go back and do what really scratches my intellectual itches.

This embedded system is a whole lot different, and a whole lot more powerful, than the embedded systems I stared with in the early 1980s. Everything about the Jetson Nano is incredibly advanced from the systems available in the 1980s, starting with the 64-bit quad core ARM processor to the 128 core nVidia graphics co-processor being used for machine learning. And all for a mere $99. And I mean that. The kind of processing power and hardware resources on this board would have ranged from outlandishly expensive to impossible to obtain.

The operating system that is available with this board, a targeted version of open source Ubuntu 18.04 LTS compiled for the ARM Cortex-A57, would have cost additional thousands and been closed source with an NDA to sign on top of that.

This $99 board is a remarkable bargain of a computer. I’ve read the reviews of frustrated users who gave it one star talk about how difficult it to set up and operate. So far my experience has been nearly 100% trouble free. I’ve had a few minor bumps, but it’s been after getting the OS up and running and configuring the system. Experiences so far with this board have been as satisfying, if more so, than all my experiences with the Raspberry Pi from 2 to 4.

Now that I’m “retired” I’ll be dabbling in the uses for this board, as well as with all the other little bits and bobs I’ve been collecting now for some number of years. I’ll be able to sit back and move at my own speed without having to put it aside because I needed to go to sleep and then into work the next morning. I’m an inveterate tinkerer, and Jetson Nano is the ultimate tinkerer’s tool and toy.