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 :-)
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.
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.
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.
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.
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.
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.
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.
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]
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.
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]
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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?
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...
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.
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.
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...
How do you define "radio transmitting hardware"? some hardware that can transmit radio signal or some hardware specifically designed for transmitting radio signal?
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.
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 :-)