Introduction: Raspberry Pi - PiFMPlay - FM-Broadcasting Simplified
Here's the hassle free way to make your raspberry pi play your music files over FM-radio!
Skip to the next step if you are in a hurry ;)
For a couple of days I have been messing around with PiFM, and I absolutely love having my own radio station.
So far I've gotten about 50m range outside, not much, but certainly enough to broadcast at and around home. It is possible to improve the range drastically by adding filters and signal amplifiers , but broadcasting with that kind of range is illegal without a license -.-
Yup, pifm is awesome!!! But its a little impractical to use, you have to convert every different format and its troublesome to write the long one-liners over and over. It's just not practical to use if you're outside controlling it from your phone via ssh.
I wanted it to be as easy to use as the programs aplay and play, so I made PiFMPlay :D
PiFMPlay is here to make it easier to control your PiFM-radio broadcast.
I DIDN'T make PiFM! Kudos and thanks to icrobotics :D
http://www.icrobotics.co.uk/wiki/index.php/Turning...
I DID make the PiFMPlay script, and it's on github. Feel free to fork it from there: https://github.com/Mikael-Jakhelln/PiFMPlay
Now, lets get to it!
Step 1: Tl;dr (Too Long Didn't Read)
This is the quickest way to set up pifmplay.
Open a terminal on your Raspberry Pi.
Download pifmplay:
wget https://github.com/Mikael-Jakhelln/PiFMPlay/archive/master.zip
Unzip it:
unzip master.zip
Move the 'pifmplay' folder to /home/pi:
mv PiFMPlay-master/pifmplay ~/pifmplay
Go into the pifmplay folder:
cd ~/pifmplay
Then add execution permissions:
sudo chmod +x pifm pifmplay
Download & Install media converters:
sudo apt-get install ffmpeg sox libsox-fmt-all
Now edit you users bash config file:
nano ~/.bashrc
and type this at the bottom of the file:
export PATH=$PATH:~/pifmplay
restart the pi:
sudo reboot
Attach a 30cm wire to to GPIO4 (That's Pin-7)
Turn your FM-radio to frequency "91.3"
Start FM-Broadcast with:
pifmplay ~/pifmplay/starwars.wav 91.3
If you cannot hear anything on the radio, try adjusting your antenna
Step 2: Ingredients:
What you will need:
Hardware:
- A raspberry pi up and running with internet
- a way to type commands into you pi :P (ssh or a screen and a keyboard)
- a 30cm wire to use as antenna (any antenna/wire will do)
- a brain
Software(download links comes later in the instructable):
- pifm and pifmplay
- sox
- ffmpeg
- sound/music files
Step 3: Add Antenna to GPIO4
This one is easy:
- Connect your antenna (the 30 cm wire) to GPIO4 on your raspberry pi.
And that's all you have to with the hardware.
Step 4: Install Sound Converters
PiFMPlay uses sox and ffmpeg to automatically convert audio files and play them with pifm.
So to use it we need to install sox and ffmpeg. Type this into a terminal on your pi:
sudo apt-get install ffmpeg sox libsox-fmt-all
Step 5: Install PiFMPlay
Do this in a terminal on your pi:
go to your home directory:
cd ~/
download pifmplay from github
wget https://github.com/Mikael-Jakhelln/PiFMPlay/archive/master.zip
To unzip:
unzip pifmplay.zip
Move pifmplay to where you want it, e.g:
mv PiFMPlay-master/pifmplay /home/pi/pifmplay
remove empty folder:
rm -r PiFMPlay-master
Now go into the pifmplay folder, e.g:
cd /home/pi/pifmplay
change permissions so we can run it as a program:
sudo chmod +x pifm
sudo chmod +x pifmplay
Step 6: Change Default Frequency
change the default frequency in the pifmplay script.
cd ~/pifmplay
nano pifmplay
find this line, it should be at the top somewhere..
'frequency=91.3'
and change 91.3 to your preffered frequency
Step 7: PiFMPlay Is Ready for Your Orders, Now Play Some Music
Go into the pifmplay folder via a terminal, and type:
sudo sh pifmplay .
(this plays some music on the default frequency. Default is 91.3 if you didn't change it )
Now try:
sudo sh pifmplay "/path/to/folder/or/sound.file" 91.3
(change 91.3 to your desired broadcast frequency.)
Examples:
sudo sh $HOME/pifmplay/pifmplay "/home/pi/music/Daft Punk" 91.3
sudo sh /home/pi/pifmplay/pifmplay "/home/pi/music/Daft Punk/Daft Punk - Technologic.mp3" 91.3
Step 8: How to Use Pifmplay
Basically you just send what you want to play as the first parameter to the script, and the frequency to broadcast on as the second.
But read on, because there is more:
to play a file:
sudo sh $HOME/pifmplay/pifmplay "Name of - song.mp3"
to play a song on another frequency:
sudo sh $HOME/pifmplay/pifmplay "Name of - song.m4a" 91.3
To play a folder:
cd /into/the/folder/you/want/top/play
sudo sh $HOME/pifmplay/pifmplay .
or just
sudo sh $HOME/pifmplay/pifmplay "/path/to/music/folder" 91.3
to pause the broadcast:
sudo sh $HOME/pifmplay/pifmplay pause
to resume:
sudo sh $HOME/pifmplay/pifmplay resume
to stop:
sudo sh $HOME/pifmplay/pifmplay stop
to play the next file in the folder:
sudo sh $HOME/pifmplay/pifmplay next
If you want to run pifmplay in the background, type:
sudo sh pifmplay $HOME/pifmplay/pifmplay "/path/to/folder/or/file" &>/dev/null &
Now you are done installing pifmplay and you can enjoy using your fm-radio transmitter ;)
However; there's still some more ingredients you might want to add to your pie to make it even more awesome ;)
Step 9: (Optional)Now That PiFMPlay Is Up, Add More Music
To play music from a usb hdd or flashstick do this:
First things first:
Preheat the oven to 50°c, fold in a usb-drive into your pie, put the pie in the oven, let it cook for 50µs.
(DON'T PUT YOUR PI IT IN THE OVEN!!!! Just insert a usb drive into your pi)
Now you must find your usb media, so type in:
ls -l /dev/disk/by-uuid
That gives you a list of storage devices connected to the pi.
It should look like this:
pi@pi ~ $ ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 15 Jan 1 1970 676B-0317 -> ../../mmcblk0p5
lrwxrwxrwx 1 root root 10 Jan 1 1970 1B23-1234 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jan 1 1970 B321-4321 -> ../../sda2
lrwxrwxrwx 1 root root 15 Jan 1 1970 A1B2-3C4D -> ../../mmcblk0p1
/\ /\
this is the disk uuid & this is the drivename. remember these, we will use them later
Your usb media drive should be called something like /dev/sda1 or /dev/sdb1, where the number at the end is the partition number.
sda is the first drive while sdb is the second, the third and fourth drive would be sdc and sdd respectively
However, its NOT /dev/mmcblk0px, that is the sdcard your OS runs from.
Now, make up a name for your drive.
To mount your media, type:
sudo mkdir /media/yourmadeupname
sudo mount -t vfat /dev/harddrivename /media/yourmadeupname
(if your drive is not formatted as FAT16 or 32, you have to change "vfat" to something else)
To make it mount it automatically at boot, we need to edit /etc/fstab
make a backup of /etc/fstab with:
sudo cp /etc/fstab/ /etc/fstab.backup
edit /etc/fstab with:
nano /etc/fstab
Remember your uuid and your made up drivename?
Add this line the the end of the file:
UUID=youruuid /media/yourmadeupname vfat rw,defaults 0 0
Replace "youruuid" with your drives actual uuid, and "yourmadeupname" with the name you made up :P
If you didn't understand my instructions, or something was unclear check out:
http://www.techjawab.com/2013/06/how-to-setup-mount-auto-mount-usb-hard.html
or google it ;)
Step 10: (optional) Add Pifmplay to Your $PATH
If you want to type even less to play your music, you must add the pifmplay folder to your $PATH
This can be done in so many ways, and i'm not sure if this is the correct way. But it works :P
on your pie, type this:
nano ~/.bashrc
now type this into the bottom of the file
export PATH=$PATH:~/pifmplay
Source: http://stackoverflow.com/questions/8779951/how-do-i-run-a-shell-script-without-using-sh-or-bash-commands
now you should be able to type
sudo pifmplay "file/or/folder/to/play"
from anywhere, Yey! ¦-D

Participated in the
Raspberry Pi Contest

Participated in the
Supercharged Contest
89 Comments
2 years ago
I've made an android app for this job using a different Pi Fm Rds "Framework". You might want to give it a try https://github.com/hackthedev/remotepifm
Question 2 years ago
Is there a way to transmit a USB stream in audio
5 years ago
Anyone make it work with RPI 3 Model B???
Question 5 years ago on Step 8
sudo sh $HOME/pifmplay/pifmplay "sound.wav" 104
I run this command, but it freezes up after telling me that i can press q or ? to stop or get help, respectively.
7 years ago
I try to get ffmpeg but terminal returns:
"Package ffmpeg is not available, but is referred to by another package.This may mean that the package is missing, has been obsoleted, or is only available from another source
E: Package 'ffmpeg' has no installation candidate"
Reply 5 years ago
You need to build ffmpeg from source
https://www.bitpi.co/2015/08/19/how-to-compile-ffmpeg-on-a-raspberry-pi/
7 years ago
sudo apt-get install ffmpeg sox libsox-fmt-all
says "E: Package 'ffmpeg' has no installation candidate" :(
Reply 5 years ago
You need to build ffmpeg from source
https://www.bitpi.co/2015/08/19/how-to-compile-ffmpeg-on-a-raspberry-pi/
5 years ago
Is it possible to transmit the audio coming out of theraspberry pi?
5 years ago
Hi, is there a way to stop then replay broadcast with outside trigger by wired 5v signal over pins?
6 years ago
is there any way to reveive fm using pi
7 years ago
does not work :(
7 years ago
Hi, would this work on the pi 3?
7 years ago
Any way to use PiFm with MusicBox? Thanks!
7 years ago
Is there a way to play music from spotify?
8 years ago on Introduction
not working for raspberry pie 2 unable to hear anything
Reply 8 years ago on Introduction
http://www.raspberrypi.org/forums/viewtopic.php?f=...
you have to change some address in the pifm code so it works with the pi2, since it's a different processor ;) You might also want to check if icrobotics have updated pifm to work with the new pi2.
Reply 8 years ago on Introduction
Do you have a backup of it?Topic got deleted...
Reply 7 years ago
nope sorry. if you find a fix, tell me and I'll add it to the repo on github :)
8 years ago on Step 2
+Mickey_Boy Are you sure we need a brain for this project ???