* PRALINE: take high-band IF from the reference tune tables high_band() used a hand-written formula for the second LO that pushed the MAX2831 IF above 2600 MHz from ~4.5 GHz upwards (2733 MHz at 5 GHz, 2760 MHz at 7.2 GHz), outside its usable range. Use the reference praline_tune_config_tx/rx tables (already present in tuning.cpp but only consulted below 2580 MHz): TX IF stays within 2325-2575 MHz, low-side injection LO = RF - IF, and the RX quarter-rate shift is applied, as in hackrf radio.c radio_update_frequency() for RF_PATH_FILTER_HIGH_PASS. HackRF One keeps its existing formula (#ifndef PRALINE). * RFFC507x: select LO divider like the reference, add RELOK The LO divider loop stopped at the first divider that lifted the VCO to or above its 2.7 GHz minimum, parking the VCO exactly on the floor for some LOs (e.g. LO = 675 MHz used for 3.000 GHz TX on PRALINE: 675 x 4 = 2700.0 MHz) where lock is marginal. Mirror hackrf rffc5071_config_synth() and pick the largest divider that keeps the VCO at or below 5.4 GHz; the result is identical to the reference for every LO in 85-5400 MHz. Also request a relock (PLL_CTRL.relok) after reprogramming the synthesizer while the part is enabled, as rffc5071_set_frequency() does. * PRALINE: enable the RFFC5072 mixer on the high band Regression from #3238: the PRALINE RF path enabled the mixer only on the Low band (mix_bypass.setState(band == Band::Low)). Before #3238 (#3030) the mixer was bypassed only in the Mid window. On the High band (>2580 MHz) tuning.cpp still programmed and enabled the RFFC5072, but the RF switch (MIX_EN_N) routed around it, so the MAX2831 IF (~2.3-2.7 GHz) appeared at the antenna port instead of the requested RF: TX and RX above 2580 MHz effectively did not work from the GUI, while hackrf_transfer with the reference firmware did. Enable the mixer on Low and High, bypass only on Mid, as hackrf rf_path.c rf_path_set_filter() does (LOW_PASS and HIGH_PASS both call mixer_enable(); only BYPASS disables it). * Update VCO frequency logic with conditional compilation Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix code formatting (clang-format) Single space before a trailing comment in rffc507x.cpp set_frequency(), per the project's clang-format config. No functional change. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
PortaPack Mayhem
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:
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?
✔️ 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:
⚠️ 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:
Where is the latest version?
The current stable release is on the page. Follow the instructions you can find in the release description. The latest (nightly) release can be found here.
How can I collaborate
We warmly welcome your contributions! Please refer to our Contributing Guidelines for details.
You can write documentation, fix bugs and answer issues or add new functionality. Please also 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.
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.







