どのモデルのRaspberry Piを実行していますか?


28

現在のRaspberry PiがRaspbian Jessie Lite 8.0を搭載した2モデルB3 モデルのどちらであるかを判断する方法はありますか?

これは、Ralink RT5370チップセットドライバーを使用してWi-Fi USBドングル(ここではRaspberry Pi 2)bootstrap.shの属性を設定する必要があるBashで書かれた特定のものがあるためです。txpower

を使用してワイヤレス属性を設定しますiwconfig(これは非推奨ですが、現在は仕事が完了しているため、変更していません)。

以来、中にラズベリーパイ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のためのブートストラップ

ノート

  • Ralinkチップセットを搭載したRaspberry Pi 2の場合も必要ないことを確認しました。そのため、あいまいさdBmない場合は、両方のRaspberry Piで同じコマンドを使用できます。

    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

    用としてしばらく(ラズベリーパイ3)作り付けのWi-Fiモジュールが存在しない不要のためifconfig up and down。単純なiwconfigコマンドだけが機能します。


4
最良のアプローチは、モデルを探す代わりに、やりたいことをテストすることです(Raspberry Pi 5はどのように見えますか?)。この場合、Ralink RT5370チップセットがあるかどうかを確認し、それに応じて構成します。組み込みのWifiドライバーでも同じです。
するThorbjörnRavnアンデルセン



回答:


40
cat /proc/device-tree/model

のようなものを返します

Raspberry Pi 3 Model B Rev 1.2

21

CPUタイプ別

コマンドでRPiバージョンを確認できunameます。異なるRPiバージョンには異なるCPUアーキテクチャがあります。RPi 2にはarm7があり、3にはarm8があります。

uname -m

ハードウェアリビジョン別

より具体的にする必要がある場合は、の出力からリビジョンエントリを確認できますcat /proc/cpuinfo。リビジョン番号だけを正確にしたい場合は、次のコマンドでそれを行う必要があります。

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

リビジョン番号

このWebページには、ここでコピーした便利なグラフがあります。

ここに画像の説明を入力してください


1
私は/proc/cpuinfo前に行きました。uname -m多くを語らないので、それは最良のオプションのようです。
シャンデサイ

1
@ Shan-Desai:編集前に見たかどうかはわかりませんが、procファイルからリビジョン情報のみを抽出するコマンドを追加しました。お役に立てば幸いです。
Jacobm001

1
うん、私はあなたが言及したものを試しました。比較がの間であったパイ2モデルV1.1Piの3モデルB面白いことは、しかし、私のことであるパイ3まだショーはarmv7luname -m
シャン・デサイ


unamelinuxが構築されたターゲットアーキテクチャのみをリストし、CPUタイプの決定には信頼できません。現在のRPI3 Raspbianは32ビットモードで実行されます。armv7あなたがAARCH64arm64)linux を使うならリストします、あなたarmv8が古いRPI1 raspbianを使うなら言うでしょうarmv6
古典的な

6

これを決定するための多くの方法(信頼性が異なる)があります。最も完全で信頼できる方法の1つは、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)"

else if構造の方がはるかに効率的です。
Jacobm001

4
switchステートメントの方が良いでしょう。
シャン・デサイ

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、関数内で定義されていますsshssh 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.2Piに@goldilocksが表示されます。最も堅牢な方法ではない場合があります。
ミリウェイズ

@Milliwaysそれが私のためにこれをしない理由は、システムが長すぎるためです。これはブートからのものdmesgで、循環バッファーです。 したがって、これは欠陥のある方法論です。
goldilocks

@goldilocksおそらく、OPは起動後にのみ知りたいと思うでしょう。変更されることはほとんどありません;-) OP問題を解決するためのほぼ確実に優れた方法があります。
ミリウェイズ

私の意見では最高のソリューション。Raspbianを実行しているRaspberry Pi 2および3で完全に動作します。8日間から実行されているPiでテストしました。このスレッドの他のソリューションでは、新しいツール(gpio)を必要とするか、CPUリビジョンコードをルックアップテーブルにマップ(およびメンテナンス)する必要があります。これは、正確に名前を伝える唯一のコマンドですMachine model: Raspberry Pi 2 Model B Rev 1.1。つまり、ルートなしでもです。
オイゲン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.