蓋を閉じてもノートPCを動かし続けたい(Ubuntu22.04)
ノートパソコンの性能が上がってきたので、職場でも自宅でもノートパソコンをメインPCに使ってます。
しかし、ディスプレイは大きい方がいいので外部ディスプレイを繋ぎます。
その時、蓋の開閉と連動したサスペンド機能が働くと困るので、無効にする方法を紹介します。
ロボットの背中にノートPCを積むときにも大事ですよね。
蓋を閉じてもスリープにしない
/etc/systemd/logind.conf を編集する方法
ノートPCの蓋を閉じた時の動作はsystemd-logind.serviceで設定します。
/etc/systemd/logind.conf を編集します。
$ sudo vi /etc/systemd/logind.conf
[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#UserStopDelaySec=10
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#HandleLidSwitchExternalPower=suspend
#HandleLidSwitchDocked=ignore
#HandleRebootKey=reboot
HandleLidSwitch=ignore にすることで、蓋を閉じてもそのまま動作します。
保存して、下記のコマンドでサービスを再起動します。
systemctl restart systemd-logind.service
/etc/systemd/logind.conf を修正してもダメだった場合
ごく稀に/etc/systemd/logind.conf を修正しても蓋を閉めるとスリープしてしまう場合があります。
その時はGUIで操作するGNOME Tweaksで設定してください。
genome-tweaksがインストールされていない場合、下記のコマンドでインストールしてください。
sudo apt install gnome-tweaks
画面左下の「アプリケーションを表示する」からユーティリティからTweaksをクリックします。
「ラップトップの蓋を閉じるとサスペンドする」を無効にします。
放置してもスリープにしない
キーボードやマウスが一定時間操作されなかった場合、省電力のためノートPCがサスペンドされてしまいます。
/usr/share/gdm/dconf/90-debian-settingsを編集することでサスペンドを回避します。
sudo vi /usr/share/gdm/dconf/90-debian-settings
ファイル内に以下の設定を追記します。
[org / gnome / settings-daemon / plugins / power]
sleep-inactive-ac-timeout = 0
sleep-inactive-battery-timeout = 0
ファイルを保存すれば設定は完了です。
画面ロックしない
一定時間ユーザーによる操作がない時に、自動的に画面をロックしパスワードで保護したり、画面がブランク状態になったりします。
以下の手順で解除します。
「設定」の「プライバシー」の「画面」で画面がロックしないようにします。
バッテリーの残量をモニターする
クラムシェルモードにしてリモート接続で運用するとバッテーリーの残量が心配です。 バッテリーの充電状況や劣化の具合は upowerコマンドで確認できます。
電源デバイスの確認
$ upower -e
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/line_power_ucsi_source_psy_USBC000o001
/org/freedesktop/UPower/devices/line_power_ucsi_source_psy_USBC000o002
/org/freedesktop/UPower/devices/DisplayDevice
指定した電源デバイスの状態表示
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0
native-path: BAT0
vendor: SMP
model: 01YU911
serial: 1549
power supply: yes
updated: 2023年05月21日 09時06分32秒 (85 seconds ago)
has history: yes
has statistics: yes
battery
present: yes
rechargeable: yes
state: fully-charged
warning-level: none
energy: 70.07 Wh
energy-empty: 0 Wh
energy-full: 70.07 Wh
energy-full-design: 80.4 Wh
energy-rate: 0 W
voltage: 16.928 V
percentage: 100%
capacity: 87.1517%
technology: lithium-polymer
icon-name: 'battery-full-charged-symbolic'
バッテリーの残量を求める
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e "percentage" -e "time to empty"
percentage: 100%
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e "percentage" |awk '{print $2}'
100%
リモートマシンのバッテリーの残量を求める
rsh を使って、他のマシンのバッテリーの残量を求めます。
$ rsh hsrb.local upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e "percentage" |awk '{print $2}'
100%
パスワードなしでrshを実行する方法は各自で調べてください。
sshpassを使ってリモートアクセスする
sshpassのインストール
sudo apt-get install sshpass
コマンドラインから使う
ssh で接続する
sshpass -p パスワード ssh ユーザID@マシン名
rsh でコマンドを実行する
sshpass -p パスワード rsh ユーザID@マシン名 コマンド
Pythonプログラムで使う
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import subprocess
res = subprocess.run(
"sshpass -p パスワード rsh ユーザ名@マシン名 upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e percentage |awk '{print $2}'",
capture_output=True,
text=True,
shell=True
)
if res.returncode==0: # リターンコード
print(res.stdout) # 標準出力に結果が入る