LAN9512 को अक्षम करें


35

LAN9512 एक हार्डवेयर डिवाइस है जो ईथरनेट और USB पोर्ट को नियंत्रित करता है। यह चिप लगभग 200mA की खपत करता है, और जब मुझे USB या ईथरनेट की आवश्यकता नहीं होती है, तो ऊर्जा बचाने के लिए इसे निष्क्रिय करना बहुत उपयोगी होगा। LAN9512 डेटाशीट ऊर्जा को बचाने के लिए डिवाइस के कुछ राज्यों की व्याख्या करता है - ये मोड SUSPEND2, SUSPEND1 और SUSPEND0 हैं। इसलिए, यह संभव प्रतीत होता है।

मुझे पहले से ही एक आंशिक समाधान मिल गया है:

  • echo 0x0 > /sys/devices/platform/bcm2708_usb/buspowerप्रभावी रूप से डिवाइस को अक्षम कर देगा और उसे echo 0x1उसी फ़ाइल के साथ फिर से जगा देगा । हालांकि, एक बार डिवाइस को बंद कर दिया गया है और एक निश्चित संख्या में शुरू हो गया है, यह ऑपरेटिंग सिस्टम के अगले रिबूट तक फिर से नहीं उठेगा।

क्या LAN9512 को अक्षम करने और इसे फिर से मज़बूती से शुरू करने की कोई विधि है? (शायद मैं LAN9512 को नियंत्रित करने वाले कुछ ड्राइवर को पुनः लोड कर सकता हूं?)

प्रेरणा

जब एक रास्पबेरी पाई मॉडल बी निष्क्रिय होता है, तो यह 400 एमए की खपत करता है। जब यह जोर दिया है, 470mA। जब LAN9512 को निष्क्रिय किया जाता है, तो यह बेकार में 200mA और 260mA पर जोर देता है।

अन्य लोग

  • मैंने एक स्क्रिप्ट का उपयोग करके "buspower" के माध्यम से चिप को अक्षम करने की व्यवहार्यता का परीक्षण किया है जो LAN9512 को निष्क्रिय करता है, गतिविधि और रीबूट के लिए जाँच करने के लिए एक usb डिवाइस को माउंट करने की कोशिश करता है। अब तक, रास्पबेरी पी ने त्रुटियों के बिना 9222 बार रिबूट किया है।
  • echo 1 > /sys/devices/platform/bcm2708_usb/bussuspendLAN9512 को अक्षम करता है, लेकिन echo 0एक ही फ़ाइल में करने पर इसे फिर से नहीं जगाएगा । इसे अक्षम करने के बाद, रास्पबेरी पाई अत्यधिक धीमी गति से 4 तक लोड की औसत रिपोर्टिंग करती है।

1
जिज्ञासा के कारण; उपरोक्त आदेशों में से एक का उपयोग करने पर क्या आप बिजली की खपत को कम कर देते हैं?
गेरबन

2
हाँ! दोनों buspower और bussuspend फ़ाइलों की खपत 200mA कम कर देता है। जब एक रास्पबेरी पी बेकार है, यह 400 एमए की खपत करता है। जब यह जोर दिया है, 470mA। चिप अक्षम होने के साथ, यह बेकार में 200mA और 260mA पर जोर देती है।
एलीक्सट्रॉक्स

बहुत अच्छे। धन्यवाद। क्षमा करें, मैं हालांकि मदद नहीं कर सकता
Gerben

बस जिज्ञासु: यदि आप USB और ईथरनेट को अक्षम करते हैं, तो आप वेकअप कमांड कैसे भेजते हैं? क्रोन-जॉब के साथ या नींद के बाद?
मोशे काट्ज़

मैं सादगी के लिए सोना पसंद करता हूं। डीबग करते समय, मैं "इको 0x0> / sys / डिवाइसेस / प्लेटफ़ॉर्म / bcm2708_usb / buspower; स्लीप 2; echo 0x1> / sys / डिवाइसेस / प्लेटफ़ॉर्म / bcm2708-usb / buspower; स्लीप 30; रीबूट" का उपयोग करता हूं। इस प्रकार, यदि USB नहीं जगा, तो यह अपने आप फिर से चालू हो जाएगा। "स्लीप 2" सिर्फ कुछ समय के लिए हार्डवेयर को प्रतिक्रिया देने के लिए है।
एलीक्स्रॉक्स ने

