I love byobu, since when I first discovered it existed me years ago. I didn’t even know screen
was a thing back then, but byobu… oh byobu.
So anyway, I’ve come to rely a lot on it, and on its status bar, which with time allowed to display “accurately” both CPU temperature and clock.
On Raspberry Pi, I just discovered, byobu doesn’t always show the correct clock.
I noticed that the command:
vcgencmd measure_clock arm
returned a lower CPU clock, 0.6GHz (and that’s when I finally noticed that my Raspberry Pi 3B+ was permanently throttled because of low voltage).
Delving deeper, I realized that byobu takes the CPU temperature information from something like, if not exactly, this:
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
which is the information given back by the Linux Kernel. I’ve read on RaspberryPi’s official forums (couldn’t find the link again now), and the consensus is that kernel is not necessarily correct, but the firmware always is.
The correct CPU clock frequency then must be asked to the firmware with the vcgencmd
command above.
Now, how to display the correct clock in byobu status bar?
I used this guide:
http://blog.dustinkirkland.com/2010/01/byobu-custom-status-notifications-in-3.html
and with a litte help from RaspberryPi official forums:
https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=251695
(those guys were REALLY fast in replying)
I created the $HOME/.byobu/bin/5_clk
file, containing the following code:
#!/bin/bash
vcgencmd measure_clock arm | awk ' BEGIN { FS="=" } ; { printf("#[fg=#ffffff,bg=cyan]%.1fGHz#[default]\n", $2 / 1000000000) } '
made it executable with
chmod +x $HOME/.byobu/bin/5_clk
and enabled the “custom” row in the byobu toggles, while disabling the native info.
This replaces the cpu frequency info with the same color formatting, and refreshes every 5 seconds.