This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Analog TV Receiver
Note
This is an external app. It requires the corresponding
.ppmafile in theAPPS/folder on the SD card.
The Analog TV Receiver app decodes wideband AM-modulated PAL signals in black and white. PAL was the dominant analog television broadcast standard across Europe and much of the world before the switchover to digital broadcasting.
How it works
Standard PAL video is 768 pixels wide × 625 lines at approximately 6 MHz bandwidth. The HackRF samples at 2 MHz with 2 MHz baseband bandwidth, which reduces the horizontal resolution to 128 pixels. The app processes 256 samples per callback, yielding 2 lines per call. After 52 callbacks, a full frame of 104 lines × 128 pixels is assembled in memory. Each of the 104 source lines is then painted twice to produce a 208-line × 128-pixel image on screen, stretching the image vertically for better proportions.
The resulting image is displayed starting at pixel row 100 on the 240×320 PortaPack screen.
Because only the top half of the original 625 lines are retained (anything above line 312 triggers a new frame), the image represents roughly the top half of the original PAL frame.
Supported standards
The app supports PAL with AM-modulated video only (as used in terrestrial analog broadcasts). NTSC and SECAM are not supported.
Note
Digital television (DVB-T, DVB-T2, ATSC, ISDB-T) cannot be received with this app. Digital TV standards use OFDM modulation with QAM/QPSK and require complex channel coding (Reed-Solomon, LDPC) and Transport Stream parsing — this far exceeds the processing capacity of the HackRF's M4 baseband processor. The app is designed exclusively for analog AM video.
Where to find analog TV signals today
Terrestrial analog TV broadcasts have been switched off in most countries (Europe mostly between 2007 and 2012, USA in 2009). The app is therefore primarily relevant for the following use cases today:
- Amateur TV (ATV): Radio amateurs operate analog image transmissions on UHF and microwave bands (e.g. 70 cm, 23 cm). This is the most common use case for this app.
- Analog CCTV cameras: Older surveillance systems frequently still transmit in analog PAL format, sometimes wirelessly in unlicensed bands.
- FPV drones and industrial cameras: Some inexpensive FPV drone cameras transmit analog PAL video on 5.8 GHz or 1.2 GHz.
- Cable TV: In some regions outside Europe, analog cable TV still runs alongside digital offerings.
- Experiments and retro reception: Test signals, self-built PAL transmitters (e.g. Raspberry Pi composite video via SMA adapter), or historic recordings replayed over RF.
Known limitations
- No sync detection. The app does not detect horizontal or vertical sync pulses, so the image can be misaligned both horizontally and vertically and will drift over time.
- Black and white only. PAL color information (the 4.43 MHz color subcarrier) is received but not decoded; the image is displayed in greyscale.
- No AGC. There is no automatic gain control. LNA and VGA gain must be adjusted manually to get adequate contrast — this is especially important for AM video since the signal amplitude carries the picture information directly.
- NTSC and SECAM not supported.
Controls
| Control | Function |
|---|---|
| Frequency | Tune to the video carrier frequency |
| LNA / VGA | Gain — adjust manually for best picture contrast |
| X-corr (0–128, default 10) | Horizontal offset correction — adjust to re-align the image left/right when it appears shifted |
The X-corr field is navigated to with the directional buttons and adjusted with the encoder dial.
Gain advice
Because this is an amplitude-modulated signal, gain is critical. If gain is too low the image appears very dark; if too high it clips and the image washes out. Start with LNA 24, VGA 16 and adjust both until the picture has visible contrast.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Start here
Contributors
How to collaborate
Contributing Guidelines
How to ask questions correctly
Hardware
- PortaPack Versions (which one to buy)
- Features
- HackRF Versions
- Description of the hardware
- Enclosure/cases
- Repairs
- Mods
User manual
Intended use and Legality
- Usage cautions
- First steps
- Firmware update procedure
- User interface
- Powering the PortaPack
- Troubleshooting
- Won't boot
- Config Menu
- Firmware upgrade
- Diagnose firmware update in Windows
- Receive Quality Issues
- No TX/RX
- TX Carrier Only
- H2+ speaker modifications
- Dead Coin Cell Battery
- Factory Defaults
- SD card not recognized by PC with the SD-card over USB selected
- DFU overlay
- Full reset
- SolveBoard
- How to Format SDCard
- What if I don't like some of the apps
Applications
- 📥 Receivers
- 📤 Transmitters
- ADS-B(S) TX
- Adult Toys
- APRS TX
- BHT Xy/EP
- BLE TX
- BLESpam
- Burger Pager
- CVS Spam
- EPIRB
- FlipperTX
- GPS Sim
- Hopper
- Jammer
- KeeLoq TX
- Key fob TX
- LGE Tool
- MDC-1200 TX
- Morse TX
- OOK
- OOK Brute
- OOK Editor
- P25 TX
- POCSAG TX
- RDS
- RTTY TX
- SAME TX
- Signal gen
- Soundboard
- Spectrum Painter
- SSTV
- TEDI/LCR
- TouchTunes
- TPMS TX
- 🔄 Transceivers
- 🟡 Recon
- 🔴 Capture
- ▶️ Replay
- 🖲️ Remote
- 🔍 Looking Glass
- 🛠️ Utilities
- 🎮 Games
- ⚙️ Settings
- 💻 HackRF Mode
Misc
Developer Manual
- Compilation of the firmware
- Compile on WSL with ninja
- How to compile on Windows faster with WSL 2
- Using Docker and Kitematic
- Docker command-line reference
- Using Buddyworks and other CI platforms
- Notes for Buddy.Works (and other CI platforms)
- Using ARM on Debian host
- All in one script for ARM on Debian host
- Compile on Arch based distro (exclude Asahi), or other weird distros
- Dev build versions
- Notes About ccache
- Create a custom map
- Code formatting
- PR process
- Description of the Structure
- Software Dev Guides
- Tools
- Research
- UI Screenshots
- Maintaining
- Creating a prod/stable release (Maintainers only)
- Maintaining rules
- Development States Notes
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Note
The wiki is incomplete. Please add content and collaborate.
Important
- This is a public wiki. Everything is visible to everyone. Don't use it for personal notes.
- Avoid linking to external tutorials/articles; they may become outdated or contain false information.