Hacker News new | past | comments | ask | show | jobs | submit login
Transmits AM radio on computers without radio transmitting hardware (github.com/fulldecent)
476 points by known on Dec 17, 2020 | hide | past | favorite | 92 comments



I enjoy how everyone discovers this "feature." It really is a lot of fun to play with.

True story, back in the cave person days, when television only came over the air waves and if you wanted to "own" a computer you shelled out anywhere from $500 to $5000 for something with an 8 bit processor that ran between 1 and 4 MHz and had, usually, much less than 65,536 bytes of RAM, peripherals for these things were few and far between. A couple of serial ports and a couple of parallel ports was considered a "lot" of I/O. You might have stored your programs on an 8" or 5" floppy disk, but if it was before 1978 you most likely stored programs on cassette tape. Anyway ...

One of the things you could always count on was that these things radiated all sorts of spurious energy and being relatively low frequency beasts to begin with, finding a harmonic that you could pick up with an AM radio held "near" (where near could be 1' to 10' (.3 - 3m)) that interference and with the judicious use of delay loops cause that interference to modulate to "tones" and thus create recognizable "music."

As a kid in high school with just such a computer I can tell you that "playing music" (no matter how poorly) on a nearby AM radio was orders of magnitude more impressive than pointing out by the pattern of lit and unlit LEDs that your amazing machine had just calculated a logarithm. (even though the latter was significantly more difficult from a programming perspective!) Once I got a printer, being able to print out NSFW pictures was a neat trick but for crowd appeal and cheap accessories, music over an AM radio was still the top demo of the time :-)


I was browsing YouTube the other day, and got recommended something similar: https://www.youtube.com/watch?v=A0VYsiMtrNE

Very interesting indeed! The title of the video translates to "Electromagnetic festival music".


Awesome! The start could easily pass as a cover version of 'Atlas' by Battles: https://www.youtube.com/watch?v=IpGp-22t0lU


I was getting a Roadhouse Blues vibe from it too haha - https://www.youtube.com/watch?v=n2_X4VTCoEo


You just took away multiple hours of my productivity today. This group is absolutely amazing!

I've already watched this cover of New Order's Blue Monday three times today: https://www.youtube.com/watch?v=ANIDBu4B9so


In high school I had a TI83 graphical calculator. Shelled out some hard earned cash for a serial adapter to upload programs from the internet onto it.

One was a similar hack that played the xfiles theme and the star trek voyager theme over AM.

Like you say, nothing could come close to the coolness of sending audio to a radio set from your calculator.


It goes back even further than that. My father, at the time an operator on a Honeywell 6000, demonstrated a program (loaded from paper tape!) that played "Daisy" if you held a transistor radio next to the CPU. The choice of song was appropriate: 2001 A Space Odyssey had come out a few years earlier.


"Daisy" as a demonstration of the audio capabilities of computers dates back to 1961:

https://en.wikipedia.org/wiki/Daisy_Bell#Computing_and_techn...


Cool! Thanks.


For the PowerMac G5 there was a App which made the powersupply play a audible song, by modulating the CPUs power draw. I guess it used coilwhine.


It was the standard way to play music from a ZX Spectrum. My word, those things used to radiate.


>1978

Fun fact: Radio Shack sold computer tape cassettes until the late 1980s for its TRS line. Incredible how they had decade old obsolete technology on the shelves.


That isn't unique to Radio Shack or the TRS line. Lots of systems (including Atari, Sinclair, Commodore) used cassettes well into the 80s, especially in Europe.


I have fond memories of loading code off tape into our Computer Club's ZX Spectrum. Worthy precursor to modem sounds!


The last time I remember using a tape to save a program was in 1983. That's the year my dad bought the Peripheral Expansion System for our TI/99-4a, which came with a single-sided 5.25 inch floppy drive.


I guess its use continued in some domains, I have seen tapes being used as removable storage as recently as about 10 years ago.


If anyone has a Raspberry Pi and is interested, check out rpitx[0]. It bit-bangs a GPIO pin to transmit arbitrary radio, turning your Pi into a messy SDR transmitter. By connecting a wire to the GPIO pin you can transmit for tens of meters.

I attached a low-pass filter to the GPIO pin and was able to control my ceiling fan with my Raspberry Pi.

[0] https://github.com/F5OEO/rpitx

Edit: This generates square waves which have harmonics. You will transmit signals on unintended frequencies if you don't use a filter.


"So the FCC won't let me be...."


