Quel modèle Raspberry Pi j'utilise?


28

Existe-t-il un moyen de déterminer si le Raspberry Pi actuel est un 2 Model B et 3 avec Raspbian Jessie Lite 8.0 ?

C'est parce que j'ai bootstrap.shécrit en particulier dans Bash où il doit définir l'attribut txpowerd'un dongle USB Wi-Fi (ici, Raspberry Pi 2) à l'aide d'un pilote de chipset Ralink RT5370 .

J'ai défini les attributs sans fil à l'aide de iwconfig(qui, je le sais, est obsolète, mais il fait actuellement le travail, donc je ne le change pas).

Depuis, dans Raspberry Pi 3, le chipset Wi-Fi interne est un bcmchipset basé sur qui ne laissera pas la commande suivante s'exécuter:

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

Avec Raspberry Pi 3, la commande mentionnée ci-dessus fonctionne simplement en supprimant dBmde la commande mentionnée ci-dessus:

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

Je voudrais ajouter une vérification si le modèle Raspberry Pi est 2 ou 3 en utilisant Bash.

Des indices?

Dans le cas où quelqu'un souhaite passer par bootstrap.sh: Bootstrapping for TWIN

Remarques

  • J'ai vérifié que ce dBmn'est pas nécessaire , également dans le cas du Raspberry Pi 2 avec le chipset Ralink, donc pour la non-ambiguïté, on peut utiliser la même commande pour les deux Raspberry Pis .

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • Il est intéressant de noter que pour les dongles USB Wi-Fi externes, il faut effectuer les opérations suivantes (pour Raspberry Pi 2 ):

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

    tandis que pour les modules Wi-Fi intégrés (Raspberry Pi 3), il n'y a pas besoin de ifconfig up and down. La iwconfigcommande simple fonctionne.


4
La meilleure approche consiste à tester la chose que vous voulez faire au lieu de chercher des modèles (à quoi ressemblera le Raspberry Pi 5?). Dans ce cas, vérifiez s'il existe un chipset Ralink RT5370 et configurez-le en conséquence. De même avec le pilote Wifi intégré.
Thorbjørn Ravn Andersen



Réponses:


40
cat /proc/device-tree/model

renvoie quelque chose comme

Raspberry Pi 3 Model B Rev 1.2

21

Par type de CPU

Vous pouvez vérifier la version RPI avec la commande, uname. Les différentes versions RPi ont différentes architectures CPU. Le RPi 2 a un bras7, tandis que le 3 a un bras8.

uname -m

Par révision matérielle

Si vous devez être plus précis, vous pouvez vérifier l' entrée de révision à partir de la sortie de cat /proc/cpuinfo. Si vous voulez juste préciser le numéro de révision, la commande suivante devrait le faire:

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

Numéros de révision

Cette page Web contient un tableau pratique que j'ai copié ici.

entrez la description de l'image ici


1
J'ai traversé /proc/cpuinfoavant. Cela semble être la meilleure option, car uname -mne dit pas grand-chose.
Shan-Desai

1
@ Shan-Desai: je ne sais pas si vous l'avez vu, avant l'édition, mais je viens d'inclure une commande qui extraira uniquement les informations de révision du fichier proc. J'espère que ça t'as aidé.
Jacobm001

1
Ouais, j'ai essayé celui que vous avez mentionné. La comparaison était entre un V1.1 modèle Pi 2 et Pi 3 Modèle B le plus drôle est cependant que mes Pi 3 encore montre armv7l suruname -m
Shan-Desai

2
Vous voulez dire / proc / cpuinfo pas / cpu / procinfo
user253751

unamene listera que l'architecture cible pour laquelle Linux a été conçu et n'est pas fiable pour déterminer le type de CPU. La Raspbian RPI3 actuelle fonctionne en mode 32 bits. il listera armv7, si vous utilisez un linux AARCH64( arm64) il dira armv8, si vous utilisez l'ancien raspbian RPI1 il dira armv6.
crasic

6

Il existe de nombreuses méthodes (de fiabilité variable) pour déterminer cela. L'un des plus complets et des plus fiables est celui gpio -vqui produit la sortie suivante.

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.

Cela pourrait être fait de manière plus élégante en écrivant un programme simple, en utilisant les fonctions fournies par wiringpi. Celles-ci sont bien documentées et la source est facilement disponible.

Le script dans /raspberrypi//a/85016/8697 affiche des informations complètes sur votre Pi et votre système d'exploitation.


2

J'ai créé un script bash qui fournira les informations sur le modèle en fonction de la révision.

Si vous l'améliorez, faites-le moi savoir.

#!/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)"

Un autre si la structure serait beaucoup plus efficace.
Jacobm001

4
Une déclaration de changement serait mieux.
Shan-Desai

2

Je n'ai pas assez de représentant pour commenter la réponse de @Andy Delgado, mais voici une version différente de son code en utilisant de nouvelles fonctionnalités 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})"
}

Mis à part: REVISIONSest défini à l'intérieur d'une fonction puisque je l'utilise sur sshiessh some-host "$(declare -f); check_pi_version"


-2

Manière simple: dmesg | grep "Machine model:"


Étrange, cela ne produit rien quand je l'essaye!
goldilocks

@goldilocks s'affiche [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2sur mon Pi. Peut-être pas la méthode la plus robuste.
Milliways

@Milliways La raison pour laquelle il ne fait pas cela pour moi est que le système est en place depuis trop longtemps. Cela vient du démarrage et dmesgest un tampon circulaire. Il s'agit donc d'une méthodologie imparfaite.
goldilocks

@goldilocks Vraisemblablement, l'OP ne veut savoir qu'après le démarrage. Il est peu probable qu'il change ;-) Il existe presque certainement de meilleures méthodes pour résoudre les problèmes OP.
Milliways

la meilleure solution à mon avis. fonctionne parfaitement sur Raspberry Pi 2 et 3, exécutant Raspbian. Je l'ai testé sur un Pi qui fonctionne depuis 8 jours. Les autres solutions de ce thread nécessitaient de nouveaux outils (gpio) ou vous devez mapper le code de révision du processeur à une table de recherche (et le maintenir). c'est la seule commande qui vous indique exactement le nom, c'est Machine model: Raspberry Pi 2 Model B Rev 1.1-à- dire sans racine aussi.
Eugen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.