A project to use an rtl-sdr to listen to open radio communications by DHS-ICE
Find a file
Jeff Records 13a7cf0d26 chore: Add CLAUDE.md, claude.md, and .claude/ to .gitignore
Untrack Claude Code config files to keep them local-only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 12:31:42 -08:00
config add op25 multi_rx 2026-01-18 10:29:31 -08:00
docs initial file upload 2026-01-18 10:24:32 -08:00
scripts initial file upload 2026-01-18 10:24:32 -08:00
.gitignore chore: Add CLAUDE.md, claude.md, and .claude/ to .gitignore 2026-02-09 12:31:42 -08:00
README.md initial file upload 2026-01-18 10:24:32 -08:00

ICEWatchRF

Monitor ICE/DHS conventional radio channels with a lowcost RTLSDR on Raspberry Pi, Linux (x86/ARM), or Apple Silicon (macOS).

  • P25 CAI decoding via OP25 (Boatbod) — singlechannel rx.py with local audio (-w -U) and optional HTTP status UI. See OP25s current README for features and GNU Radio 3.10 install path. OP25 README OP25 GR3.10 notes
  • Analog NFM (ICE DHS ComA) via rtl_fmSoX (play); U.S. publicsafety narrowband typically uses 12.5 kHz channels. RR Narrowbanding
  • NAC reference for P25 (e.g., default $293; wildcard $F7E/$F7F). RR NAC

Legal: Monitoring unencrypted traffic that is readily accessible to the general public is generally allowed under U.S. federal law; decrypting encrypted traffic is illegal. Some states restrict mobile scanner use or use while committing a crime—check local law. H&P Law PolicePathfinder 2024 Guide


Channels included

Alpha Tag Frequency (MHz) Mode Notes
ICE DHS ComA 165.8375 Analog CSQ
ICE DHS ComD 165.8375 P25 NAC 0x001
ICE Nat Dir 163.7250 P25 NAC 0x169
ICE NatTac 1 163.7000 P25 NAC 0x169
ICE NatTac 2 168.5875 P25 NAC 0x169
ICE NatTac 3 163.1125 P25 NAC 0x169
ICE NatTac 4 164.7875 P25 NAC 0x169

Quick starts

Raspberry Pi OS (Bookworm; Pi 3B+/4/5)

cd ICEWatchRF/scripts
sudo ./install_pi.sh
./monitor.sh
# optional boot service (example: 163.700 MHz)
sudo systemctl enable op25-ice@163.700.service
sudo systemctl start  op25-ice@163.700.service

Ubuntu/Debian (x86_64/ARM64)

cd ICEWatchRF/scripts
sudo ./install_ubuntu.sh
./monitor.sh

Apple Silicon (macOS ARM64)

cd ICEWatchRF/scripts
./install_macos.sh
./monitor.sh

Scripts

  • scripts/monitor.sh — menu to select any channel.
  • scripts/monitor_p25.sh — runs OP25 rx.py with -w -U and -D fsk4 by default (use DEMOD=cqpsk for simulcast/LSM only). OP25 README
  • scripts/monitor_analog.shrtl_fm 12 kS/s NFM → SoX. Narrowbanding
  • scripts/install_pi.sh, install_ubuntu.sh, install_macos.sh — platform installers.
  • scripts/svc/op25-ice@.service — systemd template for Pi/Ubuntu.

Notes

  • OP25 -w -U plays local audio; add -l http:0.0.0.0:8080 for the HTTP dashboard. OP25 README
  • Adjust gain/PPM via scripts/op25_env.sh.
  • For multichannel conventional monitoring, see OP25 multi_rx.py examples (p25_conventional_example.json). OP25 apps dir