Skip to content

Instantly share code, notes, and snippets.

@mattconsto
Created July 27, 2017 11:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattconsto/66562b1e24981c73f4ac5e71ab3341bf to your computer and use it in GitHub Desktop.
Save mattconsto/66562b1e24981c73f4ac5e71ab3341bf to your computer and use it in GitHub Desktop.
Detect a Raspberry Pi Model, RAM, CPU, and if it is a Compute Module or Zero.
#!/bin/bash
RPI_REV=$(sudo cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}' | sed 's/^ *//g' | sed 's/ *$//g')
if [ "$RPI_REV" = "Beta" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="0.0"
elif [ "$RPI_REV" = "0002" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="1.0"
elif [ "$RPI_REV" = "0003" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="1.0"
elif [ "$RPI_REV" = "0004" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "0005" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "0006" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "0007" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1A" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "0008" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1A" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "0009" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1A" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "000d" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "000e" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "000f" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B" && RPI_VERSION="2.0"
elif [ "$RPI_REV" = "0010" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B+" && RPI_VERSION="1.0"
elif [ "$RPI_REV" = "0011" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=true && RPI_ZERO=false && RPI_MODEL="Compute Module" && RPI_VERSION="1.0"
elif [ "$RPI_REV" = "0012" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1A+" && RPI_VERSION="1.1"
elif [ "$RPI_REV" = "0013" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B+" && RPI_VERSION="1.2"
elif [ "$RPI_REV" = "0014" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=true && RPI_ZERO=false && RPI_MODEL="Compute Module" && RPI_VERSION="1.0"
elif [ "$RPI_REV" = "0015" ]; then RPI=true && RPI_RAM=256 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1A+" && RPI_VERSION="1.1"
elif [ "$RPI_REV" = "a01040" ]; then RPI=true && RPI_RAM=1024 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 2B" && RPI_VERSION="1.0"
elif [ "$RPI_REV" = "a01041" ]; then RPI=true && RPI_RAM=1024 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 2B" && RPI_VERSION="1.1"
elif [ "$RPI_REV" = "a21041" ]; then RPI=true && RPI_RAM=1024 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 2B" && RPI_VERSION="1.1"
elif [ "$RPI_REV" = "a22042" ]; then RPI=true && RPI_RAM=1024 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 2B" && RPI_VERSION="1.2"
elif [ "$RPI_REV" = "900021" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1A+" && RPI_VERSION="1.1"
elif [ "$RPI_REV" = "900032" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 1B+" && RPI_VERSION="1.2"
elif [ "$RPI_REV" = "900092" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=true && RPI_MODEL="Zero" && RPI_VERSION="1.2"
elif [ "$RPI_REV" = "900093" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=true && RPI_MODEL="Zero" && RPI_VERSION="1.3"
elif [ "$RPI_REV" = "920093" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=true && RPI_MODEL="Zero" && RPI_VERSION="1.3"
elif [ "$RPI_REV" = "9000c1" ]; then RPI=true && RPI_RAM=512 && RPI_COMPUTE=false && RPI_ZERO=true && RPI_MODEL="Zero W" && RPI_VERSION="1.1"
elif [ "$RPI_REV" = "a02082" ]; then RPI=true && RPI_RAM=1024 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 3B" && RPI_VERSION="1.2"
elif [ "$RPI_REV" = "a020a0" ]; then RPI=true && RPI_RAM=1024 && RPI_COMPUTE=true && RPI_ZERO=false && RPI_MODEL="Compute Module 3" && RPI_VERSION="1.0"
elif [ "$RPI_REV" = "a22082" ]; then RPI=true && RPI_RAM=1024 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 3B" && RPI_VERSION="1.2"
elif [ "$RPI_REV" = "a32082" ]; then RPI=true && RPI_RAM=1024 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Model 3B" && RPI_VERSION="1.2"
else RPI=false && RPI_RAM=0 && RPI_COMPUTE=false && RPI_ZERO=false && RPI_MODEL="Unknown Model" && RPI_VERSION="0.0"
fi
RPI_CPU=$(lscpu | grep "CPU max MHz" | awk '{print int($4)}')
if [ $RPI = true ]; then
echo -e "Raspberry Pi ${RPI_MODEL} v${RPI_VERSION} @ ${RPI_CPU}MHz (${RPI_RAM}MB)\n"
else
echo -e "Unknown Device ${RPI_MODEL} v${RPI_VERSION} @ ${RPI_CPU}MHz (${RPI_RAM}MB)\n"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment