HackRF Portapack Mayhem Firmware, Search/Freqman evolution branch

On top of the existing ‘search and stay X seconds after a match’ the SearchApp have been updated with a ‘search and stay’ mode: stay while matching, leave after X seconds of inactivity, reset counters on activity during the wait. mode,
To use it just specify a negative value in the ‘wait’ field using the rotary encoder.

As some have some problems getting the bin back from discord, here you are:

The documentation is on the wiki, here:


Github page:


grep: retain colors when piping

By default grep -color is not producing color symbols if it detects that the output is not a terminal.

grep -color=auto is doing the same, that is not producing color symbols if it detects that the output is not a terminal.

The solution is to use “grep -color=always“ in the place that need it.

Do not put it in an alias of grep as it would break some code somewhere else. Color symbols are strings like “ESC[35m” and they will be inserted in the text.

Portapack firmware with Search App and updated Freqman files (based on latest next )

  • I’ve build an up to date firmware with the last updates from next and the last version from search app and freqman enhancements.
  • The Search app is in the ‘receive’ menu
  • The documentation is here : https://github.com/GullCode/portapack-mayhem/wiki/Search
  • -Freqman now do understand freq files with that format:
    f=468000000 f=468000000,d=Single Freq f=468000000,m=AM,d=Single Freq AM f=468000000,m=NFM,d=Single Freq NFM f=468000000,m=WFM,d=Single Freq WFM f=468000000,m=AM,b=DSB,d=Single Freq AM DSB f=468000000,m=AM,b=USB,d=Single Freq AM USB f=468000000,m=AM,b=LSB,d=Single Freq AM LSB a=87000000,b=110000000 a=87000000,b=110000000,m=AM,s=100KHz,d=AM radio search a=87000000,b=110000000,m=AM,b=DSB,s=250KHz,d=AM radio search LSB a=87000000,b=110000000,m=WFM,b=16k,s=50KHz,d=WFM radio search s=50KHz r=430150000,t=430550000 r=430150000,t=430550000,d=HAM radio r=430150000,t=430550000,m=AM,b=DSB,d=HAM radio
  • The freqman GUI have note been improved and may show partial results on new formatted lines
  • Description of the fields:
    f=freq for one frequency or a=start_frequency,b=end_frequency for a range
  • All fields except ‘f=freq’ or ‘a=freqA,b=freqB’ are mandatory. If nothing specified actual value is used.
  • As a reminder :
    -Most of the time if the Search app is not working as you expected it’s coming from a SDCARD problem.
    -You need a SDCARD for the Search app to save settings between runs and between settings menu / main gui, and you need a SEARCH folder at the root of it.
    -Don’t forget to check that by default the ‘input: load’ fields in ‘search app -> params -> more ‘ are all checked.
    -You HAVE to click save in ordre to save the settings.

GitLab: WARNING: gl-sast-report.json: no matching files

When enabling SAST in a gitlab project you can have that kind of error at the tests part:

The yaml provided is not containing the needed part:

   name: sast
     - gl-sast-report.json
     sast: gl-sast-report.json
   when: always




Compare two json in shell

I did it using the JQ command line tool from https://stedolan.github.io/jq/

Exemple: list all json files from current directory and print the difference with updated jsons from updated/ directory

for user in  `ls updated-users`
    # print file name
    echo $user
    # simple 
    diff <(jq -S . users/$user) <(jq -S . updated-users/$user)
    # or full on one side and the diff on the other side
    # diff -y --left-column <(jq -S . users/$user) <(jq -S . updated-users/$user)
    # or full on one side and the diff on the other side, colored
    # diff -y --left-column --color  <(jq -S . users/$user) <(jq -S . updated-users/$user)

#shell #diff #json #script

Khelda II [KrampusHack 2021] Game Jam

I made a Zelda II alike world with a big map on top view and some dungeons in side view. Permanent world, only the monsters are reset between dungeons / starts.

The limit was way overdue before I could do all I wanted so I’m linking both version here, the entry for the compo and the updated / finalised one.

Compo rules: https://tins.amarillion.org/krampu21/rules/

Tins log : https://tins.amarillion.org/krampu21/log/entrant/4277

git repo: https://framagit.org/GullRaDriel/krampushack2021-kheldaii

Click here for full pack with datas, sources and binaries


Gameplay demo : 

Khelda II gameplay demo


How to play:

  • You are Kwink. You have to save princess Khelda which is kept prisonner by an Ogre
  • You directly start on the main map. Move around and kill some simple monsters to gain a bit of XP/Life before trying yourself at the dungeons.
  • Each dungeons is guarded by a lot of mobs. Killing them is up to you. Leveling up before being traped in a dungeon is recommended
  • Find all the 3 key fragments before going onto the last dungeon. Deliver princess Khelda by defeating the last mob


  • Esc: quit
  • Arrow keys: move, go up/down or jump/crouch
  • CTRL/LeftMouseButton: attack
  • F1 -> F4t: change weapon (Wood stick, sword, magic bow, magic wand)
  • Key PAD PLUS: shield potion
  • Key PAD ENTER: health potion

Items to be collected:

  • shield (passive, always equiped once found)
  • sword of Khelda
  • magic ice wand
  • infinite arrow bow
  • health potion
  • shield potion

Obtain: the kiss of the princess one the Ogre is dead !


  • Leveling up a bit on easy monsters before trying yourself to a dungeon
  • Wandering around and use the map find the sword, the magic wand, the arrow, the shield
  • Loot a bit of potions before entering the last dungeon



  • configurable log level, example: ./KheldaII.exe -V DEBUG
  • cheat: editable player_state.json after first execution


How to build: need gcc on linux and gcc + msys / cygwin on windows

mkdir -p KheldaII
mkdir -p KheldaII/LIB
mkdir -p KheldaII/Src/
cd KheldaII/LIB
git clone https://framagit.org/GullRaDriel/nilorea-library.git .
cd ../Src/
git clone https://framagit.org/GullRaDriel/krampushack2021-kheldaii.git
cd https://framagit.org/GullRaDriel/krampushack2021-kheldaii.git