The FCC doesn't really care unless someone complains about interference. Given that the range of this is so low, the signal is unlikely to even reach your neighbors much less interfere with anything.


Depends on who's the complainer! If it's an enterprise-level business, the FCC is going to storm in. If it's an individual, it's probably going to have to be whoever the mayor of your town points their finger at when they get a call to their hotline. My technician father was on the end of this once - he helped install a wireless water pressure sensor for the water utility and was called 200 miles back to the customer check out why someone was complaining about TV interference. With some radio test equipment, he determined it was... the complainer's electric blanket interfering with their TV!


Yeah, I really wouldn't recommend doing this in a city. Even though the output power probably isn't much, there will be so many spurious emissions and harmonics that you don't know who you'll interfere with.


Nice reference...Now the song wont leave my head


RPITX is very poor at AM (3 power levels), but it is still awesome. Digging obscure forums I found it could do LSB and USB, which was an interesting find even for the creator.

If you like cheap hack sdrs, you might also want to check https://osmocom.org/projects/osmo-fl2k/wiki -- it is a repourposed HDMI sdr.


I just found this a few weeks ago as I started to look at a way to hack a cheap set of wireless controlled outlets for my Christmas lights. I needed a SDR to record the signal from the remote, but now I have my lights controlled by a cron job on a Raspberry Pi that is on my desk.


Excellent! Have you been able to transmit anything at all without connecting a wire over the outputs?

Or are there are popular configurations where people have something plugged in and then unwitting be open to an exfiltration attack?


Range without an antenna is around 10-20cm. I was able to hold my RPi next to my ceiling fan and control it, but obviously that’s not very practical.

Theoretically you could exfiltrate data with it, but if you have root access to the RPi already then I don’t see why you wouldn’t just use Wi-Fi.


On a similar note, I remember the FCC ordering a Bitcoin miner to turn off mining hardware that was emitting 700MHz and disrupting T-Mobile’s network.[1]

[1] https://arstechnica.com/information-technology/2018/02/bitco...


I wonder if it would be feasible to build a faraday cage around the miners. A few sheets of metallic cloth and a wooden frame wouldn't be too expensive.

https://www.ebay.com.au/i/184562911018?chn=ps&norover=1&mkev...


Faraday cages are a bit of a myth. Unless the metal sheet is continuous with no gaps, and there are no wires passing through the sheet, they will be ineffective.

It means that all joints must be screwed or soldered, all doors to have tight joints, and low-pass filters fitted to all power leads, comms leads, etc.

And often you need two completely independent layers (connected at only one point) to achieve sufficient attenuation.


> Faraday cages are a bit of a myth. Unless the metal sheet is continuous with no gaps, and there are no wires passing through the sheet, they will be ineffective.

Your microwave oven's cage would like to have a word with you.

You can have an effective faraday cage using a metal fence/mesh depending on the frequency you're trying to attenuate and the thickness of the metal. [0]

[0]: https://www.quora.com/What-size-of-mesh-should-I-use-to-buil...


The GP poster is actually correct; I work with RF engineers. Yes, Faraday cages work but, having tried it, my colleagues have attested that it's much harder to homebrew a fully effective Faraday cage than the average HNer would think, at least in the frequency range we work in.

The types of mitigations described by the GP poster are also correct: see, for example, the description of issues for EMI shielding at https://celectronics.com/training/learning/basics/Noise-Prop...

> "These imperfections are:

(1) openings

(2) conductors going in or out and

(3) finite thickness of the shield"


Faraday cages are imperfect and designing a high quality cage does take work but GP is absolutely incorrect in that they are a "myth," or that they would be ineffective without precision engineering.

700MHz is a 42cm wave. A hole 1/10th of the wavelength is about an inch and a half. Not exactly tight tolerances.

Perfection generally isn't necessary - mitigation is usually sufficient. Reducing the interference signal by some percentage (likely a very, very high percentage) goes a long way.

Dropping a wire cage around a device broadcasting in the 700MHz band is going to very significantly reduce the signal.


I made a bet once, claiming that a cellphone wouldn't work in a microwave (obviously, with the microwave not operating) because it's a Faraday cage. We'd get a call going, put the phone in the microwave and close the hatch. See if the call drops. The tech back then was 900Mhz GSM.

I lost that bet.

While we were at it, we tried all sorts of metal containers one can find in a household, and couldn't find anything that would make that GSM call drop.