जवाबों:


7

अपने खुद के कुछ प्रयोग करने के बाद मैंने निम्नलिखित प्रयोग किए:

मल्टीमीटर के माध्यम से 5 वी के साथ टीटीएल / डीबग केबल को यूएसबी।

सिर्फ बिजली और नेटवर्क से जुड़ी लॉगिन स्क्रीन पर सामान्य बूट 420-380Ma था

मैंने पहले नेटवर्किंग को बंद कर दिया /etc/init.d/networking stopऔर फिर चिप द्वारा echo 0 > /sys/devices/platform/bcm2708_usb/buspowerऔर वास्तव में यह ~ 240Ma तक नीचे चला गया

मैं भी Google को असफल करने में सक्षम था! (कौन सा अच्छा है)

फिर मैंने इसे बस पावर से 1 गूंज कर और नेटवर्क स्टार्ट कमांड चलाकर वापस कर दिया। और एक बार फिर से मैं लगभग ३20०-४२० मीटर तक वापस आ गया। फिर पिंगिंग गूगल ने काम किया।

फिर मैंने इसे SH फाइल में डाला, जिसे लूप किया गया और यह बिना रीबूट किए 10 से अधिक बार चला। आपकी आज्ञा में मैं इसे हर बार रिबूट करते हुए देख सकता था, चाहे आपके द्वारा रिबूट कमांड को डालने के कारण कोई फर्क नहीं पड़ता हो।

परीक्षण के लिए कोड ऑटो रिबूट कोड के @ Ubuntu पेस्ट पाया जा सकता है

यह तो बस को रोकने और शुरू करने के लिए इस्तेमाल किया जा सकता है। आप इसका पहला भाग स्टॉप कमांड के रूप में और दूसरा भाग स्टार्ट कमांड के रूप में कर सकते हैं।

मैंने इस @ मेरा ब्लॉग का पूरा लेखन भी किया


बस यही समस्या है। जितनी जल्दी या बाद में, आपको रिबूट करने की आवश्यकता है क्योंकि LAN9512 काम करना बंद कर देता है। मैं एक ऐसे समाधान की तलाश कर रहा हूं, जिसे रिबूट करने की आवश्यकता न हो। (मेरी स्क्रिप्ट पर मैं हर बार रीबूट केवल तभी कुंजीपटल काम करना बंद कर, क्योंकि सिर्फ रिबूट करने से पहले मैं मैन्युअल रूप से स्क्रिप्ट को मारने के लिए यह कीबोर्ड काम करता है मैं CTRL + C के साथ मार सकता है की कोशिश की तो नहीं है, यह सिर्फ रिबूट।।)
aleixrocks

खैर जैसे मैंने कहा कि मैंने इसे लगातार 50 बार से अधिक समय तक लगातार परीक्षण किया और नेटवर्क पिंग के लिए हर एक के साथ काम किया। हो सकता है कि कीबोर्ड को बस फिर से प्लग इन करने की आवश्यकता हो या USB को रीसेट करने की आवश्यकता हो? दूसरों ने कहा है कि यह इसके लिए डिज़ाइन नहीं किया गया है। अगर यह अपना बोनस दे सकता है। इसलिए मॉडल ए के एक कारण
रयान वाल्मस्ले जूल

मेरे मामले में, यह 10 से अधिक छोरों से अधिक नहीं है जो मैंने आपकी पटकथा को निष्पादित किया है। मैंने USB को फिर से प्लग करने की कोशिश की और फिर भी काम नहीं किया। पता नहीं क्यों यह अंतर शायद मेरी रास्पबेरी पाई है। यह बहुत अच्छा होगा अगर कोई और व्यक्ति कोशिश कर सकता है।
aleixrocks

3

