Thanks to Werner, I have a stable desktop on my Orange Pi 3 running the Armbian_20.05.4_Orangepi3_focal_current_5.4.45_desktop.img.xz (stable release). MOD can put this elsewhere if it belongs in tutorials and not bugs.
Here is how to step through his fix for anyone new to linux (like myself).
1. After flashing and setting root and user, the user will be logged into the graphical Xfce desktop environment (DE) and will freeze soon.
2. On the next reboot you can try to use one of the separate terminals instead of the DE. This is done by holding CTRL+ALT and selecting F1-F6
3. Quickly log into root account and type the following "sudo systemctl set-default multi-user" This will disable the DE next time you load.
4. The system may freeze as the DE is being loaded, so its best to reset and log into the bash shell with root again.
5. We have to setup a shell script that runs every boot, as the files that Werner overwrites get replaced every time. We will edit/etc/rc.local
6. Goto "cd /etc/ " and chose your favorite editor. I used vim, so I type "vim rc.local" to start editing.
7. Add the lines that Werner posted earlier to the rc.local file
echo userspace > governor
echo 756000000 > max_freq
echo 756000000 > min_freq
8. Save and exit to shell.
9. last step is to enable the DE again, type "systemctl set-default graphical"
10. Reboot and enjoy a stable desktop.
It took me about a day to have this working, mainly because of me not understanding the the GPU clock values were getting reset and not knowing unix commands & file structure. It reminded me as a kid messing with the autoexec.bat on a ms-dos machine. I am hoping to use an SDR and make this into a HD Radio Decoder (already built the NRSC-5 & GUI) , have it stream to an android head unit in my car & control via VNC.
Note also that many build scripts will attempt to use several cores to speed things up, but the RAM-to-core ratio of SBCs is often not very favourable to this.
You can usually add an option on the command line (often -j) to set the number of parallel jobs to run. 1 or 2 is probably more suitable than defaults like 4 or "number of cores" or "number of cores + 1".