Welcome! This guide will help you set up your development environment and make your first contribution to WLAN Pi.
WLAN Pi is a specialized platform for Wi-Fi professionals. It combines custom hardware with a Debian-based OS and Python applications to provide tools for:
- Wi-Fi analysis and troubleshooting
- Packet capture
- Network diagnostics
- Performance testing
This repository contains the documentation for developers who want to contribute to WLAN Pi projects.
curl -fSL https://raw.githubusercontent.com/WLAN-Pi/developers/main/install.sh | sudo bash
curl -fSL http://wlanpi.us/install | sudo bashThat URL is install.sh in this repository, fetched over HTTPS.
http://wlanpi.us/install is a short alias: a GET redirects to the same
script. The first hop is plain HTTP, because Hover's forwarder is HTTP-only.
The one-liner can move to https://wlanpi.us/install once that domain
serves HTTPS, for example with Cloudflare redirect rules or GitHub Pages.
# Configure your identity
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# Enable rebase by default for cleaner history
git config --global pull.rebase trueNote: You will need to setup SSH keys.
- Go to the repository you want to contribute to on GitHub
- Click the "Fork" button
- Clone your fork and add the upstream remote:
git clone https://github.com/USERNAME/REPO_NAME.git cd REPO_NAME git remote add upstream https://github.com/WLAN-Pi/REPO_NAME.git
Create your branch from main. The exception is wlanpi-kernel, which keeps
one branch per kernel version; see Repository Reference.
# Sync your fork from upstream
git checkout main
git pull upstream main
# Create your feature branch from there
git checkout -b feature/<my-first-contribution>You should replace <my-first-contribution> with something concise and descriptive.
# Edit files...
# Stage and commit
git add .
git commit -m "Fix: description of your change"git push origin <my-first-contribution>Then open a Pull Request (PR) on GitHub against the target branch.
Best for: Testing hardware-specific features, Wi-Fi operations
Requirements:
- WLAN Pi hardware
- Network access to the device
Setup:
- Connect to your WLAN Pi via SSH
- Follow the Quick Start above
- Edit files directly on the device or use Remote-SSH in VS Code
Best for: Application development, testing without hardware
You can develop on any Linux system with:
- Python 3.13
- Git
- Standard build tools (
build-essential,debhelper)
See Developing on Windows for detailed instructions.
WLAN Pi consists of multiple repositories such as (but not limited to):
| Repository | Purpose |
|---|---|
wlanpi-common |
Core utilities and shared code |
wlanpi-profiler |
Wi-Fi client profiler tool |
wlanpi-fpms |
Front panel menu system driving the OLED display |
wlanpi-misc-firmware |
Miscellaneous firmware packages (e.g. MediaTek) |
pi-gen |
OS image generation |
Most application repositories aim for this structure:
REPO_NAME/
├── debian/ # Debian packaging files
│ ├── control # Package metadata and dependencies
│ ├── changelog # Version history (managed via dch)
│ ├── copyright # DEP-5 copyright
│ ├── rules # Build instructions
│ ├── source/format # 3.0 (native) for first-party packages
│ └── ...
├── wlanpi_yourapp/ # Python package source
├── tests/ # Test files
├── pyproject.toml # Project metadata and tool config
├── requirements.in # Direct dependencies (managed via pip-tools)
├── requirements.txt # Pinned runtime dependencies (generated, do not edit by hand)
├── tox.ini # Tox environments for lint, format, test
├── README.md # Project documentation
└── LICENSE # BSD-3-Clause License
This is the target, not a guarantee. Some older repos still use setup.py
instead of pyproject.toml, or omit requirements.in/tox.ini.
requirements.txt is the runtime set that dh_virtualenv installs into the
.deb. Test tools stay in a pyproject.toml extra. See
Debian Packaging.
Not sure where to start? Look for issues labeled:
good first issue- Beginner-friendly taskshelp wanted- Community contributions welcomedocumentation- Documentation improvements
- Find a typo or documentation improvement
- Fork the repository
- Create a branch:
fix-typo-readme - Fix the typo
- Commit with a clear message:
Fix typo in README - Push and create PR
- Read Contributing for detailed workflow guidelines
- Check out Packaging Example if you want to create a new package
- Join our dev Slack community (contact a team member for access)
- Explore the Architecture documentation
# Add the upstream remote (one time)
git remote add upstream https://github.com/WLAN-Pi/REPO_NAME.git
# Update your local main branch
git checkout main
git pull upstream main
# Merge main into your feature branch to stay current
git checkout your-branch
git merge main --no-ff -m "Merge main to stay current"To test your changes on a WLAN Pi:
# Build the package
dpkg-buildpackage -us -uc -b
# Install it
sudo dpkg -i ../wlanpi-package_*.debsudo journalctl -u wlanpi-service -f- WLAN Pros Slack: wi-fipros.slack.com
- Dev Slack: wlanpi.slack.com
- GitHub issues: Open an issue in the relevant repository
- Core member: Contact a team member listed on GitHub
| Document | Purpose |
|---|---|
| Contributing | How to contribute code |
| Repository Reference | What each repo should be: role, package, and the build standard |
| Release Process | Core team release procedures |
| Packaging Example | Complete packaging tutorial |
| Architecture | System design and standards |
| Style Guide | Code and packaging style |
| Workflow | Development environment guides |