Let's Bang GoPiGo3 OS v3.0.1

Update:

Running your print_voltages.py script did not work.

I made the following changes:

# out = mean(x)  <== Changed
out = "{:.2f}".format(mean(x))

# print("Battery: {:.2f} volts".format(x))  <== Changed
print("Battery voltage:", out, "volts")

[. . . . .]

# out = mean(x)  <== Changed
out = "{:.2f}".format(mean(x))

# print("Processor VCC: {:.2f} volts".format(x))  <== Changed
print("Processor VCC voltage:", out, "volts")

Likewise, the first occurrence of “x = [ ]” returns the following warning:

Line 12 : Need type annotation for 'x'

I was not able to fix line 12, and I am not sure why “x” only throws the warning on line 12 and not the next occurrence of “x = [ ]”.

If I try typecasting x, as in x = [float] it throws a whole host of errors where it appears that simple "float"s don’t have the methods needed.

Here is my working, (with type warnings) version
print_voltages.py (797 Bytes)

Note that this script also includes a “while True” and a sleep(1.0) to make it endless.

2 Likes

Update:

  1. I modified “throttle.sh” to make the sleep timer 1 second.
  2. I added a 5v power brick directly to the Pi-4.
  3. I am building the “wheel” file for wxPython 4.1.1 instead of directly installing it.

Processor load using htop is pretty much pegged at 100% on all four cores and about half the available memory is in use.

Processor temps have been hovering around 65°

Processor tempts are now up to 71° and memory usage is about 2/3, with no swap yet.

The 5/10/15 is right around 7/6/5

all cores pegged.

No throttling and no 5v voltage sag.

2 Likes

Indeed. I had to change x to out in the prints and remove the runlog line.

print_voltages.py:

#!/usr/bin/python3
# print GoPiGo3 battery and 5v voltages

import easygopigo3
from time import sleep
from statistics import mean

DIODE_DROP=0.7  # YMMV

egpg = easygopigo3.EasyGoPiGo3(use_mutex=True)

x = []

for i in [1,2,3]:
    sleep(.005)
    x += [egpg.volt()+DIODE_DROP]
out = mean(x)

print("Battery: {:.2f} volts".format(out))

x = []

for i in [1,2,3]:
    sleep(.005)
    x += [egpg.get_voltage_5v()]
out = mean(x)

print("Processor VCC: {:.2f} volts".format(out))

2 Likes

Update:
No throttling and no voltage warnings.

CPU cores are all pegged at 100%
Temp is now at 70° to 75°

5/10/15 are now at 7.6/7.4/5.something

What is the “5/10/15” metric?

Additional note:
The build is progressing much more rapidly. I am actually able to see individual components complete every 15 to 30 seconds or so.  Previously, it would be stuck on a particular component for a long time.

Wall time is about 2 hours and some odd - but not all of this is the torture test. A lot of it, (maybe half, maybe more?) was getting scripts to work.

1 Like

That is great news - staying under 80° all out is totally unexpected. Did you add that “airboat fan” on the back of Charlie without telling us:

“5/10/15” → Mistake - 1, 5, 15 minute average load

2 Likes

Then I have no clue how it’s calculated.

I sat there for more than 30 min and watched all four cores balls-to-the-wall at 100%, and it maxed at 7.6-something.

By the way, “Ball(s) to the wall” is not an obscenity.

It refers to the fact that in WWII fighter planes, most had a throttle rod, (like a single engine Cessna), with a big red ball at the end.

“Ball to the wall” was the expression used when describing being chased by something German, (with .50 caliber and 20mm cannon shells whizzing past them), and they wanted to bug the heck outta there with the throttle ball rammed up against the firewall as far as it would go.  (i.e. Full emergency power.)

2 Likes

Referring to the output of the uptime command. The 1/5/15 minute load averages are straight forward until they reach the number of cores in the processor. A load of 1.0 is 100% of one core, 4.0 is 100% of four cores. Above 4, it gets weird because it is counting waiting processes, or something like that, that then I also don’t have a clue how it’s calculated.

2 Likes

I notice that, (with nothing other than chromium running, being directly connected), the “average” load shown by htop is about 15% on each processor, sometimes dropping to 6%, relatively frequently jumping to almost 30% on a per-core basis.

