We’ve seen a lot of ESP8266 projects in the past, but this one most definitely qualifies as a hack. [Cnlohr] noticed that the ESP8266, when overclocked, could operate the I2S port at around 80MHz and still not lose DMA data. He worked out how to create bit patterns that generate RF around 60MHz. Why is that interesting? Analog TVs can receive signals around that frequency on channel 3.
As you can see in the video below, the output is monochrome only and is a little snowy. It also will lose frames on some WiFi events, but this is all forgivable when you consider this very inexpensive module isn’t meant to do video output at all.
You’ll see in the video that the overclocked ESP8266 is quite capable. It draws text, 2D shapes, and even multiple 3D shapes. Oh, it also is serving out a web page at the same time. If you want to try it yourself, just solder a wire to the RX pin on the device and load up the code from GitHub.
This isn’t the first time (or even the second time) we’ve seen [Cnlohr]. His YouTube channel has everything from using WebSockets on the ESP8266 to a minuscule Minecraft server. Definitely worth a look.
Thanks to [Rodrigo Pereira], [Tobias], and [Lucas] for the tip!
57 thoughts on “ESP8266 Transmits Television On Channel 3”
As pure a hack as can be for sure.
I verbally exclaimed “How?” “Seriously how?” when I saw this on hackaday. I just finished this 12 hours ago. You guys at hackaday are insane.
We have no lives ;-) This was so cool, I asked Mike to bump it up in the queue.
Well I have found someone new to follow on youtube!! This is amazing, I didn’t even think this was possible.
This is absolutely one of the coolest hacks I’ve ever seen on HaD. Major props!
The tip line is great!
Funny, I had the same reaction, but to the “ESP pushes NTSC at 60MHZ”. Hacks like this are what the tip line is for, and if you jumpped the queue, you deserve it.
Strictly speaking it’s not NTSC (which is the colour standard), this is just 30Hz monochrome video. Still *ridiculous* that it’s possible.
cnlohr! Off topic but I have always wanted to thank you for all of the hard work you did while working on Stepmania, your website and later your YouTube channel was the source of inspiration for me and of course you were responsible for the many many hours of fun I had playing Stepmania, which I still do to this day. Thanks again!
It is the I2S bus, not the I2C bus as the article states.
Oops. FInger memory. Fixed and thanks.
now THIS is a hack! reminds me of 80s computers that could be hook up to tvs to use as a display
gorgeous, really first rate
superlatives fail me
second. very nice hack !
Ok, well, that’s crazy! Is it essentially just on-off keying a 60MHz RF signal to do something good enough for the TV to comprehend as a picture? Nice! Mmmmmight be possible to, maybe, add a colour burst and do a bit of colour, if he can bump the pixels out fast enough to emulate a bit of phase delay. But even that would just be icing on the cake. Very clever, pumping out RF video, native, is certainly something I’ve never heard of a computer doing before.
Wonder what he could do with the new, 8266 replacements due pretty soon? The ones with 160MHz and dual cores.
Given that he’s just streaming bits at the 160MHz clock rate he specified, color should “just” be a matter of figuring out how to make data at the right frequency.
Right now he seems to be emitting 32 bits per pixel, for an aggregate modulated dot clock of 5MHz. Too bad the NTSC colorburst frequency doesn’t divide nicely…
Er, replace 160MHz with 80MHz and 32 bits per pixel with 16 bits per pixel.
He seems to be relying on the 3x overtone (60MHz from a messy 20MHz modulator) to get the desired signal to appear at 60MHz.
After looking at it more, I think it is the x3 overtone. I tried stippling it to do an x2 overtone, but it just didn’t work… AT ALL, and I have no idea why. I’m currently looking at a way using some bookkeeping to get the chroma signal. I think it’s possible to (without transmission) emit color NTSC. Still, not sure.
Are you sending a colour burst at the right time? Pretty sure NTSC (and PAL) needs that, for the colour decoder to sync to, or else it gives up on colour, for that line at least. It’s a way of having compatibility with B&W transmissions.
The Uzebox (or one of Andre’s little MCU consoles), and I think the Apple ][, had 2 options for colour burst. One gave one set of colours, the other gave colours from the opposite direction in the NTSC spectrum.
No, this is not using Chroma. I thought about it and said maybe someday… but not today.
Freakin’ amazing! Thanks for sharing!
Wow! Color me impressed.
Very nice, I might give this a try on the PSoC
So for $2 I can turn my old analogue TVs into a WiFi console, nice work! Not sure I can justify using them due to power consumption issues but if I needed a remote console in a hurry this is definitely the way to go.
for the love of all ham radio operators in the area, please put some filters on that output.
I once made an AM transmitter using a bit of wire on an I/O port of an 8MHz 8bit microcontroller. Tuning in was easy, it could be received across the whole AM band (and probably a lot more…)
Sounds like a spark gap transmitter rather than tuned
Square waves are only a tiny bit less awful than impulse trains at contaminating the whole spectrum.
oh right, squares being infinite sines, thus broad spectrum?
Or just use some coax between the module and the TV. Even then it seems like overkill as there is no amplification of the signal and it is a direct connection. But if you have a design for how an ESP module could inject a (better, full color?) signal deeper and more directly into an analogue TV I’d like to hear about it!
Agreed, same caveats as for the Pi FM transmitter hack.
Im a HAM too, and did some funny stuff with “5V TTL Outputs on a random piece of wire transmitting RF” too…
Its such a low amount of radiated Power from that unmatched, way to short piece of wire which acts up like its an antenna, that ,asumed his direct neighbour where a HAM, he would only be anoyed if he point his tuned directional antenna directly onto it…
Say of more than 100ft and the signal just vanished…
That’s an impressive hack! I totally forgot that a lot of I2S engines are semi-automatic, and the high speed clock sweetens the deal. Next hack would be to make a delta sigma audio DAC by feeding the buffer with precooked decimated patterns from a LUT.
this is really, really awesome.
i made a composite ntsc video generator a few years back, was a pretty fun/intense exercise in setting up all of the timers (and processor speed!) to generate the waveform, and dma the contents of the framebuffer out the SPI port. project is here (if you care):
this is way more awesome, though. too bad atsc is so complicated, would love to see a cheap embedded atsc xmitter
This is proper hacking – wow – so pointless but so very very cool. Thanks a lot – that made my day. :)
CNLohr, you’re some kind of ESP god, or something! This is amazing.
I’ve used your library to generate Ws2812 data for my LED hat project hosted on hackaday.io, that too uses the I2S peripheral to generate the signals.
Really impressive. I’m already thinking this could be another way to do drone FPV video overlaying of telemetry (OSD), but im cursing the standards overlords for having NTSC in the rest of the world, and PAL in Europe, where I am.
If you’re reading these comments – Ive been trying to think of the feasibility of creating an ESP based walkie-talkie, between two identical devices armed with ESPs? Something that operates only with a PTT button, no complex setup save for the SSID and password. It’s for operation around a single site, like a place of work. Basically would sample a limited length piece of audio, transmit it and is immediately played back on the receiving device – bi-directional.
Is this really possible?
(1) Funny, everyone else seems to like PAL. But, unfortunately neither of them are very friendly to the clock rates used in most modern devices.
(2) PTT. I’ve wanted to use the I2S for bidirectional audio, since it SHOULD be able to do it. Just never gave it a shot. Should be able to work pretty well, especially considering ESP’s have their freedom system. You could just fling voice packets around everywhere!
I was wondering about that, using the ESPs inside gutted 2-way handhelds, those insanely cheap ones on ebay, to do WiFi radios.
Cheapo eBay radios? Good idea, I know little to nothing (yet) about analog audio circuitry either, so supplementing an existing audio system might be the way to go.
Basically you end up with a portable hand held WiFI linked VOIP handset with a range of 100 meters, for a total cost of under $10. Not bad if you can get it working well enough.
Will have to start chipping away at the problem, but I know very little about how to drive the I2S peripheral. I just use your easy to use libs!
By the way, what do you mean by their “freedom system” other than just being really open to hacking?
Wow!! This is conceptually a SDR!
I’ve actually wondered why people haven’t done more with old analog TV besides the legal stuff..
Now this is Hackaday worthy.
Absolutely stellar, congrats on the discovery and HaD good job picking this up. This is what made this website famous. HaD, please for the love of God keep your heritage.
Awesome hack I surprised this is even possible but RF modulators are pretty cheap and probably would annoy hams and the FCC a lot less.
I doubt this is something anyone would use for any practical purpose, or even for a quick cheap hack. Pure proof of concept. Still nice though, to see it work in the real world, from what I guess started off as a vague “what would happen…?”. To see the various bits of physics and mathematics come together from two different directions, a CPU clock and a radio frequency. Multiply that by a video standard that was invented some time around the 1930s, and it clicks together nicely!
Since CPU clocks started getting into the high RF, I’ve often been curious about things like this. It’s a natural growth of the chaps in the 1960s, tuning AM radios into the leaked radiation of their IBM big iron, deliberately writing loops to run at different speeds to play little tunes. This is much tighter than that.
Wow, I think this guy won the internet today! :)
for the one’s experimentin with this…. http://www.rtl-sdr.com/analogue-tv-with-rtl-sdr/ – if you don’t have analog TV around ;)
Let me stand in the queue to give congratulations. Going the extra mile to develop characters and graphics was amazing.
This is f… awesome!!!
So, who’s gonna load a Max Headroom 3d model onto this and broadcast it full power for all to see?
Brilliant, he won the Internet again, and if you look carefully right at the end of the video you can see he has mastered the technique to a Jedi level and no longer needs the ESP to change the colour on the screen.
Who will be the first who run “Elite” on ESP?
Excelente proyecto, desde Argentina.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)