This version (23 Feb 2021 16:49) was approved by Cristina Suteu.The Previously approved version (29 Jul 2020 01:47) is available.Diff

Mac OS X Drivers

HoRNDIS is required for Remote Network Driver Interface Specification (RNDIS) which is a USB protocol to provides a virtual Ethernet link. If you don't want to access your device over network - don't install HoRNDIS. It is optional.

Make sure the following drivers are installed:

  • HoRNDIS, HoRNDIS (pronounce: “horrendous”) is a driver for Mac OS X that allows you to use your RNDIS to get network access to Pluto. It is known to work with Mac OS X versions 10.6.8 (Snow Leopard) through 10.12 (Yosemite). Although you should be careful with all drivers that you install on your computer, HoRNDIS has been tested at least well enough for the author (and many others) to run full time on their own personal computers. It would be great if Apple decided to support this natively - since RNDIS is a Microsoft specification, it's unlikely.

The drivers and files should be compatible with:

  • macOS Mojave 10.14
  • macOS High Sierra 10.13
  • macOS Sierra 10.12
  • macOS El Capitan 10.11
  • macOS Yosemite 10.10

A reboot is required after installing the HoRNDIS.

For newer macOS versions(from macOS Catalina 10.15 and up), HoRNDIS no longer provides official support.


adi-mm:tests analogdevices$ ls -l /dev/tty.* 
crw-rw-rw-  1 root  wheel   17,   0 Nov  7 15:13 /dev/tty.Bluetooth-Incoming-Port
crw-rw-rw-  1 root  wheel   17,   2 Nov  7 15:28 /dev/tty.usbmodem1414
adi-mm:tests analogdevices$ screen /dev/tty.usbmodem1414 115200

Welcome to Pluto
pluto login: root
Password: analog
# uname -a
Linux pluto 4.6.0-08511-gc1315e6-dirty #247 SMP PREEMPT Mon Oct 24 16:46:25 CEST 2016 armv7l GNU/Linux
Really quit and kill all your windows [y/n] y
[screen is terminating]
adi-mm:tests analogdevices$ 

Mass Storage

adi-mm:tests analogdevices$ mount | grep Pluto
/dev/disk1s1 on /Volumes/PlutoSDR (msdos, local, nodev, nosuid, noowners)


Ethernet Warning

Like most of the network settings on Pluto or the M2k - things are meant to be easy to use. This also means things are inherently insecure.

For example - the root password of Pluto is analog. We post it on the Internet. Think about that for a moment. This could allow anyone with an IP connection to take over the device and use it for malicious purposes.

Never set up a bridge between the Internet and a network connected Pluto with the default images.

Unfortunately - nothing on your host understands the what the IP address of the usb device is. You, the human behind the keyboard need to understand this before any sort of networking will work. There are two main ways to do this:

Once the HoRNDIS driver is installed, you should see something like this when you goto → System Preferences → Network.

You may need to reboot without the PlutoSDR plugged in, and then attach the PlutoSDR to get HoRNDIS to load properly

To check things out, it should look something like this in dmesg:

adi-mm:build analogdevices$ sudo dmesg
HoRNDIS: init: HoRNDIS tethering driver for Mac OS X, by Joshua Wise (rel8 final)
HoRNDIS: probe: probe: came in with a score of 60000
HoRNDIS: message: unknown message type e000401f
HoRNDIS: message: unknown message type e0000230
HoRNDIS: probe: probe: looks like we're good (2/2/255)
USBMSC Identifier (non-unique): 100000235523730700230012090216da47 0x456 0xb673 0x406, 2
HoRNDIS: message: kIOMessageServiceIsAttemptingOpen
HoRNDIS: openInterfaces: data interface: okay, I got one, and it was a 0x0a/0x00/0x00
HoRNDIS: message: kIOMessageServiceIsAttemptingOpen
HoRNDIS: rndisInit: their MTU 1486
HoRNDIS: setMaxTransferUnit: Excuse me, but I said you could have an MTU of 1486, and you just tried to set an MTU of 1500.  Good try, buddy.
HoRNDIS: init: starting up with MTU 1486
en4: attached with 4 suspended link-layer multicast membership(s)
HoRNDIS: message: kIOMessageServiceIsAttemptingOpen
HoRNDIS: message: kIOMessageServiceIsRequestingClose
HoRNDIS: message: kIOMessageServiceIsAttemptingOpen
HoRNDIS: message: kIOMessageServiceIsRequestingClose
en4: failed to restore 4 suspended link-layer multicast membership(s) (err=102)

adi-mm:tests analogdevices$ ifconfig  | grep -B 3 -A 3 192
	ether 00:e0:22:6d:b2:d8 
	inet6 fe80::2e0:22ff:fe6d:b2d8%en4 prefixlen 64 scopeid 0xa 
	inet netmask 0xffffff00 broadcast
	nd6 options=1<PERFORMNUD>
	media: autoselect
	status: active

ssh config

Adding a quick/short ssh config file, which describes the USB device can be helpful. It's maintained in github, and it's a simple matter of grabbing the raw text file. You shouldn't do the exact below unless you have no ~/.ssh/config file. Otherwise, click on this link and copy/paste it into the system wide /etc/ssh/ssh_config file, or the user specific ~/.ssh/config file.

analog@imhotep:~$ wget -O ~/.ssh/config
--2017-01-26 19:47:51--
Resolving (
Connecting to (||:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 366 [text/plain]
Saving to: ‘~/.ssh/config’

~/.ssh/config         100%[===============>]     366  --.-KB/s    in 0s      

2017-01-26 19:47:51 (6.49 MB/s) - ‘~/.ssh/config’ saved [366/366]

Since the ssh key on the pluto changes every boot, we want to be able to never store the key (so we store it to /dev/null. This does make it easier to use (don't need to continually edit the known_hosts file), but does make things susceptible to man in the middle attacks.

adi-mm:tests analogdevices$ ssh plutosdr
Warning: Permanently added 'pluto' (ECDSA) to the list of known hosts.
root@pluto's password: analog
# uname -a
Linux pluto 4.6.0-08511-gc1315e6-dirty #247 SMP PREEMPT Mon Oct 24 16:46:25 CEST 2016 armv7l GNU/Linux
# exit
Connection to closed.
adi-mm:tests analogdevices$ 

if you have sshpass installed, you can use that so you dont need to type in a password:

analog@imhotep:~/pluto$ sshpass -panalog ssh plutosdr
Warning: Permanently added 'pluto' (ECDSA) to the list of known hosts.
Welcome to:
______ _       _        _________________
| ___ \ |     | |      /  ___|  _  \ ___ \
| |_/ / |_   _| |_ ___ \ `--.| | | | |_/ /
|  __/| | | | | __/ _ \ `--. \ | | |    /
| |   | | |_| | || (_) /\__/ / |/ /| |\ \
\_|   |_|\__,_|\__\___/\____/|___/ \_| \_|

university/tools/pluto/drivers/osx.txt · Last modified: 23 Feb 2021 16:49 by Cristina Suteu