Search icon CANCEL
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Raspberry Pi Zero Cookbook
Raspberry Pi Zero Cookbook

Raspberry Pi Zero Cookbook: Delve into the practical world of the Raspberry Pi Zero

eBook
€17.99 €26.99
Paperback
€32.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Table of content icon View table of contents Preview book icon Preview Book

Raspberry Pi Zero Cookbook

Chapter 1. Kick-Start Your Raspberry Pi Zero

In this chapter, we will cover the following recipes:

  • Understanding the standard connectors and test points
  • Reviewing power supply requirements
  • Choosing an operating system to install
  • Writing to an SD card with NOOBS
  • Using Windows to write a Raspbian image to an SD card
  • Using OS X to validate a Raspbian image and write it to an SD card
  • Using Ubuntu 16.04 to validate a Raspbian image and write it to an SD card
  • Identifying RCA solder points for analog video connections
  • Adding a USB extension over a USB OTG connector
  • Connecting to displays and changing the configuration settings
  • Logging in to the RPZ desktop for the first time, creating users, and rebooting

Introduction

The smallest, most inexpensive member of the Raspberry Pi family, the Zero, has once again improved upon its promise of computer accessibility to everyone in the world. At 40 percent of the size of the larger Raspberry Pis and a fraction of the cost (around 5 US dollars), the Raspberry Pi Zero opens more doors to portability, data collection, and experimentation while being affordable so that anyone can get started, anywhere, on learning about computers, Linux, and the Internet of Things.

With such a small form factor, there are some sacrifices made compared to the full-size Raspberry Pi. It uses the same single-core chip as the original Pi, so it is a bit slower than today's quad-core models. It also has limited physical connections, at least by default, compared to the larger Pi models. This chapter will explore some of the differences and how to work around them and get your Raspberry Pi Zero set up for more interesting recipes. The recipes here will focus on getting familiar with the Raspberry Pi Zero board, deciding on an operating system and methods for creating your first SD card, and getting enough things connected so you can start using your Zero.

Understanding the standard connectors and test points

If you've worked with a Raspberry Pi 1, 2, or 3 before, you will find the Raspberry Pi Zero to be similar, but quite a bit smaller. To accommodate such a small size, several connectors had to be miniaturized or reduced. Taking a close look, you will find that the same potential is contained in this small board. Throughout the following recipes, we will look at the Raspberry Pi Zero, its functional components, and how it compares to the larger Raspberry Pi boards. By the end of this chapter, you will have a running Raspberry Pi Zero!

Getting ready

To get your Raspberry Pi Zero online on HDMI, the following equipment will be needed:

  • A Raspberry Pi Zero
  • A micro-USB power adapter, 5 V/1.2 A out

    Note

    The Raspberry Pi documentation allows up to 2.5 A for the Pi's power supply, in case you don't want to use a powered USB hub. For this cookbook, we will start with a powered USB hub but work toward low-power and low-profile solutions.

  • A micro-USB OTG (On-The-Go) adapter
  • A 4-port powered USB hub
  • A micro-HDMI to standard HDMI adapter and HDMI cable or a micro-HDMI to standard HDMI cable
  • A micro SD card (4 GB minimum, 8 GB recommended)
  • A USB keyboard and mouse
  • A monitor that takes HDMI, or DVI with a DVI-HDMI adapter
  • A computer with an SD card interface running Mac OS X, Windows, or Linux

Note

A great resource for checking device compatibility are the Raspberry Pi pages in the Embedded Linux wiki ( www.elinux.org ). This has a rather large list of known compatible devices as well as known problematic ones and ones that will likely require a powered USB hub to operate.

How to do it...

Take a look at your Raspberry Pi Zero and examine each of the connections. They really fit a lot into a small space:

How to do it...

Raspberry Pi components

The numbers in the figure denote the following components:

  1. The GPIO header is the same one you will find on the Raspberry Pi B and later versions. The big difference here is that a header hasn't been soldered on. If you project requires your Raspberry Pi to be very thin, then you can solder your connections directly to the board. If you are using your Zero for prototyping, you can attach whichever header makes your life easiest. For this book, we will have the female 90-degree header soldered on for easy interfacing to the Adafruit Pi Cobbler.
  2. The Micro SD card slot is very much the same as previous versions, with the big difference being that it is push-in/pull-out instead of other boards' push-in/push-out slot.
  3. The mini-HDMI port works just like a regular-sized port, though it requires an HDMI mini-to-regular adapter or cable to connect to LCD monitors.
  4. The first USB port is micro-USB, and the only USB port available for data use on the Raspberry Pi Zero. For use with standard USB components such as mice and keyboards, you will need a micro-USB OTG adapter and a powered USB hub. As we move forward in the book, we will discover ways to run "headless" so that not all the connections are required, but to get started, you will want an adapter and a hub.
  5. The second USB port is the Raspberry Pi's power connection, which we will take a closer look at in the next recipe.
  6. This bus is to attach the Raspberry Pi's camera cable.
  7. While RCA video is no longer available on the Raspberry Pi Zero, we will hack it later to understand how to use the older, non-HDMI way to see video.
  8. Finally, on this side of the board, the connectors marked RUN are for resetting the Raspberry Pi. Shorting these connections will reset your Raspberry Pi.

The back side of the board contains test connector points:

How to do it...

Raspberry Pi Zero test pads

