मैं कौन सा मॉडल रास्पबेरी पाई चला रहा हूं?


28

वहाँ निर्धारित करता है कि वर्तमान रास्पबेरी पाई या तो एक है का एक तरीका है 2 मॉडल बी और 3 के साथ Raspbian जेसी लाइट 8.0 ?

ऐसा इसलिए है क्योंकि मेरे पास bootstrap.shबैश में एक विशेष रूप से लिखा गया है जहां इसे txpowerएक Ralink RT5370 चिपसेट ड्राइवर का उपयोग करके वाई-फाई यूएसबी डोंगल (यहां, रास्पबेरी पाई 2) के लिए विशेषता सेट करने की आवश्यकता है ।

मैंने वायरलेस विशेषताओं का उपयोग करके सेट किया है iwconfig(जो, मुझे पता है कि पदावनत किया गया है, लेकिन वर्तमान में यह काम हो जाता है, इसलिए मैं इसे नहीं बदल रहा हूं)।

चूंकि, रास्पबेरी पाई 3 में आंतरिक वाई-फाई चिपसेट एक- bcmआधारित चिपसेट है जो निम्नलिखित कमांड निष्पादित नहीं होने देगा:

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

रास्पबेरी पाई 3 के साथ उपर्युक्त कमांड केवल उपर्युक्त कमांड को हटाकर काम करता है dBm:

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

मैं एक चेक जोड़ना चाहूंगा कि क्या रास्पबेरी पाई मॉडल बैश का उपयोग करके 2 या 3 है।

कोई संकेत?

मामले में, कोई व्यक्ति इसके माध्यम से जाना चाहता है bootstrap.sh: TWIN के लिए बूटस्ट्रैपिंग

टिप्पणियाँ

  • मैं जाँच की है कि dBmहै की आवश्यकता नहीं है, यह भी करने के मामले में रास्पबेरी Pi 2 के साथ Ralink chipset गैर अस्पष्टता एक के लिए एक ही आदेश का उपयोग कर सकते हैं के लिए इसलिए दोनों रास्पबेरी Pis अर्थात्।

    iwconfig wlan0 mode ad-hoc channel 6 essid myadhoc txpower 0
  • यह ध्यान रखना दिलचस्प है कि बाहरी वाई-फाई यूएसबी डोंगल के लिए किसी को निम्नलिखित कार्य करने की आवश्यकता है ( रास्पबेरी पाई 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
सबसे अच्छा तरीका यह है कि आप उस चीज के लिए परीक्षण करना चाहते हैं जो आप मॉडल की तलाश के बजाय करना चाहते हैं (रास्पबेरी पाई 5 कैसा दिखेगा?)। इस स्थिति में, देखें कि क्या Ralink RT5370 चिपसेट है और तदनुसार कॉन्फ़िगर करें। उसी तरह से वाईफ़ाई चालक में बनाया गया है।
थोरबजोरन रावन एंडरसन



जवाबों:



21

CPU प्रकार द्वारा

तुम्हें पता है, आदेश के साथ आरपीआई संस्करण की जांच कर सकता है uname। विभिन्न आरपीआई संस्करणों में अलग-अलग सीपीयू आर्किटेक्चर हैं। आरपीआई 2 में एक आर्म 7 है, जबकि 3 में एक आर्म 8 है।

uname -m

हार्डवेयर रिवीजन द्वारा

यदि आपको अधिक विशिष्ट होने की आवश्यकता है, तो आप के आउटपुट से संशोधन प्रविष्टि की जांच कर सकते हैं cat /proc/cpuinfo। यदि आप केवल संशोधन संख्या को ठीक करना चाहते हैं, तो निम्न कमांड को यह करना चाहिए:

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

संशोधन संख्या

इस वेबपेज में एक आसान चार्ट है जिसे मैंने यहां कॉपी किया है।

यहाँ छवि विवरण दर्ज करें


1
मैं /proc/cpuinfoपहले से गुज़रा। यह सबसे अच्छा विकल्प लगता है, क्योंकि uname -mज्यादा कुछ नहीं बताता है।
शान-देसाई

1
@ शान-देसाई: यकीन नहीं होता अगर आपने इसे देखा, एडिट से पहले, लेकिन मैंने सिर्फ एक कमांड को शामिल किया है जो कि खरीद फाइल से सिर्फ रिवीजन जानकारी निकालेगा। उम्मीद है की वो मदद करदे।
याकूब

1
हाँ, मैंने आपके द्वारा उल्लेख किया गया प्रयास किया। तुलना एक Pi 2 मॉडल v1.1 और Pi 3 मॉडल B के बीच की थी, लेकिन मजेदार बात यह है कि मेरा Pi 3 अभी भी armv7l को दिखाता हैuname -m
शान-देसाई

2
आपका मतलब है / proc / cpuinfo not / cpu / procinfo
user253751

unameकेवल लक्ष्य वास्तुकला सूची को सूचीबद्ध करेगा, जिसके लिए सीपीयू प्रकार निर्धारित किया गया था, और यह अविश्वसनीय है। वर्तमान आरपीआई 3 रास्पियन 32 बिट मोड में चलता है। यह सूचीबद्ध करेगा armv7, यदि आप एक AARCH64( arm64) लाइनक्स का armv8उपयोग करते हैं तो यह कहेगा , यदि आप पुराने RPI1 रास्पबियन का उपयोग करते हैं तो यह कहेगा armv6
अर्धसैनिक 27'17

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 में स्क्रिप्ट आपके पाई और 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
एक स्विच स्टेटमेंट बेहतर होगा।
शान-देसाई

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 [Tue Apr 11 15:59:32 2017] Machine model: Raspberry Pi 3 Model B Rev 1.2मेरे पाई पर प्रदर्शित करता है। सबसे मजबूत तरीका नहीं हो सकता है।
मिलिविस

@Milliways मेरे लिए ऐसा नहीं करने का कारण यह है कि सिस्टम बहुत लंबा हो गया है। वह बूट से है, और dmesgएक गोलाकार बफर है। इसलिए, यह एक त्रुटिपूर्ण कार्यप्रणाली है।
गोल्डीलॉक्स

@goldilocks संभवतः ओपी केवल बूट के बाद जानना चाहता है। इसे बदलने की संभावना नहीं है ;-) ओपी समस्या को हल करने के लगभग निश्चित रूप से बेहतर तरीके हैं।
मिलिविस

मेरी राय में सबसे अच्छा समाधान। रास्पबेरी चला रहे रास्पबेरी पाई 2 और 3 पर पूरी तरह से काम करता है। मैंने इसे 8 दिनों से चलने वाले पाई पर परीक्षण किया है। इस थ्रेड में अन्य समाधानों के लिए नए टूल (gpio) की आवश्यकता होती है या आपको cpu संशोधन कोड को एक लुक-अप टेबल पर मैप करना होता है (और इसे बनाए रखना होता है)। यह एकमात्र आदेश है जो आपको वास्तव में नाम बताता है Machine model: Raspberry Pi 2 Model B Rev 1.1- बिना रूट के भी।
यूजेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.