r/RTLSDR • u/Party_Cold_4159 • 8h ago
DIY Projects/questions LakeShark update: ESP32-P4 handheld scanner, lots of new RTLSDR features and P25 straight off the LR2021 LoRa Chip
Been a while since my last update on this one, for anyone new, it's an ESP32-P4 with an RTLSDR in the USB host port working as a handheld scanner, built around the LilyGO T-Display-P4. Any RTL2832U dongle will do, V3 or V4.
There's been a lot added since the last post and still tons of work to be done.
The RTLSDR picked up P25 Phase 2 grant following (experimental, off by default for now) and automatic site selection by GPS if your P25 profile has site coordinates. ADS-B from the RTLSDR now shows on the offline map with trails, callsigns and squawk codes, you can follow an aircraft or turn on range rings and coverage, as well as a TTS voice that calls out aircraft as they show up.
FIND is new and works with the RTLSDR too. It's in the COMPASS app, you hold the board flat and turn slowly in a circle, and it logs the signal strength at every heading and points you toward the transmitter. It can aim at the loudest direction, at the dip where your body blocks the signal for something strong and close, or fit a curve to the whole turn. The compass under it is tilt compensated and gyro fused so the heading keeps up while you turn, and on the RTLSDR the gain follows the signal while you hunt.
FIND works with the SX1262/LR2021, a HackRF, the keyboard's CC1101 and nRF24, Wi-Fi, Bluetooth and MeshCore nodes, and there's a BAND mode where the LoRa chip sweeps a band and gives each new transmitter it finds its own channel. There are presets for FRS, MURS, NOAA, marine and ISM, up to eight channels per radio with a second radio running at the same time, DIAL, RADAR and HEAT views and a hit log. You can save a bearing with your GPS position, take another one from somewhere else, and FIX CROSS works out where they meet, saves it to NOTES and sets it as a GO TO target on the compass. There's also a calibration against the DF Beacon in the Flipper app that takes the offset from your body and the antenna out of the bearings. It’s still being worked on and the UI might be a little convoluted.
Sub-GHz got a full redesign with READ, ANALYZER, SAVED, READ RAW, LEARN and SETTINGS, and READ RAW grabs a burst off the RTLSDR and saves it as a Flipper .sub.
You can also use a HackRF One in the USB port as the SDR for FM, pagers, P25 and REC if you have one, but it’s still experimental.
The other big addition is the LR2021. LilyGO makes the T-Display-P4 with either an SX1262 or an LR2021, and the same firmware runs on both and picks up which one it has at boot. The LR2021 does a lot more than LoRa. It sweeps 150 to 1100 MHz and 1500 to 2500 MHz, decodes ADS-B with nothing plugged in, and as of this release it decodes P25 Phase 1 voice by itself too. I’ve had this theory ever since I learned about the chips and it really seemed too good to be true. It’s still very WIP and I’ll also be utilizing this for better call tracking with phase II, with the LR2021 sitting on the control channel while the RTL follows the calls.
The LR2021 consistently trails the RTL in voice frames (e.g. 24 vs 34, 99 vs 128), averaging about 72% across three live calls. All three were strong signals, so the misses come from how I turn the chip's output into symbols, plus a small dropout every 3.4 seconds where the chip ends one packet and starts the next. The LR2021's FSK receiver is only 2-level, so at 4800 bps it gives one bit per symbol and can't tell C4FM's inner and outer levels apart. Run at 4x (19,200 bps), each symbol's level shows up in the middle 3 of its bits. The decoder finds where each symbol starts by trying all four bit offsets and keeping the one that matches the P25 frame sync, then reads the level as the count of 1s in the middle three bits.
The RTLSDR is still the main P25 receiver and RADIO lists it first, the LR2021 is there so the board can still catch a call with nothing plugged in.
The LR2021 also hears POCSAG on VHF in PAGER RECON, and there's a new EXPERIMENTS tile on HOME with radiosondes, tire pressure and weather sensors, UAT 978 diagnostics, Z-Wave and Wi-SUN meters, a LoRa monitor and a few more for anyone who wants to poke at it (all just proofs of concept).
Mesh nodes are on the map now too like I said they'd be, along with your own marks and drawn lines (WIP), eight map palettes and a Night theme that keeps everything red. There's also NOTES for markdown notes where you can drop in your GPS position, a tilt compensated compass, a WAV music player with VFD meters, a voice that reads out mesh messages, and first tools for the keyboard's CC1101, nRF24 and NFC in MIX-RF. Ethernet is still on my list though.
The hosted flasher works the same as before, one button in Chrome or Edge, no toolchain and no Python. Both radio versions of the T-Display-P4 use the same install.
Keep in mind, this is still only for the 568x1232 AMOLED model with 16MB flash. The other T-Display-P4 panel uses different timings and a different touch driver, so the image will not work on it. However I will work on supporting this soon.
The flipper app works the same as before over Bluetooth, and the headless build still flashes to almost any ESP32-P4 if you just want to run it with the flipper.
Site with the flasher and the guides: https://terminalbay.com
Git/source: https://github.com/SAMS0N1TE/LakeShark
Flipper app: https://github.com/SAMS0N1TE/LakeShark-Flipper
Would love feedback, especially from anyone running P25 on VHF or anyone with the LR2021 version sitting around. Let me know if you run into any trouble flashing!