Luckily the FAQ already mentions why this is a bad idea.
> Please note that due of the hardware of the raspberry pi, harmonics ARE generated on 3x, 5x, 7x and 9x the desired frequency. Those harmonics are polluting important services like emergency services a d others.
Please do not use the GPIO of a Raspberry Pi to generate a high frequency to emit radio waves. Putting square waves on the air is always asking for trouble. A simple filter is not a proper solution if the source is so dirty.
For a project as well built of this seems, it seems odd that they would advice people to use such a hacky way. Syncing networked clients to play audio at exactly the same time is a solved problem.
> Syncing networked clients to play audio at exactly the same time is a solved problem.
I was going to point out that with the variance in FM demodulation chips, using a pile of FM receivers probably wouldn't get you perfectly synced audio these days at all, even more so if it's going through usb/software/audio stacks.
Then I re-read the Ops comment and this actually seems to be a network of _transmitters_. I'm not sure what problem they're trying to solve, but I can't believe multiple PiFMs is ever the answer.
Commercial DAB radio does use single frequency networks (with tight timings and clever calculated offsets), and I am somewhat curious how analogue FM responds with regard to offset destructive interference, but this isn't that.
Please don't do this. For context, a car FM transmitter is limited to 250nW (in many jurisdictions). A Pi GPIO pin with the right bit of wire is potentially capable of 10mW or more. 40,000 times more powerful and a lot more noisy. One could be causing problems for people surprisingly far away.
WebRTC makes it possible by timing is still limited to NTP who has is far above one sample, you couldn’t possibly get sample accurate playback but you could get it to within a mS or so.
Depending on how far away your sources are that might be fine, for instance two speakers in two rooms where you won’t get significant phase issues this is trivial to do(well trivial is an understatement but you can do it purely with web technologies).
Pi-FM-RDS, from which this project is forked, warns under its Warning and Disclaimer section that "In most countries, transmitting radio waves without a state-issued licence specific to the transmission modalities (frequency, power, bandwidth, etc.) is illegal. Therefore, always connect a shielded transmission line from the RaspberryPi directly to a radio receiver, so as not to emit radio waves. Never use an antenna." They literally warn users not to do what this project tells them to do. I can't be arsed to do the proper math but a casual check suggests that the output power from the Pi could easily exceed the FCCs low power FM transmitter exemption.
The project also cursorily mentions the need to use a bandpass filter to avoid interference but fails to explain the specific device needed or how to wire it up in the instructions.
[EDIT] I debated whether or not to say it but I will: this is just irresponsible. There is no way to legally use this project as is. The user would have to have additional knowledge of RF hardware and regulations to make it compliant.
The funny thing about doing something like this that is illegal in most countries, is that it actively broadcasts the exact location where you are doing the illegal thing.
After seeing some comments, I'd wan't to specify something that isn't really mentionned in the readme or anywhere but, this project doesn't aim to replace professional setups nor cover long ranges (that would be absolutely irresponsible to try to). I think it's mostly aimed to cover a house, garage or to be in a sort of "big faraday cage" for your own personal use, if you have some pis and radios laying around.
There is no "may be subject to local regulations and laws" (quoting from the project page); operating such a rig is flatly illegal in any civilized country. RF regulations are enforced by authorities at the national level and you can bet that if they have to go to the trouble of tracing down the RF signal from this (very easy to do), they will be bringing the legal equivalent of a can of whoopass with them. And they will not be mollified by claims of personal use.
Again, the project you forked from literally tells users never to attach an antenna; they have enough RF knowledge to know a tiny bit of signal can go a very very long way. You clearly do not.
If you have some spare rpis and a radio it can be pretty interesting to set it up to check on it, tho there are no "real world" utilities, since as the other comments mentions, it is illegal to use that as it is
Luckily the FAQ already mentions why this is a bad idea.
> Please note that due of the hardware of the raspberry pi, harmonics ARE generated on 3x, 5x, 7x and 9x the desired frequency. Those harmonics are polluting important services like emergency services a d others.
Please do not use the GPIO of a Raspberry Pi to generate a high frequency to emit radio waves. Putting square waves on the air is always asking for trouble. A simple filter is not a proper solution if the source is so dirty.
For a project as well built of this seems, it seems odd that they would advice people to use such a hacky way. Syncing networked clients to play audio at exactly the same time is a solved problem.
> Syncing networked clients to play audio at exactly the same time is a solved problem.
I was going to point out that with the variance in FM demodulation chips, using a pile of FM receivers probably wouldn't get you perfectly synced audio these days at all, even more so if it's going through usb/software/audio stacks.
Then I re-read the Ops comment and this actually seems to be a network of _transmitters_. I'm not sure what problem they're trying to solve, but I can't believe multiple PiFMs is ever the answer.
Commercial DAB radio does use single frequency networks (with tight timings and clever calculated offsets), and I am somewhat curious how analogue FM responds with regard to offset destructive interference, but this isn't that.
Please don't do this. For context, a car FM transmitter is limited to 250nW (in many jurisdictions). A Pi GPIO pin with the right bit of wire is potentially capable of 10mW or more. 40,000 times more powerful and a lot more noisy. One could be causing problems for people surprisingly far away.
I think it's more of a PoC of an exfiltration tool, not really something people will actually use.
> Syncing networked clients to play audio at exactly the same time is a solved problem.
Say more?
I would guess solved but bot easy.
WebRTC makes it possible by timing is still limited to NTP who has is far above one sample, you couldn’t possibly get sample accurate playback but you could get it to within a mS or so.
Depending on how far away your sources are that might be fine, for instance two speakers in two rooms where you won’t get significant phase issues this is trivial to do(well trivial is an understatement but you can do it purely with web technologies).
Pi-FM-RDS, from which this project is forked, warns under its Warning and Disclaimer section that "In most countries, transmitting radio waves without a state-issued licence specific to the transmission modalities (frequency, power, bandwidth, etc.) is illegal. Therefore, always connect a shielded transmission line from the RaspberryPi directly to a radio receiver, so as not to emit radio waves. Never use an antenna." They literally warn users not to do what this project tells them to do. I can't be arsed to do the proper math but a casual check suggests that the output power from the Pi could easily exceed the FCCs low power FM transmitter exemption.
The project also cursorily mentions the need to use a bandpass filter to avoid interference but fails to explain the specific device needed or how to wire it up in the instructions.
[EDIT] I debated whether or not to say it but I will: this is just irresponsible. There is no way to legally use this project as is. The user would have to have additional knowledge of RF hardware and regulations to make it compliant.
The funny thing about doing something like this that is illegal in most countries, is that it actively broadcasts the exact location where you are doing the illegal thing.
After seeing some comments, I'd wan't to specify something that isn't really mentionned in the readme or anywhere but, this project doesn't aim to replace professional setups nor cover long ranges (that would be absolutely irresponsible to try to). I think it's mostly aimed to cover a house, garage or to be in a sort of "big faraday cage" for your own personal use, if you have some pis and radios laying around.
There is no "may be subject to local regulations and laws" (quoting from the project page); operating such a rig is flatly illegal in any civilized country. RF regulations are enforced by authorities at the national level and you can bet that if they have to go to the trouble of tracing down the RF signal from this (very easy to do), they will be bringing the legal equivalent of a can of whoopass with them. And they will not be mollified by claims of personal use.
Again, the project you forked from literally tells users never to attach an antenna; they have enough RF knowledge to know a tiny bit of signal can go a very very long way. You clearly do not.
Hmm, so I can replace grandma's Christmas radio with my gangster rap playlist... interesting.
Beside the already mentioned and imo highly valid concerns, no concern regarding the curl some url and pipe to sudo?
Well, you can open the url in your browser, and inspect the code that is also on the github repo ;)
> no concern regarding the curl some url and pipe to sudo?
We live in the time of Cargo, pip and npm. So no. /s
On requirements maybe include “antenna or shielded transmission line”
Technically, the pis gpio headers can act as a really, really short antenna, so it kinda works without, but you're right
Why is this useful (assuming the issues other people mention are fixed)?
If you have some spare rpis and a radio it can be pretty interesting to set it up to check on it, tho there are no "real world" utilities, since as the other comments mentions, it is illegal to use that as it is