Welches Modell Raspberry Pi laufe ich?

28

Gibt es eine Möglichkeit festzustellen, ob der aktuelle Raspberry Pi entweder ein 2 Model B oder ein 3 mit Raspbian Jessie Lite 8.0 ist ?

Dies liegt daran, dass ich ein bestimmtes bootstrap.shin Bash geschriebenes Attribut txpowerfür einen Wi-Fi-USB-Dongle (hier Raspberry Pi 2) mithilfe eines Ralink RT5370-Chipsatztreibers festlegen muss .

Ich habe die Wireless-Attribute mithilfe von festgelegt iwconfig(von denen ich weiß, dass sie veraltet sind, aber derzeit erledigt werden, sodass ich sie nicht ändere).

Da es sich bei dem internen Wi-Fi-Chipsatz in Raspberry Pi 3 um einen bcmChipsatz handelt, der den folgenden Befehl nicht ausführen lässt:

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

Mit Raspberry Pi 3 funktioniert der oben genannte Befehl nur durch Entfernen dBmaus dem oben genannten Befehl:

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

Ich möchte eine Überprüfung hinzufügen, ob das Himbeer-Pi-Modell 2 oder 3 mit Bash ist.

Irgendwelche Hinweise?

Für den Fall, dass jemand die bootstrap.shfolgenden Schritte ausführen möchte : Bootstrapping für TWIN

Anmerkungen

  • Ich überprüfte , dass dBmist nicht erforderlich , auch im Falle des Raspberry Pi 2 mit dem Ralink Chipsatz daher für nicht-Mehrdeutigkeit kann man den gleichen Befehl für verwenden sowohl die Raspberry Pi viz.

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • Es ist interessant festzustellen, dass für externe Wi-Fi-USB-Dongles Folgendes ausgeführt werden muss (für Raspberry Pi 2 ):

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

    während für integrierte Wi-Fi - Module (Raspberry Pi 3) gibt es keine Notwendigkeit für ifconfig up and down. Nur der einfache iwconfigBefehl funktioniert.

Shan-Desai
quelle
4
Der beste Ansatz ist, zu testen, was Sie tun möchten, anstatt nach Modellen zu suchen (wie wird der Raspberry Pi 5 aussehen?). Überprüfen Sie in diesem Fall, ob ein Ralink RT5370-Chipsatz vorhanden ist, und konfigurieren Sie ihn entsprechend. Gleiches gilt für den eingebauten WLAN-Treiber.
Thorbjørn Ravn Andersen
Mögliches Duplikat der installierten Betriebssystemversion
Milliways

Antworten:

40
cat /proc/device-tree/model

gibt so etwas wie zurück

Raspberry Pi 3 Model B Rev 1.2
SBF
quelle
21

Nach CPU-Typ

Sie könnten RPI - Version mit dem Befehl überprüfen, uname. Die verschiedenen RPi-Versionen haben unterschiedliche CPU-Architekturen. Der RPi 2 hat einen Arm7, während der 3 einen Arm8 hat.

uname -m

Nach Hardware-Revision

Wenn Sie genauer sein müssen, können Sie den Revisionseintrag aus der Ausgabe von überprüfen cat /proc/cpuinfo. Wenn Sie nur die Revisionsnummer angeben möchten, sollte dies mit dem folgenden Befehl geschehen:

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

Revisionsnummern

Diese Webseite enthält ein handliches Diagramm, das ich hier kopiert habe.

Bildbeschreibung hier eingeben

Jacobm001
quelle
1
Ich bin /proc/cpuinfovorher durchgegangen. Es scheint die beste Option zu sein, da uname -mnicht viel aussagt.
Shan-Desai,
1
@ Shan-Desai: Ich bin mir nicht sicher, ob Sie es vor der Bearbeitung gesehen haben, aber ich habe nur einen Befehl eingefügt, der nur die Revisionsinformationen aus der proc-Datei extrahiert. Hoffentlich hilft das.
Jacobm001
1
Ja, ich habe es mit der von Ihnen erwähnten versucht. Der Vergleich wurde zwischen einem Pi 2 Modell v1.1 und Pi 3 Modell B das Komische aber ist , dass mein Pi 3 noch zeigt armv7l aufuname -m
Shan-Desai
2
Du meinst / proc / cpuinfo nicht / cpu / procinfo
user253751
unamelistet nur die Zielarchitektur auf, für die Linux erstellt wurde, und ist für die Bestimmung des CPU-Typs unzuverlässig. Der aktuelle RPI3-Raspbian wird im 32-Bit-Modus ausgeführt. es wird eine Liste armv7, wenn Sie eine verwenden AARCH64( arm64) Linux wird es sagen armv8, wenn Sie den alten RPI1 raspbian verwenden wird es sagen armv6.
crasic
6

Es gibt viele Methoden (mit unterschiedlicher Zuverlässigkeit), um dies zu bestimmen. Eine der vollständigsten und zuverlässigsten ist gpio -vdie, die die folgende Ausgabe erzeugt.

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.

Dies könnte eleganter geschehen, indem ein einfaches Programm unter Verwendung der von bereitgestellten Funktionen geschrieben wird wiringpi. Diese sind gut dokumentiert und die Quelle ist leicht verfügbar.

Das Skript in https://raspberrypi.stackexchange.com/a/85016/8697 zeigt umfassende Informationen zu Ihrem Pi und Betriebssystem.

Milliways
quelle
2

Ich habe ein Bash-Skript erstellt, das die Modellinformationen basierend auf der Revision bereitstellt.

Wenn Sie es besser machen, lassen Sie es mich bitte wissen.

#!/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)"
Andy Delgado
quelle
Eine andere Struktur wäre weitaus effizienter.
Jacobm001
4
Eine switch-Anweisung wäre besser.
Shan-Desai
2

Ich habe nicht genug Repräsentanten, um @Andy Delgado zu kommentieren, aber hier ist eine andere Version seines Codes mit einigen neueren Bash-Funktionen.

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})"
}

Nebenbei: REVISIONSwird innerhalb einer Funktion definiert, da ich sie über sshdh benutzessh some-host "$(declare -f); check_pi_version"

Takle
quelle
-2

Einfacher Weg : dmesg | grep "Machine model:"

lemassykoi
quelle
Seltsam, dies gibt nichts aus, wenn ich es versuche!
Goldlöckchen
@goldilocks Zeigt [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2auf meinem Pi. Möglicherweise nicht die robusteste Methode.
Milliways
@Milliways Der Grund, warum dies für mich nicht funktioniert, ist, dass das System zu lange in Betrieb war. Das ist aus dem Stand und dmesgist ein Ringpuffer. Daher ist dies eine fehlerhafte Methodik.
Goldlöckchen
@goldilocks Vermutlich will das OP erst nach dem Booten Bescheid wissen. Es ist unwahrscheinlich, dass sich etwas ändert ;-) Es gibt mit ziemlicher Sicherheit bessere Methoden zur Lösung des OP-Problems.
Milliways
die beste lösung meiner meinung nach. Funktioniert perfekt auf Raspberry Pi 2 und 3 mit Raspbian. Ich habe es auf einem Pi getestet, der seit 8 Tagen läuft. Die anderen Lösungen in diesem Thread erforderten entweder neue Tools (gpio) oder Sie müssen den CPU-Revisionscode einer Nachschlagetabelle zuordnen (und pflegen). das ist der einzige befehl, der dir genau den namen sagt dh Machine model: Raspberry Pi 2 Model B Rev 1.1- auch ohne root.
Eugen