Asus U31SD / P31SD और जैसे पर लिनक्स तैयार करना


Asus P31SD के रूप में नए अपडेट को खरीदने और फिर उस पर लिनक्स स्थापित करने के बाद, वांछित 10-12 के बजाय केवल 6 घंटे की बैटरी जीवन को देखना बहुत निराशाजनक था। विंडोज पर वापस आना संभव नहीं था (यहां तक ​​कि साइबर ने भी यहां मदद नहीं की), इसलिए कॉफी का स्टॉक करने और इन समस्याओं को हल करने के लिए अगले सप्ताहांत लेने का निर्णय लिया गया।

हम उदाहरण के रूप में Ubuntu 11.10 का उपयोग करके समाधान पर विचार करते हैं।

PS सिद्धांत में, गाइड सैंडब्रिज और एनवीडिया ऑप्टिमस के साथ सभी लैपटॉप के लिए उपयुक्त है।

हमारे लिए लैपटॉप कॉन्फ़िगरेशन का एक महत्वपूर्ण हिस्सा:
प्रोसेसर : इंटेल कोर i3-2310M (सैंडब्रिज)
वीडियो एडॉप्टर : एनवीडिया Geforce 520M ( एनवीडिया ऑप्टिमस )

इसलिए, लिनक्स स्थापित करने के तुरंत बाद, हम निम्नलिखित समस्याएं देखते हैं:
  1. पागल चमक।
  2. बढ़ी हुई ऊर्जा की खपत हमारा मुख्य लक्ष्य है।
  3. स्लीप मोड काम नहीं करता है - जीवन को आसान बनाने के लिए, इसे काम करें

चमक


लक्षण: डे से हार्डवेयर मॉड्यूल और सॉफ्टवेयर मॉड्यूल एक साथ बैकलाइट को नियंत्रित करने की कोशिश कर रहे हैं, जिसके परिणामस्वरूप एक यादृच्छिक दिशा में कूदता है।

लैपटॉप में चमक के साथ समस्याएं बहुत सामान्य और विविध हैं, लेकिन लगभग सभी एक विधि द्वारा हल किए जाते हैं: बूट पैरामीटर में acpi_backlight=vendor को जोड़ना, जो संकेत देता है कि लोहा चमक नियंत्रण में लगा हुआ है और आपको प्रोग्रामेटिक रूप से वहां नहीं जाना चाहिए।

खोलें /etc/default/grub और GRUB_CMDLINE_LINUX में पैरामीटर दर्ज करें, यह पता चला है:
 GRUB_CMDLINE_LINUX="acpi_backlight=vendor" 

हम सहेजते हैं, ग्रब कॉन्फ़िगरेशन ( sudo update-grub ) को sudo update-grub , रिबूट करते हैं और पर्याप्त बैकलाइट व्यवहार का आनंद लेते हैं।

नींद मोड


लक्षण: जब एक लैपटॉप को सोने के लिए भेजा जाता है, तो डिवाइस हिंसक रूप से प्रतिरोध करता है और अंततः, जमा देता है।

एक संक्षिप्त खोज के बाद, हम दोषियों को ढूंढते हैं: खराब रूप से गिरते हुए यूएसबी हब। और आगे हम एक समाधान pm-utils हैं, pm-utils लिए एक हुक:
/etc/pm/sleep.d/20_custom-asus-u31sd:
 #!/bin/sh BUSES="0000:00:1a.0 0000:00:1d.0" case "${1}" in hibernate|suspend) # Switch USB buses off for bus in $BUSES; do echo -n $bus | tee /sys/bus/pci/drivers/ehci_hcd/unbind done ;; resume|thaw) # Switch USB buses back on for bus in $BUSES; do echo -n $bus | tee /sys/bus/pci/drivers/ehci_hcd/bind done ;; esac 

सहेजें, निष्पादन योग्य ( sudo chmod +x /etc/pm/sleep.d/20_custom-asus-u31sd ), जांचें।
क्या यह काम करता है? लगभग। नींद से बाहर निकलने के बाद, डिस्प्ले की चमक न्यूनतम हो जाती है ... आप एक ही हुक में निरीक्षण को सही कर सकते हैं। आप ब्राइट वैल्यू को कहीं से भी / sys से प्राप्त कर सकते हैं। अधिकांश ड्राइवर पैरामीटर को कॉर्नी कहते हैं, इसलिए वहां बैकलाइट देखें:
 $ find /sys -name backlight /sys/devices/platform/asus-nb-wmi/backlight 