LAN9512 गर्त को निष्क्रिय और सक्षम करने की सुविधा:

  • इको 0x0> / sys / डिवाइसेस / प्लेटफ़ॉर्म / bcm2708_usb / buspower (अक्षम)
  • इको 0x1> / sys / डिवाइसेस / प्लेटफ़ॉर्म / bcm2708_usb / buspower (सक्षम)

नई गुठली पर डिबग किया गया है और अब बिना संशोधनों के पूरी तरह से काम कर रहा है। मैंने इसका परीक्षण करने के लिए कुछ स्क्रिप्ट बनाई है।

पहले वाले का उद्देश्य सॉफ्टवेयर सुविधा के माध्यम से अक्षमता का परीक्षण करना है। स्क्रिप्ट LAN9512 को अक्षम करती है और USB डिवाइस को माउंट करने का प्रयास करती है। यदि यह हो सकता है, तो परीक्षण विफल। यदि नहीं, तो परीक्षण सफल। अंत में रिबूट करें और फिर से शुरू करें। यह स्क्रिप्ट चार दिनों से चल रही है और इसने रास्पियन 2013-9-25 में विफलताओं के बिना 8039 रिबूट की सूचना दी है।

दूसरा स्क्रिप्ट सक्षम करने की सुविधा का परीक्षण करने के लिए है। सबसे पहले, स्क्रिप्ट LAN9512 को निष्क्रिय करती है। फिर पाई को आराम करने के लिए कुछ सेकंड इंतजार करता है। इसके बाद यह LAN9512 को सक्षम बनाता है और अंत में यह "lsusb" कमांड को निष्पादित करने का प्रयास करता है। यह सभी USB उपकरणों को सूचीबद्ध करता है। यदि कर्नेल सभी USB उपकरणों को पहचान सकता है, तो LAN9512 फिर से काम कर रहा है। यदि नहीं, तो परीक्षण विफल हो गया है। परीक्षण एक सप्ताह से चल रहा है और रास्पियन 2013-9-25 पर त्रुटियों के बिना 7209 छोरों की रिपोर्ट की गई और रास्पियन 2014-1-7 पर 5374 छोरों की रिपोर्ट की गई।

गुठली और फर्मवर

रास्पियन 2014-1-7 पर:

कर्नेल: लिनक्स raspberrypi 3.10.25+ # 622 PREEMPT शुक्र 3 जनवरी 18:41:00 GMT 2014 armv6l GNU / LINUX फर्मवेयर: b00bb3ae73bd2799df0e9bb7a5f17ff30353 (साफ) (रिलीज़)

रास्पियन 2013-9-25 पर

कर्नेल: लिनक्स रास्पबेरीपी ३.६.११+ # ५३RE प्रीमेच्योर शुक्र ३०:२०:३ B २०१३ BST २०१३ armv61 GNU / LINUX फर्मवेयर: ४f9d19896166f46a3255801bc18b4545bb092732 (साफ) (साफ)


"LAN9512 को अक्षम और सक्षम करने की सुविधा को नए कर्नेल पर डिबेट किया गया है।" क्या आप रिपोर्ट कर सकते हैं कि आपने किस कर्नेल और फर्मवेयर को देखा है जो हजारों सफल नींद / वेक साइकिल की अनुमति देता है? धन्यवाद! मैं एक अधिक स्लीपेबल पाई की ओर प्रगति में दिलचस्पी रखता हूं!
ताई विनीका

1

ऊपर दिए गए ये उत्तर सही होने पर प्रस्तुत किए गए थे, लेकिन 2015 में कुछ समय के लिए, रास्पियन ने बदलाव किए और इच्छुक उपयोगकर्ताओं को संबंधित नियंत्रणों की तलाश में जाना पड़ा।

Off:  echo 0x0 > /sys/devices/platform/soc/20980000.usb/buspower   
 On:  echo 0x1 > /sys/devices/platform/soc/20980000.usb/buspower

उपयोगकर्ता एड्रियन को मेरा धन्यवाद! https://raspberrypi.stackexchange.com/users/37611/adrian


हाय ताई! क्या आप इच्छुक उपयोगकर्ताओं के लिए कुछ संदर्भ प्रदान कर सकते हैं? आप किस रास्पबेरी पाई का उपयोग कर रहे हैं?
aleixrocks
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.