Care and feeding of OpenCore on an old 2008 or 2009 Mac Pro. Run new MacOS on old hardware

October 12th, 2022 by EvilT

Original site for Opencore install

Quick guide to installing OpenCore on a Classic Mac Pro (cMP)


Periodic Updates to OpenCore

Opencore site to look for updated versions
Download the new version of open core, inside the archive you will find an a program called clover configurator, run it. The EFI partition mounting button on the left hand side of the menu.

Mount the EFI partition (that contains boot/data etc…) in clover configurator, then replace the contents of the BOOT and OC folders on the EFI partition with the new ones from the OpenCore file downloaded from updated versions below.
Do a factory reset (hold the power button 20 seconds till LED flashes)

Update MacOS under OpenCore

To install/update OS
* mount the EFI partition in clover
* open the config.plist in the OC folder
* Change CPUid1Mask from all AAAAAAAAAAAAAA* to match the CPUidData of AAAAAAAAACAAAAAAA* (around line 305)
* locate updateSMBIOS key in EFI/OC/Config (around line 988)
* Change value to false
* Reboot
* install update
* Reboot
* mount the EFI partition in clover
* reverse the 2 changes above
* Reboot

Disable ipv6 on Ubuntu – updated for 20.04

April 14th, 2022 by EvilT

So this used to work prior to 20.04
$ sudo nano /etc/sysctl.conf

add the following lines:

$ sudo sysctl -p

$ sudo reboot now

How to Disable IPv6 on Ubuntu Linux

Updated for version 20.04

$ sudo nano /etc/default/grub

Replace the following two lines


$ sudo update-grub

$ sudo reboot now

How to disable IPv6 on ubuntu 20.04

View system hardware and status information from Ubuntu 20.04 command line

April 14th, 2022 by EvilT

To install inxi (a full featured system information script) just use apt-get.

# sudo apt-get install inxi

-F gives full output

# inxi -F

Which looks like this

inxi sample screenshot

Github repository at: smxi


Surprise it will even give some info on the Mac installed via Homebrew. It is mostly OS, CPU, and network…

How to remove snaps from ubuntu 20.04 in one fell swoop

April 14th, 2022 by EvilT

So I don’t use snaps, but it seems that Ubuntu really wants me to. When I look at the performance monitor I can see that the snap store is using a nearly half a gig of memory. So it has to go…
The commands below should make it go away…

sudo apt-get purge snapd
rm -rf ~/snap
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd

Bicycle trainer in ERG mode for a quieter training session on the older Wahoo Kickr

March 19th, 2022 by EvilT

First some background. Per my understanding there are two modes that standard smart trainers support, ERG and Incline modes:

ERG mode is straight power control. If the smart trainer is set to 200 watts, then no matter how fast or slow you pedal the trainer will always keep the resistance as necessary to be 200 watts. Gear shifting makes no difference. So pick the smallest gear on your bike, so the trainer flywheel spins slower and makes less noise. In ERG mode you will often see numbers in Strava with ridiculous speeds and total miles per workout in comparison to the average wattage. This is because a person picked the biggest gear on their bike and was only pushing 100 watts. I don’t care how tiny you are you cannot do 30 mph at less than 100 watts.

Incline mode (called different things in different places) lets you set a fixed resistance usually set by incline %, weight, and a bunch of other stuff that would be calculated by your training app. The result is that like in real life if the back wheel moves faster, you are putting out more power given the same incline. So shifting will matter here.

The sound aspect of the information below supposedly only applies to the older trainers (Kickr models like my 1st gen). The newest models are supposed to be virtually silent. The observations on the freewheel effect should be consistent across any vintage.

I personally use a Wahoo Kickr in ERG mode, so I can control my power zones very specifically. I do not even have shifters on my trainer bike, as they are generally used to keep your pedaling within your cadence power band, which I can do by just keeping a set cadence on the trainer. I have it close to the lowest gear (smallest on front chainring and close to the biggest on the cassette in back) to make it as quiet as I can. As, per my understanding, the sound level is based on how fast the drive-train (pedals, chain, belt, flywheel) are going.

