[OBSOLETE] Scripts for building VC4 & Processing for Raspbian
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


IMPORTANT: VC4 driver released as part of Raspbian

Before trying to use this script, give Raspbian release February 2016 a try. More information


This script is designed to build the latest Kernel, Mesa and XServer packages, along with their dependencies from Git. After compilation the generated files are injected into a current Raspbian image, to be tested on a Raspberry Pi or Raspberry Pi 2.

Modifying a local Raspbian installation

  1. Download the latest Raspbian and put it onto a SD or microSD card, depending on which version of the Raspberry Pi you want this to run on
  2. In the initial setup screen (raspi-config) make sure to enlarge the filesystem, set the correct keyboard layout (the default is a British one), and enable the SSH server
  3. Clone this repository onto your Pi by running git clone https://github.com/gohai/vc4-buildbot.git
  4. Run the script by executing sudo ./BuildRaspbianVc4.py

Generating/uploading a Raspbian image

To also create and upload an image file to a remote server make sure to:

  1. Modify at least UPLOAD_HOST, UPLOAD_USER, UPLOAD_KEY, UPLOAD_PATH in PackageRaspbianVc4.py
  2. Provide a private key file for use with the host you want to upload the file to (e.g. sukzessiv-net.pem, not part of the repository)
  3. Make sure that your host is in the known_hosts file of the root user. This can be accomplished by running sudo ssh to connect to your host.
  4. Install either screen and run the script by launching screen and then executing sudo ./PackageRaspbianVc4.py or consider setting up a cron job like this: 00 21 * * * root /home/pi/vc4-buildbot/PackageRaspbianVc4.py

Output files

  • *-image.zip: a zipped Raspbian image file, equivalent to the ones available from raspberrypi.org
  • *-issue.json: a JSON encoded array containing information about all the packages used for the build, including the commit they were at when building (useful for bisecting). This file is also available at /boot/issue.json.
  • *-overlay.tar.bz2: a tarball of files that can be added to a vanilla Raspbian image or installation. Make sure to run sudo ldconfig after initial bootup.
  • *-processing.tar.bz2: a tarball of a recent build of Processing for ARM (alpha)
  • *-successs.log.bz2 or *-error.log.bz2: build log

Moreover, the kernel configuration used is available as /boot/kernel.img-config (Raspberry Pi), and /boot/kernel7.img-config (Raspberry Pi 2). The script does modify /boot/config.txt if needed.

Testing on a Raspberry Pi

  • Make sure to resize the root partition (first item in the menu that comes up upon first boot, or raspi-config)
  • Run startx -- /usr/local/bin/Xorg (booting the custom image one can also use plain startx as the compiled X Server is set as default)
  • For troubleshooting, take a look at dmesg and /usr/local/var/log/Xorg.0.log.

Debugging crashes

To see why the X server unexpectedly crashes, run startx as root (sudo startx -- /usr/local/bin/Xorg). This will produce a file named core in the current directory after a crash.

Fire up the debugger with sudo gdb /usr/local/bin/Xorg core. The GDB command where shows the location of the crash, while info frame lists the captured variables, arguments and registers in the current frame.