Skip to content

Instantly share code, notes, and snippets.

@yboujraf
Forked from jperkin/rpi-cpuinfo-dt.md
Created January 14, 2020 10:27
Show Gist options
  • Save yboujraf/f33b5c4eec8921f5f36e54cbc6d05ac1 to your computer and use it in GitHub Desktop.
Save yboujraf/f33b5c4eec8921f5f36e54cbc6d05ac1 to your computer and use it in GitHub Desktop.
raspberry pi cpuinfo vs device-tree

Raspberry Pi cpuinfo vs device-tree

My attempt at gathering information on how to detect exactly which Raspberry Pi model we are running on for https://github.com/jperkin/node-rpio. The goal is to come up with an optimal way of detecting the host across a wide range of hardware and OS.

Data

Name (Rev) cpuinfo /proc/device-tree/model device-tree/soc/ranges OS
B (1.0) 0002 Raspberry Pi Model B 7e000000 20000000 01000000 7
B (1.0) 0002 Raspberry Pi Model B Rev 1 7e000000 20000000 02000000 10
B (1.0) 0003 Raspberry Pi Model B 7e000000 20000000 01000000 7
B (1.0) 0003 Raspberry Pi Model B Rev 1 7e000000 20000000 02000000 10
Zero W (1.1) 9000c1 Raspberry Pi Zero W Rev 1.1 7e000000 20000000 02000000 9
2 B (1.1) a01041 Raspberry Pi 2 Model B Rev 1.1 7e000000 3f000000 01000000 9
2 B (1.1) a01041 Raspberry Pi 2 Model B Rev 1.1 7e000000 3f000000 01000000 10
2 B (1.2) a22042 Raspberry Pi 2 Model B Rev 1.2 7e000000 3f000000 01000000 8
3 B (1.2) a02082 Raspberry Pi 3 Model B Rev 1.2 7e000000 3f000000 01000000 10
3 B (1.3) a020d3 Raspberry Pi 3 Model B Plus Rev 1.3 7e000000 3f000000 01000000 9
4 B 2GB (1.1) b03111 Raspberry Pi 4 Model B Rev 1.1 7e000000 00000000 fe000000 10
4 B 4GB (1.1) c03111 Raspberry Pi 4 Model B Rev 1.1 7e000000 00000000 fe000000 10

Open Questions

  • Is there any way to detect rev 1.0 vs rev 2.0 with the original Model B when running 7? Only newer releases identify the revision in /proc/device-tree/model. Just assume /proc/cpuinfo?.

How To Generate

The following script can be used to generate the data (assuming Raspbian or similar).

#!/bin/bash

. /etc/os-release

printf "cpuinfo:\t%s\n" "$(awk '/^Revision/ { print $NF }' /proc/cpuinfo)"
printf "dtmodel:\t%s\n" "$(</proc/device-tree/model)"
set -- $(xxd -l 16 -g 4 < /proc/device-tree/soc/ranges)
printf "socranges:\t%s %s %s\n" $2 $3 $4
printf "os:\t\t%s\n" "$VERSION_ID"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment