Installation
System dependencies
First, you may need some specific system dependencies:
Python3 development libraries (apt install python3-dev on Debian or Ubuntu)
a working compiler as it is required to build some dependencies
On a Debian/Ubuntu x86/x64 system:
`
$ sudo apt install gcc python3-dev binutils -y
`
On a Debian/Ubuntu aarch64 system:
`
$ sudo apt install aarch64-linux-gnu-gcc binutils python3-dev -y`
`
Note
If your system needs extra dependencies or requires special steps to be followed in order to flawlessly install WHAD, let us know by creating an issue on our Github repository !
Installing WHAD with pip
Installing WHAD is straightforward with pip
:
$ pip install whad
Important
It is highly recommended to use a virtual environment for WHAD in order to avoid any dependency collision, see this tutorial.
You can also use pipx instead of pip, as it manages its own virtual environments.
Installing WHAD from Github repository
Another solution is to get the source from github directly and install the framework with the classic Python tools.
Then clone the repository, create a virtual environment and install it:
$ git clone https://github.com/whad-team/whad-client.git
$ cd whad-client
$ python3 -m venv venv
$ . ./venv/bin/activate
(venv)$ pip install --upgrade pip setuptools
(venv)$ pip install .
Important
It is highly recommended to use a virtual environment for WHAD in order to avoid any dependency collision, see this tutorial.
Installing rules for WHAD-compatible devices
By default, interacting with most WHAD-compatible devices require root permissions.
To allow a normal user to interact with them, a simple tool named winstall
is included in whad.
It can automatically install rules & configure permissions for the supported devices.
To install the rules for all devices, just run the following command:
$ winstall --rules all
A prompt will ask your password to elevate your privileges, then rules and permissions will be automatically configured. On some system, it may be necessary to logout in order to apply changes.
If you prefer to install rules for a specific device, replace ‘all’ by the device you want to configure:
# Install rules for HCI devices
$ winstall --rules hci
# Install rules for ButteRFly device (nRF52840 dongle - pca10059 or Makerdiary MDK nrf52 dongle)
$ winstall --rules butterfly
# Install rules for nodeMCU ESP-32
$ winstall --rules esp
# Install rules for nucleo STM32-WL55
$ winstall --rules nucleowl55
# Install rules for LoRa e5 mini dongle
$ winstall --rules lorae5mini
# Install rules for Ubertooth One
$ winstall --rules ubertooth
# Install rules for Yard Stick One
$ winstall --rules yardstickone
# Install rules for RFStorm device (CrazyRadio PA / Logitech Unifying dongle)
$ winstall --rules rfstorm
# Install rules for APIMote device
$ winstall --rules apimote
# Install rules for RZUSBStick
$ winstall --rules rzusbstickrfstorm
Flashing firmware on WHAD-compatible devices
winstall
tool also allows to flash the latest available firmware on various WHAD-enabled devices.
Plug your device on your computer, and check if it is correctly detected using --list
option:
$ winstall --list
[!] Detected devices:
- Ubertooth One: 0
Command (install rules): winstall --rules ubertooth
Command (flash firmware): winstall --flash ubertooth --port 0
- Espressif ESP-32 board: /dev/ttyUSB0
Command (install rules): winstall --rules esp
Command (flash firmware): winstall --flash esp --port /dev/ttyUSB0
- HCI device: hci0
Command (install rules): winstall --rules hci
Then, flash the latest device using the --flash
option (you can provide a specific port using --port
):
$ winstall --flash ubertooth
[!] This tool must run as root, let's elevate your privileges !
[...]
[!] Flashing ubertooth device ...
Latest ubertooth release: 2020-12-R1
[!] Running command: tar -xf /tmp/ubertooth-2020-12-R1.tar.xz
[!] Running command: ubertooth-dfu -d bluetooth_rxtx.dfu -r
Flashing successful for device 'ubertooth'.
Once correctly flashed, you should be able to see the available devices using wup
/ whadup
:
$ whadup
[i] Available devices
- ubertooth0
Type: UbertoothDevice
Index: 0
Identifier: 16b00016c61435aeaec24253811e00f5
- hci0
Type: HCIDevice
Index: 0
Identifier: hci0
- uart0
Type: UartDevice
Index: 0
Identifier: /dev/ttyUSB0
Installing WHAD in a virtual machine
WHAD can be installed in a virtual machine rather than on a host using the procedure described above. However, some virtualization softwares required specific settings to allow all the features of WHAD.
The following table summarizes the supported virtualization softwares and the OSes used to run them, as well as the recommended guest OSes for each of them.
Software |
ARM macOS Host |
x86 macOS Host |
x86 Windows Host |
x86 Linux Host |
---|---|---|---|---|
VMWare |
Ubuntu 24.04 (1) |
Ubuntu 24.04 (1) |
Ubuntu 24.04 (01) |
Ubuntu 24.04 (1) |
VirtualBox |
Untested |
Ubuntu 24.04 |
Ubuntu 24.04 |
Ubuntu 24.04 |
Using VMWare virtualization software (1)
Our tests with the recommended guest OS Ubuntu 22.04 showed that the Bluetooth service must be stopped or disabled in the Ubuntu guest to avoid conflicts with Bluetooth USB dongles:
$ sudo service bluetooth stop
Note
On Linux hosts, the Bluetooth service does not need to be stopped or1 disabled in guest OS.