Not taking any position on the actual effectiveness of Faraday cages, but I'm pretty sure cell phones can handle a order of magnitude or two (10-20dB) drop in signal strength on a good day, especially if your Faraday cage is also blocking all the background noise the signal would usually be competing with.


> "Reducing the interference signal by some percentage (likely a very, very high percentage) goes a long way."

Sure, that's true. But the point is that even a high percentage may not be sufficient; a 90% reduction only improves the situation by 10 dB; a 99% reduction is an improvement of only 20 dB. As the sibling post illustrates, today's receivers are very, very sensitive; cell phones, I believe, have sensitivities below -80 dBm.


So from what I understand an important part of microwave operation is food soaking up the waves. Never heard any other faraday cages use absorption. Kinda wonder why not.


Have you never wondered why there is a metal mesh across the glass in your microwave? The microwave's faraday cage is visible.


Not really. You can test this by running the microwave with no food in it and noting that you don't lose wifi connection while that happens.


I heard it will damage the microwave. My current one detects the situation and refuses to start actually. And my old one would glitch the wifi with or without food lol.


This technique goes back to the early days of computers. Here's a video of the IBM 1401 punch card computer (1959) at the Computer History Museum playing music on an AM radio: https://www.youtube.com/watch?v=EPk8MVEmiTI

The same computer could also play music using the line printer: https://www.youtube.com/watch?v=Lu4SxJqU9I4

I discuss how the line printer music worked here: http://www.righto.com/2019/09/risky-line-printer-music-on-vi...


Can verify does not work on an M1 MacBook Air with BMW AM radio, tried the _mm_stream_si128 version couldn't hear any of the tunes on any frequency between 1550 and 1630 hz.

I remember playing with Tempest probably 20 years ago. It worked on a CRT monitor, the bigger the monitor the better, I had a 21"! Even with that I had to get my computer's speakers literally right next to the monitor for it to barely work, but it was absolutely fabulous when it did!


Your result is hardly surprising as Apple M1 is a different CPU architecture using the ARM instruction set. It is unlikely that the CPU circuitry related to this particular function would be similar to Intel x86. This might not even work with an AMD x86 CPU.

Out of curiosity, can you dump the relevant disassembly of the square_am_signal function (using `$ objdump -d mybinary`)?

Note that this instruction (_mm_stream_si128) is a SSE instruction that will write 128 bits to memory, more or less bypassing the cache (as long as you write whole cache lines). This instruction is highly specific to the memory architecture in Intel x86 CPUs. When compiling for ARM, I expect that this will just be compiled to a regular store instruction.


Thanks for your interest. If you have any advice on other instructions or M1 optimizations, I'd love to hear.

My first thought is to synchronize effort of the 8 CPU and maybe even the 8 GPU. That's +12dB right there. We have a multithreaded implementation in the project already.


No, sorry, I don't know anything about the M1.

If you want to achieve something similar to _mm_stream_xxx, ie. bypassing the caches and causing bursts of DRAM traffic, try making some uncached/write combined memory mappings and writing to them. I don't know how this can be done in user space. You could try creating memory mapped buffers with OpenGL or Metal, with certain arguments you could get an uncached mapping.

Another option is looking at ARM instructions for memory barriers and cache flushes. ARM's selection of instructions for dealing with caches is much richer than x86's.


I actually compiled it with Rosetta turned on with x86_64 arch. Let me know if you still wanna see the objdump.


If you compile it to x86_64, that _mm intrinsic will turn into a single instruction. No need to show the disassembly.

Thanks for the info.


Thanks for sharing. You are welcome to add to the TEST-DATA file.

We just received the first field report of success with the M1 MacBook Pro here https://github.com/fulldecent/system-bus-radio/blob/master/T...


Reminds me of Tempest For Eliza, which does this using a CRT (now a little less practical): http://www.erikyyy.de/tempest/


...and Fabrice Bellard's "follow-up" of generating a DVB signal: https://bellard.org/dvbt/


It doesn't have to be a CRT. An LCD with analog connection works too.


If I understand this correctly, he uses a SIMD instruction since that switches the most number of transistors at the same time and causes a tiny ripple in chip power line. The receiver sees an aliased version of one of the harmonics.

But why is the radiation not shielded by the computer? We have tons of regulation for this kind of stuff AND a metal body that should stop most of the signal.


Just a EU perspective here. There are EMC directives and norms, they generally work like this: the amount allowed for emission needs to be accepted without disturbance (there are two different categories like industrial and non-industrial).

Let me give you an example. non-industrial is not allowed to emmit more than 3V/m, but non industrial product are also not allowed to be disturbed by 3V/m. So far so good. This only applies to 'disturbances' or 'non use signals'. Let me explain:

Now, radio transmission is different (like a mobile phone). The use signal (which is not a disturbance) is allowed to be much higher, like 40V/m. (So there was a case where a coffee machine broke when putting the mobile on it). This is all in perfect compliance. (of course the manufacturer of the coffee machine hardened the device, but this was market forces).

So for the other direction, I am not too sure but it can perfectly fine that the allowed EMC disturbs the reception of a radio signal device. Also EMC is only tested in 'typical' situations.

About the legality by using Software to intentionally transmit signal (def not legal without HAM license or proper FCC testates) I have no idea who would be the liable party i n this case.


Everything is an antenna, no shielding is perfect.

Engineering circuits to reduce EM is actually very difficult, and gets more difficult as you desire less radiation. The regulations are generally about “harmful” interference and being detectable over a short distance isn’t that.


Radio receivers are very sensitive and you're very close to your computer, both factors that make shielding difficult. And, the shielding isn't perfect -- there are holes for fans, some cases are made out of glass instead of metal, etc.

There are regulations, but they don't mandate perfect attenuation. They only specify that your emissions shouldn't interfere with licensed users. Since the licensed users are pretty far away from your computer and the power is very low, it's generally not a problem.

(As for sensitivity, remember that GPS signals have a power of something like 10^-16 watts at the surface of the earth, and you can receive those just fine. Radios are very sensitive instruments!)


This is much better than it used to be. Back in the 80s we had an 8-bit computer and a 50s vacuum cleaner. Using the cleaner anywhere in the house would corrupt the computer's memory.


FWIW, modern PC cases are mostly plastic and clear plexiglass to show off all the RGB LED's.


Relevant recent discussion: https://news.ycombinator.com/item?id=25440738

Waiting for an Air-FM paper now.


And I'm waiting for "Receive WiFi-5G-4G-3G-GPRS-AM-FM-TBA on computers without hardware receivers".

Just won't buy RTL's USB-Pin.


Most of these ideas can be done with LimeSDR or USRP B210.


> LimeSDR or USRP B210.

Wow! Does LimeSDR requires some additional hardware to be plugged into my laptop?

Or it would be able to 'reuse' some of built-in hardware on, says, 13 year-old laptop?[0]

[0] https://nitter.net/app4soft/status/1334266756643364864#m


LimeSDR is additional hardware.

https://limemicro.com/products/boards/limesdr/


