Dell Latitude 7390 でSuspend出来ない問題を解決しました
先日Suspend出来ないので諦めてHibernateを使用して誤魔化しているという話をしましたがGrubの起動パラメータを変更することで解決しました。
色々見てみたら原因はIntel CPU周りでした。
今回の共有は非常に危険な作業なため、試してみる場合は十分に注意して実行してください。
少しでも編集にミスがあるとパソコンを起動することができなくなります。
事前に切り戻しの方法をチェックすることをおすすめします。
動作確認した構成
カーネルビルド構成
$uname -a Linux UserName-Latitude-7390 6.2.0-26-generic #26~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Jul 13 16:27:29 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
CPU情報
$user@UserName-Latitude-7390 ~/> sudo lshw -class processor [sudo] user のパスワード: *-cpu ┆ ┆ ┆詳細: CPU ┆ ┆ ┆製品: Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz ┆ ┆ ┆ベンダー: Intel Corp. ....以下略
弄るのはGrubの設定のみ
実際に原因について調べてみると様々な情報がHITします。
BIOSの設定でIntel Speed Shift Technologyをdisableにするとかです。
実際のところそれでもSuspend自体は解決するのですが、
CPUの性能が犠牲になる上に他の機能が犠牲になります。ログオフとか。
ですので今回はBIOSの設定を見直すのではなくGrubの設定で対処していきます。
設定手順
ファイルを開いて起動パラメータを編集します。
エディタは好きなやつを使ってください。
sudo vim /etc/default/grub
ファイルを開いたら該当箇所に下記の起動パラメータを追加します
intel_idle.max_cstate=1 i915.enable_dc=0
追加すると該当行はこんな感じになります。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=1 i915.enable_dc=0"
intel_idle.max_cstatはCステートの設定で、スリープ時の制御を有効化しています。
→デフォルトで有効ですが明示的に有効化しています。
i915.enable_dcはIntelx 内蔵GPUのパワーマネジメント設定で、無効化しています。
→Suspend中のバッテリ消費量が若干増加します。(1.5W程度)
後ろ2つが今回のパラメータです。前のquietとかは起動時のログ抑制の設定です。
設定を反映させます。反映させないと有効になりません。
sudo update-grub
私の場合はこの設定によりSuspend問題が解決しました。
誰かの助けになれば幸いです。