Not all the test points are documented for the Raspberry Pi Zero, but several are known:

Label

Function

Label

Function

PP1

5-V-micro USB

PP18

SD_DAT2

PP3

GND

PP19

SD_DAT3

PP4

GND

PP20

PP5

GND

PP22

PP6

GND

PP23

PP8

3.3 V

PP35

GND

PP9

PP36

PP14

SD_CLK

PP37

CAM_GPIO0

PP15

SD_CMD

PP38

CAM_GPIO1

PP16

SD_DAT0

PP39

SCL0

PP17

SD_DAT1

PP40

SDA0

Test points are great for validating that your Raspberry Pi is seeing the right voltage and/or frequencies. Many of the test points require an oscilloscope to observe and are thus beyond the scope of this book, but testing and troubleshooting prototypes is as easy on a Raspberry Pi Zero as it is on one of the larger boards.

Reviewing power supply requirements

One of the outstanding things about the Raspberry Pi Zero is its low power requirement, even compared to its siblings. The power is received through the second micro-USB slot on the board, and it should never need greater than a 5-V/1 A power supply. A well-configured Raspberry Pi in idle state can draw as little as 30 mA, and even under stress, it has not been shown to use more than 350 mA! Your Raspberry Pi Zero could run for free with a small solar panel and rechargeable battery pack. The Raspberry Pi 2 and 3, while more powerful, generally use from two to five times as much power to run.

How to do it...

You can also power your Raspberry Pi Zero over the GPIO ports, though it is important to be careful to have consistent and predictable power so you don't fry your board. The easiest method is certainly to find steady 5V source that works over micro-USB, but with careful design, you can run your board from any power supply with consistent 5 V and current up to 1 A. We will run our Raspberry Pi Zero on batteries later in this cookbook.

Of course, as you add peripherals, there will be a need to draw more current. If on USB, using a powered USB port will help a lot. When working with devices you have connected directly to GPIO, you just need to make sure your Raspberry Pi Zero power source can provide enough current to run the board and what's attached to it.

Until you have an SD card ready, you won't really be able to test the power completely - you can plug the adapter into the Raspberry Pi, but keep it unplugged from the power for now.

Choosing an operating system to install

Because the Raspberry Pi Zero uses the same ARMv6 chip offered in the original Raspberry Pi, it won't be ideal for the latest of all varieties of Linux that the newer generation of models can support. The clear choice right now for the RPZ is Raspbian Jessy. Adafruit Industries has a great set of instructions for installing Fedora Pi on the RPZ, and you can install pretty much any OS that runs on the ARMv6 chip, but the Raspbian Jessie release on the Raspberry Pi website is the most stable and easy-to-use distribution available for the RPZ. For this cookbook, we will use Raspbian Jessie.

How to do it...

On the Raspberry Pi website, the Downloads page offers both a full version (offline install) and a "Lite" (network install) version of the images. Select the full version when setting up the Raspberry Pi Zero, as you will not have network connectivity right away to download the parts missing from the Lite version. Once you have the full version installed, it is easy to get networking configured and everything updated, which we will cover later in the book. Download the latest full version of NOOBS from the Raspberry Pi website, and unzip it to a new directory. After the extraction is complete, you are ready to move on to the next recipe to install NOOBS on your SD card.

Just click on Download ZIP from a browser, and it will automatically begin:

How to do it...

The NOOBS download and SHA-1 signature

Writing to an SD card with NOOBS

New Out Of Box Software (NOOBS) is the easiest way to get started with any Raspberry Pi. All you need is a formatted SD card, ideally 4 GB or larger. The SD Association website has a formatter tool for Windows and Mac users to clean the card. Always ensure you are formatting the right card.

Getting ready

This is where you'll need your SD card. A 4-GB card is the minimum, but as card prices have dropped a lot over the years, I'd recommend an 8-GB or 16-GB card. I also always recommend hackers to get a couple of cards (for example, get two 8-GB cards instead of one 16-GB card), so you can always have a spare card to write a test operating system to while you have the other SD card in use. If you really get into Raspberry Pi development, you will find having spare SD cards a must.

If you are a Linux user, you should just skip ahead to the Raspbian installation on Ubuntu.

How to do it...

