Asus U31SD / P31SDなどでLinuxを準備する


Asus P31SDの形で新しいアップデートを購入し、それにLinuxをインストールした後、希望の10-12ではなく6時間しかバッテリー寿命が表示されないのは非常に残念でした。 Windowsに戻ることはできなかったので(ここではcywginも役に立たなかったので)、コーヒーを用意して次の週末にこれらの問題を解決することにしました。

Ubuntu 11.10を使用したソリューションを例として検討します。

PS理論的には、このガイドはSandybridgeおよびNvidia Optimusを搭載したすべてのラップトップに適しています。

私たちにとってラップトップ構成の重要な部分:
プロセッサー :Intel Core i3-2310M( Sandybridge
ビデオアダプター :Nvidia Geforce 520M( Nvidia Optimus

そのため、Linuxをインストールした直後に、次の問題が発生します。
  1. クレイジーな明るさ。
  2. エネルギー消費の増加が私たちの主な目標です。
  3. スリープモードが機能しない-生活を楽にするために、機能する

明るさ


症状:ハードウェアモジュールとDEのソフトウェアモジュールが同時にバックライトを制御しようとしています。その結果、ランダムな方向にジャンプが発生します。

ラップトップの明るさの問題は非常に一般的でさまざまですが、ほとんどすべてが1つの方法で解決されますacpi_backlight=vendorをブートパラメーターに追加します。

/etc/default/grubGRUB_CMDLINE_LINUXにパラメーターを入力すると、次のようになります。
 GRUB_CMDLINE_LINUX="acpi_backlight=vendor" 

保存して、grub構成を更新し( sudo update-grub )、再起動し、適切なバックライト動作を楽しみます。

スリープモード


症状:ラップトップをスリープ状態にすると、デバイスは激しく抵抗し、最終的にフリーズします。

簡単な検索の後、犯人を見つけました:眠りに落ちたUSBハブ。 次に、 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 。 前のフックに保存と復元を追加しましょう。
 #!/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段階でLinuxの欲求を打ち破ります。

1.個別のグラフィックス


ラップトップには、統合(Intel)およびディスクリート(Nvidia)の2つのビデオアダプターが装備されています。 しかし、Nvidiaだけでなく、Nvidia Optimusテクノロジーも。 同じOptimus、Linuxの予見可能な将来のサポートは期待されていません。

しかし、オープンソースへの栄光、世界は愛好家でいっぱいです。 Optimusとの闘争(そして時には友情)はBumblebeeです。 彼らは良い進歩を遂げました:

当然、プロジェクトは松葉杖でいっぱいですが、それは何もないよりはましです。
インストールしましょう:
 $ sudo add-apt-repository ppa:bumblebee/stable $ sudo apt-get update $ sudo apt-get install bumblebee 

残念ながら、ほとんどすべてのラップトップにはビデオカードをオン/オフするための異なるACPIコマンドがあります( ここで大きなテーブルが収集されています )。 上記の表からコマンドを取得し、 /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で電源管理/etc/bumblebee/bumblebee.confオンにします。
 ENABLE_POWER_MANAGEMENT=Y 

誰も使用しない場合は、サービスを終了します(それに応じて個別のグラフィックカードをオフにします)。
 STOP_SERVICE_ON_EXIT=Y 

保存し、再起動し、エネルギー消費を確認します-大幅に減少しました。
先に進む前に、待機モードを再度修正します。実際には、スリープ状態になると、アクティブなビデオドライバー(nvidiaまたはnouveau)がカードの準備を試みますが、カードはオフになります。 それを簡単に解決して「額に」しましょう。上記のフックに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" 

GRUB設定を更新し、再起動して、バッテリーの測定値を確認します。 今、あなたは生きることができます。 そして、あなたはまだそれを減らすことができます!

3.その他の微調整


powertopを実行し、推奨されるすべての調整を適用することにより、さらに0.5〜1 Whを絞ることができます。このハードウェアでは、さらに最大1時間のバッテリー寿命が得られます。 しかし、毎回powertopで遊んでみませんか? このすべてをpm-utilsを介して自動化します。 4つの個別のスクリプトを取得します。

1.理由は不明ですが、標準パッケージには含まれていない主要な調整の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/J134968/


All Articles