The one thing you will notice from this setup is the flywheel effect is much lower. If you lift weights, I am thinking a comparison of a cable machine (low speed flywheel) to free weights (high speed flywheel) is reasonably appropriate. The inertia of a fast lift with free weights makes it easier at the end of the movement. On a cable machine the effort required is more consistent over the movement. On the trainer, this effect is very much apparent when doing intervals. In a high gear, when the power drops from 120% to 60%, you will find it very difficult to reduce your pedal power without freewheeling the drive train. In a low gear these variations can be consistently controlled without freewheeling as the flywheel is spinning much slower, and the flywheel effect is less pronounced.

To find the right gear I start by setting the gear to the absolute lowest (which feels most like a pure resistance bike) then moved it up  a gear at a time to ensure that I could keep pressure on the pedals throughout intervals, but the flywheel effect was just enough to make it feel more like riding a bike on the road. Given that the objective of the trainer is to give you a consistent pedal power effort and not like real cycling, where inertia of your body moving forward makes up for gaps in power of your pedal stroke. Also you generally don’t setup a trainer session profile to replicate go up a hill for 30 minutes then coast back down the other side without pedaling for 5 minutes… :)

Danco Cartridge Repair Kit for Delta Single Handle Faucets 86971

February 19th, 2022 by EvilT

So I’m leaving this note for myself. The Danco replacement kit 86971


with stainless steel ball valve you get at Lowes or Home Depot contains 2 sets of springs and gaskets, but has no information on which one to use. Since my gaskets were worn out. I had no idea. After playing around with it I’ve decided my old 1985 vintage shower ball valve uses the short cone shaped springs and the short gaskets from the set…


I’ve left this here for my future reference. If it helps you in some way, that is an optimal outcome… :)


Installing GoldenCheetah on a 8 gig Raspberry Pi 4b – using Ubuntu 20.10 desktop – works as of February 2021

May 15th, 2021 by EvilT

I started building these directions back in January, but Ubuntu seemed slow, and so much was up in the air with new updates coming I decided to wait till they fixed the old Bison version in the GC distribution. I had a question about a raspbian build last week, so I thought I would post what I’m using for my training rig right now… Note I could not get this to work on anything less than an 8 gig rpi 4. If anyone has feedback on updates/changes required for this to be current, please leave a comment.

However, I think my go-forward direction is to install on Manjaro. Manjaro’s distro was much faster than Ubuntu on the Pi, however,  I could not figure out how to downgrade Bison, so the default scripts from GC would not work. Since this walkthrough is already long enough I decided to wait till GC upgrades their scripts to use a less antiquated version of Bison instead of listing how to modify the GC compilation scripts.

Ubuntu Server version
first install ubuntu 20.10 Server RPI image
$ sudo apt update?$ sudo apt -yf upgrade?$ sudo apt-get -y —purge autoremove?$ sudo apt-get autoclean
$ sudo reboot now

Now – Bison 3.7 is not compatible with GC. GC is developed on an very old version of ubuntu with a newer version of QT. To get a version of linux that supports the newer QT from the standard repository, you have to use Ubuntu 20.10 However all newer linux distros use a new version of bison that is not compatible enough to compile GC. So you have to downgrade bison to 3.5.1. We will do this straight from the Ubuntu 20.04 distribution site. This step may be deprecated in the future, but if the GC code is not updated to support Bison 3.7 until it is required it may be more than 5 years till it is compatible…

$ cd ~
$ wget
$ sudo dpkg -i bison_3.5.1+dfsg-1_arm64.deb

This next command is optional. It will stop ubuntu from upgrading/patching bison again . I do not do this next step. Instead, I have the bison downgrade in my “recompile GC script” so my system only downgrades to 3.5.1 whenever I compile GC, then it will upgrade it back to 3.7 when I do the normal Ubuntu system/security updates.
$ apt-mark hold bison

Install qt sdk and libraries?

$ sudo apt-get -y install build-essential git qt5-default qtcreator libqt5svg5-dev libqt5serialport5-dev libqt5charts5-dev qtmultimedia5-dev qtconnectivity5-dev libqt5webkit5-dev libusb-1.0-0-dev libical-dev libvlc-dev libvlccore-dev bison flex qtwebengine5-dev libgsl-dev

git should already be installed if not ‘$ sudo apt-get install git’

$ cd ~
$ mkdir projects?$ cd projects
$ git clone git://
$ cd GoldenCheetah
$ cd src
$ cp gcconfig.pri
$ nano gcconfig.pri
-> uncomment line #CONFIG += release static
-> uncomment line #GSL_INCLUDES = and change the value to GSL_INCLUDES = /usr/lib in instead of LIBUSB_INSTALL = /usr/local
-> uncomment line #GSL_LIBS = -lgsl -lgslcblas -lm
-> uncomment line #QMAKE_LRELEASE = /usr/bin/lrelease         {note: make sure you have a /usr/bin/lrelease, it should have been installed above}
-> uncomment line #QMAKE_CXXFLAGS += -03
-> uncomment line #LIBUSB_INSTALL = and change the value to LIBUSB_INSTALL = /usr/lib in instead of LIBUSB_INSTALL = /usr/local        {/usr/include on Ubuntu 20.10}
-> uncomment line #LIB_USE_V_1
-> uncomment line #LIBS += -lz

$ cd ~/projects/GoldenCheetah/qwt
$ cp qwtconfig.pri
$ cd ~/projects/GoldenCheetah?$ qmake -recursive      {note: if you see a bunch of translation language errors… just ignore for now}
$ make


Kick back and wait… It will take a while… :)  Hours….

Remove Microsoft Edge from Windows 10

May 15th, 2021 by EvilT

I wish Microsoft would take the hint and stop reinstalling their stupid Edge browser with every update but this still works…

  • open start
  • search for command prompt
  • right click then open command prompt as administrator
  • cd %PROGRAMFILES(X86)%\Microsoft\Edge\Application\8*\Installer
  • setup –uninstall –force-uninstall –system-level

Note the 8* above is prior to the 2021 May Windows 20H2 update. On at least one of my computers the version directory in the Application folder was 9* . So you may need to try:

  • cd %PROGRAMFILES(X86)%\Microsoft\Edge\Application\9*\Installer

There are walk-throughs on the web detailing how to keep Microsoft from reinstalling, but I have had no luck keeping Microsoft from ignoring the setting…




YouTube RSS feed – subscribe to channels you like without dealing with google much…

February 3rd, 2021 by EvilT

If you want to subscribe to a YouTube channel. The URL is:

so It's a Southern Thing youtube channel would be:

If you cannot see the channelid open a video on youtube in a browser view the page source in the browser, and search for channelid


Setting up and stripping bloat from new Ubuntu desktop 20.10 on the Raspberry Pi

January 30th, 2021 by EvilT

Install SSH
$ sudo apt-get install openssh-server -y
$ sudo nano /etc/ssh/sshd_config

open port 22 or whichever port you like
$ sudo ufw allow <port number you enabled>
$ sudo service ssh restart

Install Argon One Fan Controller
$ cd /tmp/
$ wget
$ chmod a+x
$ sudo ./

$ argonone-tempmon (is the command that will show temps)

Install locate
$ sudo apt install mlocate

Uninstall Bloat:
$ sudo apt-get remove -yf --purge libreoffice* thunderbird* aisleriot brltty duplicity empathy* example-content gnome-accessibility-themes gnome-contacts gnome-mahjongg gnome-mines gnome-orca gnome-screensaver gnome-sudoku gnome-video-effects landscape-common libsane libsane-common python3-uno rhythmbox* sane-utils shotwell* telepathy* totem* printer-driver*

Remove Snaps:
$ snap list (will show all installed snaps)
$ sudo snap remove snap-store
$ sudo snap remove gtk-common-themes
$ sudo snap remove gnome-3-34-1804
$ sudo snap remove core18
$ sudo snap remove snapd
$ sudo umount /var/snap
$ sudo apt purge snapd
$ sudo rm -rf /snap
$ sudo rm -rf /var/snap
$ sudo rm -rf /var/lib/snapd
$ sudo apt-get clean
$ sudo apt-get autoremove

Disable ipv6
$ sudo nano /etc/sysctl.conf
add the following 5 lines at the end of sysctl.conf:
#Disable IPv6

$ sudo sysctl -p

Now update Ubuntu

$ sudo apt update && sudo apt full-upgrade -qy --no-install-recommends
$ sudo reboot now

If you no longer can find system settings in gnome after this you can
$ sudo apt install gnome-control-center

Other stuff to make the machine livable…
$ sudo apt install indicator-multiload
$ sudo apt install doublecmd-qt


RSS/Atom feed URL for PHPBB including actual link for software announcements

June 29th, 2020 by EvilT

From the PHPBB docs below…

To get the official raspberry pi software announcements feed the URL is:


Open feed by URL
An example feed URL for use in a browser that support feeds or in a feed reader is:

Post-based feed Settings
Number of items = X (default 10).

Enable board-wide feed = Feed with X most recent posts from all topics in all forums.
URL = feed.php

Enable per-forum feeds = Feed with X most recent posts from all topics in the selected forum.
URL = feed.php?f=[ForumID]

Enable per-topic feeds = Feed with X most recent posts from the selected topic.
URL = feed.php?f=[ForumID]&t=[TopicID]

Topic-based feed settings
Number of items = Y (default 15).

Enable new topics feed = Board wide feed with the first post of Y most recent topics in all forums.
URL = feed.php?mode=topics

Enable active topics feed = Feed that shows Y last posts, not older then 7 days, for forums that have “Display active topics” enabled.
URL = feed.php?mode=topics_active
7 days = set in feed.php (can be changed by editing and install the modified feed.php file, refresh your browser cache):

WordPress themes and converting 2 dashes to a long dash – ndash vs mdash

June 26th, 2020 by EvilT

I’ve had a problem for a while where command line text that contains 2 dashes appears as a long dash when viewed in WordPress.

Even though the line below was entered in the WordPress visual editor with two keyboard dashes (ndash), for many people it comes across as one longer dash (mdash).

$ git clone git:// –branch release_3.5.0


One quick and dirty trick is to go to the text editor and replace normal dashes with straight html  &ndash; in the text editor.
Which will appear as:
$ git clone git:// ––branch release_3.5.0

Or if you are already in the WordPress text editor just highlight the line and select the “code” tab at on the top menu of the text editor, and you get
$ git clone git:// --branch release_3.5.0

For my purposes I think I will use code going forward to prevent any alteration of my intended syntax.

Disable MacOS creation of .ds_store files on network shares

June 26th, 2020 by EvilT

I’m always forgetting this command, so I’m archiving it here. This is a per user setting, so you will have to run it for every user.

$ defaults write DSDontWriteNetworkStores true

To turn it off again:

$ defaults write DSDontWriteNetworkStores false

How to subscribe to YouTube channels via RSS.

June 21st, 2020 by EvilT

YouTube – Take the name of the channel in this case:

Change the text in red above to the text in green below. The channel ID string is the same as is the primary url for



A list of the default RSS feed URLs for a WordPress blog

March 11th, 2020 by EvilT

WordPress Built-in Feeds

By default, WordPress comes with various feeds. They are generated by template tag for bloginfo() for each type of feed and are typically listed in the sidebar and/or footer of most WordPress Themes. They look like this:

URL for RDF/RSS 1.0 feed

<?php bloginfo('rdf_url'); ?>

URL for RSS 0.92 feed

<?php bloginfo('rss_url'); ?>

URL for RSS 2.0 feed

<?php bloginfo('rss2_url'); ?>

URL for Atom feed

<?php bloginfo('atom_url'); ?>

URL for comments RSS 2.0 feed

<?php bloginfo('comments_rss2_url'); ?>

The first four feeds display recent updates and changes to your site’s content for the different feedreaders. Of these, the RSS feeds are the most well known. The last feed example is used by RSS 2.0 feedreaders and does not show your site’s content. It only shows the comments made on your site.

To track the comments on a specific post, the post_comments_feed_link() template tag is used on single post pages like this:

<?php post_comments_feed_link('RSS 2.0'); ?>

Finding Your Feed URL

There are times when you want to tell someone your site’s feed address or URL, or you need it to submit it to search engines and directories, many of which now accept feed URL submissions. There are four possible URLs for each of your feeds. Any of these will work.

If you are using custom permalinks, you should be able to reach them through this usage:

Disable ssh known_hosts for local network

March 8th, 2020 by EvilT

So if you are like me and are always playing with operating systems and computers, you probably get tired of removing ssh known_hosts entries so you can get past the:

Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is…….


First delete your ~/.ssh/known_hosts file


a) To disable for all users put the entry below in the global SSH configuration file ‘/etc/ssh/ssh_config’

b) To disable for one user, put the entry below in the configuration file in the user’s folder ‘~/.ssh/config’

To disable key checking for all machines in the submit enter:

Host 192.168.0.*
   StrictHostKeyChecking no

