我正在运行哪种型号的Raspberry Pi?


28

有没有办法确定当前的Raspberry Pi是带有Raspbian Jessie Lite 8.02型B型还是3型

这是因为我有一个bootstrap.sh用Bash编写的特定文件,需要txpower使用Ralink RT5370芯片组驱动程序为Wi-Fi USB加密狗(此处为Raspberry Pi 2)设置属性。

我使用设置了无线属性iwconfig(据我所知,该属性已被弃用,但目前可以完成工作,因此我不会对其进行更改)。

由于在Raspberry Pi 3中,内部Wi-Fi芯片组是bcm基于-的芯片组,因此不会执行以下命令:

iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0dBm

使用Raspberry Pi 3,只需dBm从上述命令中删除,即可使用上述命令:

iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0

我想使用Bash检查Raspberry Pi模型是2还是3。

有什么提示吗?

如果有人想通过bootstrap.shTWIN的引导

笔记

  • 我检查dBm不是必须的,同样在的情况下,树莓PI 2雷凌芯片组,因此对于非歧义一个可以使用相同的命令的树莓派两者

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • 有趣的是,对于外部Wi-Fi USB加密狗,需要执行以下操作(对于Raspberry Pi 2):

    ifconfig wlan0 down
    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
    ifconfig wlan0 up
    

    而作为内置的Wi-Fi模块(覆盆子裨3)没有必要进行ifconfig up and down。只是简单的iwconfig命令有效。


4
最好的方法是测试您想做的事情,而不是寻找模型(Raspberry Pi 5的外观如何?)。在这种情况下,请查看是否有Ralink RT5370芯片组并进行相应配置。与内置的Wifi驱动程序相同。
托尔比约恩Ravn的安德森



Answers:


40
cat /proc/device-tree/model

返回类似

Raspberry Pi 3 Model B Rev 1.2

21

按CPU类型

您可以使用命令检查RPi版本uname。不同的RPi版本具有不同的CPU体系结构。RPi 2具有arm7,而RPi 2具有arm8。

uname -m

通过硬件修订

如果需要更具体,可以从的输出检查修订条目cat /proc/cpuinfo。如果您只想精确修订版本号,则应使用以下命令:

cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}'

修订号

该网页有一个方便的图表,我已在此处复制。

在此处输入图片说明


1
/proc/cpuinfo以前经历过。这似乎是最好的选择,因为uname -m并不能说明太多。
Shan-Desai

1
@ Shan-Desai:不确定在编辑之前是否看到了它,但是我只是包含了一个将从proc文件中仅提取修订信息的命令。希望能有所帮助。
Jacobm001

1
是的,我尝试了您提到的那个。比较是间皮2模型V1.1皮3模型B然而,有趣的是,我的皮3仍显示armv7luname -m
山德赛

2
您的意思是/ proc / cpuinfo而不是/ cpu / procinfo
user253751

uname将仅列出linux构建的目标体系结构,并且不可靠地确定CPU类型。当前的RPI3 Raspbian以32位模式运行。它会列出armv7,如果您使用AARCH64arm64)linux,它会说 armv8,如果您使用旧的RPI1 raspbian,它会说armv6
crasic

6

有很多方法(可靠性各不相同)来确定这一点。最完整和可靠的方法之一是gpio -v产生以下输出。

gpio version: 2.44
Copyright (c) 2012-2017 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Pi 3, Revision: 02, Memory: 1024MB, Maker: Embest 
  * Device tree is enabled.
  *--> Raspberry Pi 3 Model B Rev 1.2
  * This Raspberry Pi supports user-level GPIO access.

使用编写的简单程序,使用提供的功能,可以更优雅地完成此操作wiringpi。这些文件有据可查,来源也很容易获得。

/raspberrypi//a/85016/8697中的脚本显示有关您的Pi和OS的全面信息。


2

我创建了一个bash脚本,它将基于修订版提供模型信息。

如果您做得更好,请告诉我。

#!/bin/bash
# which_pi.bash
# BASH Script to display Pi Hardware version based on info found in /proc/cpuinfo
# Andy Delgado - April 11, 2017
# Info gleaned from
# http://www.raspberrypi-spy.co.uk/2012/09/checking-your-raspberry-pi-board-version

REVCODE=$(sudo cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}' | sed 's/^ *//g' | sed 's/ *$//g')

if [ "$REVCODE" = "0002" ]; then
    PIMODEL="Raspberry Pi Model B Rev 1, 256 MB RAM"
fi

if [ "$REVCODE" = "0003" ]; then
    PIMODEL="Raspberry Pi Model B Rev 1 ECN0001, 256 MB RAM"
fi

if [ "$REVCODE" = "0004" ]; then
    PIMODEL="Raspberry Pi Model B Rev 2, 256 MB RAM"
fi

if [ "$REVCODE" = "0005" ]; then
    PIMODEL="Raspberry Pi Model B Rev 2, 256 MB RAM"
fi

if [ "$REVCODE" = "0006" ]; then
    PIMODEL="Raspberry Pi Model B Rev 2, 256 MB RAM"
fi

if [ "$REVCODE" = "0007" ]; then
    PIMODEL="Raspberry Pi Model A, 256 MB RAM"
fi

if [ "$REVCODE" = "0008" ]; then
    PIMODEL="Raspberry Pi Model A, 256 MB RAM"
fi

if [ "$REVCODE" = "0009" ]; then
    PIMODEL="Raspberry Pi Model A, 256 MB RAM"
fi

if [ "$REVCODE" = "000d" ]; then
    PIMODEL="Raspberry Pi Model B Rev 2, 512 MB RAM"
fi

