Armadilloフォーラム

Armadillo X1 での強制電源OFFについて

nf

2018年8月22日 16時05分

お世話になります。

Armadillo X1 にて強制電源OFFする方法はありますでしょうか?
G3Lではユーザスイッチの長押しで電源OFFできましたが、X1 では効かないようです。


コメント

at_mizo

2018年8月22日 16時58分

溝渕です。

> Armadillo X1 にて強制電源OFFする方法はありますでしょうか?
> G3Lではユーザスイッチの長押しで電源OFFできましたが、X1 では効かないようです。

標準では用意していません。

G3Lでは、input-poweroffdというデーモンがユーザースイッチを監視し、10
秒間長押しすることで、poweroffコマンドを実行しています。

input-poweroffdが含まれるatmark-x1-baseパッケージのソースは以下より取得可能です。

https://download.atmark-techno.com/debian/pool/main/a/atmark-x1-base/at…

nf

2018年8月22日 18時57分

溝渕様

ご回答ありがとうございました。
頂いたリンクに含まれている input-poweroffd を用いて、ユーザスイッチ長押しで電源OFF出来るようになりました。

ご参考として、手順を記載します。
systemd の service ファイルは、ご提示頂いたtarに含まれているファイルを流用させていただきました。


atmark@armadillo:~$ cd /tmp/
atmark@armadillo:/tmp$ wget https://download.atmark-techno.com/debian/pool/main/a/atmark-x1-base/atmark-x1-base_1.5.6.orig.tar.gz
atmark@armadillo:/tmp$ tar xzvf atmark-x1-base_1.5.6.orig.tar.gz
atmark@armadillo:/tmp$ cd atmark-x1-base/
atmark@armadillo:/tmp/atmark-x1-base$ cd input-poweroffd/
atmark@armadillo:/tmp/atmark-x1-base/input-poweroffd$ make
atmark@armadillo:/tmp/atmark-x1-base/input-poweroffd$ su
Password:
root@armadillo:/tmp/atmark-x1-base/input-poweroffd# cp input-poweroffd /usr/sbin/
root@armadillo:/tmp/atmark-x1-base/input-poweroffd# vi /lib/systemd/system/input-poweroffd.service
=======================
[Unit]
Description=input event poweroff daemon
After=rc-local.service

[Service]
Type=forking
ExecStart=/usr/sbin/input-poweroffd -d /dev/input/event1 -k KEY_1 -D
ExecStop=/bin/kill -INT ${MAINPID}

[Install]
WantedBy=multi-user.target
=======================
root@armadillo:/tmp/atmark-x1-base/input-poweroffd# systemctl enable input-poweroffd
root@armadillo:/tmp/atmark-x1-base/input-poweroffd# systemctl start input-poweroffd

y.nakamura

2018年8月23日 18時23分

中村です。

> ご参考として、手順を記載します。
> [Service]
> Type=forking
> ExecStart=/usr/sbin/input-poweroffd -d /dev/input/event1 -k KEY_1 -D
> ExecStop=/bin/kill -INT ${MAINPID}

この部分、コメントさせてください。

通常、Type=forking でプログラム自身でデーモン化する場合は、
PIDFile=xxx でpidファイルを指定することになっています。
systemdはforkした子プロセスのpidをPIDFileで知ることができます。

この設定のまま動かしてみたところ、
systemdのGuessMainPIDの機能によって(デフォルトはyes)、
forkした子プロセスのpidを取得(推測)できているようですが、
これに頼るのは、あまりよくないと思います。

Type=forking にせず、input-poweroffd の"-D"はつけない方が
いいのではないでしょうか?

// G3Lに入っているinput-poweroffdは、start/stopのスクリプトを
// 用意していますが、ここではその話はしないことにします。

--
なかむら

nf

2018年8月24日 8時19分

中村様

ご指摘ありがとうございます。

Type=simple にして、-D は外すようにしました。