findpi
What
Find all the Raspberry Pi devices on your network really fast using multithreading in Python 3.8+ and find them fast. Supports all Raspberry Pi models including Pi 5, Pi 4, Pi 3, Pi Zero 2 W, and more.
Stats
Ok, so to compare this to just running nmap vs. findpi:
| run 1 | run 2 | run 3 | average | |
|---|---|---|---|---|
| nmap v7.80 | 6.007 total | 5.679 total | 4.633 total | 5.44 total |
| findpi v1.2.0 | 2.899 total | 2.682 total | 2.696 total | 2.76 total |
Why
I was sick of waiting forever for the arp / nmap commands to work single-threaded.
Also, arp only works for devices you have seen previously, so you could easily miss things.
Features
- Multi-threaded scanning for fast network discovery
- CIDR notation support - scan any subnet size (e.g.,
/24,/16,/25) - All Raspberry Pi models supported - Pi 1, 2, 3, 4, 5, Zero, Zero W, Zero 2 W, Pi 400
- Modern Python 3.8+ with improved error handling
- Cross-platform - works on Linux, macOS, and Windows
Installation
# Using uv (recommended)
uv pip install findpi
# Using pip
pip3 install findpi
Usage
sudo findpi use multithreading to get the job done.
NOTE: Must Use SUDO
The application asks you what ip address or range you want to select. The default tries to figure out your current network and set it as default.
Examples
# Scan default network (auto-detected)
sudo findpi
# Scan specific /24 network
sudo findpi
# What net to check? (default 192.168.1.0/24): 192.168.1.0/24
# Scan larger subnet
sudo findpi
# What net to check? (default 192.168.1.0/24): 10.0.0.0/16
# Scan specific IP
sudo findpi
# What net to check? (default 192.168.1.0/24): 10.2.2.113
# Custom thread count
sudo findpi -c 32
Output example:
What network do you want to check? (192.168.1.0/24):
Checking for delicious pi around 192.168.1.0/24...
Found pi: 192.168.1.113
Found pi: 192.168.1.117
Found pi: 192.168.1.119
Found pi: 192.168.1.137
--- 2.45 seconds ---
Supported Raspberry Pi Models
- Raspberry Pi 1 - b8:27:eb MAC prefix
- Raspberry Pi 2 - b8:27:eb MAC prefix
- Raspberry Pi 3 - b8:27:eb, dc:a6:32 MAC prefixes
- Raspberry Pi 4 - e4:5f:01, dc:a6:32 MAC prefixes
- Raspberry Pi 5 - dc:a6:32 MAC prefix
- Raspberry Pi Zero - b8:27:eb MAC prefix
- Raspberry Pi Zero W - dc:a6:32 MAC prefix
- Raspberry Pi Zero 2 W - dc:a6:32 MAC prefix
- Raspberry Pi 400 - e4:5f:01 MAC prefix
Troubleshooting
-
If you set the threads too high for your system (should be a factor of number of cores) you will start to see timeout errors like the following
QUITTING! dnet: Failed to open device en0. The mitigation is to lower the number of threads or leave it at the default. -
For large subnets (like /16), the scan may take a long time. Consider using a smaller subnet or specific IP ranges.
-
If you get permission errors, make sure you're running with sudo or as root.
Metadata
Release files for findpi 1.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| findpi-1.2.2.tar.gz | 65.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| findpi-1.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.0 kB
Release files / findpi-1.2.2.tar.gz
| Download URL | findpi-1.2.2.tar.gz |
|---|---|
| Size | 65.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3bd845525e453cf47ef7883dfb420e192dd0fcf5fe7d64f998f59a182148a8d0
|
|
BLAKE2b-256 checksum How to use checksums |
79202732b8573ecee2940340a4db84bf2db47ad87af6d351d43266795b02cf30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|
Release files / findpi-1.2.2-py3-none-any.whl
| Download URL | findpi-1.2.2-py3-none-any.whl |
|---|---|
| Size | 6.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
10cdf83c65bb3370c18d7c6b1baebf5761b3dae2aa669c8200552d4cb4c2085e
|
|
BLAKE2b-256 checksum How to use checksums |
26785509b4931137587abe6b11e4609734296d7ec52b7f82bdc998ee3bcb4f36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|