Setting Up the Zybot-Software




This Instructable is part one of a six-part series of building the Zybot. In this Instructable we will be setting up the software side of the Zybot. The ZYBO (Zynq Board) is an embedded software and digital circuit development platform.

We are going to be setting up Ubuntu and other software that will set up the ZYBO to be used on the Zybot. For the easiest installation you will need:

  • ZYBO and power adapter
  • 8 GB Micro SD card and adapter
  • WiFi Adapter
  • Webcam
  • USB Splitter
  • LAN Cable
  • Mouse
  • Keyboard
  • Computer Monitor
  • HDMI cable (and adapter that connects to your monitor)

Before you start, be sure to boot up your computer in a Linux system. (I'm using Fedora)

If you want to learn how to dual-boot, check out this Instructable!

Step 1: Preparing Your Micro SD Card for Partitioning

If you plug in your ZYBO now and turn it on, the only LED that will turn on is the red PGOOD light. This is good, because right now nothing is booting up on the ZYBO. For us to change this, we need to mount Ubuntu onto our Micro SD card.

Before we can put Ubuntu onto the Micro SD card, we have to partition the Micro SD into two parts. Right now, we are still using the computer, I'll mention when we switch over to the ZYBO.

  1. Identify your SD card
    1. With your Micro SD card not plugged in, open up a terminal (CTRL + t), and enter the command lsblk. This will "list block devices."
    2. Plug your Micro SD card into your computer (with an adapter if need be). Press lsblk again and note what wasn't there before. For me, the sdb is the Micro SD card.
    3. Take note of where the card is located (i.e. sdb).
  2. Unmount the Micro SD Card
    1. If your Micro SD card has already been partitioned, there will be more than just sdb1 in sdb to unmount.
    2. We want to unmount the Micro SD card so we can partition the Device, to do this we go back into the terminal and enter the command sudo umount /media/josh/7D38-6641
      1. The underlined portion for this step will be slightly different for each user, but just use the path of the Micro SD card that lsblk gave us. Any portion that may change per user I will underline for ease of use.
      2. If you run the command again, it should just give you a not found notice.
  3. After all the partitions of the Micro SD card have been unmounted, we can (re)partition it using the fdisk command.
    1. Enter the command sudo fdisk /dev/sdb. This will start the fdisk menu running.
    2. Press p(rint)and hit enter, this will display the partitions of the Micro SD card.
    3. Press d(elete)and hit enter, if there are multiple partitions already, be sure to delete all of them.
    4. Check out the last picture to see what your terminal should look like.

Step 2: Partitioning Your Micro SD Card

Now that everything is deleted, we can partition our Micro SD Card. We are going to create two partitions.

  1. Press n to create the first partition. (Image 1)
    1. Press p for primary partition.
    2. Partition 1.
    3. Select default location for the beginning of the first partition, mine was 2048, but this might be different.
    4. Enter +1G for last sector, we just want one Gb of memory for the first partition. This finished up this partition.
  2. Press n to create the second partition. (Image 2)
    1. Press p for primary partition.
    2. Use defaults as all the rest of the choices for partitioning.
  3. Now that we have both partition created, we want to write these to the Micro SD Card. (Image 3)
    1. Press w.
    2. This will write partitions and automatically exit fdisk.

Step 3: Creating Your File Systems

This is the final step of partitioning the Micro SD Card, so we can almost move onto installing Ubuntu!

  1. Enter sudo mkfs -t vfat -n ZYBO_BOOT /dev/sdb1into the terminal, this will format partition 1 and title it ZYBO_BOOT
  2. Enter sudo mkfs -t ext4 -L ROOT_FS /dev/sdb2into the terminal, which will format partition 2 and title it ROOT_FS. This will take a little bit of time.

Now your Micro SD Card is all partitioned!

We can test this out by unplugging and plugging the Micro SD back in and run lsblk again, then ZYBO_BOOT and ROOT_FS should be in sdb1 and sdb2.

Step 4: Setting Up the Linux File System

In order for us to run Ubuntu on the ZYBO, we need to download Linaro Release of Ubuntu.

Go to this link and select the last link. (it should be 533.4M size)

After that is downloaded we need to copy it onto the Micro SD Card. This will take a few commands.

  1. mkdir -p /tmp/linaro
  2. Go into the Downloads folder by entering the commandscd Downloads
  3. Now that your into Downloads enter the command sudo cp linaro-precise-ubuntu-desktop-20120923-436.tar.gz /tmp/linaro/fs.tar.gz

  4. Now go into the the linaro folder we created, you can do this by using the command cd /tmp/linaro.

  5. If everything went correctly, you can use the command ls and the only thing that should print out is fs.tar.gz

  6. Finally, we want to enter the command sudo tar zxf fs.tar.gz to unpack the tar file. This will take a bit of time, and should produce a binary file.

Step 5: Moving the File System Into the SD Card

Before we can move anything over, we have to unmount the partitions like we did earlier.

  1. sudo umount /media/josh/ZYBO_BOOT
  2. sudo umount /media/josh/ROOT_FS
  3. lsblk
    1. If everything was unmounted successfully, sdb should have sdb1 and sdb2, but no title on the right-hand side.

Now that everything is unmounted, we can move the file system into the Micro SD card. For this, we need to be in /tmp/linaro folder. (We should be there already)

Follow these commands:

  1. mkdir -p /tmp/sd_ext4
  2. sudo mount /dev/sdb2 /tmp/sd_ext4
  3. cd binary/boot/filesystem.dir/
  4. sudo rsync –a ./ /tmp/sd_ext4
    1. This will take a bit of time.
  5. sudo umount /tmp/sd_ext4

Now that everything is copied over, you should be able to check out ROOT_FS and there should be folders in it, ZYBO_BOOT should still be empty.

Step 6: Adding Boot Loader

The last step we need to do before the ZYBO board will work, is moving the attached files into the ZYBO_BOOT partition.

  1. Download and extract the files inside.
  2. After you extract everything, you'll see three binary files and a files folder.
  3. Move all these into the ZYBO_BOOT partition that we created. The binary files are used to boot the ZYBO, files is going to be used in the next instructable, but putting it onto our ZYBO now is going to save us some time.

Step 7: Setting Up the ZYBO Board

Now we can move over from computer to the the ZYBO! For us to use the ZYBO we have to set up a few things.

  1. Insert the Micro SD Card into the SD MICRO slot.
  2. Attach your LAN cable to the ZYBO and insert the other end into your router (or any place that has internet).
  3. Attach the HDMI cable to the ZYBO and plug it into your monitor.
  4. Attach power adapter.
  5. Attach usb splitter and plug Mouse and Keyboard into usb splitter.

Turn on the ZYBO and (after a little time) the Desktop should be booted up.

Open up a terminal on the ZYBO and enter the command sudo apt-get install linux-firmware.

The linux-firmware allows us to connect to the wifi.

That finished up our software set-up of the ZYBOT, other instructables in this collection will focus on hardware and other relevant parts to setting up the ZYBOT.

Now you can move onto the next Instructable (Setting up the Zybot Server).



  • Backyard Contest

    Backyard Contest
  • Classroom Science Contest

    Classroom Science Contest
  • Sensors Contest

    Sensors Contest

28 Discussions


1 year ago


Thanks for the great!!! instructable

I did everything as per the tutorial and i used hdmi to vga converter as i have only a VGA monitor. At the time of booting monitor show " Input Not Supported".

What should I do?

Can anyone help me please.

thanks in advance


2 years ago

I am using an HDMI to DVI converter and I used simple move (mv) command to move the files from folder (after extracting it) to ZYBO_BOOT partition. Can any one of this has anything to do with me not being able to get the output on the screen?


3 years ago

Any solution for sound? new fpga configurations tested?


3 years ago


Have you solved the problem with the VGA ?

Thank you!


3 years ago on Introduction

i have a problem trying to use a usb-serial converter conected to zybo. first, in linaro doesn't recognize the device (lsubs just shows "Bus 001 Device 002: ID 2341:0010" ). For previous tutorial ( ) I compiled a driver for cdc-acm.c to get cdc-acm.ko file and work it, but for this system when i try to install with $insmod cdc-acm.ko shows "$ insmod: error inserting 'drivers/cdc-acm.ko': -1 Invalid module format ". maybe i need the source of the kernel you use to compile the uImage file. What kernel you use??. or something else i miss?


4 years ago on Introduction


This tutorial is excellent, great work. I followed every step and have desktop linaro working fine, however, after plugging a webcam into the zybo the linux kernel can't find it. After some investigation there was no /dev/video0 where the vwebcam usually is, also i could not find UVC module needed to display usb webcams.

i have used cheese and guvcview but neither seem to work.

Will this Zybo-Software release with the current kernel show a webcam image?



4 years ago on Introduction

Hello, another question:

Is there a way to play sound in the Linaro system installed in this tutorial?

By default no sound devices are found in the sound configuration settings.

Thank you.

2 replies

Reply 4 years ago on Introduction

You definitely can! The audio section of the ZYBO reference manual gives some more insight on it. Unfortunately, I can't help you beyond that, but our forums should be able to!


Reply 4 years ago on Introduction

Yes, I have used those capabilities before, but not in a project with an operative system, and in that project I included the audio codec hardware component found in the Zybo Base System.

According to the reference manual the audio codec is connected to the SoC through the programmable logic, so a hardware component is needed to use it.

The correct question to ask is: Does the Zybot hardware support audio?

Thank you very much.


4 years ago on Introduction

Did you write a custom driver to display the desktop UI?

I have lots of projects that use custom AXI peripherals. A graphic UI would be nice, but I know nothing about device tree and custom video drivers.

Since everything on the web is for the Zedboard, I'm having a hard time finding information about this.

If you could give some pointers on how to do this I'd be gratefull

4 replies

I personally didn't write the driver (our applications manager did), but it's something I'm working on. You can check out the that my coworker wrote, you could check out the Digilent Forums, they'll be able to help you out too.

In that tutorial, the author said:
"The Zybo doesn't have a graphics card so it can't run linaro. To do that you would need a board such as the zedboard, or use a desktop remotely. Unfortunately you can't run linaro directly on the board."

But you are clearly running Linaro on the Zybo.

The driver uses the HDMI module that is present on the Zybo base system, right? It is available anywhere?

Thanks, I made it work with Linaro and archlinux. A tutorial to build the kernel with those "custom drivers" would be nice.


4 years ago on Introduction

I have a question related to the system implemented in this tutorial:

Can I use the external ports with this system? I plan to use them as digital outputs to control things like a relay (through a driver obviously) and also to perform serial communications with other modules.

Can I use the buttons, switches and LEDS in the board?

Or do I have to start over with a Vivado project?

1 reply

4 years ago on Introduction

I followed the tutorial and I'm getting the following error:

modprobe: FATAL: Could not load /lib/modules/3.17.0-xilinx-00114-gda2d296-dirty/modules.dep: No such file or directory.

And I get no GUI. The system boots, but only works on console. I tried startx command, but only the background appear.

Any help would be greatly appreciated. Thank you very much.

3 replies

Reply 4 years ago on Introduction

You don't have to worry about the modprobe error, it's just something that pops up on the system (we're working on getting rid of the error).

I'm not sure about the GUI, but I've got a couple of ideas. I would try using a different monitor first thing, the driver is written to auto-size to the screen, but we haven't tested it with 1080i video (all our monitors have 720p or 1080p).

It's also possible that your microSD card doesn't have the right kind of formatting, another person commented below: "Turns out my ZYBO_BOOT partition did not have a FAT32-32KB Cluster format. For some reason I could not do this with 1GB so I had to up it to 4GB."


Reply 4 years ago on Introduction

Thank you very much.

After entering the command startx the GUI is running but I can't see the menu. If I try to take a screen shot using the screenshot key on the keyboard, the screenshot dialog appears. I can get the mouse cursor to appear if I press Ctrl+ Alt + L. But still I get no menu.


Reply 4 years ago on Introduction

I was looking around some and I think this might help (from here, on the very last page)

"...this problem is reported quite frequently when the
(Micro)SD card is a non-Sandisk. The graphical software reads a large amount of
data from the card when starting up, and is therefore likely to be the notable victim of
an (Micro)SD card that generates read errors."

I'm using a Kingston 8GB class 10 MicroSD card, and that hasn't had any problems either.