Table of Contents
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.
Spectrum Painter transmits an image or text in a way that makes it visible as a pattern on a waterfall display. The image or text is encoded as the instantaneous frequency of the signal over time, painting each row of pixels as a horizontal line in the spectrum.
The app has two tabs: Image and Text.
Controls (common to both tabs)
- Frequency — Center frequency of the transmission.
- GAIN — TX gain, 0–47 dB. Default: 47.
- A: — RF amplifier, 0 or 14 dB. Default: off (0).
- Loop (checkbox, default: on) — Repeats the transmission continuously. When active, the Pause field sets a gap between repetitions.
- BW — Transmission bandwidth. This determines how wide the painted spectrum appears. Options: 12k5, 16k, 25k, 32k, 50k, 75k, 100k (good starting point), 150k, 250k, 500k, 600k, 750k, 1000k, 1250k, 1500k, 1750k, 2000k, 2250k, 2500k, 3000k. Default: 12k5. For visible results on a multi-MHz waterfall span, use at least 500k–2000k.
- Du: — Duration of each transmission in seconds (1–999). Default: 10.
- P: — Pause between transmissions in seconds when Loop is active (0–99). Default: 5.
- ▶ / ■ — Start or stop transmission. A progress bar shows the current position within the transmission.
The internal baseband bandwidth is fixed at 1.75 MHz regardless of the BW setting.
Image Tab
Place .BMP files in the SPECTRUM/ directory on the SD card. Press the file selector to choose a file — a scaled preview is shown on screen before transmission. The selected file is transmitted row by row, with each pixel row becoming one horizontal line in the spectrum.
Supported formats: 16-bit, 24-bit, and 32-bit uncompressed BMP (no compression, single plane). All three bit depths are fully supported.
For best results, use a high horizontal resolution. A width of 2048 pixels works well. Using a power of 2 for the width (512, 1024, 2048, …) gives optimal results.
Text Tab
Enter text using the Set message button (opens the keyboard). The message is displayed across up to 10 lines of 30 characters each on screen. Maximum message length is 300 characters.
Settings Persistence
Settings are saved to tx_painter.ini.
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.