मैंने पाया! /sys/devices/platform/asus-nb-wmi/backlight/asus-nb-wmi/brightness अध्ययन करने के बाद, /sys/devices/platform/asus-nb-wmi/backlight/asus-nb-wmi/brightness वैल्यू /sys/devices/platform/asus-nb-wmi/backlight/asus-nb-wmi/brightness । चलो पिछले हुक को इसकी बचत और पुनर्स्थापना में जोड़ें:
 #!/bin/sh BUSES="0000:00:1a.0 0000:00:1d.0" case "${1}" in hibernate|suspend) # Switch USB buses off for bus in $BUSES; do echo -n $bus | tee /sys/bus/pci/drivers/ehci_hcd/unbind done # Saving brightness to /tmp/br cat /sys/devices/platform/asus-nb-wmi/backlight/asus-nb-wmi/brightness > /tmp/br ;; resume|thaw) # Switch USB buses back on for bus in $BUSES; do echo -n $bus | tee /sys/bus/pci/drivers/ehci_hcd/bind done # Restoring brightness from /tmp/br cat /tmp/br > /sys/devices/platform/asus-nb-wmi/backlight/asus-nb-wmi/brightness ;; esac 

हम फिर से जांच करते हैं और ... यह काम करता है! अब चलो मुख्य दुश्मन शुरू करते हैं, ऊर्जा की खपत।

ऊर्जा की खपत में वृद्धि


हम पहले से ही 3 चरणों में लिनक्स ऐपेटाइट्स को खटखटाएंगे।

1. असतत ग्राफिक्स


लैपटॉप दो वीडियो एडेप्टर से सुसज्जित है: एकीकृत (इंटेल) और असतत (एनवीडिया)। लेकिन केवल एनवीडिया नहीं, बल्कि एनवीडिया ऑप्टिमस तकनीक। वही ऑप्टिमस, समर्थन जिसके लिए लिनक्स में भविष्य के लिए अपेक्षित नहीं है।

लेकिन खुले-खट्टे के लिए महिमा, दुनिया उत्साही से भरी है। ऑप्टिमस के साथ संघर्ष (और कभी-कभी दोस्ती) भौंरा है । उन्होंने अच्छी प्रगति की है:

स्वाभाविक रूप से, परियोजना बैसाखी से भरी है, लेकिन यह अभी भी कुछ नहीं से बेहतर है।
आइए स्थापित करें:
 $ sudo add-apt-repository ppa:bumblebee/stable $ sudo apt-get update $ sudo apt-get install bumblebee 

दुर्भाग्य से, लगभग हर लैपटॉप में वीडियो कार्ड को चालू / बंद करने के लिए एक अलग एसीपीआई कमांड है (एक बड़ी तालिका यहां एकत्र की गई है ), इसलिए बम्बलबी में बिजली प्रबंधन डिफ़ॉल्ट रूप से बंद है। ऊपर की तालिका से हम कमांड लेते हैं और उन्हें क्रमशः /etc/bumblebee/cardoff और /etc/bumblebee/cardon /etc/bumblebee/cardoff हैं:
/etc/bumblebee/cardoff:
\_SB.PCI0.PEG0.GFX0.DOFF

/etc/bumblebee/cardon:
\_SB.PCI0.PEG0.GFX0.DON

फिर /etc/bumblebee/bumblebee.conf पावर प्रबंधन चालू करते हैं:
 ENABLE_POWER_MANAGEMENT=Y 

और यदि कोई इसका उपयोग नहीं करता है, तो सेवा का अंत करें (और उसके अनुसार असतत ग्राफिक्स कार्ड को बंद करें):
 STOP_SERVICE_ON_EXIT=Y 

हम बचत करते हैं, रिबूट करते हैं, ऊर्जा की खपत को देखते हैं - काफी कमी आई है।
इससे पहले कि हम आगे बढ़ते हैं, हम प्रतीक्षा मोड को फिर से ठीक करेंगे: तथ्य यह है कि सोते समय, सक्रिय वीडियो ड्राइवर (एनवीडिया या नोव्यू) कार्ड तैयार करने का प्रयास करेगा, लेकिन कार्ड बंद हो गया है। चलो इसे बस और "माथे पर" हल करें: ऊपर इस्तेमाल किए गए हुक में 2 कमांड जोड़ें:

हुक निम्नलिखित रूप लेगा:
 #!/bin/sh BUSES="0000:00:1a.0 0000:00:1d.0" case "${1}" in hibernate|suspend) # Switch USB buses off for bus in $BUSES; do echo -n $bus | tee /sys/bus/pci/drivers/ehci_hcd/unbind done cat /sys/devices/platform/asus-nb-wmi/backlight/asus-nb-wmi/brightness > /tmp/br # Switch optimus back on before going to sleep, avoids the "constant on" # bug that occurs after 2 suspend/resume cycles (thanks kos888) echo `cat /etc/bumblebee/cardon` | tee /proc/acpi/call ;; resume|thaw) # Switch USB buses back on for bus in $BUSES; do echo -n $bus | tee /sys/bus/pci/drivers/ehci_hcd/bind done cat /tmp/br > /sys/devices/platform/asus-nb-wmi/backlight/asus-nb-wmi/brightness # Switch optimus off before resuming, avoids unneccessary power draw echo `cat /etc/bumblebee/cardoff` | tee /proc/acpi/call ;; esac 


2. एकीकृत ग्राफिक्स कार्ड


कोर के विभिन्न संस्करणों के साथ खेलने के बाद, मैंने गलती से 2.6.39 समावेशी संस्करणों पर बिजली की खपत को कम कर दिया। इन मापदंडों की खोज में भागते हुए, मुझे मेरे कूबड़ में गलती नहीं मिली।
समस्या का पता चला: 3.0 कोर में i915 ड्राइवर में स्वीकार किए गए पैच को दोष देना है। लेकिन, सौभाग्य से, इसे परिणामों के बिना दरकिनार किया जा सकता है।
पहले से ज्ञात /etc/default/grub i915.i915_enable_rc6=1 पैरामीटर जोड़ें। स्ट्रिंग का विस्तार होगा:
 GRUB_CMDLINE_LINUX="acpi_backlight=vendor i915.i915_enable_rc6=1" 

हम ग्रब कॉन्फ़िगरेशन को अपडेट करते हैं, रिबूट करते हैं और बैटरी रीडिंग को देखते हैं। अब आप रह सकते हैं। और आप इसे अभी तक कम कर सकते हैं!

3. अतिरिक्त मामूली मोड़


पावरटॉप को चलाकर और सभी अनुशंसित ट्विक्स को लागू करके, आप एक और 0.5-1 Wh निचोड़ सकते हैं, जो इस हार्डवेयर पर अतिरिक्त रूप से एक घंटे की बैटरी जीवन दे सकता है। लेकिन पावरटॉप के साथ हर बार नहीं खेलते हैं? हम दोपहर-बर्तन के माध्यम से इस पूरी चीज़ को स्वचालित करते हैं। हमें 4 अलग स्क्रिप्ट मिलती हैं:

1. अज्ञात कारणों से, मुख्य पैकेज में से एक, मानक पैकेज में शामिल नहीं है। प्रोसेसर आवृत्ति नियंत्रण मोड बदलें:
/etc/pm/power.d/cpu-governor
 #!/bin/bash cpu_powersave() { for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo $1 > $i && echo Done. || echo Failed. done } case $1 in true) cpu_powersave "ondemand" ;; false) cpu_powersave "performance" ;; *) exit $NA esac exit 0 

2. USB उपकरणों के पावर प्रबंधन मोड को बदलें:
/etc/pm/power.d/usb-autosuspend
 #!/usr/bin/env python from os import listdir, path from sys import argv status = argv[1] USB_PATH = '/sys/bus/usb/devices/' def powersave(status): devices = listdir(USB_PATH) devices = filter(lambda x: ':' not in x, devices) for device in devices: b = listdir(path.join(USB_PATH, device)) b = filter(lambda x: ':' in x, b) is_mouse = False for i in b: if open(path.join(USB_PATH, device, i, 'bInterfaceProtocol')).read().strip() == '02': is_mouse = True break if not is_mouse: open(path.join(USB_PATH, device, 'power/control'), 'w').write(status) if status == 'true': powersave('auto') elif status == 'false': powersave('on') 

स्क्रिप्ट चूहों का पता लगा सकती है और उन्हें बुझा नहीं पाएगी।

3, 4. अन्य उपकरणों के लिए पावर प्रबंधन मोड बदलें:
/etc/pm/power.d/scsi_host-link_power_management
 #!/bin/bash powersave() { for i in /sys/class/scsi_host/host?/link_power_management_policy; do echo $1 > $i && echo Done. || echo Failed. done } case $1 in true) powersave "min_power" ;; false) powersave "max_performance" ;; *) exit $NA esac exit 0 

/etc/pm/power.d/pci-power-control
 #!/bin/bash powersave() { for i in /sys/bus/pci/devices/*/power/control; do echo $1 > $i && echo Done. || echo Failed. done } case $1 in true) powersave "auto" ;; false) powersave "on" ;; *) exit $NA esac exit 0 

हम इन फ़ाइलों को निष्पादन योग्य बनाते हैं और एक झपट्टा में उनका उपयोग करते हैं: sudo pm-powersave true

सेटअप खत्म हो गया है। आधिकारिक प्रमाण:
छवि
और परिणाम आरेखित हैं:

Source: https://habr.com/ru/post/In134968/


All Articles