Table of Contents
Thank you for considering a contribution! As an embedded project with limited resources, we balance new features against flash/RAM usage and CPU overhead.
Quick Decision Framework
-
Bug Fixes → Highly Welcome
- Security fixes, crash fixes, or correctness improvements
- Should include minimal reproduction steps or regression tests
-
External/Standalone Apps → Very Welcome
- Code that runs without consuming internal flash space
- Must not modify core system APIs (add only, don't break)
-
Core System Modifications → Discussion Required First
- Architecture changes (Radio related, compile routine, filesystem architecture, etc...)
- Navigation & UI (menu systems, navigation system, UI design concept...)
- Core system functionality (serial port, file management, text editor, frequency management, setting & debugging options, persistent memory usage, etc... )
Required: Open an Issue or ask on Discord before writing code. We may reject modifications that consume significant RAM/flash for edge-case use cases. Early feedback prevents wasted effort.
# Once your pull request has been merged
Add a wiki article:
- Create or new page or update existing page in the project wiki documenting your change (improvement, new app).
- If needed, update the sidebar menu to include a link to your new article in the appropriate section.
This helps keep our documentation up to date and makes it easier for other contributors to understand the project.
AI-Assisted Coding Policy
- Welcomed with conditions:
- You must verify the code works on actual hardware (not just compiles or even not compiling)
- You must be willing to iterate based on review feedback
General Requirements
- Match existing code style (run
clang-format) - Include
staticfor internal linkage; minimize global symbols
By contributing, you agree to the license.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Start here
Contributors
How to collaborate
Contributing Guidelines
How to ask questions correctly
Hardware
- PortaPack Versions (which one to buy)
- Features
- HackRF Versions
- Description of the hardware
- Enclosure/cases
- Repairs
- Mods
User manual
Intended use and Legality
- Usage cautions
- First steps
- Firmware update procedure
- User interface
- Powering the PortaPack
- Troubleshooting
- Won't boot
- Config Menu
- Firmware upgrade
- Diagnose firmware update in Windows
- Receive Quality Issues
- No TX/RX
- TX Carrier Only
- H2+ speaker modifications
- Dead Coin Cell Battery
- Factory Defaults
- SD card not recognized by PC with the SD-card over USB selected
- DFU overlay
- Full reset
- SolveBoard
- How to Format SDCard
- What if I don't like some of the apps
Applications
- 📥 Receivers
- 📤 Transmitters
- ADS-B(S) TX
- Adult Toys
- APRS TX
- BHT Xy/EP
- BLE TX
- BLESpam
- Burger Pager
- CVS Spam
- EPIRB
- FlipperTX
- GPS Sim
- Hopper
- Jammer
- KeeLoq TX
- Key fob TX
- LGE Tool
- MDC-1200 TX
- Morse TX
- OOK
- OOK Brute
- OOK Editor
- P25 TX
- POCSAG TX
- RDS
- RTTY TX
- SAME TX
- Signal gen
- Soundboard
- Spectrum Painter
- SSTV
- TEDI/LCR
- TouchTunes
- TPMS TX
- 🔄 Transceivers
- 🟡 Recon
- 🔴 Capture
- ▶️ Replay
- 🖲️ Remote
- 🔍 Looking Glass
- 🛠️ Utilities
- 🎮 Games
- ⚙️ Settings
- 💻 HackRF Mode
Misc
Developer Manual
- Compilation of the firmware
- Compile on WSL with ninja
- How to compile on Windows faster with WSL 2
- Using Docker and Kitematic
- Docker command-line reference
- Using Buddyworks and other CI platforms
- Notes for Buddy.Works (and other CI platforms)
- Using ARM on Debian host
- All in one script for ARM on Debian host
- Compile on Arch based distro (exclude Asahi), or other weird distros
- Dev build versions
- Notes About ccache
- Create a custom map
- Code formatting
- PR process
- Description of the Structure
- Software Dev Guides
- Tools
- Research
- UI Screenshots
- Maintaining
- Creating a prod/stable release (Maintainers only)
- Maintaining rules
- Development States Notes
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Note
The wiki is incomplete. Please add content and collaborate.
Important
- This is a public wiki. Everything is visible to everyone. Don't use it for personal notes.
- Avoid linking to external tutorials/articles; they may become outdated or contain false information.