Pages Menu
TwitterRssFacebook
Categories Menu

Posted by on Jul 21, 2014 in Getting Started, Raspberry Pi, Single Board Computers | 14 comments

Getting Started with Raspberry Pi

Getting Started with Raspberry Pi

So I have had Raspberry Pi for around three years now, but I never had a chance to write something about it. Now that the Raspberry Pi Model B+ and Raspberry Pi 2 Model B are released, I thought I should have done more justice to the one I have, and here it comes! I am using Raspberry Pi Model B for this post, but it should be good for any model.

And before you start thinking that this is an obsolete tutorial, please note that the Raspberry Pi Foundation will keep Model B in production as long as there’s a demand for it. This is meant to continue to support the industrial customers.

A brief introduction to Raspberry Pi (henceforth abbreviated as RPi) can be found here. The first thing that you would want to do with your RPi is to install and run an operating system (OS) on it. But even before that, you might as well know how it should be connected. Check out this cool video from Raspberry Pi’s website.

Contents

Things you’ll need

Things you’ll need in this tutorial are:

  • Raspberry Pi (Model A, B or B+) – any model will work for this.
  • Micro-USB adapter and cable – to power up the RPi. The power adapter should be able to provide at least 5 volts 750 mA current. The RPi is rated a minimum of 750 mA, but if you intend to hook up power consuming devices to the USB ports (like keyboard, mouse), I would suggest you to go for at least 1 A, whereas 2 A is recommended. You can go for your phone’s charger as well. I am using my HTC One’s charger rated at 5 volts 2 amps.
  • SD card (for Models A and B) – at least 4 GB (8 GB or more recommended, up to 32 GB) to install and store the OS image.
  • MicroSD card (for Model B+) – at least 4 GB (8 GB or more recommended, up to 32 GB) to install and store the OS image.
  • Ethernet cable – an RJ-45 10/100 CAT5e LAN cable for internet connection. This is needed if you are going for network-based NOOBS installation. Otherwise it is not needed for this tutorial, but it is recommended.

You’ll need the following things for this tutorial, but they are optional for all the future posts.

  • HDMI (to HDMI/DVI) cable – this is to connect a display device (like monitor, TV, TFT/LCD screens). You must not forget that RPi is a computer after all, and computers need a display device.
  • RCA analog cable – this is to be used only if you wish to connect your “old” home TV to your RPi.
  • Keyboard and mouse – to connect to your RPi computer. Try to go for smaller ones that consume less power.
  • SD/MicroSD card reader – to connect SD card to your computer to install the OS image into it. These days many computers come with one such already built in, so check it out first. Once you install your OS, you wouldn’t need it again.

Things that are optional are:

  • Powered USB hub – in case you are planning to connect more than two USB devices. It is recommended that you go for a power USB hub rather than an un-powered one since more devices will demand more current.
  • Case – for protection and making your RPi look fancy.
  • Audio device – if you aren’t connecting your TV via HDMI, then you’ll be missing out on the audio. For that, the RPi has an on-board 3.5 mm audio jack, to which you can connect your headphones, earphones, speakers, or even your home theater system! This is purely optional, we are not demonstrating any audio applications in this tutorial, but you are encouraged to try it out!

But I don’t have a monitor/TV! What do I do?

Good question! I was stumped with the same thing when I was starting off. The answer is really simple. You can log into your RPi remotely via SSH and view the desktop environment by running a VNC server on your RPi. You’ll be able to use your PC to view the desktop of your RPi, use your PC’s keyboard/mouse to control your RPi, as well as share your PC’s internet connection with your RPi. Wait for my next post and I’ll show you how!

Using NOOBS to Install OS

The simplest and fastest method to get up and running with your RPi is to use the New Out Of Box Software (aka NOOBS). It formats and partitions your SD card and installs your desired OS on it. It is a little too simple to discuss it here. The Raspberry Pi Foundation has created an amazing video for this, which I decided to share rather than writing about it. Check it out! You can download the latest version of NOOBS from here.

Manual Installation of OS Images

To install OS images manually, you would need to get hold of them in the first place. At the present, you can find pre-built images of six OS which you can download from here. Apart from these, you can also build a custom Linux image for your RPi, which is outside the scope of this post (we’ll dedicate a post on how to build custom Linux image for RPi using the Yocto project soon).

The steps discussed here can be used for any of the OS images, but for the purposes of this tutorial, we will download and install the Raspbian (Debian Wheezy) image onto an SD card and then boot the RPi with it. At the time of writing this post, the latest image is the 2014-06-20-wheezy-raspbian.img. So download the zip file from the downloads page and then extract it. Make sure you download the latest version available, especially if you want to run them on the new RPi Model B+. Older versions wouldn’t work on it.

