ฉันกำลังใช้ Raspberry Pi รุ่นใดอยู่


28

มีวิธีการพิจารณาว่าราสเบอร์รี่ปี่ปัจจุบันเป็นทั้ง2 รุ่น Bและ3กับRaspbian Jessie Lite 8.0หรือไม่?

นี่เป็นเพราะฉันมีการbootstrap.shเขียนเป็นพิเศษใน Bash ซึ่งจำเป็นต้องตั้งค่าแอตทริบิวต์txpowerสำหรับดองเกิล USB Wi-Fi (ที่นี่ Raspberry Pi 2) โดยใช้ไดรเวอร์ชิปเซ็ต Ralink RT5370

ฉันตั้งค่าคุณลักษณะไร้สายโดยใช้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: Bootstrapping สำหรับ TWIN

หมายเหตุ

  • ฉันจะตรวจสอบว่าdBmมีการไม่จำเป็นนอกจากนี้ในกรณีของราสเบอร์รี่ Pi 2กับRalink ชิปเซ็ตด้วยเหตุอย่างใดอย่างหนึ่งที่ไม่กำกวมสามารถใช้คำสั่งเดียวกันสำหรับทั้งราสเบอร์รี่ปิได้แก่

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • เป็นที่น่าสนใจที่จะทราบว่าสำหรับด็องเกิล Wi-Fi USB ภายนอกจำเป็นต้องดำเนินการดังต่อไปนี้ (สำหรับราสเบอร์รี่ Pi 2 ):

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

    ขณะที่เป็นสำหรับinbuilt โมดูล Wi-Fi (ราสเบอร์รี่ Pi 3)มีไม่จำเป็นifconfig up and downสำหรับ เพียงแค่iwconfigคำสั่งที่ตรงไปตรงมาทำงาน


4
วิธีที่ดีที่สุดคือการทดสอบสิ่งที่คุณต้องการทำแทนที่จะมองหานางแบบ (ราสเบอร์รี่ Pi 5 จะมีลักษณะอย่างไร) ในกรณีนี้ดูว่ามีชิปเซ็ต Ralink RT5370 และกำหนดค่าตามนั้นหรือไม่ เช่นเดียวกันกับไดรเวอร์ Wifi ในตัว
Thorbjørn Ravn Andersen

เกี่ยวข้อง: raspberrypi.stackexchange.com/q/1826/19949
Ghanima

เกี่ยวข้อง: raspberrypi.stackexchange.com/q/100076/19949
Ghanima

คำตอบ:



21

ตามประเภท CPU

คุณสามารถตรวจสอบเวอร์ชั่น RPi ด้วยคำสั่ง, uname. รุ่น RPi ที่แตกต่างกันมีสถาปัตยกรรม CPU ที่แตกต่าง RPi 2 มีอาร์ม 7 ในขณะที่ 3 มีอาร์ม 8

uname -m

โดยการแก้ไขฮาร์ดแวร์

หากคุณจำเป็นต้องเฉพาะเจาะจงมากขึ้นคุณสามารถตรวจสอบการแก้ไขcat /proc/cpuinfoรายการจากการส่งออกของ หากคุณต้องการเพียงแค่หมายเลขการแก้ไขที่แน่นอนคำสั่งต่อไปนี้ควรทำ:

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

หมายเลขการแก้ไข

หน้าเว็บนี้มีแผนภูมิที่มีประโยชน์ซึ่งฉันได้คัดลอกมาที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


1
ฉันผ่าน/proc/cpuinfoมาก่อน ดูเหมือนว่าตัวเลือกที่ดีที่สุดเนื่องจากuname -mไม่ได้บอกอะไรมาก
Shan-Desai

1
@ Shan-Desai: ไม่แน่ใจว่าคุณเห็นมันก่อนที่จะแก้ไข แต่ฉันเพิ่งรวมคำสั่งที่จะแยกเพียงข้อมูลการแก้ไขจากไฟล์ proc หวังว่าจะช่วย
Jacobm001

1
ใช่ฉันลองตัวที่คุณพูดถึง การเปรียบเทียบอยู่ระหว่างPi 2 Model v1.1และPi 3 Model Bสิ่งที่ตลก แต่ก็คือPi 3ของฉันยังคงแสดงarmv7l ต่อไปuname -m
Shan-Desai

2
คุณหมายถึง / proc / cpuinfo not / cpu / procinfo
user253751

unameจะแสดงเฉพาะสถาปัตยกรรมเป้าหมายที่สร้างขึ้นสำหรับลินุกซ์และไม่น่าเชื่อถือสำหรับการพิจารณาประเภทของ CPU RPI3 Raspbian ปัจจุบันทำงานในโหมด 32 บิต มันจะแสดงรายการarmv7ถ้าคุณใช้AARCH64( arm64) ลินุกซ์ก็จะบอกว่า armv8ถ้าคุณใช้ raspbian RPI1 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

ฉันสร้างสคริปต์ทุบตีที่จะให้ข้อมูลรุ่นตามการแก้ไข

หากคุณทำให้ดีขึ้นโปรดแจ้งให้เราทราบ

#!/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
คำสั่งเปลี่ยนจะดีกว่า
Shan-Desai

2

ฉันมีตัวแทนไม่เพียงพอที่จะแสดงความคิดเห็นใน @Andy Delgado แต่นี่เป็นรุ่นที่แตกต่างของรหัสโดยใช้คุณสมบัติทุบตีใหม่

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 ที่ดีกว่า
Milliways

ทางออกที่ดีที่สุดในความคิดของฉัน ทำงานได้อย่างสมบูรณ์บน Raspberry Pi 2 และ 3 โดยใช้ Raspbian ฉันได้ทดสอบมันใน Pi ที่ทำงานตั้งแต่ 8 วัน โซลูชันอื่นในชุดข้อความนี้ต้องการเครื่องมือใหม่ (gpio) หรือคุณต้องแมปรหัสการแก้ไข cpu กับตารางการค้นหา (และบำรุงรักษา) นั่นเป็นคำสั่งเดียวที่บอกชื่อคุณอย่างแน่นอนMachine model: Raspberry Pi 2 Model B Rev 1.1- โดยไม่ต้องรูท
Eugen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.