Though this is NOT a requested solution described in my comment above :(


If you have a Raspberry Pi, you can do something similar

https://circuitdigest.com/microcontroller-projects/raspberry...


This is actually among the very oldest home-brew software ideas in existance. The original S100 bus machines (e.g. Altair 8800) had apps written to do just this - generate AM radio signals.


Here's a video of a PDP-8/e playing tunes over an AM radio:

https://youtu.be/akvSE5Z474c

The software dates to around 1975.


Wow! The signal is quite clear. How did they produce the AM signals in the PDP-8?


Same as in any computer. Simple timing loops to generate repetitive signals.


Back in the 90s when computers were well under 1ghz, I found that I could crank up the sound card with no music playing and listen to the bus. Sometimes this could actually be useful in debugging. You could hear the difference between an infinite loop and the CPU actually doing useful work.


Will the web app version still work given recent high-precision timing limitations due to Spectre/Meltdown mitigations?


I just tried this out yesterday. On my MacBook Pro 11,1 running NixOS the signal is clearest at 1620 KHz. The receiver is an older Bose SoundTouch and after 50 cm it degrades to noise.


Couldn't you also encode data in audio itself ?

I heard of a project to do this where you send out an inaudible sound and receive it elsewhere


The coolest example I'm aware of with hiding low frequency content like this was with an ASIC fingerprint mechanism. The tool would modify your design in a very subtle way so that the power it burned would be very slightly modulated. You could detect this with a sensitive thermometer (over many hours I believe it was). Its main use can was to read IDs out of the chips to trace which vendors were leaking/making bootleg copies of your chips.


And by modulating keyboard LED brightness, and moving the DVD drawer, DC-DC converter coil whine, and ... any "transducer" controllable by the CPU.


Yes, definitely! All digital signals basically do this, whether it's an "audio" medium or not. Look up BPSK -- it's the simplest way to send digital signals over an analog medium.


Yes but you’d have to find a piece of hardware capable of producing sound outside the audible range.


I’ve been using an app called Clock Wave to synchronize my watch that does something similar. I’m in Hawaii with no atomic radio tower signal.

https://apps.apple.com/us/app/clock-wave/id1073576068


Anyone know if it would work on lower end microcontrollers like the Z80? I managed to use the TI-84+'s I/O port connected to a speaker to play simple tunes[0] using a Forth program I wrote[1], but maybe I can exploit the hardware to modulate AM frequencies?

[0] https://photos.app.goo.gl/EumYVgyfMN1ncwkQ7

[1] https://github.com/siraben/ti84-forth/blob/master/programs/m...


I copied an assembly program off the net back in ~ 2000 that did AM audio on my TI83! So I'm positive it can be done..!


Do you happen to have a link to it/recall the name? Sounds interesting!


incredibly enough, it's still on the web!

https://www.ticalc.org/pub/83/asm/sound/

I think you want 'songplay.zip', as it includes an X-files tune. This is probably the one I remember... From the readme:

    Here is a small song player on the TI-83 (the first I think). This works with
    an earphone plugged in the link-port (a piezzo buzzer, etc), or with an AM radio...


Thank you! Hopefully it can be adapted to run on the 84+.


Not just unintentional transmitters, but unintentional receivers too. Any old loudspeaker used to pick up the doot-doot-doot of incoming calls[1] to GSM cellphones.

[1] and maybe SMS too, but I don't remember


In the 90s I had a portable TV that picked up cellphone conversations. You could hear one side of the conversation clearly and the other end was very faint.


Very cool. And while not quite as cool it reminds me of when people tried the same using the computers fan: https://www.wired.com/2016/06/clever-attack-uses-sound-compu...


Reminds me of the Timex Sinclair 1000 I picked up in the 80s. It has no audio functionality. But I found a program in a magazine which would mess with the video signal or something to generate very rough tones. I seem to recall the program was named "I love the sound of breaking glass."


aka Sinclair ZX81. There was such a program in Your Computer that would toggle between fast and slow mode to generate tones. It was a actually a trivial 8 or 16 step tracker, so you could even make beats...

And here's the program listing!

https://archive.org/details/your-computer-magazine-1982-03/p...


Reminds me of "Tempest for Eliza" which uses the computer's monitor to generate AM signals: http://www.erikyyy.de/tempest/


The first time I saw this trick, it was on a DEC PDP-8 in the late 1970's. There were a number of songs available.


check air-fi, using same kinda technic to send data over wifi: https://news.ycombinator.com/item?id=25440078


How do you define "radio transmitting hardware"? some hardware that can transmit radio signal or some hardware specifically designed for transmitting radio signal?


It's all radio transmitting hardware.

If not intended, then shielding and other mitigations are warranted.

If intended, making it clean and respectful of the spectrum are warranted.

Otherwise, it's a hack!

Simple AM radio is a fun tech to explore for a little. For many of us, it was the first real connection to the world and the people in it.

Late night AM with a long wire antenna, maybe directional loop, and or tuned coils, filters, is a great experience, particularly on older radios.

Starting sometime around the 80's, AM radios got kind of lousy. It varies a little by manufacturer too. Ford, oddly enough, produced great ones into the 00's.

Anyway, at night, you get the various stations, and depending on propagation, they could be very far away stations, and also the sounds of the world all mixed together.

I can remember late nights listening to all sorts of programs, people telling stories, music, talk programs on a wide variety of topics, and often frank in style and form.

And that electric fence, tick, tick, tick.

A car starting.

Storm brewing.

Electric appliances.

All sorts of things just added in.

As a purist interested in the program, these are all kind of crappy. Hard to ignore.

People like FM because it rejects most all of that stuff.

But, as a curious person? It is like another sense. Electro phenomena mapped into sound. Very fun, and an interesting way to perceive what's around you.

IMHO, this is a big part of why making computer sound on an AM radio is cool.

Everything I just wrote applies to the short wave bands too, though those are messy today. Best done away from a metro area.

If you want to experience this at all, score an early radio, even a vacuum tube one ( my favorite ), get a long wire and venture out somewhere and just listen.

Camping is a great time for it, and I still do every year. For an hour or two, it takes me way back to early times.

A portable, transistor one made a while ago is best and still cheap.

Older GE Super Radios are real good. The ones made prior to 2010 or so are best, and not expensive.


I got downvoted for what? pointing out some inconvenient truth?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: