-
-
Save mhzawadi/d6fec827b171076e4520df7911795592 to your computer and use it in GitHub Desktop.
| #!/bin/sh | |
| # https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md | |
| cpuinfo=`cat /proc/cpuinfo | grep "Revision"|awk -F': ' '{printf $2}'` | |
| model=`cat /sys/firmware/devicetree/base/model` | |
| case ${cpuinfo} in | |
| "0002" ) | |
| echo "Revision : 0002 (Model B Rev 1, 256MB)" ;; | |
| "0003" ) | |
| echo "Revision : 0003 (Model B Rev 1, ECN0001 (no fuses, D14 removed), 256MB)" ;; | |
| "0004" ) | |
| echo "Revision : 0004 (Model B Rev 2, 256MB)" ;; | |
| "0005" ) | |
| echo "Revision : 0005 (Model B Rev 2, 256MB)" ;; | |
| "0006" ) | |
| echo "Revision : 0006 (Model B Rev 2, 256MB)" ;; | |
| "0007" ) | |
| echo "Revision : 0007 (Model A, 256MB)" ;; | |
| "0008" ) | |
| echo "Revision : 0008 (Model A, 256MB)" ;; | |
| "0009" ) | |
| echo "Revision : 0009 (Model A, 256MB)" ;; | |
| "000d" ) | |
| echo "Revision : 000d (Model B Rev 2, 512MB)" ;; | |
| "000e" ) | |
| echo "Revision : 000e (Model B Rev 2, 512MB)" ;; | |
| "000f" ) | |
| echo "Revision : 000f (Model B Rev 2, 512MB)" ;; | |
| "0010" ) | |
| echo "Revision : 0010 (Model B+, 512MB)" ;; | |
| "0013" ) | |
| echo "Revision : 0013 (Model B+, 512MB)" ;; | |
| "900032" ) | |
| echo "Revision : 900032 (Model B+, 512MB)" ;; | |
| "0011" ) | |
| echo "Revision : 0011 (Compute Module, 512MB)" ;; | |
| "0014" ) | |
| echo "Revision : 0014 (Compute Module, (Embest, China), 512MB)" ;; | |
| "0012" ) | |
| echo "Revision : 0012 (Model A+, 256MB)" ;; | |
| "0015" ) | |
| echo "Revision : 0015 (Model A+, (Embest, China), 256MB/512MB)" ;; | |
| "a01041" ) | |
| echo "Revision : a01041 (Pi 2 Model B v1.1, (Sony, UK), 1GB)" ;; | |
| "a21041" ) | |
| echo "Revision : a01041 (Pi 2 Model B v1.1, (Embest, China), 1GB)" ;; | |
| "a22042" ) | |
| echo "Revision : a22042 (Pi 2 Model B v1.2, (Sony, UK), 1GB)" ;; | |
| "900092" ) | |
| echo "Revision : 900092 (Pi Zero v1.2, 512MB)" ;; | |
| "900093" ) | |
| echo "Revision : 900093 (Pi Zero v1.3, 512MB)" ;; | |
| "9000C1" ) | |
| echo "Revision : 9000C1 (Pi Zero W, 512MB)" ;; | |
| "a02082" ) | |
| echo "Revision : a02082 (Pi 3 Model B, (Sony, UK), 1GB)" ;; | |
| "a22082" ) | |
| echo "Revision : a22082 (Pi 3 Model B, (Embest, China), 1GB)" ;; | |
| "a020d3" ) | |
| echo "Revision : a020d3 (Pi 3 Model B+, (Sony, UK), 1GB)" ;; | |
| * ) | |
| echo "not a Pi?" ;; | |
| esac | |
| echo "Revision: ${cpuinfo} (${model})" |
Thanks @wopfel, I really must get me mac fixed. Have updated.
Have also added the model from the pi
Just in addition, here's my ansible playbook (using revision 2 of your script):
- hosts: rasppis
tasks:
- name: Get version
script: ../local-scripts/pi-version.sh
register: output
changed_when: False
- debug:
msg: System {{ inventory_hostname }} is {{ output.stdout_lines | first }}
$ ansible-playbook playbooks/show-raspberry-pi-version.yml | grep "is Revision"
...
"msg": "System alarmpi-bba3 is Revision : 000e (Model B Rev 2, 512MB)"
"msg": "System alarmpi-ab8a is Revision : a020d3 (Pi 3 Model B+, (Sony, UK), 1GBB)"
...
The output could be further processed using sed/awk/whatever. But this is sufficient for a quick view of all pi revisions. Thanks again for sharing this!
By the way, using your script (revision 3) I get line 4: warning: command substitution: ignored null byte in input. This is due to the fact that /sys/firmware/devicetree/base/model ends with a hex 0 value. Didn't know that before...
Hi, there are two duplicates with different values:
0015:Model A+, (Embest, China), 256MBandModel A+, (Embest, China), 512MBa01041:Pi 2 Model B v1.1, (Sony, UK), 1GB)andPi 2 Model B v1.1, (Embest, China), 1GB)
which one of those is it? Also, there's a typo in the name of 000f, it reads 0009.
According to the official docs, 0015can be both 256/512 MB.
It seems one a01041 should be coded as a21041.
My proposal:
"0015" )
echo "Revision : 0015 (Model A+, (Embest, China), 256/512MB)" ;;
"a01041" )
echo "Revision : a01041 (Pi 2 Model B v1.1, (Sony, UK), 1GB)" ;;
"a21041" )
echo "Revision : a21041 (Pi 2 Model B v1.1, (Embest, China), 1GB)" ;;
Edit: changed revision text to a21041
My proposal:
👍
@wopfel thanks for your comments, have updated the gist.
@mhzawadi, what about the typo in 000f?
Thanks for sharing this. Tried it now using Ansible and it works great.
Is
1GBBjust a typo and should read1GB?