TheraPure TPP201M – air purifier notes and cross reference

February 3rd, 2020 by EvilT

The UV lamp is an equivalent replacement lamp for the following:

Brand Model
Aqua Medic / Helix Max 80805
Aquatop 810281011080, R5WUV-SQ
Coralife 5 Watt
Fish Mate 5 Watt
General Electric GBX5/UVC G23
Hozelock Cyprio BioForce 250, BioForce 500, Easy Clear 500, Eco Clear 500, UVC 1311, UVC 1312, UVC 1326, Vorton 500
Light Sources, Inc. / LightTech LTC5W/G23
Osram Sylvania Ltd. 23396, GCF5DS/G23/SE/OF, HNS S 5W G23
Philips Lighting 381863, TUV PL-S 5W, TUV PL-S 5W 2P
Sankyo Denki GPX5
Tetra Pond PLS5, UV5, UV Mini Pond Clarifier
Therapure 101M, 201M, TPP2010
Ushio 3000321, GPX5
ViaAqua UVS 5B

Therapure TPP300D – notes and replacement parts

February 3rd, 2020 by EvilT

So I’m archiving everything I can find here as the website doesn’t include any info on this air filter anymore.

Per the link below this bulb can be crossed to a Philips TUV 8W UV-C Bi-Pin T5 bulb  299305. The generic referred to below is a 29930-5, which strange enough is more expensive on Amazon than the actual Philips 299305 bulb. Which appears to be an order of magnitude cheaper on ($3.95 vs. $13.95 on Amazon).

So it is not a true HEPA filter.

The CADR (Clean Air Delivery Rate) for Room Air Filters are broken down into three ratings where larger values are better performers:
1) Tobacco Smoke 10 to 450 CADR
2) Pollen 25 to 450 CADR
3) Dust 10 to 400 CADR

This product rates at:
Smoke: 137
Pollen: 155
Dust: 132

As you can see not all allergens are filtered by this unit.

It’s easy enough for you to purchase a 3M Filtrete Elite Allergen Reduction Filter 2200 MPR, used for HVAC systems, and use a wire cutter, to cut the filter to the desired size, using the Therapure Air filter as a template. Then tear out the Hepa Type filter and secure the new 3M filter within it’s filter frame. Insert to the filter (making sure that the direction of the filter is correct – shown on arrow on the 3M filter). Make sure you seal around the edges to make sure air does not leak past.

HVAC Filters use a different rating system than Portable Filter Systems, but to estimate: HVAC Filters use a MERV rating system from 4-20, greater being better performer. 3M’s Allergenic Filter is rated at 12, which is the highest for this class of material product and an excellent MERV Value.
Based on the ratings above, the TPP300D would probably be a MERV value of 8.

And some more

The filter size is 12.5 x 15. It’s a weird size, so yeah, you’re gonna have to cut it. 3M has a Filtrete in a 15 x 20 size, so that would be good to start with (you only have to cut one side), but they don’t have that size for the 2200 MPR. They carry the 1900 MPR in that size, but you have to buy a 6-pack to get it. Amazon doesn’t carry that size. I know Walmart carries the 1500 MPR in that size in a single pack.

If you want the same filter that came with the purifier, I know you can get filter replacements by calling Envion at 1-800-875-8577. The total cost for a filter is $39.94 including shipping. You just provide the model number TPP300D, and they will ask you for your address and payment info. They give you an estimated shipping time of 21 days, but they say it’s usually sooner. Then they’ll provide you with an order confirmation number.

And finally a review that had links to replacement parts:

This model is Rare in that it covers pretty much all areas of filtration. It has a cleanable HEPA filter. (Not True HEPA but very close) It also uses Two 8 Watt Germicidal UV Bulbs (UV-C) at (253.7 nm wavelength) these have been been proven to work in numerous studies and these bulbs are also used in Water filtration systems and are effective at eliminating microorganisms such as virusus, bacteria, mold and yeast. You can by cheap replacements here:

Since the bulbs last about 6000 hours most likely your bulbs need to be replaced. You can check if they’re working with a Watt meter. These bulbs draw an extra 16 Watts when on and almost 0 watts when burned out. If your filter is running but the wattage does not climb when the bulbs are turned on your need to replace them. You can also see a very faint purple glow if the room is 100% pitch dark (NEVER look at the bulb with the cover off very damaging to the eyes) Not only are these bulbs Germicidal and kill mold and viruses they also shine on a built in Photocatalyst filter. This is amazing design as the Photocatalyst filter (most likely uses a titanium dioxide catalyst) which removes VOC (Volatile Organic Compounds) such as household chemicals like toxic paint, chemical emissions from new carpet, and indoor air pollution. So not only do you have a particulate filter but also a mold , mildew, virus filter AND an Organic Vapor filter.

So change your Bulbs if they need it as they do more than you know.

Also the 300D has a large gap between the filter and the Filter cover. This allows room for adding an Activated Carbon Filter. You can get some here and theres enough material to make over 3 carbon filters with it:

The squirrel cage fan on these units can handle the extra active carbon filter as squirrel cage blowers don’t draw more energy when restricted, they draw slightly less. They work by centrifugal force, the air is basically thrown away from the center of the wheel at a high velocity that in turn causes a suction reaction. If the filter gets clogged or you add a carbon filter it creates slightly more vacuum so theres less air to toss and the motor draws less current preventing a burnout.

