How to turn your Raspberry Pi into an FM Transmitter

For those who don’t know, the Raspberry Pi can transmit an FM signal directly. It’s a surprisingly powerful signal, too, and it’s very easy to do.

Following the guide on the Imperial College Robotics Society (ICRS) wiki, it took me less than 5 minutes to get the entire thing operational.

Step 1 – Download/Extract the Sample Code(GPL)

I am hosting a copy of their code located here. (this archive contains the source and binary).

tar -zxvf Pifm.tar.gz

Step 2 – Attach the Antennae

Find an 8 inch piece of plain wire, and attach it to the GPIO4 port on your Pi. Technically the is step is optional, but my transmission range went from 200ft to 8 inches without it. Use the picture below as a reference.
raspberry pi fm transmitter

Step 3 – Run the Code

Usage: sudo ./pifm wavfile.wav [freq] [sample rate]

The second command line argument is the frequency to transmit on, as a number in Mhz. For example, this will transmit on 100.1 FM

sudo ./pifm sound.wav 100.1

You can use whatever frequency you’d like (88->108).

That’s it! Here is a video of mine working.

How It Works
According to the ICRS, it uses the hardware on the raspberry pi that is actually meant to generate spread-spectrum clock signals on the GPIO pins to output FM Radio energy.

For more information, and a link to the actual C code, visit the ICRS wiki. I’m also happy to answer any questions you have regarding my setup. Thanks!

Read More

How to Turn Your Raspberry Pi into a Fully Functional Web Server

Raspberry Pi

First we will start with the shopping list. You will need one of each of the required items. This list is assuming you already have a USB keyboard and USB mouse.

QTY Required Items Price(USD)*
1 Raspberry PI $35.00
1 Micro USB cable $5.79
1 SD Card (class 10, minimum 4GB recommended) $7.63
Total: $48.42
Optional Items
1 Power Supply $9.95
1 HDMI Cable $2.28
1 Case $12.75
1 Wireless Card $6.82
Total Including Optional Items: $80.25

*Prices are subject to change

After you’ve collected your hardware, you need to flash your operating system onto your SD Card. For this tutorial we will be using Raspian. I recommend it because it is an optimized version of Debian built specifically for Raspberry Pi’s. The last stable downloads can be found here.

To flash your SD Card, you will need to unzip the image and write it your SD card using Win32DiskImager. This tool can also be used to after our initial setup to create an image of our finalized implementation(very useful as a backup).


After the image is flashed, you can boot your device. At this point you can use your HDMI Cable/Mouse/Keyboard for your initial configuration, or you can use an SSH Client like Putty to connect. The default hostname, login, and password are as follows:

Username: pi
Password: raspberry

raspberry pi putty

For this tutorial, I will be using putty. On first boot, you will be prompted with a configuration tool called Raspi-Config. If the raspi-config doesnt load automatically, just enter the following command from the shell to get started.

sudo raspi-config


The settings I recommend you update are


The usual distribution images are 2 GB. When you copy the image to a larger SD card you have a portion of that card unused. expand_rootfs expands the initial image to expand to fill the rest of the SD card, giving you more space. By default, 64mb is reserved for the Graphical UI. Since we plan on using this as a web server, I reduce this to 32mb with the memory_split command.

After you finish your changes to the raspi-config, you should reboot your pi using the following command:

sudo shutdown -r now

At this point you have a fully functional linux server, but we still need to install apache, php, and mysql. This part is actually rather straightforward.

First, run the following commands from the shell to install Apache and PHP.

sudo apt-get update

sudo apt-get install apache2 php5 libapache2-mod-php5

The Locations of the Apache and PHP files are respectively



Next, run the following command to install MySQL.

sudo apt-get install mysql-server mysql-client php5-mysql

You will need to create a password for the MySQL Root Account

mysql root

After this is completed, give it a try! To test Apache, navigate to the IP or Hostname of your Rasberry Pi in your browser, and you should see the famous “It works!” Screen.

it works apache

To test the PHP, create a text file under your /var/www/ directory called phpinfo.php with the following contents:


Navigate to the file:


And that’s it! You’re done. You’ve got a fully functionally Raspberry Pi Web Server!

Some Extras:
For ease of use you might want to install an FTP Server. You have a few options PROFTP, VSFTP. I prefer VSFTP and that can be installed with the following commands:

sudo chown -R pi /var/www
sudo apt-get install vsftpd

The configuration file for vsftp can be found here:


If you are in a windows environment, you might find it useful to install SAMBA for network shares. To install samba, use the following commmands

sudo apt-get install samba

The configuration file for samba can be found here:


Raspberry PI Full Specs:
•Broadcom BCM2835 700MHz ARM1176JZFS processor with FPU and Videocore 4 GPU
•GPU provides Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode
•GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs with texture filtering and DMA infrastructure
•512MB RAM
•Boots from SD card, running a version of the Linux operating system
•10/100 BaseT Ethernet socket
•HDMI video out socket
•2 x USB 2.0 sockets
•RCA composite video out socket
•SD card socket
•Powered from microUSB socket
•3.5mm audio out jack
•Size: 85.6 x 53.98 x 17mm”

Read More