Each variant of the Raspberry Pi has a different Pi Revision Number. There have now been a number of revisions to the Raspberry Pi PCB so the device you have in front of you could be one of a number of variants. The changes include mounting holes, modifications to the power supply circuitry, different GPIO headers and varying numbers of USB ports. The Pi 2 and Pi 3 introduced new CPUs and additional memory.
Finding your Pi Revision Number is a useful technique to identify what model of Pi you have and, in some cases, where it was manufactured.
The variants currently available are :
As new models are released this table will be updated.
Model and PCB Revision | RAM | Revision | Pi Revision Code from cpuinfo |
---|---|---|---|
Model B Rev 1 | 256MB | 0002 | |
Model B Rev 1 ECN0001 (no fuses, D14 removed) | 256MB | 0003 | |
Model B Rev 2 | 256MB | 0004 0005 0006 | |
Model A | 256MB | 0007 0008 0009 | |
Model B Rev 2 | 512MB | 000d 000e 000f | |
Model B+ | 512MB | 0010 0013 900032 | |
Compute Module | 512MB | 0011 | |
Compute Module | 512MB | 0014 (Embest, China) | |
Model A+ | 256MB | 0012 | |
Model A+ | 256MB | 0015 (Embest, China) | |
Model A+ | 512MB | 0015 (Embest, China) | |
Pi 2 Model B v1.1 | 1GB | a01041 (Sony, UK) | |
Pi 2 Model B v1.1 | 1GB | a21041 (Embest, China) | |
Pi 2 Model B v1.2 | 1GB | 1.2 | a22042 |
Pi Zero v1.2 | 512MB | 1.2 | 900092 |
Pi Zero v1.3 | 512MB | 1.3 | 900093 |
Pi Zero W | 512MB | 1.1 | 9000C1 |
Pi 3 Model B | 1GB | 1.2 | a02082 (Sony, UK) |
Pi 3 Model B | 1GB | 1.2 | a22082 (Embest, China) |
Pi 3 Model B+ | 1GB | 1.3 | a020d3 (Sony, UK) |
Pi 4 | 1GB | 1.1 | a03111 (Sony, UK) |
Pi 4 | 2GB | 1.1 | b03111 (Sony, UK) |
Pi 4 | 2GB | 1.2 | b03112 (Sony, UK) |
Pi 4 | 2GB | 1.4 | b03114 (Sony, UK) |
Pi 4 | 4GB | 1.1 | c03111 (Sony, UK) |
Pi 4 | 4GB | 1.2 | c03112 (Sony, UK) |
Pi 4 | 4GB | 1.4 | c03114 (Sony, UK) |
Pi 4 | 8GB | 1.4 | d03114 (Sony, UK) |
Pi 400 | 4GB | 1.0 | c03130 (Sony, UK) |
Pi Zero 2 W | 1GB | 1.0 | 902120 (Sony, UK) |
Methods for Finding Raspberry Pi Revision Number
In order to find out what hardware revision you have you can use two methods
Method 1 – Pinout Utility
In the new versions of Raspbian the pinout command was added. This can be run at the command prompt or via a terminal window :using :
pinout
and the output will look something like this :
As well as the Pi Revision number this method also provides lots of other information including the position of GPIO numbers on the Pi’s GPIO Header and amount of RAM fitted. More information about the Pi’s GPIO header can be found on the simple guide to the GPIO header page.
Method 2 – cpuinfo File
The traditional method of finding the Pi Revision Number was reading the “cpuinfo” file by running the following command at the command prompt or via a terminal window :
cat /proc/cpuinfo
This will give you a text output something like this :
Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 847.05 Features : swp half thumb fastmult vfp edsp java tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xb76 CPU revision : 7 Hardware : BCM2708 Revision : 0002 Serial : 000000000abc0ab1
In this example I’ve got a PCB with a Revision code of 0002. That is a plain old “Model B Revision 1.0”.
For models with multiple cores (Pi 2 and Pi 3) you will see a block of information per core with the Hardware/Revision/Serial numbers at the bottom.
NOTE : The Revision number given in cpuinfo file is the hardware revision number. This is not the same as the Raspberry Pi Rev number sometimes used to describe updated PCBs. In this example I have a Model B “Rev 1.0” with a hardware revision code of 0002.
The reading the cpuinfo file is a useful technique if you want to find out this information within a Python script.
Raspberry Pi Model Information
With the latest version of Raspbian you can also retrieve the Pi model as a string by using :
cat /proc/device-tree/model
This will output the model information. For example :
Raspberry Pi 3 Model B Plus Rev 1.3
Obviously the output will vary depending on what hardware you are running the command on.
29 Comments
Dear Matt, I’m familiar with interfacing the old bbc micro but new to RPi. I’m designing an I/O board and am confused about the GPIO PINOUT. My RPi has cpuinfo as follows…
Hardware BCM2708
Revision 000e
Serial 000000003dc78485
Which pcb revision do I have?
Best wishes
Tom
Almost certainly a Rev 2. It will have two mounting holes in the PCB. At the time I did this article the Rev 2 was fairly new which is why my table doesn’t cover the newer “Revision” numbers.
I’m getting a 000e revision number, but my board is a Model B Revision 1, well the specs of my board is telling me its a Rev 1, but your table shows a Rev2. Any idea?
Has your Pi got mounting holes?
The “000e” would suggest you have a Raspberry Pi Model B (rev 2).
Hi Matt
Many thanks.
Onwards and upwards!
Tom
Just a bit of updating: 17th July 2014 – I’ve just bought the Raspberry Pi B+ and the revision number is 0010.
Received the new Raspberry Pi 2. Revision number is shown as “a01041”
Just checked mine and it’s the same. I like the fact we now get 4 blocks of CPU detail!
Great stuff – I now know what model I have. How do I turn this into useful documentation – I/O configuration, schematic/circuit diagram particularly the former?
Just FYI, when I check cpuinfo on my model 2, I get “a21041”.
Interesting. Apparently that means it was made in China by Embest rather than in the UK by Sony.
I received an A+ with board revision 0015 – do you know what has changed in this revision? (compared to the A+ with 0012)
I’ve not seen any references to 0015 so at the moment the differences are unknown, if indeed there are any differences.
Thanks for this great resource – very useful for identifying what board my software is running on! As an update, you should probably add the Pi Zero, which appears to be 90092 (source: https://pbs.twimg.com/media/CXjHluWW8AAz1bh.png)
FYI, I have a Pi3 that uses a22082.
This is super useful! All but one of my 12 Pis were on the list, I have a recent PI B+ (512) with an ID of 0013. Thanks!
Thanks for the information. A quick Bash command for focusing on the desired string (“Revision”):
pi_rev=(`cat /proc/cpuinfo | grep Revision`); echo ${pi_rev[2]}
The above table and this Bash logic would make a very straight-forward Python program design. That is, given a Revision string value, show the mo0del and its characteristics.
It’s a bit confusing when you say Pi Zero W = 0x9000C1 (I know it’s the hexadecimal notation)
In /proc/cpuinfo it’s 9000c1
Nice overview anyway!
Agreed. I’ve just updated it!
To get the Pi model in plain text, you can use this:
cat /proc/device-tree/model
might return “Raspberry Pi 3 Model B Rev 1.2”
That’s really useful to know, thanks!
Great info, just got a new pi 3 and the board was a slightly different shade of green. seems its the first of my pi 3’s that i have to be from the UK. So now i have 2 pi 3’s from china, 1 from the UK, 1 b+, 1 pi zero 1.2, 1 Pi Zero W, and my first is a model b rev 2 with 512 mb ram.
Thought you’d like to update your table.
Raspberry Pi 3B+ received today returns
Revision : a020d3
Thanks Tony. I’ve just checked mine and they have the same revision.
This is a very useful table. Would you please revise it for the new Pi 4 and any other models that may have been added? Or is there a better place I should look for this information?
THANK YOU.
cat /proc/cpuinfo | grep ‘Model’ | cut -d: -f2-
The table is great information. Thanks for sharing. I would love to know if there is an official source for these Hardware Revision Codes and where it might be located.
Also, for FreeBSD folks, this Hardware Revision Code is found with the sysctl command instead of /proc/cpuinfo.
sysctl -x hw.board.revision
This will give you the Hardware Revision Code in hexadecimal.
My new Raspberry 4B 1GB in 2022 :
pi@octoprint:~ $ neofetch
pi@octoprint
OS: Debian GNU/Linux 11 (bullseye) aarch64
Host: Raspberry Pi 4 Model B Rev 1.5
Kernel: 5.15.61-v8+
Uptime: 30 mins
Packages: 626 (dpkg)
Shell: bash 5.1.4
Terminal: /dev/pts/0
CPU: BCM2835 (4) @ 1.800GHz
Memory: 184MiB / 909MiB