As mentioned on their Wiki page, Debian does not support RPi’s ARM11 CPU. The Raspbian OS has been modified and built exclusively for the RPi and includes updated versions of some software and some non-free third party packages pre-installed (like Oracle Java and Wolfram Mathematica).

The entire installation process can be categorized into the following steps. The steps are the same whether you’re using Linux, Mac or Windows, however the methodology is a little different for Windows.

  1. Download OS image.
  2. Unzip the file.
  3. Format your SD/microSD card.
  4. Find out the mounted disk ID.
  5. Write the .img file to the disk ID.

Windows

If you are using Windows to transfer the OS image to the SD/microSD card, then there’s a GUI called Win32 Disk Imager that you can use. Here are the steps:

  • Download the OS .zip file and extract it using your favorite unzip tool (like Winzip, 7zip, or Windows native unzip tool, etc). Upon extracting you should have the .img OS image.
  • Insert your SD/microSD card into your card reader. It’s always recommended to format the card first to FAT32 file system (FAT16 won’t work).
  • Once your card is formatted, it should mount on its own. Go to My Computer and note the drive letter number assigned to your card.
  • Download and install Win32 Disk Imager application. It is a freeware and can be downloaded from here, and then open it. If it shows an error, just click OK and continue.
  • Browse to the image file, choose your SD card device, and click “Write”. Check out the screenshot below. And that should be it. The write process could take a while, so be patient!

Windows-1

Linux/Mac

If you are using Linux or Mac to prepare your SD card, then we use the dd command line tool. It should be pre-installed. There are a couple of GUI applications available these days as well, but it’s always beneficial to learn to use the dd tool.

As usual, the first step would be download and unzip the OS image. You can unzip it using the GUI or command line, anything is fine. In linux, you can unzip by typing the following in the terminal window:

unzip <name-of-distribution>.zip

For me, it was the following:

unzip 2014-06-20-wheezy-raspbian.zip

This unzips the approx 800 MB .zip file into a 3 GB .img file. This is the reason I asked you to go for a minimum 4 GB SD card. Screenshot is attached below.

Linux-1

The next step is to determine where your SD is being mounted. The trick is simple – we list all the disks before and after inserting the SD card. The disk added to the list will be the one assigned to the SD card.

In order to list the disks mounted, type in your terminal window:

df -h

In Linux you would see something like this–

Linux-2

If you’re using a Mac, you would see something like this–

Mac-1

Next, insert your SD card and then type in the command again. You would see something like this for Linux and Mac–

Linux-3

Mac-2

You can clearly see that an extra line has been added to the listing. This is the one that refers to your SD card.

On a Linux system, the file system could be listed as /dev/sdxx or /dev/mmcblkxxx, whereas on a Mac, it could be listed as /dev/diskxsxxx. I think it’s a good time to take a detour and discuss about Unix file systems. If you are familiar with Unix file system notation, then please skip to the next section.


Detour: Unix File Systems

In Unix based OS (like Linux and Mac), there’s no letter drive number associated to any disk or it’s partition. Every disk exists as a file in the /dev directory and is mounted somewhere else.

For instance, on Linux various disks are assigned the sdxy notation, where x refers to the disk and y refers to the partition. Example, /dev/sda and /dev/sdb refer to two separate disks (like hard disk and SD card). And if it shows up as /dev/sda1 and /dev/sda2, it means that the sda disk has two partitions – 1 and 2.

In some Linux distributions (like Ubuntu), all the disks follow the sdxy notation, whereas in some (like Mint), hard disks and removable drives show up as sdxy whereas multimedia cards like SD cards show up as /dev/mmcblk0, /dev/mmcblk1, etc. and their partitions (if any) show up as /dev/mmcblk0p1 and /dev/mmcblk0p2. Whatever the case may be, the basic idea remains the same, which I hope you have understood.

In case of Mac, all the disks show up as /dev/disk0s2 and /dev/disk4s1. The earlier one refers to the second partition of disk0 and the latter one refers to the first partition of disk4. The underlying concept is the same.

Another important thing that is worth noting is that even though the disk file exists in /dev directory, the disk is mounted somewhere else. In the screenshots attached above, you can note that the SD card is mounted at /media/max/Untitled in Linux and at /Volumes/ABC in Mac. The names “Untitled” and “ABC” are the names of the disk. This means that all the files contained by the SD card can be accessed from these locations. This is totally different from /dev/mmcblk0 or /dev/disk4s1, which are supposed to be used only by the OS kernel in order to issue commands like read, write, open, close, etc. to the SD card.

