cnlohr/channel3
FreeESP8266 Analog Broadcast Television Interface
FreeFree tier
About cnlohr/channel3
An open-source project that turns an ESP8266 microcontroller into a low-cost analog broadcast television transmitter. It leverages the I2S bus running at 80 MHz with DMA buffers to output a digital bitstream that directly generates an RF signal on US Channel 3 (61.25 MHz luma carrier). The system uses premodulated bit patterns to create sync, colorburst, and luminance/chroma levels, effectively forming a 1-bit dithering DAC. While capable of producing color NTSC/PAL signals, the quality is imperfect—exhibiting dot pour and dirty chroma due to the extreme timing constraints. The project includes detailed technical documentation and a mirror of the classic NTSC/PAL frame guide.
Key Features
Uses ESP8266 I2S bus at 80 MHz clock for RF generation
DMA buffer chaining with CPU interrupts to fill line data in real time
Premodulated bit patterns for sync, colorburst, and all visual colors
Outputs RF on US Channel 3 (61.25 MHz luma center) via GPIO3/RX pin
Supports both NTSC and PAL frame formats (documentation included)
No external RF modulator needed — direct antenna connection
Open source code and hardware design hosted on GitHub
Pros & Cons
Pros
- Very low cost — requires only an ESP8266 board and a wire antenna
- Open source with well-documented technical approach
- Generates real analog TV signal receivable on standard sets
- Educational value in understanding NTSC/PAL encoding and RF generation
Cons
- Signal quality is poor — strong dot pour and dirty chroma
- Only outputs on Channel 3 (US); tuning to other channels not supported
- Requires an analog TV with antenna input; modern digital TVs cannot use it
- Color reproduction is limited and phase alignment is imperfect
Best For
Hobbyist retro TV experimentation and analog signal generationEducational demonstration of analog television and RF synthesis techniquesLow-cost test source for vintage television restorationLearning about I2S, DMA, and bit-banging on ESP8266
FAQ
How does the ESP8266 generate a TV signal?
It uses the I2S bus at 80 MHz bit clock to output a digital bitstream that, through the GPIO pin, creates an RF signal. DMA buffers are filled via interrupts to form analog video lines, with precomputed bit patterns for each color and sync level.
What channel does it transmit on?
It transmits on US TV Channel 3, with a luma carrier at 61.25 MHz. The chroma subcarrier is 3.579545 MHz above that.
Can it produce color video?
Yes, but the chroma signal is very dirty and exhibits dot pour due to timing limitations. The color is generated by modulating a 3.579 MHz subcarrier with the correct phase offset for each hue.