Wavelens

Works anywhere in the world · follow your local laws

How to make, share and import custom signature packs

2 Nov 2026 · 6 min read · Packs · Signatures · Community

Most of what makes a scanner fit one place is reference data, not code: which makers' hardware is common on the roads there, what each radio band is used for, which frequency the tyre sensors use, and whether speeds read in mph or km/h. Wavelens keeps that data in packs. The US settings are built in and are the default; anyone can make a pack for where they drive and share the file.

Two kinds of pack, one screen

Both live on More → Signature packs, and one Import pack… button takes either; the app reads the file and works out which it is.

  • A signature pack replaces the device rules: the list of identifiers (vendor prefixes, Bluetooth company IDs, name and SSID patterns) that turn a radio packet into "plate reader", "tracker" or "drone". You'd import one to get rule updates between app releases.
  • A local pack sits on top of the rules for one country: units, extra local rules, built-in rules switched off there, the Scanner's idle window, and the band names and sensor frequencies a companion Pi uses. You pick which local pack is in use; Built-in is always there.

Import a pack

  1. Get the .json file onto the phone: download it, or save it from an email or a chat.
  2. Open More → Signature packs and tap Import pack…, then pick the file.
  3. Wavelens shows what it would change before anything happens: for a signature pack, every rule added, changed or removed; for a local pack, its summary, how many rules it adds and switches off, its units and its notes.
  4. Tap Apply or Install and use. To go back, tap Built-in under Local pack, or Revert to bundled for a signature pack.

Nothing is downloaded by the app: Wavelens has no internet permission, so the file always comes in through the file picker. A companion Pi reads the same local pack from /etc/wavelens/packs/; copy it there and restart the bridge.

Make a local pack

The template, the full format and a checker are in the packs folder on GitHub.

git clone --depth 1 https://github.com/pmcbrien/wavelens.git
cd wavelens/packs
cp TEMPLATE.json nz.json      # two-letter country code, lower case

Then fill it in. The parts that matter most:

  • units: metric for km/h (road mode then starts at 25 km/h) or imperial.
  • companion.bands: what each band is used for where you are, from your regulator's spectrum plan. Set drop_us_bands to true so a frequency you don't name shows as a plain carrier instead of a US label that is wrong locally.
  • companion.rtl433_args: the frequencies tyre sensors and remotes use there, for example -f 433.92M -f 868M.
  • rules: local device rules in the same format as the built-in ones. A source note (where the identifier comes from) is optional but helps a reviewer. A vendor-prefix rule must use a real IEEE assignment registered to that company, with "publicAddr": true; a name or SSID pattern from field observation gets "verified": false.
  • disable_rules: built-in rules to switch off where your pack applies.
  • notes: shown under the pack on the phone. Say what is different and what you checked about local law.

Check it before sharing. The app runs the same tests on import, so a pack that passes here imports:

python3 validate.py nz.json

Follow the law where it applies

In many places detecting some devices is an offence; radar and speed-camera detectors, for example, are banned in many countries and states, and some laws cover any device that detects speed-measuring equipment. A pack must switch off rules for anything that is unlawful to detect where it applies, and say so in its notes. Wavelens can't receive radar or laser in any case. A pack doesn't change what is legal for the person using it.

Share it

  • With a friend: send the file. They import it the same way.
  • With everyone: open a pull request adding your file to the packs folder, with where each band and identifier comes from in the description. Start it as "status": "testing"; it moves to stable once a few drivers have used it.
  • Improving someone else's pack: bump pack_version and the date with every change. Importing a newer version replaces the old one on the phone.

Not sure where to start? Email us where you drive, your phone and any companion hardware, and we'll help you begin one.

Try the free Android beta

Everyone who joins the Android beta before the Play Store launch gets the Play version free with a promo code. After that, $8.99, once, on Google Play: no subscription, no in-app purchases, every update included. Fully offline: no account, no ads, no network permission. Nothing leaves your phone.

Join the free Android beta Hear it sooner: radios from $64

282 signatures · 150,000 mapped plate readers · no network permission

Next: How to program an ESP32 for Wavelens · all articles