Mô hình Raspberry Pi nào tôi đang chạy?


28

Có cách nào để xác định xem Raspberry Pi hiện tại có phải là 2 Model B3 với Raspbian Jessie Lite 8.0 không?

Điều này là do tôi có một bootstrap.shvăn bản cụ thể bằng tiếng Bash, nơi nó cần đặt thuộc tính txpowercho khóa USB Wi-Fi (ở đây, Raspberry Pi 2) bằng trình điều khiển chipset Ralink RT5370 .

Tôi đặt các thuộc tính Không dây bằng cách sử dụng iwconfig(cái mà tôi biết là không dùng nữa, nhưng hiện tại nó đã hoàn thành công việc, vì vậy tôi không thay đổi nó).

Vì, trong Raspberry Pi 3 , chipset Wi-Fi bên trong là bcmchipset dựa trên cơ sở sẽ không cho phép các lệnh sau thực thi:

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

Với Raspberry Pi 3, lệnh được đề cập ở trên chỉ hoạt động bằng cách xóa dBmkhỏi lệnh đã đề cập ở trên:

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

Tôi muốn thêm một kiểm tra xem mô hình Raspberry Pi là 2 hoặc 3 bằng Bash.

Có gợi ý nào không?

Trong trường hợp, ai đó muốn thông qua bootstrap.sh: Bootstrapping cho TWIN

Ghi chú

  • Tôi đã kiểm tra điều đó dBmkhông bắt buộc , trong trường hợp của Raspberry Pi 2 với chipset Ralink do đó để không mơ hồ, người ta có thể sử dụng cùng một lệnh cho cả Raspberry Pis viz.

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • Thật thú vị khi lưu ý rằng đối với các khóa USB Wi-Fi bên ngoài, người ta cần thực hiện các thao tác sau (đối với Raspberry Pi 2 ):

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

    trong khi như đối với inbuilt module Wi-Fi (Raspberry Pi 3)không cần phải cho ifconfig up and down. Chỉ cần iwconfiglệnh đơn giản hoạt động.


4
Cách tiếp cận tốt nhất là kiểm tra thứ bạn muốn làm thay vì tìm kiếm mô hình (Raspberry Pi 5 sẽ trông như thế nào?). Trong trường hợp này, hãy xem liệu có Chipset Ralink RT5370 và cấu hình phù hợp không. Tương tự với trình điều khiển Wifi tích hợp.
Thorbjørn Ravn Andersen



Câu trả lời:


40
cat /proc/device-tree/model

trả lại một cái gì đó như

Raspberry Pi 3 Model B Rev 1.2

21

Theo loại CPU

Bạn có thể kiểm tra phiên bản RPi bằng lệnh , uname. Các phiên bản RPi khác nhau có kiến ​​trúc CPU khác nhau. RPi 2 có arm7, trong khi 3 có arm8.

uname -m

Bằng cách sửa đổi phần cứng

Nếu bạn cần phải cụ thể hơn, bạn có thể kiểm tra mục sửa đổi từ đầu ra của cat /proc/cpuinfo. Nếu bạn muốn chỉ chính xác số sửa đổi, lệnh sau sẽ thực hiện:

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

Số sửa đổi

Trang web này có một biểu đồ tiện dụng mà tôi đã sao chép ở đây.

nhập mô tả hình ảnh ở đây


1
Tôi đã đi qua /proc/cpuinfotrước đây. Có vẻ như là lựa chọn tốt nhất, vì uname -mkhông nói nhiều.
Shan-Desai

1
@ Shan-Desai: không chắc chắn nếu bạn nhìn thấy nó, trước khi chỉnh sửa, nhưng tôi chỉ bao gồm một lệnh sẽ trích xuất thông tin sửa đổi từ tệp Proc. Mong rằng sẽ giúp.
Jacobm001

1
Yup tôi đã thử một trong những bạn đã đề cập. Sự so sánh là giữa Pi 2 Model v1.1Pi 3 Model B , tuy nhiên điều thú vị là Pi 3 của tôi vẫn hiển thị armv7l khiuname -m
Shan-Desai

2
Ý bạn là / Proc / cpuinfo không / cpu / Procinfo
user253751

unamesẽ chỉ liệt kê kiến ​​trúc đích mà linux đã xây dựng và không đáng tin cậy để xác định Loại CPU. RPI3 Raspbian hiện tại chạy ở chế độ 32 bit. Nó sẽ liệt kê armv7, nếu bạn sử dụng một AARCH64( arm64) linux, nó sẽ nói armv8, nếu bạn sử dụng raspbian RPI1 cũ, nó sẽ nói armv6.
crasic

6

Có nhiều phương pháp (có độ tin cậy khác nhau) để xác định điều này. Một trong những điều hoàn chỉnh và đáng tin cậy nhất là gpio -vtạo ra đầu ra sau.

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.

Điều này có thể được thực hiện thanh lịch hơn bằng cách viết một chương trình đơn giản, sử dụng các chức năng được cung cấp bởi wiringpi. Đây là những tài liệu tốt, và nguồn có sẵn.

Tập lệnh trong /raspberrypi//a/85016/8697 hiển thị thông tin toàn diện về Pi và HĐH của bạn.


2

Tôi đã tạo một tập lệnh bash sẽ cung cấp thông tin mô hình dựa trên Sửa đổi.

Nếu bạn làm cho nó tốt hơn, xin vui lòng cho tôi biết.

#!/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)"

Một cấu trúc khác nếu hiệu quả hơn nhiều.
Jacobm001

4
Một tuyên bố chuyển đổi sẽ tốt hơn.
Shan-Desai

2

Tôi không có đủ đại diện để nhận xét về phản hồi @Andy Delgado nhưng đây là một phiên bản mã khác của anh ấy bằng cách sử dụng một số tính năng bash mới hơn.

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})"
}

Bên cạnh: REVISIONSđược định nghĩa bên trong một hàm kể từ khi tôi sử dụng nó trên sshiessh some-host "$(declare -f); check_pi_version"


-2

Cách đơn giản : dmesg | grep "Machine model:"


Thật kỳ lạ, điều này không tạo ra bất cứ điều gì khi tôi thử nó!
goldilocks

@goldilocks Hiển thị [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2trên Pi của tôi. Có thể không phải là phương pháp mạnh mẽ nhất.
Milliways

@Milliways Lý do nó không làm điều này đối với tôi là hệ thống đã hoạt động quá lâu. Đó là từ khởi động, và dmesglà một bộ đệm tròn. Do đó, đây là một phương pháp thiếu sót.
goldilocks

@goldilocks Có lẽ OP chỉ muốn biết sau khi khởi động. Nó không có khả năng thay đổi ;-) Gần như chắc chắn có các phương pháp giải quyết vấn đề OP tốt hơn.
Milliways

giải pháp tốt nhất theo ý kiến ​​của tôi hoạt động hoàn hảo trên Raspberry Pi 2 và 3, chạy Raspbian. Tôi đã thử nghiệm nó trên một Pi chạy từ 8 ngày. Các giải pháp khác trong luồng này yêu cầu các công cụ mới (gpio) hoặc bạn phải ánh xạ mã sửa đổi cpu vào bảng tra cứu (và duy trì nó). đó là lệnh duy nhất cho bạn biết chính xác tên tức là Machine model: Raspberry Pi 2 Model B Rev 1.1- không có root.
Eugen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.