#!/bin/sh

# Some of the regex's used in sed
# Catch basic IP6 address   "s/\([0-9a-fA-F]\{1,4\}:\)\{7,7\}[0-9a-fA-F]\{1,4\}/y.y.y.y.y.y.y.y/g"
# Catch y::y.y.y.y          "s/[0-9a-fA-F]\{1,4\}:\(:[0-9a-fA-F]\{1,4\}\)\{1,4\}/y::y.y.y.y/g"
# IP4 d.d.d.d decimal	    "s/\([0-9]\{1,3\}\.\)\{3,3\}[0-9]\{1,3\}/x.x.x.x/g"
# mac address	            "s/\([0-9a-fA-F]\{2,2\}\:\)\{5,5\}[0-9a-fA-F]\{2,2\}/m.m.m.m/g"

OUT=raspinfo.txt

rm -f $OUT

exec > >(tee -ia $OUT)

echo "System Information"
echo "------------------"
echo

cat /sys/firmware/devicetree/base/model | sed 's/\x0//g'
echo

cat /etc/os-release | head -4
echo

uname -a

cat /proc/cpuinfo | tail -3

echo "Throttled flag  : "`vcgencmd get_throttled`
echo "Camera          : "`vcgencmd get_camera`

echo
echo "Videocore information"
echo "---------------------"
echo

vcgencmd version
echo
vcgencmd mem_reloc_stats

echo
echo "Filesystem information"
echo "----------------------"

df
echo
cat /proc/swaps

echo
echo "Networking Information"
echo "----------------------"
echo

ifconfig | sed -e "s/\([0-9a-fA-F]\{1,4\}:\)\{7,7\}[0-9a-fA-F]\{1,4\}/y.y.y.y.y.y.y.y/g" | sed -e "s/[0-9a-fA-F]\{1,4\}:\(:[0-9a-fA-F]\{1,4\}\)\{1,4\}/y::y.y.y.y/g" | sed -e "s/\([0-9]\{1,3\}\.\)\{3,3\}[0-9]\{1,3\}/x.x.x.x/g" | sed -e "s/\([0-9a-fA-F]\{2,2\}\:\)\{5,5\}[0-9a-fA-F]\{2,2\}/m.m.m.m/g"

echo
echo "USB Information"
echo "---------------"
echo

if command -v lsusb > /dev/null; then
   lsusb -t
else
   echo usbutils not installed
fi

echo
echo "config.txt"
echo "----------"
echo

#cat /boot/config.txt | egrep -v "^\s*(#|^$)"
vcgencmd get_config int
vcgencmd get_config str


echo
echo "cmdline.txt"
echo "-----------"

cat /proc/cmdline

echo
echo "pin configuration"
echo "-----------------"
echo

if command -v pinctrl > /dev/null; then
   pinctrl 2>&1
elif command -v raspi-gpio > /dev/null; then
   raspi-gpio get 2>&1
else
   echo "pinctrl/raspi-gpio not found"
fi

echo
echo "vcdbg log messages"
echo "------------------"
echo

if command -v vcdbg > /dev/null; then
   vcdbg log msg 2>&1
elif command -v vclog > /dev/null; then
   vclog --msg 2>&1
else
   echo "vcdbg not found"
fi

echo
echo "dmesg log"
echo "---------"
echo

dmesg | sed -e "s/\([0-9a-fA-F]\{1,4\}:\)\{7,7\}[0-9a-fA-F]\{1,4\}/y.y.y.y.y.y.y.y/g" | sed -e "s/[0-9a-fA-F]\{1,4\}:\(:[0-9a-fA-F]\{1,4\}\)\{1,4\}/y::y.y.y.y/g" | sed -e "s/\([0-9a-fA-F]\{2,2\}\:\)\{5,5\}[0-9a-fA-F]\{2,2\}/m.m.m.m/g"


if  grep -q "^Revision\s*:\s*[ 123][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]1[13457][0-9a-fA-F]$" /proc/cpuinfo
then
echo
echo "EEPROM"
echo "------"
echo
if command -v rpi-eeprom-update > /dev/null; then
   rpi-eeprom-update
else
   echo bcm27xx-eeprom not installed
fi
fi