The hogging processes are usually: (not in any order)

  1. /sbin/init (PID 1)
  2. several instances of pigpiod, (these are often first on the list.
  3. X
  4. htop
    and, if chromium is running
  5. Chromium.

“Hogging” = consuming more than 6-10% of the processor

There are usually between 150 and 200 processes running, but all are usually “sleeping”.

2 Likes

But what does uptime or throttled.sh print of uptime report for the idling GoPiGo OS without chromium - just the OS with you logged in or remoted in?

Also what does GoPiGo OS report for:

cat /etc/os-release

uname -a

more ~/Dexter/Version

(or did you run the update/upgrade on yours?)

1 Like
pi@Charlie:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

pi@Charlie:~ $ uname -a
Linux Charlie 5.4.79-v7l+ #1373 SMP Mon Nov 23 13:27:40 GMT 2020 armv7l GNU/Linux

pi@Charlie:~ $ more ~/Dexter/Version
more: stat of /home/pi/Dexter/Version failed: No such file or directory

pi@Charlie:~ $ 

I separated the commands for clarity.

1 Like

Oooh that is not nice. MR didn’t version the thing? Or did they put the version info somewhere else? Where did they hide that tasty tidbit?

2 Likes

No, but if you remember in my initial posts about running a Pi-4 on the GoPiGo-3, I had to both move a capacitor on the GoPiGo board and trim the fan itself to add a fan to the processor.

2 Likes

I remembered you had to move a capacitor, but forgot about your fan surgery - that fan is really paying off.

Supposedly the “New GoPiGo3” has the cap moved to allow Pi4 usage, but no super-charger fan to actually allow getting the benefit of the Pi4 on a GoPiGo3, and I don’t think they upped the supply to provide the full 3A needed to max out the Pi4 anyway.

2 Likes

R4R and earlier versions of Dexter had it in /home/pi/dexter which wasn’t writable by pi.

My current desktop doesn’t even have a link to “Version”

Does YOUR GPGOS have “Version” on the desktop?

1 Like

The fan is, and always has been, an “optional accessory”.  I had to trim the fan because the buck-boost inductor for the +5v is too tall and virtually impossible to remove to reposition, short of blow-torching the PCB.

I would not be surprised if the GoPiGo can’t handle the 3 amps.

Though I am tempted to take one of the big NMOS-FET transistors I scavenged from some power supplies I disassembled and use it to replace the switching transistor on the GoPiGo board.  A BIG Beastie-Boy switching FET that is capable of handling 30+ amps shouldn’t provide any noticeable droop.  :wink:

Seriously, I’d have to add a bunch of tag-wires to various places within the power section of the PCB to discover where the droop is happening before I start re-designing the power supply.  “Da bitch part” is that I don’t have a collection of GPG3 boards to experiment with, and if I nuke the one I have, it’s bye-bye Charlie!

Right now htop is showing 1.9, 1.6, 1.8 with all four processors running 15% or better.

1 Like

Ok - SD card surgery on Dave was a success but the doctor needs a painkiller.

Dave booted and said “Rebooting” , then “WiFi 10.10.10.10” while gargling moth balls or something.

Such a pain to have to connect my iPhone to the GoPiGo access point, and run termius in a 5 inch screen!

I can’t find any Version file in the ~/pi folders or anywhere in the entire root file system.

(It was interesting there is some EduBlocks stuff on there, don’t know what that is.)

Don’t know where they are keeping the version info, but I found out where I can see the content!

Have to browse to the system and it says “GoPiGo OS v3.0.1”

2 Likes

A quick look at the schematic shows that the real limiting factors are:

  1. The BD9D320EFJ buck-converter IC has an absolute maximum rating of 3A.
  2. The buck-converter inductor may not be rated for >3 amps anyway.

This could end up being a problem for the future, as the Pi-4 is the hot-ticket item where most of the sales are happening.

Not being able to supply the current a Pi-4 demands, with that rapidly becoming the Pi-of-choice, isn’t good.

Update:

A look at the buck converter IC’s data sheet shows that, not only is the chip rated for a max of 3 amps, (and that includes inductor current surges that do not translate to output current), but it cannot be “boosted” by use of an external switching device.

Bummer.

That’s going to limit things.

1 Like

Edu-blocks is an alternative to Jupyter and there are ways to disable Jupyter and enable Edu-blocks.

Quite frankly, with Bloxter in place, I don’t know why they package Edu-blocks with the GPGOS anyway.  (It’s been there since at least the 2.n DexterOS releases.)

1 Like

[Update] It seems to me the $15 new Pi Zero 2 is the Pi-of-the-month right now.

2 Likes

Everybody wants one to play with.

The new Pi-Zero with the upgraded processor is also a hot ticket, but for people who want to do some SERIOUS bitcoin mining, (:wink:), the Pi-4 is still the hot ticket.  So much so that certain Micro Centers, (like the one in Cambridge near MIT/Harvard), are limiting the number you can buy at one time.

It might be interesting to revert back to a Pi-3+ and compare the load numbers, power droop, and such like when running GPGOS all out compiling something like wxPython.

It would be really interesting if it turned out that a Pi-4 was significant enough overkill that it ACTUALLY WORKS BETTER with the Pi-3 versions!

For example, putting a Corvair engine in a VW Beetle was a massive performance boost and there were adapter plates manufactured to allow that.  However, there were the motor-heads that decided that a blown V8 in a VW Bug was even better.  The result was either a monstrosity that couldn’t get out of its own way, a car that flipped over from the torque when you revved the engine, or one that ripped the gears into confetti when you dropped the clutch.

This might be a fruitful line of research sometime.

2 Likes