This unit also includes and ION generator. (Note the difference between ION generators and Ozone generator:

QUOTE: Ionizers utilize high voltage to add electrons to molecules and, in the case of air ionizers, the electrons are added to components of air, including oxygen. Negatively charged oxygen molecules are unstable and rapidly interact with other molecules with the reaction usually releasing oxygen. However, ionizers do not generate the amount ozone typical of ozone generators. Negatively charged ions may bind to and charged particles in the air or environment and help with neutralization or elimination.

So this unit may produce minuscule amounts of ozone (if you have the ION turned on) it’s nothing like a dedicated Ozone generator.

The unit will also produce very minuscule amounts of ozone from the bulbs light hitting the titanium dioxide catalyst plate on this machine. The amounts are so tiny you can’t smell them and are too small to be of any concern.

Overall for the price these are amazing machines. As for replacing the Main Filter. These are particulate filters, They catch particles in the air. As long as you can vacuum them, and they don’t restrict the air flow, don’t bother changing them until you notice an airflow restriction and reduced air flow. My 11 year old main filters still works perfectly. On this machine you really don’t need to replace particulate filters if then are not clogged. They actually filter slightly better when used. Just don’t allow them to be clogged. Vacuum them when needed. This machine uses several other types of filtering methods for mold, mildew, viruses and Volatile Organic Compounds so make sure the bulbs are working! Don’t forget… You can add an activated carbon pre-filter for Cooking smells and other odors for $2-3 each!


MacOS Homebrew FFMPEG no longer has an all options. Here is how to install with all options

January 12th, 2020 by EvilT
$ brew install ffmpeg $(brew options ffmpeg | grep -vE '\s' | grep -- '--with-' | tr '\n' ' ')

Update 2021-10-20: I found that the method above did not work for me in the Monterey beta. There was an older version
I believe to be less reliable (in ensuring that you have all the options, since they are hard-coded) 
that I've found elsewhere:
$ brew install nasm pkg-config texi2html aom fontconfig freetype frei0r gnutls lame libass libbluray libsoxr libvorbis libvpx opencore-amr openjpeg opus rtmpdump rubberband sdl2 snappy speex tesseract theora x264 x265 xvid xz ffmpeg


Compiling GoldenCheetah on Raspberry Pi 4 with Raspbian Buster – free bicycle trainer/analysis software

January 4th, 2020 by EvilT

Ok, I’m still testing, but I have instructions to get GoldenCheetah to compile and run on a Raspberry Pi 4. Please share if you have anything to add/improve. Hopefully this will start the process of getting official Rpi4 instructions added to the project…

If you are not familiar, GoldenCheetah is open source software that will control a smart trainer (wahoo kickr, tacx, etc…) via Ant+ or bluetooth. It will sync rides to/from strava and others. It has amazing (way beyond my ability or interest) performance analysis functions! It can download ride profiles from the free ERG repository. It really does too much to list here. I highly recommend it. Warts and all it still a great piece of software that some great people work hard to support, and it does most everything I need trainer software to do. Oh… and it doesn’t cost me $10 a month in subscription fees. So If I can build a dedicated computer out of a Rpi4 that will run GoldenCheetah for less than $100, then I’m a happy lad!


The main website is The project code is on github. Discussion is on Google Groups.

GoldenCheetah install on Raspberry pi 4 with – Raspbian Buster. I consider this the preferred way to do it. 

I used the 2019-09-26 version from – the middle size software ~ 1.1gigs.

You will need to follow the generic instructions to create a clean Raspbian boot SD card.

IMPORTANT NOTE: This only works for the current release version of GoldenCheetah V3.5.0. The newer betas require some modules that have not been added to the repository for the pi. I will update this article when the modules are available and I can get the pi to compile the current code.

Then let’s get the software up to date:

     $ sudo apt update     {if you have never run apt update it may fail saying library date is in future, just run it again}
     $ sudo apt -yf full-upgrade
     $ sudo apt-get -y --purge autoremove  {that is two dashes in front of purge "--purge"}
     $ sudo apt-get autoclean

     $ sudo timedatectl set-timezone America/Chicago {pick your own time zone, see them all by typing $ timedatectl list-timezones}
     $ sudo reboot now

Install QT sdk and libraries
     $ sudo apt-get install qt5-default qtcreator libqt5svg5-dev libqt5serialport5-dev libqt5charts5-dev qtmultimedia5-dev qtconnectivity5-dev

     $ sudo apt-get install libqt5webkit5-dev libusb-1.0-0-dev libical-dev libvlc-dev libvlccore-dev bison flex

Modify the USB device so you can use your ANT+ USB stick {no need if you are only going to use bluetooth}

     $ cd /etc/udev/rules.d

     $ sudo nano 52-garmin-usb.rules

  • Add (copy/paste) the following six lines to the file:  {there are no spaces before the lines
  • # Garmin ANT+ – USB1
    ATTRS{idVendor}==”0fcf”, ATTRS{idProduct}==”1004″, MODE=”0666″
    # Garmin ANT+ – USB2
    ATTRS{idVendor}==”0fcf”, ATTRS{idProduct}==”1008″, MODE=”0666″
    # hLine USB2 ANT2
    ATTRS{idVendor}==”0fcf”, ATTRS{idProduct}==”1009″, MODE=”0666″
  • exit and save the file

     $ sudo reboot now

Now download the code, make a few changes and start compiling!

     Git should already be installed if not ‘$ sudo apt-get install git’
     $ cd ~
     $ mkdir projects
     $ cd projects
     $ git clone git://
     $ git clone git:// --branch release_3.5.0

     $ cd GoldenCheetah
     $ cd src
     $ cp gcconfig.pri
     $ nano gcconfig.pri    

  • uncomment line #CONFIG += release
  • uncomment line #QMAKE_LRELEASE = /usr/bin/lrelease
  • uncomment line #QMAKE_CXXFLAGS += -03
  • comment out the line QMAKE_CXXFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64 by added a ‘#’ in front of it
  • uncomment line #ICAL_INSTALL =
  • Change the value Of the ICAL_INSTALL = (line above this one) to “ICAL_INSTALL = /usr/lib”
  • uncomment line #LIBUSB_INSTALL = /usr/local
  • Change the value Of the LIBUSB_INSTALL (line above this one) to “= /usr/lib” instead of “= /usr/local”
  • uncomment line #LIB_USE_V_1
  • uncomment line #LIBZ_LIBS = -lz

     $ cd ~/projects/GoldenCheetah/qwt

     $ cp qwtconfig.pri

     $ cd ~/projects/GoldenCheetah
     $ qmake -recursive  {if you see a bunch (22 or so) of translation language and missing file errors… you can ignore them}

     $ make

Now just sit back and wait. Should take about 1.5 hours with a good heat sink on a 2 gig Rpi4 :)
When it is all done you will have a GoldenCheetah executable file in your projects/GoldenCheetah/src directory. You can copy it wherever you like, if you want to run it from the command line here just type:

     $ ~/projects/GoldenCheetah/src/GoldenCheetah

I made a Desktop icon on Raspbian by doing the following:

     $ cd ~/Desktop

     $ nano GoldenCheetah.desktop

  • Add (copy/paste) the following ten lines to the file:
  • [Desktop Entry]
    Comment=Built for suffering
  • exit and save

Every time you use the desktop icon it will ask what you want to do with it. Select execute. You can disable this in Raspbian config files, but that is beyond the scope of this howto…..

Enjoy!  :)