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?
- Raspberry Pi (recommended 1GB RAM)
- Micro SD Card (recommended pre-installed with Raspbian)
- Ethernet or Wifi
- 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 http://setiathome.berkeley.edu <your_email> <your_password>
The above command should result in the following output:
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 http://setiathome.berkeley.edu <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_tasksThis 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: http://setiathome.berkeley.edu/ 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.854502I 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! :)