BOINC (Berkeley Open Infrastructure for Network Computing) is an open-source middleware system used for distributed computing. Originally developed to support SETI@Home, the platform has since grown to support many different projects from many diverse domains such as mathematics, linguistics, medicine, climatology and others.

For this tutorial, we are going to configure the raspberry pi to execute workloads for the SETI@Home project. For those of you who aren't aware, SETI@Home is a distributed computing project that enables you to volunteer some of your computer's resources in order to aid the search for extraterrestrial intelligence. SETI@Home searches for possible evidence of radio transmissions using observational data from the Arecibo Observatory and the Green Bank Telescope, the observational data is sent to the main server, split down into small chunks in frequency and time, and then distributed to the volunteers on the network to analyse, process and send back to the main server once complete.

You can take part in other projects using the BOINC platform, however not all of them will be compatible with the raspberry pi, you can find out more by visiting the BOINC projects page.

What you will need?

  1. Raspberry Pi (recommended 1GB RAM)
  2. Micro SD Card (recommended pre-installed with Raspbian)
  3. Ethernet or Wifi
  4. SSH connection


Firstly, as always, make sure your system is up to date:

  $ sudo apt update
  $ sudo apt upgrade

Now you can install the BOINC command line:

  $ sudo apt install boinc-client

Done! BOINC is now installed and you you are now ready to start installing projects.

Getting started with SETI

If you don't already have an account, go and sign up at the SETI@Home project page. Once you have done this, you will need to query the project site for an account key:

  $ boinccmd --lookup_account <your_email> <your_password>

The above command should result in the following output:

  status: Success
  poll status: operation in progress
  account key: <your_account_key> 

Copy the account key, and then run the command below to attach your BOINC client to your SETI@Home account:

  $ boinccmd --project_attach <your_account_key>

Finally, start BOINC:

  $ sudo /etc/init.d/boinc-client start

That's it!, your account should now be active and your pi should start receiving workloads, to view current tasks, just issue this command:

  $ boinccmd --get_tasks

This should result in something similar to the following output:

======== Tasks ========
1) -----------
   name: blc45_2bit_guppi_58543_66421_HIP34115_0022.4686.409.22.45.226.vlar_0
   WU name: blc45_2bit_guppi_58543_66421_HIP34115_0022.4686.409.22.45.226.vlar
   project URL:
   received: Tue Jul 16 02:40:07 2019
   report deadline: Sat Sep  7 07:39:48 2019
   ready to report: no
   state: downloaded
   scheduler state: uninitialized
   active_task_state: UNINITIALIZED
   app version num: 806
   resources: 1 CPU
   estimated CPU time remaining: 21100.854502

I hope you had fun setting up this cool and worthwhile little project on your pi, if you run into any trouble or would like to add anything then please feel free to let me know! :)