> For the complete documentation index, see [llms.txt](https://documentation.hak5.org/wifi-coconut/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.hak5.org/wifi-coconut/software-and-drivers/installing-on-macos.md).

# Installing on macOS

## Installing Homebrew for macOS

The simplest way to install the WiFi Coconut tools for macOS is to install the Homebrew package manager.&#x20;

The Homebrew package manager is available at <https://brew.sh/>

If you are not already using Homebrew, follow the install directions on the [Homebrew](https://brew.sh/) site.

If prompted to install the Xcode Command Line tools, do so.  They will be required!

## Install the WiFi Coconut tools

Once Brew and the Xcode command line tools are installed, installing the WiFi Coconut tools for macOS is as simple as:

```
brew tap hak5/wifi-coconut
brew install wifi-coconut
```

This will download and install the WiFi Coconut tools, compile them automatically, and install them.

If prompted to install other tools such as the xcode command-line tools, do so.

#### Example installation

```
hak5 ~ % brew install wifi-coconut
==> Downloading https://ghcr.io/v2/homebrew/core/pkg-config/manifests/0.29.2_3
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/pkg-config/blobs/sha256:2af9bce
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Downloading https://github.com/hak5/hak5-wifi-coconut/archive/refs/tags/v1.0
Already downloaded: /Users/hak5/Library/Caches/Homebrew/downloads/401dc2d1ee3da1d0831be9a6783966a7b6eb3944daf8db1c660a36aed086ea5c--hak5-wifi-coconut-1.0.0.tar.gz
==> Installing wifi-coconut from hak5/wifi-coconut
==> Installing dependencies for hak5/wifi-coconut/wifi-coconut: pkg-config
==> Installing hak5/wifi-coconut/wifi-coconut dependency: pkg-config
==> Pouring pkg-config--0.29.2_3.arm64_monterey.bottle.tar.gz
🍺  /opt/homebrew/Cellar/pkg-config/0.29.2_3: 11 files, 676.4KB
==> Installing hak5/wifi-coconut/wifi-coconut
==> echo $(pwd)
==> cmake -S ../
==> make
==> make install
🍺  /opt/homebrew/Cellar/wifi-coconut/1.0.0: 9 files, 349.0KB, built in 4 seconds
==> Running `brew cleanup wifi-coconut`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
hak5 ~ %
```

## Running

The `wifi_coconut` tool is the main interface for the WiFi Coconut, run it from a terminal with:

```
wifi_coconut
```

![WiFi Coconut on macOS](/files/OGrsd4wZCjvTHH8v5Jo4)

Additionally, the `wifi_coconut` tool takes several options to automate behavior:

```
Usage: wifi_coconut [options]
By default, the wifi_coconut tool opens in interactive mode.
Universal options:
 --disable-leds        Go fully dark; don't enable any LEDs
 --invert-leds         Normally a Wi-Fi Coconut enables all the LEDs
                       and blinks during traffic; Invert only lights
                       when there is traffic.
 --disable-blinking    Disable blinking the LEDs on traffic
 
Non-interactive modes:
 --no-display          Don't display channel UI while logging
 --wait                Wait for a coconut to be found
 --pcap=[fname]        Log packets to a pcap file.  If file is '-',
                       a pcap file will be echoed to stdout so that it can
                       be piped to other tools. --wait-for-coconut    Wait for a coconut to be connected and identified
 --list-coconuts       List Wi-Fi Coconut devices and exit
 --coconut-device=X    If you have multiple Wi-Fi Coconuts, specify
                       which one to use
 --enable-partial      Enable a Wi-Fi Coconut even if not all the
                       radios have been identified.
 --plain-dot11         Log plain 802.11 packets instead of radiotap
                       formatted packets with signal and channel
 --quiet               Disable most output
```

Warning - if you are using an older macOS (Catalina or Big Sur), there is a known bug in the macOS kernel for handling USB.  You will need to exit **all** other applications that may interact with the USB system, **including** **browsers** such as Chrome.

{% hint style="danger" %}
This has been fixed in more recent macOS releases and is no longer a problem with Monterrey and newer!  It is also not a problem on macOS versions earlier than Catalina.
{% endhint %}

## Integrating with other tools

Output from the `wifi_coconut` tool can be directly piped to other tools like `tcpdump` or `tshark`:

```
sudo wifi_coconut --no-display --pcap=- | tcpdump -r -
```

or

```
sudo wifi_coconut --no-display --pcap=- | tshark -r -
```

## Compiling from source

You can, of course, compile the WiFi Coconut tools manually.

### Install dependencies

To compile from source on macOS you will need:

* The Xcode command line tools from Apple
* The CMake build system
* Git
* LibUSB 1.0.0

In the Homebrew package manager, these can be installed by installing Homebrew, then installing dependencies:

```
brew install cmake
brew install libusb
```

For other package managers, you will need to install the equivalent packages.

### Check out the code

```
git checkout https://github.com/hak5/hak5-wifi-coconut
```

### Configure

```
cd hak5-wifi-coconut
mkdir build
cd build
cmake ../
```

`cmake` will confirm that the required dependencies are available.&#x20;

### Compile

```
make
```

### Install

```
make install
```

This will install the wifi-coconut tool to the default path (`/usr/local/bin` by default), and the rt2800usb firmware to `/usr/local/share/`.