if [ "$REVCODE" = "000e" ]; then
    PIMODEL="Raspberry Pi Model B Rev 2, 512 MB RAM"
fi

if [ "$REVCODE" = "000f" ]; then
    PIMODEL="Raspberry Pi Model B Rev 2, 512 MB RAM"
fi

if [ "$REVCODE" = "0010" ]; then
    PIMODEL="Raspberry Pi Model B+, 512 MB RAM"
fi

if [ "$REVCODE" = "0013" ]; then
    PIMODEL="Raspberry Pi Model B+, 512 MB RAM"
fi

if [ "$REVCODE" = "900032" ]; then
    PIMODEL="Raspberry Pi Model B+, 512 MB RAM"
fi

if [ "$REVCODE" = "0011" ]; then
    PIMODEL="Raspberry Pi Compute Module, 512 MB RAM"
fi

if [ "$REVCODE" = "0014" ]; then
    PIMODEL="Raspberry Pi Compute Module, 512 MB RAM"
fi

if [ "$REVCODE" = "0012" ]; then
    PIMODEL="Raspberry Pi Model A+, 256 MB RAM"
fi

if [ "$REVCODE" = "0015" ]; then
    PIMODEL="Raspberry Pi Model A+, 256 MB or 512 MB RAM"
fi

if [ "$REVCODE" = "a01041" ]; then
    PIMODEL="Raspberry Pi 2 Model B v1.1, 1 GB RAM"
fi

if [ "$REVCODE" = "a21041" ]; then
    # a21041 (Embest, China)
    PIMODEL="Raspberry Pi 2 Model B v1.1, 1 GB RAM"
fi

if [ "$REVCODE" = "a22042" ]; then
    PIMODEL="Raspberry Pi 2 Model B v1.2, 1 GB RAM"
fi

if [ "$REVCODE" = "90092" ]; then
    PIMODEL="Raspberry Pi Zero v1.2, 512 MB RAM"
fi

if [ "$REVCODE" = "90093" ]; then
    PIMODEL="Raspberry Pi Zero v1.3, 512 MB RAM"
fi

if [ "$REVCODE" = "0x9000C1" ]; then
    PIMODEL="Raspberry Pi Zero W, 512 MB RAM"
fi

if [ "$REVCODE" = "a02082" ]; then
    PIMODEL="Raspberry Pi 3 Model B, 1 GB RAM"
fi

if [ "$REVCODE" = "a22082" ]; then
    PIMODEL="Raspberry Pi 3 Model B, 1 GB RAM"
fi

echo "$PIMODEL ($REVCODE)"

否则的话,结构会更有效。
Jacobm001

4
使用switch语句会更好。
Shan-Desai

2

我没有足够的代表对@Andy Delgado的答复发表评论,但以下是他的代码的不同版本,其中使用了一些较新的bash功能。

function check_pi_version() {
  local -r REVCODE=$(awk '/Revision/ {print $3}' /proc/cpuinfo)
  local -rA REVISIONS=(
    [0002]="Model B Rev 1, 256 MB RAM"
    [0003]="Model B Rev 1 ECN0001, 256 MB RAM"
    [0004]="Model B Rev 2, 256 MB RAM"
    [0005]="Model B Rev 2, 256 MB RAM"
    [0006]="Model B Rev 2, 256 MB RAM"
    [0007]="Model A, 256 MB RAM"
    [0008]="Model A, 256 MB RAM"
    [0009]="Model A, 256 MB RAM"
    [000d]="Model B Rev 2, 512 MB RAM"
    [000e]="Model B Rev 2, 512 MB RAM"
    [000f]="Model B Rev 2, 512 MB RAM"
    [0010]="Model B+, 512 MB RAM"
    [0013]="Model B+, 512 MB RAM"
    [900032]="Model B+, 512 MB RAM"
    [0011]="Compute Module, 512 MB RAM"
    [0014]="Compute Module, 512 MB RAM"
    [0012]="Model A+, 256 MB RAM"
    [0015]="Model A+, 256 MB or 512 MB RAM"
    [a01041]="2 Model B v1.1, 1 GB RAM"
    [a21041]="2 Model B v1.1, 1 GB RAM"
    [a22042]="2 Model B v1.2, 1 GB RAM"
    [90092]="Zero v1.2, 512 MB RAM"
    [90093]="Zero v1.3, 512 MB RAM"
    [0x9000C1]="Zero W, 512 MB RAM"
    [a02082]="3 Model B, 1 GB RAM"
    [a22082]="3 Model B, 1 GB RAM"
  )

  echo "Raspberry Pi ${REVISIONS[${REVCODE}]} (${REVCODE})"
}

旁白:REVISIONS在函数内部定义的,因为我用它了ssh,即ssh some-host "$(declare -f); check_pi_version"


-2

简单方法: dmesg | grep "Machine model:"


奇怪,尝试时不会输出任何内容!
goldilocks

@goldilocks [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2在我的Pi上显示。可能不是最可靠的方法。
Milliways

@Milliways对我不这样做的原因是系统启动时间过长。这是从启动开始的,dmesg是循环缓冲区。 因此,这是一个有缺陷的方法。
goldilocks

@goldilocks大概OP仅在引导后才想知道。这不太可能改变;-)几乎肯定有更好的方法来解决OP问题。
Milliways

我认为最好的解决方案。在运行Raspbian的Raspberry Pi 2和3上完美运行。我已经在运行8天的Pi上进行了测试。该线程中的其他解决方案需要新工具(gpio),或者您必须将cpu修订代码映射到查找表(并对其进行维护)。那是唯一一个告诉您确切名称的命令,即Machine model: Raspberry Pi 2 Model B Rev 1.1-也没有root。
欧根(Eugen)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.