I think I may have determined the cause of random gpSP emulation freezes -- overheating.
I searched how I can minimize somehow the heat using software and/or configuration alone. I came across the
temp_limit config.txt variable. Documentation says below:
temp_limit
Overheat protection. Sets clocks and voltages to default when the SoC reaches this Celsius value. Setting this higher than default voids warranty. Default 85
Using this config variable will cause a small solid red block icon to appear in the upper right corner of the screen similar to the rainbow icon that gets shown whenever the Pi is receiving insufficient voltage/current. See pic below:
[spoiler="overheating icon"]

[/spoiler]
I was hoping that if I set this to a lower value, say
50 from the default 85, I can get the RPi2 to automatically underclock and maintain a certain temperature level. However, it was not the case.
I was able to play Mario Kart reliably at the 50-ish Celcius level but reaching 60+ Celsius, emulation would freeze. I researched further and found out that one can monitor the RPi's temperature by using script "/opt/vc/bin/vcgencmd measure_temp", so I used this to check on the temperature. I thought of adding a cooling fan internally but the question is would it be sufficient? So I tried to use our living room fan to cool off my GB Pi 2. Temp log below:
Temp level when emulation froze:
Code: Select all
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=62.7'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=62.7'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=62.7'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=62.7'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=62.7'C
This is when I cooled off the GB using a stand fan. Notice how gradually the temp dropped.
Code: Select all
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=55.1'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=54.6'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=54.1'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=51.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=50.3'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=49.2'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=47.6'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=47.1'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=44.4'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=43.3'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=42.2'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=40.6'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=39.0'C
I then removed the GB from the fan and quickly the temp rose:
Code: Select all
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=43.3'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=44.4'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=45.5'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=45.5'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=47.1'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
At this point, I left the GB to cool down once again and thought of determining what would be the lowest temp I can get with a constant cooling fan directed towards the GB:
Code: Select all
temp=44.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=44.4'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=43.3'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=42.8'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=38.5'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=38.5'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.4'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=36.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $ /opt/vc/bin/vcgencmd measure_temp
temp=37.9'C
pi@retropie:~ $
It appears the lowest temp I can get with a fan directed to the RPi2 is
37 degrees Celcius average. Edit: Starting temp from a cold boot:
40.1 degrees Celcius
I think with the heat generated by the screen, the PB 1000C and the battery (though slightly), all contribute to the heat inside the case. I've already checked eBay for cooling solutions and thinking of modding my build to get a small cooling fan and heat sink added but the question is how effective would it be?
Anyone else experiencing overheating with their Pi Zero, Pi 2 and Pi3 on their GB builds? Has anyone came up with an effective solution? Any ideas appreciated. Thanks!