Also, note that the disk on which the OS is running is always mounted as root directory /.

Let’s get back…

Next step is to unmount the partition (do not eject the disk, just umount it. You can do this from the disk utility GUI or from the terminal as follows (replace mmcblk0 and disk4s1 with your disk number). Also note that in Mac, the command is unmount whereas in Linux it is umount (not unmount).

For Linux:
umount /dev/mmcblk0

For Mac:
unmount /dev/disk4s1

The next step is to run the dd. Here is how you run it:

dd bs=4M if=<path-to-name-of-distribution>.img of=/dev/xxxxxx

bs stands for “block size”. We choose the block size as 4 MB, which should work most of the times. If it doesn’t, choose 1M.

if stands for “input file”, which should be the full path to the .img file that you downloaded. If you are in the same directory, you can simply type the name of the .img file.

of is the “output file” where dd should copy the image file, which should be the entire disk file (not any partition of it). So, if you have your SD card mounted at /dev/sdb1, you should write to /dev/sdb. If it is /dev/mmcblk0p1, it should be /dev/mmcblk0. If it is /dev/disk4s1, it should be /dev/disk4.

And of course, this command requires root level privileges. So if you aren’t logged in as root, you’ll need to type in sudo before the command.

For me, I had to type in the following–

For Linux:
sudo dd bs=4M if=2014-06-20-wheezy-raspbian.img of=/dev/mmcblk0

For Mac:
sudo dd bs=4M if=2014-06-20-wheezy-raspbian.img of=/dev/disk4

Again, this operation takes a while, and there’s no feedback from dd. So it might appear frozen for some time (sometimes more than 5 minutes). Don’t fret, go make yourself a cup of coffee, drink it, relax and come back!

Mac-3

Linux-4

On a Mac, if the above operation fails, try replacing diskx with rdiskx. And if it reports an error like dd: bs: illegal numeric value, replace 4M with 4m. This should help.

Once this is done, type in the following command to ensure that the write cache is flushed and it’s safe to unmount your device–

sync

Setting up your Raspberry Pi

That’s it! You’re all set to set up your RPi now! Setting up your RPi is easy. Just follow these steps:

  • Insert your SD/micro-SD card into the slot at the back of your RPi. This should always be the first step (recommended). Never ever remove it from the RPi as long as it is powered up!
  • Connect one end of the HDMI cable to your RPi, the other end to your monitor/TV.
  • Connect one end of the Ethernet cable to your RPi, the other end to your modem/router/PC.
  • Connect the keyboard and mouse to the USB ports directly.
  • Connect any other peripheral you wish to connect (could be any other USB device, camera module, audio device, or any other circuit/device connected to the GPIO pins).
  • Connect the micro-USB power supply. This should always be the last step. And your RPi starts booting up! Rejoice! :)

The following video by the Raspberry Pi Foundation shows you how to do the same.

A connected Raspberry Pi looks something like this–

Raspberry Pi Connected

Raspberry Pi Connected

First Boot

The first boot of Raspberry Pi takes some time since it initializes and configures some things. If it is Raspbian, it also displays you the raspi-config software configuration menu, something like this–

raspi-config

raspi-config

You can set some parameters if you want. I would suggest you to expand the file system to fill up the entire space in your SD card and enable SSH. The SD image written by dd and/or the Win32 Disk Imager is only for 3 GB. If you have an SD card of capacity 8 GB, you would like to expand the file system to utililze the entire space. You would be asked to reboot your RPi after this. The reboot would take some time as well since it needs to resize the root file system.

So while I was doing this, I recorded a video as well. It is not professional by any means, but it should still show you what to do and how to do.

Once the reboot is successful, you should see the RPi asking for you to login. If you don’t already know, your login id is pi and password is raspberry. In Linux terminal, when you type in the password, it usually doesn’t show up on screen. This could be baffling if you aren’t familiar with Linux. Don’t worry, just go ahead and type in the password. It will accept it! :)

And when you can see the following, it means that you have successfully logged into your RPi! Woohoo! Congrats!

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login: pi
Password:

... some messages ...

pi@raspberrypi ~ $

Starting your Desktop Environment

The Raspbian comes in with LXDE (Lightweight X Desktop Environment) as its default desktop environment. To start that, simply type in startx in the console in front of you.

startx

This should start the visual GUI desktop for you, and you should see something like this–

LXDE Desktop Raspberry Pi

LXDE Desktop Raspberry Pi

Beautiful! Isn’t it! And cute too! :) Go ahead, play around with it! If you have your Ethernet cable connected, then you can browse internet using the Midori browser.

Opening Raspberry Pi Software Configuration Tool (raspi-config)

You can open the RPi Software Configuration Tool from the terminal as well. Go to LXTerminal and type in the following–

sudo raspi-config

This will reopen the same configuration tool that you encountered during your first boot.

ShutdownShutting Down your Raspberry Pi

One last thing that you should know is how to turn off your RPi. Definitely disconnecting the power supply directly is not the way to go. If you haven’t noticed already, there’s a Shutdown icon on the desktop. Double click it and it asks for your confirmation.

You can Log Out from the desktop environment by clicking on the little red power button on the bottom left of the LXDE’s screen. But this DOES NOT shut down your RPi. It merely closes the desktop environment, that’s it.

Alternatively, you can also shut down using the terminal. Go to LXTerminal (or the console if you don’t have LXDE running), and just type–

sudo halt

And if you wish to restart your RPi, type–

sudo reboot

Summary

So yeah, that’s pretty much it to get started with your Raspberry Pi! We learned how to transfer the image of your desired OS to your SD/microSD card using Windows, Mac and Linux. This can be done either using NOOBS or manually. The manual process can be categorized into five major steps–

  1. Download OS image.
  2. Unzip the file.
  3. Format your SD/microSD card.
  4. Find out the mounted disk ID.
  5. Write the .img file to the disk ID.

Then we had a quick walk-through of what happens when you boot up your RPi for the first time. We learned how to access and change settings using the software configuration tool raspi-config. More importantly, we learned how to turn off your RPi as well!

So that’s it for now folks! In the next post, we’ll learn how we can log into RPi remotely and still view the desktop environment! Subscribe to stay tuned! And if you have any questions, there’s always a comment box down below. Please refrain from posting codes since they will be deleted anyways. Be smart, use pastebin.com to share codes! Thanks for reading! :)

References

Written by Mayank Prasad (aka Max)
support@maxEmbedded.com

Last updated on July 22, 2014.

14 Comments

  1. Thanks max,

    I like to read your blog :) good to see Raspberry PI in action :)

    • Thanks for the kind words Kalpesh! Seems like you’re the first reader of this post! :)

  2. Can you tell me why I go for Raspberry pie not for microcontroller, may be silly question!!

    • Good question! The answer is simple.. if you don’t find a reason to go for it, just don’t! You’ll realize on your own why do we need it. :)
      Raspberry Pi is intended to teach programming to kids as the demand of computer programmers keep on increasing. But you can also use it for your embedded projects. The fact that it runs Linux makes it non-deterministic. If you want real-time performance, go for running bare-metal programs on microcontrollers (like the way you do now). Eventually you’ll find that your applications are growing bigger and bigger and you need improved hardware and software performance. That’s when you opt for a 32-bit processor running OS like Linux which will make your tasks a lot lot easier! But until then, this is a really good learning platform. Give it a shot.. it’s pretty cheap!

  3. That is an excellent write up Max. You’ve awesome presentation skills.I can say this is more than a Cookbook for a beginner.Thumbs up…..

    • Thank you Saravanan! I really appreciate that! :)

  4. Good to see that you have jumped on the pi. :)
    I saw that you also ran python based port selection app on it.
    It is much more fun to work on the C level and create some new drivers on it. ;)

    • Thanks! Yeah, that comes next! :)

  5. Dear Sir,

    I would like to write device driver on raspberry pi. how can i start writing device driver programming on Rpi. can you please provide with one example. where can i find the kernel source in Rpi?

    • Great! You can read the book Linux Device Drivers which is available online for free here. Start with learning how to write simple character drivers. You can find the Linux source here.

    • hai dileep.. do u know how to write a DD in linux…>?

  6. hello sir, can u help me out in interfacing zebrnic usb camera to raspeberrypi b model.

  7. I have good knowldge in electronics devices and hardware,but i m nil in programming.so if i start to learn my programing by using rasbery pi will it help me grow up more or stil its like to run compiler or interpreter on an ordaniary PC?…whr we write a code and execute nd see whats runing on monitor.lol:|

Trackbacks/Pingbacks

  1. Using the Raspberry Pi GPIO with Python - maxEmbedded - […] you got your Raspberry Pi, installed an OS and using it just like your computer. Great! Now what? You…
  2. Raspberry Pi - Headless Setup - maxEmbedded - […] you got your hands on your Raspberry Pi and booted it up. Great! But what if you don’t have…

Leave a Reply

%d bloggers like this: