SSH into Jetson Nano through Mac OS Catalina

When I try to connect with it through the wifi the ssh server work. But when I try to use ssh nvidia@192.168.55.1 through the ECM interface of the usb gadget but it doesn’t work.

Apple driver log:
https://gist.github.com/anhmiuhv/4b08dfba6201d10c3001c2e2a3d859b8

Jetson Nano log:
https://gist.github.com/anhmiuhv/53936f05d3b364ebaceed52c1fca7c45

Hi, Lthoang

What’s your jetpack or SD Image version.

Pls check the usb cable first. It should be able to transfer data.

Once the ECM works, there will be a folder pop up once the nano bootup sucess with ubuntu destop in the same time the usb insert into your pc.

I have the r32.2-2019-07-16 version

I tried to minicom to the serial device. it works so I think the usb cable is good.

Actually, this only happens when I try to power the jetson nano through the mircousb port; when I use the dc barrel it is ok.

The ssh works on my Linux machine but not my Mac.

Good news. When usb cable is used as power supplier. The data function is disabled.

I don’t have a Mac to confirm. Maybe someone else could give some suggestion

I try parallel running ubuntu on my Mac. I was able to ssh through the virtualized Ubuntu

The neweast OS on Mac will failed to connect via the USB.

We will update the driver in the late Jetpack release to fix the usb connection issue.

L4T’s USB device mode implements a variety of different functions in parallel, so is what’s known as a USB composite device. The Ethernet protocol that works with macOS (pre-Catalina) is known as USB CDC ECM (Communications Data Class Ethernet Control Model). macOS Catalina has replaced the driver for this protocol; it used to be a kernel-based driver but is now a user-space driver. Presumably Apple made significant code changes during this transition. Either way, the ECM driver in macOS Catalina no longer works with the configuration implemented by L4T/Jetson. Specifically, the ECM driver no longer works if the ECM function is part of a USB composite device, but does work if the ECM function is the the only function in the USB device. CDC NCM is an alternative Ethernet protocol. macOS Catalina’s CDC NCM driver seems to work fine if the NCM function is part of a composite gadget. Thus, there are two ways to solve this issue:

Disable all protocols other than ECM. Jetson will no longer additionally appear as a UART (serial port) or USB Mass Storage (disk). Edit /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-config.sh (recent L4T releases) or /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh (older L4T releases) to disable all other protocols; change the =1 to =0 in all the following lines:

enable_rndis=1
enable_acm=1
enable_ums=1

OR:

  1. Edit /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh and change all relevant references to ECM to use NCM instead. Specifically, something like:

func=functions/ecm.usb0

to:

func=functions/ncm.usb0

and:

/sbin/brctl addif l4tbr0 “$(cat functions/ecm.usb0/ifname)”
/sbin/ifconfig “$(cat functions/ecm.usb0/ifname)” up

to:

/sbin/brctl addif l4tbr0 “$(cat functions/ncm.usb0/ifname)”
/sbin/ifconfig “$(cat functions/ncm.usb0/ifname)” up

A future release of L4T does roughly (2) above, while enhancing the script to allow easy switching between ECM and NCM protocols.

1 Like

I was just reading the JetPack SDK 4.3 DP Changelog and was afraid that we wouldn’t have fix anytime soon, but seems like @StephenWarren fix works :-) Thank you for that!

I need a little help here since I’m relatively new trying to work with Getting Started with AI on Jetson Nano. I’m able to run it on a PC laptop, but want to run it on my iMac. I tried to make the changes Stephen recommended, however it won’t allow it to be saved. It says I don’t have admin rights, this is with the Nano logged in using a TV and keyboard. Any help would be appreciated.

Chuck