Custom firmware for the HackRF+PortaPack H1/H2
  • C 73.2%
  • C++ 19%
  • Makefile 2.6%
  • HTML 1.7%
  • Assembly 1.1%
  • Other 2.2%
Find a file
stafur 9a3c2cc6ac
Next praline clean up (fixed BLE RX crashes) (#3080)
* Cleaned up #ifndef PRALINE and updated logic to being with #ifdef PRALINE entries where possible to make logic flow for PRALINE code execution pipeline clearer. Cleaned up compiletime warnings for PRALINE related codebase updates.

* Addressed comments provided by copilot during PR review. Combed through frequency definitions for consistency between PLL A and PLL B register definitions for CLKs 0-7. Ensured CLK3/LK6 <- SMA PORTs and CLK7 <- not utiliized are disabled during core development phase to support root cause analysis of any spectral artifacts. Updated MCU frequency to 40MHz to ensure audio harmonics are outside FM radio band range (< 80 MHz, >120MHz) and added comments clarifying choice of 40 over 10 MHz for potential future root cause analysis in other bands where audio may be expected as needed. Added CLK6 and CLK7 to Clocks Status View Debug display. Moved CLK defintions and PLL instantiations for components that are most RF sensitive to PLL A. Left others in PLL B. That is move FPGA CLK1 to PLL B, while moving CLK2, CLK4, and CLK5 to PLL A.

* Cleaned up PLL A and B XTAL reference checks relative to 800 MHz.

* Encapsulated HackRF Pro Praline debug and status vies into a single Pro Debug submenu as part of clean up.

* Fixed BLE RX Out of Memory error. Updated LPC43xx ld scripts to accouint for additional HackRF Pro praline memory.

* Addressed copilot comments for ble_rx_app by adding recent_entries_view.set_dirty. Updated ble_rx_app for easier use with heap limit set to one less than recent entries max limit.

* Addressed copilot comments by updating comment clarity in source files. Updated ui_debug to allow for return reference if set for PRO debug menu item.

* Improved readability of intialization parameters for the FPGA registers, and addressed 20Mhz nulls by initializing DC Notch width with standard setting, and DC Adaptiation rate with a balanced setting.

* Ran format-code.sh

* Added option to allow for user to set number if entries in recent list. Default is set to a relatively stable 32.

* Removed #ifdef PRALINE pragmas from ble_rx_app such that HackRF One can also use the updated UI widget to allow for user to set number of entries in recent list.

* Ran format-code.sh
2026-03-10 21:40:43 -04:00
.github Switched build to use ninja by default (#3072) 2026-03-05 13:25:39 +13:00
.vscode Add vscode debug configuration as a template (#2109) 2024-04-17 20:21:16 +08:00
docs remove github pages CNAME (#2905) 2026-01-04 09:25:45 +01:00
firmware Next praline clean up (fixed BLE RX crashes) (#3080) 2026-03-10 21:40:43 -04:00
flashing PortaRF & Windows tool update (#3075) 2026-03-06 09:41:56 +13:00
hackrf@38e082b939 PortaRF & Windows tool update (#3075) 2026-03-06 09:41:56 +13:00
hardware Added 3d printed cases for the H4M (#2715) 2025-06-25 19:16:43 +02:00
sdcard Refactor KeeLoq crypto functions and add new KeeLoq TX app (#2990) 2026-02-16 15:19:50 +01:00
tools fix clang format workflow, update hackrf submodule, fix subghzd compilation warning, remove flashsize.h (#2992) 2026-02-15 21:29:26 +00:00
.clang-format conform to clang spec (#2925) 2026-01-22 15:26:31 +01:00
.dockerignore docker improvements (#2455) 2024-12-31 11:27:38 +01:00
.gitignore Move flashsize.h to build directory to avoid conflicts when switching between different builds (#3021) 2026-02-22 21:21:03 +01:00
.gitmodules Replace hackrf submodule (#2404) 2024-12-05 12:31:45 +01:00
CMakeLists.txt Move flashsize.h to build directory to avoid conflicts when switching between different builds (#3021) 2026-02-22 21:21:03 +01:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2025-03-26 12:09:51 +01:00
CONTRIBUTING.md Create CONTRIBUTING.md (#2598) 2025-03-26 19:53:41 +08:00
docker-compose-nogit.yml Add file 2023-02-19 08:35:19 +01:00
docker-compose.yml Add file 2023-02-19 08:35:19 +01:00
dockerfile added lz4 to dockerfile 2023-03-27 16:22:20 +02:00
dockerfile-alpine added lz4 to dockerfile 2023-03-27 16:22:20 +02:00
dockerfile-nogit Switched build to use ninja by default (#3072) 2026-03-05 13:25:39 +13:00
dockerfile-nogit-alpine Remove ccache hack from dockerfiles (#1835) 2024-01-30 21:32:01 +01:00
dockerfile-nogit-arm Upgrade build container (#2394) 2024-11-25 21:19:43 +13:00
dockerize.sh Dockerize docu update (#3014) 2026-02-20 14:49:35 +01:00
format-code.ps1 fix clang format workflow, update hackrf submodule, fix subghzd compilation warning, remove flashsize.h (#2992) 2026-02-15 21:29:26 +00:00
format-code.sh fix clang format workflow, update hackrf submodule, fix subghzd compilation warning, remove flashsize.h (#2992) 2026-02-15 21:29:26 +00:00
LICENSE Create LICENSE 2021-11-17 12:15:52 +01:00
LICENSE.GPL-2.0-or-later cleanup (#1036) 2023-05-22 21:14:35 +12:00
pull_request_template.md Create pull_request_template.md 2025-03-26 12:20:54 +01:00
README.md Update main video 2026-03-08 21:32:39 +01:00
SECURITY.md Create SECURITY.md 2025-03-26 12:22:18 +01:00

PortaPack Mayhem

Nightly Release CodeScene Code Health GitHub All Releases GitHub Releases Docker Hub Pulls Discord Chat

This is a fork of the Havoc firmware, which itself was a fork of the PortaPack firmware, an add-on for the HackRF. A fork is a derivate, in this case one that has extra features and fixes when compared to the older versions.

What is this?

If you are new to HackRF+PortaPack+Mayhem, check these:

PortaPack H4M Crash Course

The Latest HackRF & Portapak Combo - H4M The Flipper Zero Killer? It’s TOO Easy to Accidentally Do Illegal Stuff with This HackRF Portapack H4M - Getting Started Guide The new HackRF Portapack H4M

Frequently Asked Questions

This repository expands upon the previous work by many people and aims to constantly add new features, bugfixes and generate documentation to make further development easier. Collaboration is always welcomed and appreciated.

What to buy?

✔️ Static Badge The fabulous H4M complete or upgrade, featuring numerous improvements and accessories. Sold by our friends at OpenSourceSDRLab. Join their giveaways on discord (check the badge on top). EU customers can purchase via Lab401.

✔️ A recommended one is this PortaPack H2, that includes everything you need with the plastic case "inspired" on this.

✔️ Some individuals lean towards the H2 with a metal enclosure, but its advantages remain debated. Share your insights on our wiki.

⚠️ Be cautious , ask the seller about compatibility with the latest releases. Look out for the description of the item, if they provide the firmware files for an older version or they have custom setup instructions, this means it might be NOT compatible, for example:

image

⚠️ If it looks too different, this might mean that they are using their own recipe, check the different models in our wiki. For example all the H3 and clones of that version use their own version of the firmware. They do not contribute the changes back and eventually you will be left with a device that nobody maintains:

image

Where is the latest version?

The current stable release is on the GitHub release (latest by date) page. Follow the instructions you can find in the release description. The latest (nightly) release can be found here.

How can I collaborate

You can write documentation, fix bugs and answer issues or add new functionality. Please check the following guide with details.

Consider that the hardware and firmware has been created and maintain by a lot of people, so always try collaborating your time and effort first. For coding related questions, if something does not fit as an issue, please join our Discord by clicking the chat badge on top.

Contributors

To support the people behind the hardware, please buy a genuine HackRF and PortaPack.

What if I really want something specific?

If what you need can be relevant in general, you can request a feature. Alternatively, go to our Discord by clicking the chat badge on top and discuss there.

What if I need help?

First, check the documentation. If you find a bug or you think the problem is related to the current repository, please open an issue.

You can reach the official community in Facebook, and our Discord by clicking the chat badge on top.