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/grub



GRUB_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







セットアップは終了しました。 公式証明:

画像

そして結果は図式化されています:








All Articles