Skip to main content

Chumby One Network Usage Widget

I recently got a Chumby One, and am loving it.  However, the "Network Usage" widget that you can install has a script for the older Chumby, not the newer Chumby One.   To make it work with the Chumby One, you need to add a line to the crontab to run the widget every hour, like so:

chumby:~# cat /psp/crontabs/root
0 3 * * * /usr/chumby/scripts/
* * * * * /usr/chumby/scripts/flashplayer_watchdog
59 * * * * /psp/cgi-bin/ getdata

Here is the file to run the script: (I changed rbusb0 to wlan0, and removed a ^ in line 89)
chumby:~# cat /psp/cgi-bin/
#! /usr/bin/perl
$argcount = $#ARGV + 1;
$request = uc($ENV{'QUERY_STRING'});

if ($request eq "REPORT") #URL requests data

# send the data format as xml
# format is

# retrieve ipusage.dat
$lastrec = 0;
$lastsent = 0;
print "Content-type:text/xml\r\n\r\n";
print "\<\?xml version=\"1.0\" encoding=\"utf-8\"\?\>\n";
$file = "/psp/cgi-bin/ipusage.dat" ;
open(INFO, $file) ;
print "\n";
open(INFO, $file) ;
while ($line =
$line =~ s/\n// ; # remove linefeed
while ($line =~ "  ")  # change double spaces to singles
$line =~ s/  / / ;
@items = split(/ /, $line) ; # get each part of the line   
@subitems = split(/:/, @items[3]) ; # get each part of the line

# line data example Tue Apr 14 10:00:01 2009 102307121 4336958

if (@items[6] <= $lastsent)
{ $lastsent = 0; }
if (@items[5] <= $lastrec)
{ $lastrec = 0; }
$diffsent = @items[6] - $lastsent;
$diffrec = @items[5] - $lastrec;

print "   print "DayOfWeek = \"@items[0]\" ";
print "DayOfMonth = \"@items[2]\" ";
print "Month = \"@items[1]\" ";
print "Year = \"@items[4]\" ";
print "Hour = \"@subitems[0]\" ";
print "Min = \"@subitems[1]\" ";
print "Sec = \"@subitems[2]\" ";
print "SentBytes = \"$diffsent\" ";
print "RecBytes = \"$diffrec\"\> ";
print "\<\/Measurement\>\n";

$lastrec = @items[5];
$lastsent = @items[6];

print "<\/IPUsage>\n";
close(INFO) ;

if ($request eq "POLICY") # URL requests policy
# send the crossdomain policy file

print "Content-type:text\/xml\r\n\r\n";
print "<\?xml version=\"1.0\"\?>\r\n\r\n";
print "<\!-- my crossdomain file -->\n";
print "\n";
print "  \n";
print "<\/cross-domain-policy>\n";


if ($argcount == 1) # run from the command line

if (uc($ARGV[0]) eq "GETDATA") 
$tl = ($mph * 7 * 24) + 10; # calculate how many lines in the file.
# run from crontab
# update ipusage.dat
# get the sent and rec bytes from dev file
$file = "/proc/net/dev" ;
open(INFO, $file) ;
while ($line =
if ($line =~ /wlan0:/) # find the line
$line =~ s/wlan0:// ;
while ($line =~ "  ")  # change double spaces to singles
$line =~ s/  / / ;
while ($line =~ "^ ")  # remove spaces at start of line
$line =~ s/^ // ;
@items = split(/ /, $line) ; # read the values for rec and sent
$rec = @items[0] ;
$sen = @items[8] ;
close(INFO) ;
# get current date time
$tdt = localtime(time()) ;
# append values to data file
$file = "/psp/cgi-bin/ipusage.dat" ;
open(DAT, ">>$file") ;
printf DAT "$tdt $rec $sen\n" ;
close(DAT) ;
# truncate the data file
system("tail -n $tl /psp/cgi-bin/ipusage.dat > /psp/cgi-bin/ipusage.tmp");
system("mv -f /psp/cgi-bin/ipusage.tmp /psp/cgi-bin/ipusage.dat");




Popular posts from this blog

ADS-B plotting with Kali (and other SDR goodies)

Recently I wanted to try some Software Defined Radio stuff.   
I had a RTL-SDR, FM+DAB, DVB-T USB Stick Set with RTL2832U & R820T. that I got from:
But, even though this dongle would break out FM radio stations, and ATC frequencies (like the local Ground Control, tower, and even ATIS), which was cool, it wouldn't break out ADS-B.   
Thus, I bought a Vantech Green Mini RTL2832U R820T DVB-T SDR DAB FM USB DIGITAL TV Tuner Receiver RTL-SDR Project + DAB dongle Tuner MCX Input from Amazon, and tried this.  
This dongle was able to listen to the 1090MHz frequency required for ADS-B (as it goes from 25MHz to 1700MHz).  There were tons of Windows programs out there for breaking out and plotting ADS-B Mode S broadcasts, but not many for Linux.  
For Kali Linux, here's how I got it running and plotting planes around my home:
0) before you start, you should do an apt-get update to ensure you hav…

atftpd vs tftpd-hpa

Recently I was trying to tftp files from a Windows computer to a Kali box.   One version of Windows worked, but another didn't.    After much troubleshooting, here were my symptoms:

I could tftp a file from-to any Kali box from-to another Kali box
I could NOT tftp files to a specific Windows 7 box from any Kali box
I could NOT tftp files to a Chrooted-Ubuntu-Chromebook box from a Kali box

After MUCH troubleshooting, going through every setting in atftpd, it seemed like it literally was a client OS problem.  Different clients simply would not download files---unacceptable.

Thus, I switched to tftpd-hpa.   To install:
apt-get install tftpd-hpa

files go to/come from /srv/tftp, but it needs to be a tftp user. Thus, I needed to:
chroot -R /srv/tftp

Also, if you want to be able to put files ON the tftp server (from a client), you need to modify /etc/default/tftpd-hpa:
change "TFTP_OPTIONS="--secure" to "TFTP_OPTIONS="--secure --create"

I also changed the IP li…

Temper Temperature monitor on a Beaglebone Black

Beaglebone Black as a temperature monitor:

Recently I wanted to monitor the temperature of my shed.  I thought I'd use a small computer such as a Raspberry Pi or a Beaglebone or Odroid.

My Raspberry Pi boxes were all in use, so I grabbed my Beaglebone, which was doing nothing.

I flashed it with the Debian9.32018-03-054GB SDIoTimage, but that seemed like it was running lots of bloatware and the ethernet interface wouldn't take a static IP with /etc/network/interfaces.

So I went with the Debian9.32018-01-284GB SDLXQTi image instead.  I still had the same problem, that lots of junk was running, and I couldn't configure my interface by modifying /etc/network/interfaces

So my first step was to get rid of all the bloatware.  If you're using a Raspberry Pi or something, you can skip this and just go to the second step below

STEP 1--Remove Blotatware from Beaglebone Black:

With some searching, I came across this post:…