If you are an OS X or Windows user, you can use the SDFormatter utility from the SD Association ( https://www.sdcard.org/downloads/formatter_4/ ) to format your SD card:

How to do it...

The SDFormatter SD card utility

Once your card is formatted, copy the files from your extracted NOOBS download from the last recipe to the newly formatted SD card. Once this is done, you will be ready to finish building your Raspberry Pi Zero.

Once you've downloaded the file, unzip it and copy it to your SD card:

How to do it...

Installing NOOBS is as simple as copying files to a formatted SD card

There's more...

Writing a Raspbian SD card without NOOBS: If you want to skip the NOOBS setup and jump right into Raspbian or if you want to try out a different distribution to see how it works on your Raspberry Pi Zero, there are some great tools available to make this easy to do. First, you need to download the Raspbian image file from the Raspberry Pi website ( https://www.raspberrypi.org/downloads/raspbian/ ). Unzipping the file creates a single, larger file, called the image file. Be sure to download the full file, not the Lite version, as you will be starting without a network connection.

Using Windows to write a Raspbian image to an SD card

In this recipe, you will take a Raspbian image file (.img) and write it directly to an SD card using the free and easy Win32 Disk Imager utility.

How to do it...

On a Windows machine, the Win32 Disk Imager (https://sourceforge.net/projects/win32diskimager/ ) is an easy-to-use open source project for taking image files and writing them to your SD card. Insert your SD card, and select the unzipped image file you downloaded from the Raspberry Pi site:

How to do it...

Win32 Disk Imager for Windows

Once you have verified that you've selected the right .img file and the correct drive letter associated with your SD card, click on Write and wait for the process to finish. Once it completes successfully, eject the card and it will be ready to start your Raspberry Pi Zero.

Using OS X to validate a Raspbian image and write it to an SD card

If you are a Mac user, the process will be a little different from the Windows recipe, but still not too difficult. To do it, we'll leverage OS X's built-in *nix system tools.

Note

Mac OS X used to have a lot of options for easy GUI image writers, but many of them were not updated over time. After Yosemite 10.10.5, the Raspberry Pi community recommends using command-line tools. Fortunately, it is a pretty easy process.

How to do it...

The process for validating and copying a NOOBs installation on OS X is fairly straightforward:

  1. Open a Terminal window in OS X.
  2. Next, run shasum against the downloaded ZIP file to validate the signature:
    $ shasum ~/Downloads/2016-05-27-raspbian-jessie.zip 
    64c7ed611929ea5178fbb69b5a5f29cc9cc7c157
        /Users/ed/Downloads/2016-05-27-raspbian-jessie.zip
    

    How to do it...

    The Raspbian Jessie download and SHA-1 signature

  3. If the return value matches the SHA-1 signature provided on the Raspberry Pi downloads page, your file is good and can be unzipped:

    Note

    As the downloads change, the SHA-1 will change too, so you'll likely be comparing a different number to your shasum output.

    $ unzip ~/Downloads/2016-05-27-raspbian-jessie.zip 
    Archive:  /Users/ed.snajder/Downloads/2016-05-27-
        raspbian-jessie.zip
    inflating: 2016-05-27-raspbian-jessie.img  
    

  4. Next, look at the filesystem before inserting the SD card:
    $ df -h
    Filesystem      Size   Used  Avail Capacity  iused 
        ifree %iused  Mounted on
    /dev/disk1     232Gi  216Gi   16Gi    94% 56751574 
        4163032   93%   /
    devfs          205Ki  205Ki    0Bi   100%      710 
        0  100%   /dev
    map -hosts       0Bi    0Bi    0Bi   100%        0 
        0  100%   /net
    map auto_home    0Bi    0Bi    0Bi   100%        0  
        0  100%   /home
    map -fstab       0Bi    0Bi    0Bi   100%        0  
        0  100%   /Network/Servers
    

  5. Then, insert the SD card and run the command again:
    $ df -h
    Filesystem      Size   Used  Avail Capacity  iused 
        ifree %iused  Mounted on
    /dev/disk1     232Gi  216Gi   16Gi    94% 56751576 
        4163030   93%   /
    devfs          211Ki  211Ki    0Bi   100%      730 
        0  100%   /dev
    map -hosts       0Bi    0Bi    0Bi   100%        0  
        0  100%   /net
    map auto_home    0Bi    0Bi    0Bi   100%        0 
        0  100%   /home
    map -fstab       0Bi    0Bi    0Bi   100%        0 
        0  100%   /Network/Servers
    
    /dev/disk2s6    63Mi   20Mi   43Mi    32%      512 
          0  100%   /Volumes/boot
    
    
    /dev/disk2s1   1.1Gi  1.0Gi   92Mi    92%        0 
          0  100%   /Volumes/RECOVERY
    
    

  6. As you can see, /dev/disk2s6 and /dev/disk2s1 were added. This creates two partitions on disk2 - most SD cards will only have one, but however many there are mounted, you need to unmount them with diskutil:
    $ sudo diskutil unmount /dev/disk2s1
    Password:
    Volume RECOVERY on disk2s1 unmounted
    $ sudo diskutil unmount /dev/disk2s6
    Volume boot on disk2s6 unmounted
    

    Note

    Very important: Running dd on the wrong device will be disastrous - use with extreme caution!

  7. There is a critical difference now from typical Linux drives and dd use. Let's say you had the aforementioned configuration and see that the SD card disk is disk2. For the dd command, you will change this to rdisk2:
    $ sudo dd bs=1m if=./2016-05-27-raspbian-jessie.img 
        of=/dev/rdisk2
    
    3833+0 records in
    3833+0 records out
    4019191808 bytes transferred in 377.097088 secs (10658241 bytes/sec)
    

    Note

    The dd command can take a while to run, and doesn't provide any output while it is, so you can get that feeling it might be stuck. Be patient, depending on the speed of your SD Card it could take several minutes to copy. Newer versions of dd (on Ubuntu 16.04 and newer) include the status=progress flag, which will indicate copying progress.

  8. Finally, eject the disk, and you are ready to go!
    $ sudo diskutil eject /dev/rdisk2
    Disk /dev/rdisk2 ejected
    

Using Ubuntu 16.04 to validate a Raspbian image and write it to an SD card

If you are using Ubuntu 12.04 or earlier, the Ubuntu ImageWriter is a GUI tool that makes the installation very easy. If you are using a newer version, usb-imagewriter is not available, but SD cards can still be created from the command line. This will generally work on most flavors of Linux; check with your project's documentation to see the recommended method.

How to do it...

  1. I find the easiest method is to look at what is mounted. If the SD card is inserted, it should be automatically recognized:
    $ mount -l
    

  2. Another way to find the mount(s) on the SD card is looking using the dmseg command. Ubuntu's documentation recommends using dmesg to find out which device the SD card is. Insert the SD card and run this:
    $ dmesg | tail -20
    

  3. You'll get a response similar to this:

    How to do it...

    dmesg output after SD card insertion

  4. Before overwriting, you need to detach the disks that are mounted. In this case, sdd1 and sdd2 are the mounted partitions for device sdd, as shown in the last line of the image above.
  5. In Linux, your disk devices are usually identified by looking in the /dev/ folder for devices starting with sd (for example sda, sdb, sdc). A partition is a division of the physical volume so it can be treated as different devices, and they can be identified by having incremental numbers (for example sdd has partitions sdd1 and sdd2):
    $ sudo umount /dev/sdd1
    $ sudo umount /dev/sdd2
    

  6. After downloading the latest ZIP file of the Raspbian image from the Raspberry Pi website, you can validate it using the sha1sum tool:
    $ sudo sha1sum ~/Downloads/2016-05-27-raspbian-
        jessie.zip
    64c7ed611929ea5178fbb69b5a5f29cc9cc7c157
       /media/sf_Downloads/2016-05-27-raspbian-jessie.zip
    

  7. If your return value matches the SHA-1 value on the Raspberry Pi Downloads page, unzip the file, and run the dd command to write your image to the SD card. Make sure you are using the correct device!

    The dd command is for entire disks, so we reference sdd instead of the partitions sdd1 or sdd2. We don't want to duplicate things to partitions, we want to duplicate the entire disk, and whatever partitions your source has will be applied to the destination, our SD card.$ sudo dd bs=1M if=/path/to/raspbian-jessie.img of=/dev/sdd

Note

The dd command can take a while to run, and doesn't provide any output while it is, so you can get that feeling it might be stuck. Be patient, depending on the speed of your SD Card it could take several minutes to copy.

The output will be similar to this:

How to do it...

dd command input and output

After several minutes, your card will be ready to go!

Whichever way you decided to set up your SD card, you are just a few connections away from getting your Raspberry Pi Zero online!

Identifying RCA solder points for analog video connections

Let's say you don't have HDMI or need to output video to a device that only accepts the older RCA video connections. With a little bit of soldering, this is very easy! On the Raspberry Pi, you will see two pins marked RCA. By attaching this to a standard RCA plug, you can output your video through this instead of (or even in addition to) the HDMI output.

Getting ready

If you just want to get started with HDMI, this is not a required recipe, and you can skip ahead. You will need:

  • A soldering iron
  • An RCA video connector
  • Connections that can be soldered from the cable to the connector
  • The board itself

How to do it...

  1. The TV pins in the figure are the connections you can use to connect RCA video to the Raspberry Pi:

    How to do it...

    Raspberry Pi Zero RCA video

    Note

    "RCA Video" is technically referred to as Composite Video, and the connectors are typically yellow.

  2. Solder wires or connectors here that will connect to the RCA video plug.

Adding a USB extension over a USB OTG connector

OTG is an adapter connection that allows some devices' USB connections to work as hosts. On the Raspberry Pi Zero, we can use a USB OTG adapter to connect any USB device, whether it's a webcam, keyboard, or printer.

Getting ready

You will need a micro-USB OTG adapter. One end is the male micro-USB to connect to the Raspberry Pi Zero, and the other end is the female standard USB to connect devices (such as mice or keyboards). You'll also want a powered USB hub.

A typical USB OTG adapter will look like this:

Getting ready

Micro-USB OTG adapter

How to do it...

A USB OTG cable is really a must-have when starting out with the RPZ. It converts the micro-USB male connections to a standard USB female connection. With that and a powered USB hub, you will have no problem connecting a keyboard, mouse, USB storage, or devices such as Wi-Fi or Bluetooth. We will look at different ways of implementing more low-profile things such as Wi-Fi later, but a hub is the easiest way to get started.

All you need to do here is connect your OTG adapter to your Raspberry Pi Zero, and then, your powered USB hub to the other end of the OTG adapter. On your hub, connect your keyboard and mouse. Before too long, we will have the hub filled with peripherals, and then we will look at better ways to access (and accessorize!) the Raspberry Pi Zero.

Connecting to displays and changing the configuration settings

The Raspberry Pi Zero is as capable as its predecessors, offering full HDMI video output. The ports are miniaturized, but that doesn't stop you from connecting your Zero to an LCD monitor. Here's how!

Getting ready

Now that you have your USB set up, your final step is getting video output. If you went with the video RCA hack, you can use the HDMI port or RCA video to get going. For HDMI, you'll need a micro-HDMI to standard HDMI adapter (and standard HDMI cable), or an HDMI cable that has one end micro and the other end standard.

A typical standard-to-micro HDMI adapter looks like this:

Getting ready

Standard-to-micro HDMI adapter

We now have our HDMI adapter and cable connected, the SD card installed, and the USB OTG adapter ready to go:

Getting ready

Pi connected to USB OTG and HDMI

How to do it...

  1. Confirm that the SD card is inserted and that your video and USB connections are set, and connect the micro-USB power to an adapter. If you started with NOOBS, you will be taken to the OS selection screen. Right now, there isn't very much to select from. The primary reason is that the Raspberry Pi Zero doesn't yet have Internet capability, so a list of available operating systems cannot be retrieved. For now, it is as easy as clicking on the checkbox for Raspbian and the Install button in the top left. From there, you are a few minutes from your new Raspberry Pi Zero desktop!
  2. Once you click on Install, NOOBS takes care of the rest and sets up a brand new default Raspbian system on your SD card. The system will start quickly and take you right to the installation screen:

    How to do it...

    NOOBS OS selection screen

  3. When you select Install, NOOBS will take care of the rest and prepare your card with the Raspbian operating system:

    How to do it...

    NOOBS Raspbian setup

  4. After this is complete, the installer will have you click to reboot, after which you will be taken right into Raspbian.

    Note

    If you started by using a Raspbian image instead of NOOBS, you will jump right into Raspbian Linux, skipping over the NOOBS setup section.

Initial Pi configuration

  1. The first thing you want to jump into is initial configuration. The fastest way to start that is by opening a terminal window. That's the little computer screen icon three icons to the right of the Menu button:

    Initial Pi configuration

    The Terminal icon is just to the right of the File Cabinet

    Click on that and type this command:

              sudo raspi-config
    

    Initial Pi configuration

    The Terminal screen - you'll be here a lot

  2. If you are prompted for a password, the initial password for user pi is raspberry. The Raspberry Pi configuration tool contains several options:

    Initial Pi configuration

    raspi-config main options

  3. Let's start with option 1, Expand Filesystem. This will extend all of the space that is available on the SD card after making the image. After you select it, the screen will move back to the terminal, run some more commands, and come back to the configuration utility with a report:

    Initial Pi configuration

    Partition resize success

  4. Next, let's change the default password of the pi user. Select the second option, and you will be prompted to enter and verify a new password.

    Note

    It is a very smart move to change the default user for pi or deactivate that user entirely. As you start playing with your Pi and making it more accessible to the Internet, you also make it more susceptible to hackers and bots. Since everyone knows the default login and password to a Raspbian installation, leaving them as the default when having them open to the Internet will almost certainly lead to unauthorized access and your work being stolen, altered, or destroyed.

    Another good option to take care of right away are Internationalization options. You can set your local time zone and keyboard type in this section. You'll know right away whether your Pi is set to the wrong keyboard layout when you start trying special characters.

  5. Finally, before rebooting, let's go into Advanced Options and pick the fourth option, SSH. Enable the SSH server. This will allow you to use the Raspberry Pi Zero from any computer on the network, once you get it on the network:

    Initial Pi configuration

    Advanced options menu

The table below shows the options available in raspi-config and what they are used for:

Number

Raspi-config option

Function

Notes

1

Expand Filesystem

Extends all available space on the SD card

Run after initial boot

2

Change User PW

Changes the password for the pi user

Run after initial boot

3

Boot Options

Gives you different options to boot to desktop, with or without login

Covered in the next section

4

Wait for Network @ Boot

Waits to boot the Pi until a network has become available

Recommend keeping set to No

5

Internationalization Options

Settings for locale, time zone, and keyboard

Run after initial boot

6

Enable Camera

Enables the camera port on the Raspberry Pi

Enable if you have a camera

7

Add to Rastrack

Adds your Raspberry Pi to the Rastrack database

Optional, register at http://rastrack.co.uk

8

Overclock

Increase the maximum speed of the processor

Covered in next section; sadly doesn't work on the Zero

9

Advanced Options

Several different advanced configuration options

Enable SSH after initial boot.

0

About raspi-config

Information about the configuration utility

Logging in to the RPZ desktop for the first time, creating users, and rebooting

We've taken care of the initial configuration; let's wrap up this chapter by covering a few finishing touches in the configuration, creating users, and giving them power!

How to do it...

  1. After you select Finish on the raspi-config tool, it will ask whether you'd like to reboot. Select Yes, and the Raspberry Pi Zero will begin its power-down process. When it starts back up, it will take you right back to the Raspbian desktop. You can reboot the Pi anytime with this command:
    sudo reboot now
    

  2. Boot Options: After your reboot completes, reopen the Terminal screen and run sudo raspi-config again. Select the third option, Boot Options. There are four different boot mode options to choose from:

    How to do it...

    The Boot Options menu

  3. Here, you can choose to start the Raspbian desktop or just boot into a command-line interface. It also gives you choices on requiring logins or not; if automatic login is chosen, you won't need to enter the password, so if you want a little bit of security, select one of the options that require the user to log in. My preference is Text console, requiring user to login, because it gives you a bit of security and requires less CPU and memory than running the desktop. If I need the desktop, it is simple to start it with startx. You can do a lot with Linux just from the command line, so a lot of the time, the desktop GUI isn't necessary.
  4. Overclocking: Option 8, Overclocking, returns a rather un-fun message to the user. I'm not sure whether this is the latest version of Raspian's raspi-config program or whether it applies to both the Raspberry Pi Zero and the Raspberry Pi 3, but the same message was returned on both.

    An attempt to overclock from raspi-config does not return an optimistic response:

    How to do it...

    No overclock for you!

    It was discovered in late 2015 that overclocking options on the Raspberry Pi Zero only caused it to slow down, so the latest version of raspi-config does not assist with overclocking. This doesn't mean it is impossible, however-just not advised.

  5. Open the following file:
    $ sudo grep arm /boot/config.txt
    #uncomment to overclock the arm. 700 MHz is the 
         default.
    #arm_freq=800 
    

  6. This does hint that overclocking is still possible at startup using the config.txt file. Commenting out arm_freq=800 in the /boot/config.txt file to a higher frequency should work, although the Raspberry Pi community suggests that it doesn't, and perhaps even reduces performance. Even more interestingly, looking at the running settings of a Raspberry Pi Zero suggests that it is already being overclocked to 1 GHz, compared to the former setting of 700 MHz on older Raspberry Pi models:
    $ cat
         /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
    1000000
    $ cat
         /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    1000000
    $ cat
          /sys/devices/system/cpu/cpu0/cpufreq/
          scaling_available_frequencies
    700000 1000000
    

    This output suggests that it is already running at 1 GHz and has options to run from 700 MHz to 1 GHz. You can play around with overclocking, and I suppose it was possible to push the B+ Pis to the 1.1 GHz range-you will probably see too much instability from setting it to anything much higher than that. If it becomes unusable, you should be able to recover by commenting out your arm_freq change in the config.txt file from a stable machine. Now let's work on creating new users:

  7. Creating new users is very easy on Raspbian. Here, we will create one named rpz with a home directory located in /home/rpz:
    pi@raspberrypi:~ $ sudo adduser rpz --home /home/rpz
    Adding user `rpz' ...
    Adding new group `rpz' (1002) ...
    Adding new user `rpz' (1002) with group `rpz' ...
    Creating home directory `/home/rpz' ...
    Copying files from `/etc/skel' ...
    Enter new UNIX password:
    Retype new UNIX password:
    passwd: password updated successfully
    Changing the user information for rpz
    Enter the new value, or press ENTER for the default
            Full Name []: Raspberry Pi Cookbook
            Room Number []:
            Work Phone []: 123-456-7890
            Home Phone []: 234-456-7890
            Other []:
    Is the information correct? [Y/n] y
    

  8. This will create the new user's home directory and prompt you for the password. Once you have this set up, you can log on as this user. This will give the user their own home directory in /home/username and the ability to execute applications. The users are stored in a file called /etc/passwd.
  9. To look at your user, you can look at the end of this file:
    pi@rpz14101:~ $ cat /etc/passwd | tail -5
    lightdm:x:109:114:Light Display 
          Manager:/var/lib/lightdm:/bin/false
    pulse:x:110:116:PulseAudio 
          daemon,,,:/var/run/pulse:/bin/false
    rtkit:x:111:118:RealtimeKit,,,:/proc:/bin/false
    ed:x:1001:1001::/home/ed:/bin/bash
    rpz:x:1002:1002:Raspberry Pi Cookbook,,123-456
         -7890,234-456-7890:/home/rpz:/bin/bash
    

  10. The last entry is the user just created:
    rpz:x:1002:1002:Raspberry Pi Cookbook,,123-456-
          7890,234-456-7890:/home/rpz:/bin/bash
    

This breaks down to fields separated by a colon (:):

  • rpz is the name
  • x indicates that there is an encrypted password stored in the /etc/shadow file
  • 1002 is the user ID
  • 1002 is also the group ID, automatically generated when the user was created
  • The next few fields are user ID Information
  • /home/rpz is the home directory-the location the user will start in when they log on
  • /bin/bash is the default command shell-the shell that the user will use when logging in.

There's more...

Before logging on as your new user, you might want to give them the ability to do superuser things, like the pi account does. Let's take a look at how to give your new user more powers!

Note

What is this sudo thing anyway? If you are new to Linux, it probably seems strange to see a lot of these commands start with sudo. This command means superuser-do, which puts the command in a temporary elevated state. sudo is intended to prevent regular users from being able to do something they shouldn't (such as formatting a disk or deleting a filesystem), but it gives certain users powers to do those things if they specifically ask for elevation. It also logs attempts at trying to run things with elevated permissions that users were not given permission to do. It should become more clear as we move through the cookbook, but if you find yourself typing a command, failing, and then typing it again with sudo when you realize your mistake, you are already living the life of many experienced Linux users.

To give your user the ability to run as a superuser, use the visudo tool:

sudo visudo

This opens an edit window of the sudoers file, which will allow you to give your new user special permissions. Look down to where the pi user is already set up, and add rpz ALL=(ALL) ALL, like this:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL

rpz ALL=(ALL) ALL

This gives your user the same permissions as the pi user, but requires that you enter a password when executing something that requires elevated permissions. This way, you can prevent the unauthorized execution of things that only a superuser should execute.

You can try logging in as our new user and trying to sudo. The touch command creates an empty file wherever you tell it to. If you don't have permissions to write, the touch command will fail. We will try logging on as our rpz user and trying touch with and without sudo, in a directory that requires elevated permission to write to. Use the su command to log on as another user:

pi@rpz14101:~ $ sudo su - rpz
rpz@rpz14101:~ $ touch /opt/testsudo.deleteme
touch: cannot touch '/opt/testsudo.deleteme': 
      Permission denied
rpz@rpz14101:~ $ sudo touch /opt/testsudo.deleteme
[sudo] password for rpz:
rpz@rpz14101:~ $ ls /opt
minecraft-pi  pigpio  sonic-pi  testsudo.deleteme
      vc  Wolfram

Excellent! You now have superuser abilities (but remember, Spider-Man, with great power comes great responsibility), and whoever is executing them needs to know your password (which is only you, of course). If you'd prefer to keep the permissions the same as the pi user, you can sudo visudo the permissions again and set your user's settings to NOPASSWD: ALL, just like for the pi user.

There is a collection of user and group commands you can use beyond adduser: addgroup, usermod, and userdel are all good things to put in your administrator's toolbox. For pretty much any Linux command, adding --help (for example, useradd --help) or prefixing with man (man useradd) will provide you with instructions and options for what you can do with it:

rpz@rpz14101:~ $ useradd --help
Usage: useradd [options] LOGIN
       useradd -D
       useradd -D [options]
Options:
  -b, --base-dir BASE_DIR       base directory for 
        the home directory of the
                                new account
  -c, --comment COMMENT         GECOS field of the 
        new account
  -d, --home-dir HOME_DIR       home directory of 
        the new account
  -D, --defaults                print or change 
        default useradd configuration
  -e, --expiredate EXPIRE_DATE  expiration date of 
        the new account
  -f, --inactive INACTIVE       password inactivity 
        period of the new account
  -g, --gid GROUP               name or ID of the 
        primary group of the new
 account
  -G, --groups GROUPS           list of 
        supplementary groups of the new 
account
  -h, --help                    display this help 
        message and exit
  -k, --skel SKEL_DIR           use this alternative 
        skeleton directory
  -K, --key KEY=VALUE           override 
        /etc/login.defs defaults
  -l, --no-log-init             do not add the user 
         to the lastlog and
 faillog databases
  -m, --create-home             create the user's 
        home directory
  -M, --no-create-home          do not create the 
        user's home directory
  -N, --no-user-group           do not create a 
        group with the same name as
the user
  -o, --non-unique              allow to create 
        users with duplicate
(non-unique) UID
  -p, --password PASSWORD       encrypted password 
        of the new account
  -r, --system                  create a system 
        account
  -R, --root CHROOT_DIR         directory to chroot 
        into
  -s, --shell SHELL             login shell of the 
        new account
  -u, --uid UID                 user ID of the new 
        account
  -U, --user-group              create a group with 
        the same name as the user
  -Z, --selinux-user SEUSER     use a specific 
        SEUSER for the SELinux user mapping
Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Deep dive into the components of the small yet powerful Raspberry Pi Zero
  • Get into grips with integrating various hardware, programming, and networking concepts with the so-called “cheapest computer”
  • Explore the functionalities of this $5 chip through practical recipes

Description

The Raspberry Pi Zero, one of the most inexpensive, fully-functional computers available, is a powerful and revolutionary product developed by the Raspberry Pi Foundation. The Raspberry Pi Zero opens up a new world for the makers out there. This book will give you expertise with the Raspberry Pi Zero, providing all the necessary recipes that will get you up and running. In this book, you will learn how to prepare your own circuits rather than buying the expensive add–ons available in the market. We start by showing you how to set up and manage the Pi Zero and then move on to configuring the hardware, running it with Linux, and programming it with Python scripts. Later, we integrate the Raspberry Pi Zero with sensors, motors, and other hardware. You will also get hands-on with interesting projects in media centers, IoT, and more.

Who is this book for?

This book is for programmers and hobbyists who are eager to dive deep into the Raspberry Pi Zero. If you have basic or zero knowledge of the Raspberry Pi Zero, or if you looking for examples of ways to utilize the Raspberry Pi’s GPIO interface, then this book is ideal for you. Basic knowledge of Python will be beneficial, and experience with circuitry and electronics will be needed for the later chapters in the book.

What you will learn

  • Set up your Raspberry Pi Zero with the operating system, networking, and different interfaces
  • Get a hands-on introduction to Linux, Python, and shell scripts with the Raspberry Pi Zero
  • Become a master at driving GPIOs and controlling relays, motors, transistors, buzzers, audio, read switches, and interrupts with the Raspberry Pi Zero
  • Control GPIOs using the web interface and Node.js
  • Connect displays, LED matrixes, analog sensors, and digital sensors
  • Hack the Ethernet on the Raspberry Pi Zero
  • Make your Raspberry Pi Zero an IoT-based sensor node and remotely monitor your data
Estimated delivery fee Deliver to Norway

Standard delivery 10 - 13 business days

€11.95

Premium delivery 3 - 6 business days

€16.95
(Includes tracking information)

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Mar 24, 2017
Length: 422 pages
Edition : 1st
Language : English
ISBN-13 : 9781786463852
Vendor :
Raspberry Pi
Category :
Languages :

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Estimated delivery fee Deliver to Norway

Standard delivery 10 - 13 business days

€11.95

Premium delivery 3 - 6 business days

€16.95
(Includes tracking information)

Product Details

Publication date : Mar 24, 2017
Length: 422 pages
Edition : 1st
Language : English
ISBN-13 : 9781786463852
Vendor :
Raspberry Pi
Category :
Languages :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 92.97
Raspberry Pi Zero Cookbook
€32.99
Raspberry Pi Zero W Wireless Projects
€29.99
Python Programming with Raspberry Pi
€29.99
Total 92.97 Stars icon

Table of Contents

10 Chapters
1. Kick-Start Your Raspberry Pi Zero Chevron down icon Chevron up icon
2. Setting Up Physical and Wireless Connections Chevron down icon Chevron up icon
3. Programming with Linux Chevron down icon Chevron up icon
4. Programming with Python Chevron down icon Chevron up icon
5. Getting Your Hands Dirty Using the GPIO Header Chevron down icon Chevron up icon
6. Controlling the LEDs and Displays Chevron down icon Chevron up icon
7. Controlling the Hardware Chevron down icon Chevron up icon
8. Taking Digital Inputs to the Raspberry Pi Zero Chevron down icon Chevron up icon
9. Interfacing Sensors with the Raspberry Pi Zero Chevron down icon Chevron up icon
10. Cooking up Projects to Amaze the World! Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Full star icon Full star icon 5
(3 Ratings)
5 star 100%
4 star 0%
3 star 0%
2 star 0%
1 star 0%
Ivan Rivera Feb 04, 2021
Full star icon Full star icon Full star icon Full star icon Full star icon 5
The is great and have good examples of use. I would like to have additional sections that explain common problems when it is used specific sensor. Thank you.
Amazon Verified review Amazon
Federico Rasman Jul 25, 2018
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Un ottimo libro capace di spiegare il funzionamento della Raspberry Pi Zero in maniera esaustiva.E' un vero ricettario di idee e problemi risolti.Un buon punto di partenza per i programmatori Python RPZ.Esige la conoscenza dell'inglese, ma in ambiente elettronico/informatico questo è scontato.
Amazon Verified review Amazon
Ken Shim Jun 14, 2018
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Great book
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is the delivery time and cost of print book? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
What is custom duty/charge? Chevron down icon Chevron up icon

Customs duty are charges levied on goods when they cross international borders. It is a tax that is imposed on imported goods. These duties are charged by special authorities and bodies created by local governments and are meant to protect local industries, economies, and businesses.

Do I have to pay customs charges for the print book order? Chevron down icon Chevron up icon

The orders shipped to the countries that are listed under EU27 will not bear custom charges. They are paid by Packt as part of the order.

List of EU27 countries: www.gov.uk/eu-eea:

A custom duty or localized taxes may be applicable on the shipment and would be charged by the recipient country outside of the EU27 which should be paid by the customer and these duties are not included in the shipping charges been charged on the order.

How do I know my custom duty charges? Chevron down icon Chevron up icon

The amount of duty payable varies greatly depending on the imported goods, the country of origin and several other factors like the total invoice amount or dimensions like weight, and other such criteria applicable in your country.

For example:

  • If you live in Mexico, and the declared value of your ordered items is over $ 50, for you to receive a package, you will have to pay additional import tax of 19% which will be $ 9.50 to the courier service.
  • Whereas if you live in Turkey, and the declared value of your ordered items is over € 22, for you to receive a package, you will have to pay additional import tax of 18% which will be € 3.96 to the courier service.
How can I cancel my order? Chevron down icon Chevron up icon

Cancellation Policy for Published Printed Books:

You can cancel any order within 1 hour of placing the order. Simply contact customercare@packt.com with your order details or payment transaction id. If your order has already started the shipment process, we will do our best to stop it. However, if it is already on the way to you then when you receive it, you can contact us at customercare@packt.com using the returns and refund process.

Please understand that Packt Publishing cannot provide refunds or cancel any order except for the cases described in our Return Policy (i.e. Packt Publishing agrees to replace your printed book because it arrives damaged or material defect in book), Packt Publishing will not accept returns.

What is your returns and refunds policy? Chevron down icon Chevron up icon

Return Policy:

We want you to be happy with your purchase from Packtpub.com. We will not hassle you with returning print books to us. If the print book you receive from us is incorrect, damaged, doesn't work or is unacceptably late, please contact Customer Relations Team on customercare@packt.com with the order number and issue details as explained below:

  1. If you ordered (eBook, Video or Print Book) incorrectly or accidentally, please contact Customer Relations Team on customercare@packt.com within one hour of placing the order and we will replace/refund you the item cost.
  2. Sadly, if your eBook or Video file is faulty or a fault occurs during the eBook or Video being made available to you, i.e. during download then you should contact Customer Relations Team within 14 days of purchase on customercare@packt.com who will be able to resolve this issue for you.
  3. You will have a choice of replacement or refund of the problem items.(damaged, defective or incorrect)
  4. Once Customer Care Team confirms that you will be refunded, you should receive the refund within 10 to 12 working days.
  5. If you are only requesting a refund of one book from a multiple order, then we will refund you the appropriate single item.
  6. Where the items were shipped under a free shipping offer, there will be no shipping costs to refund.

On the off chance your printed book arrives damaged, with book material defect, contact our Customer Relation Team on customercare@packt.com within 14 days of receipt of the book with appropriate evidence of damage and we will work with you to secure a replacement copy, if necessary. Please note that each printed book you order from us is individually made by Packt's professional book-printing partner which is on a print-on-demand basis.

What tax is charged? Chevron down icon Chevron up icon

Currently, no tax is charged on the purchase of any print book (subject to change based on the laws and regulations). A localized VAT fee is charged only to our European and UK customers on eBooks, Video and subscriptions that they buy. GST is charged to Indian customers for eBooks and video purchases.

What payment methods can I use? Chevron down icon Chevron up icon

You can pay with the following card types:

  1. Visa Debit
  2. Visa Credit
  3. MasterCard
  4. PayPal
What is the delivery time and cost of print books? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela