RPi Tutorials

Introduction
This page contains a set of tutorials to help the reader to learn by doing. The reader is encouraged to follow the steps in the tutorials.

The Raspberry Pi Forum has a list of Project Ideas & Links, to help people get started.

Please add links to your tutorials (and ones you find interesting).

Fill in each section:
 * Tutorial Title (as a link to the project webpage or connected wiki page)
 * Tutorial Description (including any additional links or information
 * Skill level/Ages it is aimed at (Any/Beginner/Intermediate/Advanced)
 * Tags (key words related to the project, i.e. LCD Screen, Teaching, Python)
 * Author(s) or group who have produced it (also if it is an Open/Community Project for anyone to contribute)
 * Tutorial Status (Not Started/In-Progress/Available).

Tutorials List
{| class="sortable wikitable" Tutorial Title and Link Description Level Tags Author Status
 * style="width:15%; vertical-align:top; border:1px solid #aaa;" |
 * style="width:40%; vertical-align:top; border:1px solid #aaa;" |
 * style="width:7%; vertical-align:top; border:1px solid #aaa;" |
 * style="width:7%; vertical-align:top; border:1px solid #aaa;" |
 * style="width:10%; vertical-align:top; border:1px solid #aaa;" |
 * style="width:7%; vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Tutorial: How to use your RPi like an Arduino
A thorough guide to using the RPi's GPIO pins in Python, Bash and C. Intermediate Teaching, Python, Bash, C T3db0t Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Raspberry Pi YouTube Tutorials
Forum Link: Liam Fraser's Video Tutorials Beginner Teaching, Python Liam Fraser Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Raspbian on Raspberry Pi using SD card + USB memory stick
Tutorial on setting up Raspbian to boot off a small SD card and then load the system off a USB memory stick. Beginner OS Setup NetworkingHowtos Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Introducing the Raspberry Pi
h2g2 project: Introducing the Raspberry Pi Beginner Startup guide Tufty Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |

Getting Started with the Raspberry Pi
Introductory tutorial for total beginners to get your Raspberry Pi booted and online : Getting Started with the Raspberry Pi Beginner Startup guide T3db0t Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |

Cable management for the Raspberry Pi - (Forum article)
Video showing how to simplify Raspberry Pi cable tangles : A simple cable management solution for the Raspberry Pi  v1 Beginner/intermediate Startup guide Kdakin Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |

The Coding Club Free eBook(s)
Forum Link: Teaching Youngsters Programming Beginner (~ages 10) Teaching, Python Sciman Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

DracoSoftware
Forum Link: Blog about working with Raspberry Pi for Windows users Beginner Teaching, Windows, Linux dracolytch Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Easy GPIO Hardware & Software
(Wiki) Forum Link: Easy GPIO Hardware & Software
 * vertical-align:top; border:1px solid #aaa;" |

Aim to introduce the basic circuits for interfacing through the GPIO. Beginner Teaching, Basic Hardware Meltwater - Open Project In-Progress
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

SD Card setup using DD for Windows
Blog Link: My Raspberry Pi Experience
 * vertical-align:top; border:1px solid #aaa;" |

How to set up an SD Card using DD for Windows - with step by step screenshots Beginner/ Windows Intermediate Startup Guide, OS setup Tass Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Software: C64 Emulator (VICE)
Forum Link: How to install the C64 Emulator VICE Beginner Install Guide, Software, Emulator Frank Buss Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Setting up VNC
Blog Link: My Raspberry Pi Experience
 * vertical-align:top; border:1px solid #aaa;" |

How to set up VNC server on the Raspberry Pi to be able to connect remotely - with step by step screenshots Beginner Startup Guide, OS setup Tass Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Setting up Apache2
Blog Link: Fusion Strike
 * vertical-align:top; border:1px solid #aaa;" |

A guide on setting up an Apache2 web server with Screenshots Beginner Startup Guide, server setup Jacob Clark Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Setting up PHP
Blog Link: Fusion Strike
 * vertical-align:top; border:1px solid #aaa;" |

A guide on setting up PHP web server with using Apache & SSH with Screenshots Beginner Startup Guide, server setup Jacob Clark Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Setting up MySQL
Blog Link: Fusion Strike
 * vertical-align:top; border:1px solid #aaa;" |

A guide on setting up MySQL on your Raspberry Pi web server using PHP, Apache & SSH with Screenshots Beginner Startup Guide, server setup Jacob Clark Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Running Puredata on the Raspberry Pi
How to get Puredata, the open-source sound synthesis platform, running on your R-Pi : Running Puredata on the Raspberry Pi Beginner Startup guide T3db0t Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

How to mount a USB flash drive on the Raspberry Pi
Blog link: How to mount a USB flash drive on the Raspberry Pi Beginner Startup guide, Linux Alex Eames Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

How to mount and use a USB Hard Disk Drive on the Raspberry Pi
Blog link: How to mount a USB hard disk drive on the Raspberry Pi Beginner Startup guide, Linux Alex Eames Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

How to build a cheap powered USB hub
Blog link: How to build a cheap powered USB hub
 * vertical-align:top; border:1px solid #aaa;" |

How to adapt a cheap unpowered USB hub and an existing mains adaptor to build a Raspberry Pi power supply and powered USB hub in one. Intermediate Hardware, USB hub Alan Thew Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

5V Power Supply construction - How To
How to make a simple PSU for your Raspberry Pi - design and construction from scratch. Some experience with construction of electronic circuits is required. Intermediate Hardware, PSU Pinoccio Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Raspberry Pi UPnP Media Player
Blog link: Raspberry Pi UPnP Media Player
 * vertical-align:top; border:1px solid #aaa;" |

A guide on using GMediaRender to set up a Raspberry Pi as a UPnP media renderer. Beginner Startup guide, Linux Chris Baume Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Cross Compiling and Cross Debugging C++ with Eclipse from Debian Squeeze x64 to Debian Squeeze ARM (Raspberry Pi)
Blog link: Cross Compiling and Cross Debugging C++ with Eclipse from Debian Squeeze x64 to Debian Squeeze ARM (Raspberry Pi)
 * vertical-align:top; border:1px solid #aaa;" |

A guide on Cross-Compilation and Cross-Debugging C++ with Eclipse CDT. Intermediate Teaching, C++ Javier Bravo Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Setting up the Broadcom watchdog to reboot a hung Pi (Raspberry Pi)
Blog link: Setting up the Broadcom watchdog to reboot a hung Pi (Raspberry Pi)
 * vertical-align:top; border:1px solid #aaa;" |

A quick guide on setting up the watchdog process so that your Pi boots when it hangs or freezes. Adding "panic=20" is another good way of keeping your Pi running remotely. Intermediate Linux Philip Howard Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Communicating with RaspBerry via GSoap C++ Web Services
Blog link: Communicating with RaspBerry via GSoap C++ Web Services
 * vertical-align:top; border:1px solid #aaa;" |

A step by step guide about how to develop and deploy a C++ Web Service on our Raspberry using the open API GSoap. Intermediate Teaching, C++ Javier Bravo Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Setting up RPi as a Torrent Client and Server
Blog link: Setting up RPi as a Torrent Client and Server
 * vertical-align:top; border:1px solid #aaa;" |

An in-depth tutorial explaining how to set up Transmission torrent client for RPi. A number of common difficulties many users have faced are also solved. Beginner/Intermediate Linux, Torrents lezigg Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Setting up Raspberry Pi as a PPTP VPN Server
Blog link: Setting up Raspberry Pi as a PPTP VPN Server
 * vertical-align:top; border:1px solid #aaa;" |

Step-by-step tutorial explaining how to get Raspberry Pi running as VPN server. Also addresses setting up a dynamic DNS service on a Raspberry Pi. Beginner Startup Guide, Server Setup Brad Wells Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Running Ruby on Rails on Rasberry Pi
Blog link: Running Ruby on Rails on Rasberry Pi
 * vertical-align:top; border:1px solid #aaa;" |

Step-by-step tutorial explaining how to get Ruby on Rails running on Raspberry Pi. Intermediate Startup Guide, Server Setup Erik Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Streaming audio with MPD and Icecast2
Blog link: Streaming audio with MPD and Icecast2 on Raspberry Pi
 * vertical-align:top; border:1px solid #aaa;" |

Tutorial to set up MPD and Icecast2 for streaming audio files. Beginner Streaming, Audio, MPD, Icecast Steffen Müller Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Live mp3 streaming from audio-in with DarkIce and Icecast2
Blog link: Live mp3 streaming from audio-in with DarkIce and Icecast2 on Raspberry Pi
 * vertical-align:top; border:1px solid #aaa;" |

Tutorial to set up DarkIce and Icecast2 for mp3 live streaming from audio-in Beginner Streaming, Audio, DarkIce, Icecast Steffen Müller Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Control a Raspberry Pi with iPhone or iOS Device
Blog link: Raspberry Pi + iPhone: Control a RPi with an iPhone in 2 Minutes
 * vertical-align:top; border:1px solid #aaa;" |

A tutorial on controlling Raspberry Pi's GPIO with an iPhone or iPad wirelessly. Beginner GPIO Control, Hardware Interfacing Samrat Amin Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |


 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |

Reading ADC values over I2C using Python
Step-by-step tutorial for reading ADC values from the ABelectronics "ADC Pi" board using Python. Beginner Python, I2C, ADC AndrewS Available
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |
 * vertical-align:top; border:1px solid #aaa;" |




 * }

=References=