Яку модель Raspberry Pi я використовую?


28

Чи є спосіб визначити, чи є в даний час Raspberry Pi або 2 Model B і 3 з Raspbian Jessie Lite 8.0 ?

Це тому, що у мене є певне bootstrap.shнаписане на Bash, де йому потрібно встановити атрибут txpowerдля Wi-Fi USB-ключа (тут, Raspberry Pi 2) за допомогою драйвера чіпсета Ralink RT5370 .

Я встановлюю атрибути Wireless за допомогою 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

Я хотів би додати перевірку, чи є модель Raspberry Pi 2 або 3 за допомогою Bash.

Якісь підказки?

У випадку, якщо хтось захоче пройти через bootstrap.sh: завантаження для TWIN

Примітки

  • Я перевірив, що dBmце не потрібно , також у випадку Raspberry Pi 2 з чіпсетом Ralink, отже, для неоднозначності можна використовувати одну і ту ж команду для Raspberry Pis саме.

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • Цікаво відзначити, що для зовнішніх USB-ключів Wi-Fi потрібно виконати наступне (для Raspberry Pi 2 ):

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

    в той час , як для вбудованих модулів Wi-Fi (Raspberry Pi 3) немає ніякої необхідності для ifconfig up and down. Просто команда прямо iwconfigпрацює.


4
Найкращий підхід - перевірити те, що ви хочете зробити, а не шукати моделі (як виглядатиме Raspberry Pi 5?). У цьому випадку подивіться, чи є чіпсет Ralink RT5370 і налаштуйте відповідним чином. Так само і з вбудованим драйвером Wifi.
Thorbjørn Ravn Andersen



Можливий дублікат встановленої версії ОС
Milliways

Відповіді:


40
cat /proc/device-tree/model

повертає щось подібне

Raspberry Pi 3 Model B Rev 1.2

21

За типом процесора

Ви можете перевірити версію ХИП з командою, uname. Різні версії RPi мають різні архітектури процесора. У RPi 2 є arm7, тоді як у 3 є arm8.

uname -m

За версією апаратного перегляду

Якщо вам потрібно бути більш конкретними, ви можете перевірити запис редакції з результату cat /proc/cpuinfo. Якщо ви хочете точно вказати номер редакції, слід виконати наступну команду:

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

Ревізійні номери

На цій веб-сторінці є зручна діаграма, яку я скопіював сюди.

введіть тут опис зображення


1
Я пройшов /proc/cpuinfoраніше. Це здається найкращим варіантом, оскільки uname -mне розповідає багато.
Шань-Дезай

1
@ Shan-Desai: не впевнений, чи бачив ви це перед редагуванням, але я просто включив команду, яка витягує інформацію про перегляд з файлу proc. Сподіваюся, що це допомагає.
Jacobm001

1
Так, я спробував те, що ви згадали. Порівняння було між v1.1 Pi 2 моделі і Pi 3 Модель B кумедна річ , однак, що мій Pi 3 все ще показує armv7l наuname -m
Shan-Десаї

2
Ви маєте на увазі / proc / cpuinfo не / cpu / procinfo
user253751

unameбуде перераховано лише цільову архітектуру, для якої був побудований Linux, і ненадійний для визначення типу ЦП. Поточний RPI3 Raspbian працює в 32-бітовому режимі. він буде перерахований armv7, якщо ви використовуєте AARCH64( arm64) linux, він скаже armv8, якщо ви використовуєте старий розп. RPI1, він скаже armv6.
катастрофа

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 та ОС.


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
Заява переключення було б краще.
Шан-Дезай

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 Відображає [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2на моєму Pi. Може бути не найбільш надійним методом.
Міллівейс

@Milliways Причина, коли вона цього не робить для мене, - це система надто довго. Це з завантаження, і dmesgце круговий буфер. Отже, це хибна методологія.
goldilocks

@goldilocks Імовірно, OP хоче знати лише після завантаження. Це навряд чи зміниться ;-) Є майже напевно кращі методи вирішення проблеми ОП.
Міллівейс

найкраще рішення на мій погляд. прекрасно працює на Raspberry Pi 2 і 3, працює на Raspbian. Я перевірив його на Pi, який працює з 8 днів. Інші рішення цього потоку вимагали або нових інструментів (gpio), або вам доведеться зіставити код редакції процесора до оглядової таблиці (і підтримувати її). це єдина команда, яка точно вказує вам назву, тобто Machine model: Raspberry Pi 2 Model B Rev 1.1без кореня.
Євген
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.