Który model Raspberry Pi używam?

28

Czy istnieje sposób ustalenia, czy obecny Raspberry Pi to model 2 B i 3 z Raspbian Jessie Lite 8.0 ?

Jest tak, ponieważ mam konkretny bootstrap.shnapisany w języku Bash, w którym należy ustawić atrybut txpowerdla klucza Wi-Fi USB (tutaj Raspberry Pi 2) za pomocą sterownika mikroukładu Ralink RT5370 .

Ustawiam atrybuty Wireless za pomocą iwconfig(co, jak wiem, jest przestarzałe, ale obecnie wykonuje zadanie, więc go nie zmieniam).

Ponieważ w Raspberry Pi 3 wewnętrzny mikroukład Wi-Fi jest bcmchipsetem opartym na systemie , który nie pozwala na wykonanie następującego polecenia:

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

W Raspberry Pi 3 wyżej wymienione polecenie działa po prostu usuwając dBmz wyżej wspomnianego polecenia:

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

Chciałbym dodać sprawdzenie, czy model Raspberry Pi ma 2, czy 3, używając Bash.

Jakieś wskazówki?

W przypadku, gdy ktoś chce przejść przez bootstrap.sh: Bootstrapping dla TWIN

Notatki

  • Sprawdziłem, że niedBm jest to wymagane , również w przypadku Raspberry Pi 2 z chipsetem Ralink, dlatego dla niejednoznaczności można użyć tego samego polecenia zarówno dla Raspberry Pis viz.

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • Warto zauważyć, że w przypadku zewnętrznych kluczy USB Wi-Fi należy wykonać następujące czynności (w przypadku Raspberry Pi 2 ):

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

    natomiast jak wbudowane moduły Wi-Fi (Raspberry Pi 3) istnieje nie trzeba za ifconfig up and down. iwconfigDziała tylko proste polecenie.

Shan-Desai
źródło
4
Najlepszym rozwiązaniem jest przetestowanie tego, co chcesz zrobić, zamiast szukać modeli (jak będzie wyglądać Raspberry Pi 5?). W takim przypadku sprawdź, czy istnieje chipset Ralink RT5370 i odpowiednio skonfiguruj. Tak samo jest z wbudowanym sterownikiem Wi-Fi.
Thorbjørn Ravn Andersen
Możliwy duplikat zainstalowanej wersji systemu operacyjnego
Milliways,

Odpowiedzi:

40
cat /proc/device-tree/model

zwraca coś takiego

Raspberry Pi 3 Model B Rev 1.2
SBF
źródło
21

Według typu procesora

Można sprawdzić wersję RPI z polecenia uname. Różne wersje RPi mają różne architektury procesorów. RPi 2 ma ramię 7, podczas gdy 3 ma ramię 8.

uname -m

Według wersji sprzętowej

Jeśli chcesz być bardziej szczegółowy, możesz sprawdzić pozycję zmiany z danych wyjściowych cat /proc/cpuinfo. Jeśli chcesz dokładnie podać numer wersji, powinna to zrobić następująca komenda:

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

Numery wersji

Na tej stronie znajduje się przydatny wykres, który tutaj skopiowałem.

wprowadź opis zdjęcia tutaj

Jacobm001
źródło
1
Przeszedłem /proc/cpuinfowcześniej. Wydaje się, że to najlepsza opcja, ponieważ uname -mniewiele mówi.
Shan-Desai
1
@ Shan-Desai: nie jestem pewien, czy go widziałeś, przed edycją, ale właśnie zawarłem polecenie, które wyodrębni tylko informacje o wersji z pliku proc. Mam nadzieję, że to pomaga.
Jacobm001
1
Tak, próbowałem tego, o którym wspomniałeś. Porównanie było między Pi 2 Model v1.1 i Pi 3 Model B, zabawne jest jednak to, że moje Pi 3 wciąż pokazuje armv7l nauname -m
Shan-Desai
2
Masz na myśli / proc / cpuinfo not / cpu / procinfo
user253751
unamepoda tylko listę docelowej architektury Linuksa, dla której został zbudowany, i nie jest wiarygodna przy określaniu typu procesora. Obecny RPI3 Raspbian działa w trybie 32-bitowym. wyświetli listę armv7, jeśli użyjesz linuxa AARCH64( arm64), powie armv8, jeśli użyjesz starego raspbian RPI1, powie armv6.
crasic
6

Istnieje wiele metod (o różnej niezawodności), aby to ustalić. Jednym z najbardziej kompletnych i niezawodnych jest gpio -vnastępująca wydajność.

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.

Można to zrobić bardziej elegancko, pisząc prosty program, korzystając z funkcji dostarczonych przez wiringpi. Są one dobrze udokumentowane, a źródło jest łatwo dostępne.

Skrypt w /raspberrypi//a/85016/8697 pokazuje wyczerpujące informacje o twoim systemie Pi i OS.

Milliways
źródło
2

Stworzyłem skrypt bash, który dostarczy informacji o modelu na podstawie wersji.

Jeśli to poprawisz, daj mi znać.

#!/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
źródło
Inna, jeśli struktura byłaby znacznie bardziej wydajna.
Jacobm001
4
Instrukcja zmiany byłaby lepsza.
Shan-Desai,
2

Nie mam wystarczającej liczby przedstawicieli, aby skomentować odpowiedź @Andy Delgado, ale oto inna wersja jego kodu przy użyciu nowszych funkcji 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})"
}

Na bok: REVISIONSjest zdefiniowany wewnątrz funkcji, ponieważ używam go ponad, sshtjssh some-host "$(declare -f); check_pi_version"

Takle
źródło
-2

Prosta droga : dmesg | grep "Machine model:"

Lemassykoi
źródło
Dziwne, to nic nie daje, kiedy próbuję!
Złotowłosa
@goldilocks Wyświetla [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2na moim Pi. Może nie być najbardziej niezawodną metodą.
Milliways,
@Milliways Powodem, dla którego mi tego nie robi, jest zbyt długi czas działania systemu. To pochodzi z bootowania i dmesgjest okrągłym buforem. Dlatego jest to błędna metodologia.
Złotowłosa
@Goldilocks Prawdopodobnie OP chce wiedzieć tylko po uruchomieniu. Jest mało prawdopodobne, aby się zmieniło ;-) Są prawie na pewno lepsze metody rozwiązywania problemu PO.
Milliways
moim zdaniem najlepsze rozwiązanie. działa idealnie na Raspberry Pi 2 i 3, z uruchomionym Raspbian. Testowałem to na Pi, który działa od 8 dni. Inne rozwiązania w tym wątku wymagały albo nowych narzędzi (gpio), albo musisz zmapować kod wersji procesora na tabelę przeglądową (i utrzymywać ją). to jedyne polecenie, które mówi dokładnie nazwę, tj. Machine model: Raspberry Pi 2 Model B Rev 1.1- bez rootowania.
Eugen