3D Xmas Tree for Raspberry Pi

This was a very nice weekend project that I highly recommend that was created by the folks over at the PiHut. I have the working video above showing you how it works, the AsciiCast to show you how to set this up via the command just below this text.

Here is a direct link to the AsciiCast.

As a bonus, I have another video at the extreme bottom that will show you how to do this from the GUI on a Raspberry Pi. So many ways to set this up to cater to all of the different people out there. ūüôā

The easiest way to control your 3D Christmas board is with Thonny. This is pre-installed in Raspbian Stretch.

So you can click on the Raspberry icon > Programming > Thonny.

Once Thonny is open paste the following code into it and then click on “Run”

from gpiozero import LEDBoard
from gpiozero.tools import random_values
from signal import pause
tree = LEDBoard(*range(2,28),pwm=True)
for led in tree:
 led.source_delay = 0.25
 led.source = random_values()

Once you have done that it will prompt you to give the code you just pasted a file name (e.g. xmas.py).

It will save the code as that file name and it will then run the code. You can then start and stop the code as you wish.

7-Zip benchmark on Raspberry Pi

The 7-Zip Benchmark command


Measures speed of the CPU and checks RAM for errors.

You can install 7-Zip from the Raspbian Desktop – this is how:

  • Click on the Raspberry in the top left of your screen:
  • Go down to “Preferences” –> and click on “Add / Remove Software”:
  • When the new window opens, type “p7zip” in the search box and hit enter
  • Click both of the checkboxes¬†for “p7zip” (they should be the last 2 choices)

You can also install 7-Zip from the command line:

sudo apt-get install p7zip


b [number_of_iterations] [-mmt{N}] [-md{N}] [-mm={Method}]

There are two tests:

  1. Compressing with LZMA method
  2. Decompressing with LZMA method

The benchmark shows a rating in MIPS (million instructions per second). The rating value is calculated from the measured CPU speed and it is normalized with results of Intel Core 2 CPU with multi-threading option switched off. So if you have Intel Core 2 Duo, rating values must be close to real CPU frequency.

You can change the upper dictionary size to increase memory usage by -md{N} switch. Also, you can change the number of threads by -mmt{N} switch.

The Dict column shows the dictionary size. For example, 21 means 2^21 = 2 MB.

The¬†Usage¬†column shows the percentage of time the processor is working. It’s normalized for a one-thread load. For example, 180% CPU Usage for 2 threads can mean that average CPU usage is about 90% for each thread.

The R / U column shows the rating normalized for 100% of CPU usage. That column shows the performance of one average CPU thread.

Avr shows averages for different dictionary sizes.

Tot shows averages of the compression and decompression ratings.

Compression speed and rating strongly depend on memory (RAM) latency.

Decompression speed and rating strongly depend on the integer performance of the CPU. For example, the Intel Pentium 4 has big branch misprediction penalty (which is an effect of its long pipeline) and pretty slow multiply and shift operations. So, the Pentium 4 has pretty low decompressing ratings.

You can run a CRC calculation benchmark by specifying -mm=crc. That test shows the speed of CRC calculation in MB/s. The first column shows the size of the block. The next column shows the speed of CRC calculation for one thread. The other columns are results for multi-threaded CRC calculation.

With -mm=* switch you can run a complex benchmark. It tests hash calculation methods, compression and encryption codecs of 7-Zip. Note that the tests of LZMA have a big weight in “total” results. And the results are normalized with AMD K8 CPU in a complex benchmark.


#Runs the benchmark once - takes about 75 seconds on my
#Raspberry Pi 3B+ so please be patient...
7zr b
#You can run and save the output to a file if you wish
#You will not see it running this time while the benchmark
#is running - again please be patient for about 75 seconds
7zr b > 7zip-basic-benchmark-example.txt
#To view the output later or to share it with others
cat 7zip-basic-benchmark-example.txt
#Runs the benchmark twice and give you an average of the
#2 tests - this takes about 150 seconds for this test
7zr b ; 7zr b
#Runs the complete 7-zip benchmark - please be patient...
#There is more information @ http://www.single-board.com 
7zr b -mm=*
#Runs the benchmark 30 times and gives you an average
#This test takes a very long time on the Raspberry Pi
#Watch my YouTube video to see all the cores working on
#Conky - and I am using SimpleScreenRecorder and 
#Asciinema to record everything your seeing today.
7zr b 30

Click here for a direct link to the Asciicast in a new window.

To learn how to install Asciinema click here.

Here is the Asciicast:

NOTE: first 70 seconds don’t show anything as I was showing how to install 7-Zip through the Raspberry Pi GUI. You can see that in the YouTube video below.

To watch this YouTube video of the whole process in a new window, click here.

Simple Screen Recorder

Otherwise, click on the video below and enjoy!


I use several different software programs and hardware at the same time in this video. This is a culmination of hardware and software that I have used in my previous Asciicast, blogs, and videos. If you want to ask me specific questions I am always available via email, just be patient ūüôā


If you are interested in testing Single Board Computers like I am, you might just want to head over to “Performance Analysis Methodology” and read what is there. It is very interesting and worth the time if you’re serious about accurate results and not just a stack of data.