실행중인 Raspberry Pi 모델은 무엇입니까?


28

현재 Raspberry Pi가 Raspbian Jessie Lite 8.0 과 함께 2 Model B3 인지 여부를 결정하는 방법이 있습니까?

이것은 Ralink RT5370 칩셋 드라이버를 사용하여 Wi-Fi USB 동글 (여기서는 Raspberry Pi 2) bootstrap.sh의 속성을 설정 해야하는 Bash로 작성 되었기 때문 입니다.txpower

무선 속성을 사용하여 설정했습니다 iwconfig(이것은 더 이상 사용되지 않지만 현재 작업을 수행하므로 변경하지 않습니다).

이후에 라즈베리 파이 3 내부 와이파이 칩셋은 인 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.sh: TWIN에 대한 부트 스트랩

노트

  • 그 체크 dBm되어 불필요 도의 경우, 라즈베리 파이 2의 Ralink 칩셋 에 동일한 명령을 사용하여 비 불확실 하나, 따라서 양의 라즈베리 파이 즉.

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • 그것은을위한 것이 흥미 롭다 외부 와이파이 USB는 동글 한 요구 사항을 (위해 다음을 수행 할 수있는 라즈베리 파이 2 )

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

    관해서 동안 (라즈베리 파이 3) 붙박이 무선 인터넷 모듈 이없는 필요ifconfig up and down. 간단한 iwconfig명령 만 작동합니다.


4
가장 좋은 방법은 모델을 찾는 대신 원하는 것을 테스트하는 것입니다 (Raspberry Pi 5의 모양은 어떻습니까?). 이 경우 Ralink RT5370 칩셋이 있는지 확인하고 적절히 구성하십시오. 내장 된 Wi-Fi 드라이버와 같은 방식입니다.
Thorbjørn Ravn Andersen 님이



답변:


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}'

개정 번호

이 웹 페이지 에는 여기에 복사 한 편리한 차트가 있습니다.

여기에 이미지 설명을 입력하십시오


1
나는 /proc/cpuinfo전에 갔다 . uname -m많은 것을 말하지 않기 때문에 최선의 선택 인 것 같습니다 .
Shan-Desai 2012

1
@ Shan-Desai : 편집하기 전에 그것을 보았는지 확실하지 않지만 proc 파일에서 개정 정보 만 추출하는 명령을 포함했습니다. 희망이 도움이됩니다.
Jacobm001

1
네, 당신이 언급 한 것을 시도했습니다. 비교는 사이였다 파이 2 모델 1.1파이 3 모델 B 재미있는 것은 그러나 내이다 파이 3 여전히 쇼 armv7luname -m
산 - 데 사이

2
당신은 /는 PROC / cpuinfo을하지 / CPU / procinfo 의미
user253751

uname리눅스가 빌드 한 대상 아키텍처 만 나열하며 CPU 유형을 결정하는 데 신뢰할 수 없습니다. 현재 RPI3 Raspbian은 32 비트 모드에서 실행됩니다. 이 나열됩니다 armv7당신이 사용하는 경우, AARCH64( arm64그것을 말할 것이다 리눅스) armv8당신이 이전 RPI1의 raspbian를 사용하는 경우, 그것은 말할 것이다 armv6.
crasic

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. 이것들은 잘 문서화되어 있으며 소스는 쉽게 구할 수 있습니다.

https://raspberrypi.stackexchange.com/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
스위치 문이 더 좋습니다.
Shan-Desai

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

@goldilocks [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2내 Pi에 표시 됩니다. 가장 강력한 방법이 아닐 수 있습니다.
Milliways

@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 루트없이 .
Eugen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.