Model Raspberry Pi mana yang saya jalankan?

28

Apakah ada cara untuk menentukan apakah Raspberry Pi saat ini adalah 2 Model B dan 3 dengan Raspbian Jessie Lite 8.0 ?

Ini karena saya punya tulisan khusus bootstrap.shdi Bash di mana ia perlu mengatur atribut txpoweruntuk dongle USB Wi-Fi (di sini, Raspberry Pi 2) menggunakan driver chipset Ralink RT5370 .

Saya mengatur atribut Wireless menggunakan iwconfig(yang, saya tahu sudah usang, tetapi saat ini mendapatkan pekerjaan, jadi saya tidak mengubahnya).

Karena, dalam Raspberry Pi 3 chipset Wi-Fi internal adalah bcmchipset berbasis-yang tidak akan membiarkan perintah berikut dijalankan:

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

Dengan Raspberry Pi 3 perintah yang disebutkan di atas bekerja hanya dengan menghapus dBmdari perintah yang disebutkan di atas:

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

Saya ingin menambahkan tanda centang apakah model Raspberry Pi 2 atau 3 menggunakan Bash.

Ada petunjuk?

Jika seseorang ingin melalui bootstrap.sh: Bootstrapping for TWIN

Catatan

  • Aku memeriksa bahwa dBmini tidak diperlukan , juga dalam kasus Raspberry Pi 2 dengan Ralink chipset maka untuk non-ambiguitas satu dapat menggunakan perintah yang sama untuk kedua Raspberry Pi yaitu.

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • Sangat menarik untuk dicatat bahwa untuk dongle USB Wi-Fi eksternal seseorang perlu melakukan hal berikut (untuk Raspberry Pi 2 ):

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

    sedangkan untuk modul Wi-Fi built-in (Raspberry Pi 3) ada tidak perlu untuk ifconfig up and down. Hanya iwconfigperintah langsung bekerja.

Shan-Desai
sumber
4
Pendekatan terbaik adalah menguji untuk hal yang ingin Anda lakukan alih-alih mencari model (seperti apa Raspberry Pi 5?). Dalam hal ini, lihat apakah ada Chipset Ralink RT5370 dan konfigurasikan sesuai. Cara yang sama dengan driver Wifi bawaan.
Thorbjørn Ravn Andersen
Kemungkinan rangkap dari versi OS Apa yang diinstal
Milliways

Jawaban:

40
cat /proc/device-tree/model

mengembalikan sesuatu seperti

Raspberry Pi 3 Model B Rev 1.2
SBF
sumber
21

Berdasarkan Jenis CPU

Anda dapat memeriksa versi RPi dengan perintah uname,. Versi RPi yang berbeda memiliki arsitektur CPU yang berbeda. RPi 2 memiliki arm7, sedangkan 3 memiliki arm8.

uname -m

Dengan Revisi Perangkat Keras

Jika Anda perlu lebih spesifik, Anda dapat memeriksa entri revisi dari output cat /proc/cpuinfo. Jika Anda ingin membalas angka revisi, perintah berikut harus melakukannya:

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

Angka Revisi

Halaman web ini memiliki bagan praktis yang saya salin di sini.

masukkan deskripsi gambar di sini

Jacobm001
sumber
1
Saya telah melewati /proc/cpuinfosebelumnya. Sepertinya pilihan terbaik, karena uname -mtidak banyak bicara.
Shan-Desai
1
@ Shan-Desai: tidak yakin apakah Anda melihatnya, sebelum diedit, tetapi saya hanya menyertakan perintah yang akan mengekstrak hanya informasi revisi dari file proc. Semoga itu bisa membantu.
Jacobm001
1
Yup, saya mencoba yang Anda sebutkan. Perbandingannya adalah antara Pi 2 Model v1.1 dan Pi 3 Model B hal yang lucu adalah bahwa Pi 3 saya masih menunjukkan armv7l atasuname -m
Shan-Desai
2
Maksud Anda / proc / cpuinfo not / cpu / procinfo
user253751
unamehanya akan mencantumkan arsitektur target yang dibangun untuk Linux, dan tidak dapat diandalkan untuk menentukan Tipe CPU. Raspbian RPI3 saat ini berjalan dalam mode 32 bit. itu akan mendaftar armv7, jika Anda menggunakan AARCH64( arm64) linux itu akan mengatakan armv8, jika Anda menggunakan raspbian RPI1 lama itu akan mengatakan armv6.
crasic
6

Ada banyak metode (dengan berbagai keandalan) untuk menentukan ini. Salah satu yang paling lengkap dan andal adalah gpio -vyang menghasilkan output berikut.

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.

Ini bisa dilakukan lebih elegan dengan menulis program sederhana, menggunakan fungsi yang disediakan oleh wiringpi. Ini didokumentasikan dengan baik, dan sumbernya sudah tersedia.

Skrip di /raspberrypi//a/85016/8697 menunjukkan informasi lengkap tentang Pi dan OS Anda.

Milliways
sumber
2

Saya membuat skrip bash yang akan memberikan info model berdasarkan Revisi.

Jika Anda membuatnya lebih baik, beri tahu saya.

#!/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)"
Andy Delgado
sumber
Lain lagi jika struktur akan jauh lebih efisien.
Jacobm001
4
Pernyataan pergantian akan lebih baik.
Shan-Desai
2

Saya tidak punya cukup perwakilan untuk mengomentari balasan @Andy Delgado tetapi ini adalah versi berbeda dari kodenya menggunakan beberapa fitur bash yang lebih baru.

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

Selain itu: REVISIONSdidefinisikan di dalam suatu fungsi karena saya menggunakannya di atas sshyaitussh some-host "$(declare -f); check_pi_version"

Dibawa
sumber
-2

Cara sederhana: dmesg | grep "Machine model:"

lemassykoi
sumber
Aneh, ini tidak menghasilkan apa-apa ketika saya mencobanya!
goldilocks
@goldilocks Menampilkan [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2Pi saya. Mungkin bukan metode yang paling kuat.
Milliways
@Milliways Alasannya tidak melakukan ini untuk saya adalah sistem sudah terlalu lama. Itu dari boot, dan dmesgmerupakan buffer melingkar. Karenanya, ini adalah metodologi yang cacat.
goldilocks
@goldilocks Mungkin OP hanya ingin tahu setelah boot. Ini tidak mungkin berubah ;-) Ada hampir pasti metode yang lebih baik untuk menyelesaikan masalah OP.
Milliways
solusi terbaik menurut saya. bekerja dengan sempurna di Raspberry Pi 2 dan 3, menjalankan Raspbian. Saya telah mengujinya pada Pi yang beroperasi sejak 8 hari. Solusi lain di utas ini membutuhkan alat baru (gpio) atau Anda harus memetakan kode revisi cpu ke tabel pencarian (dan memeliharanya). itulah satu-satunya perintah yang memberi tahu Anda persis nama yaitu Machine model: Raspberry Pi 2 Model B Rev 1.1- tanpa root juga.
Eugen