Sailfish OS を DAP として使うときの設定メモ (追補)

4.5.x にアップデートしたら USB オーディオが起動時に ALSA 側でミュートされるようになってしまったため、その解除を試みた経緯をメモする。基本的な設定は 前のエントリ 参照。

Version

Sailfish OS 4.5.0.18

経緯

  1. ALSA の設定を保存したかったがうまく動かない
  2. 起動時に ALSA の設定を変更するスクリプトを走らせる(systemd の設定)

1. ALSA の設定

一番簡単な方法は

$ alsamixer -c 0

m を押すとミュートを解除できる。(card 番号は事前に cat /proc/asound/cards などで確認) この設定を

# alsactl store

で保存しようとしたが、以下のエラーで詰まる。

alsactl: get_control255: Cannot read control '2.0.0,Voice Rx Device Mute,0': Operation not permitted

一方、 amixer コマンドで以下により同じことができる。

$ amixer set Speaker,0 100%,100% unmute

もう alsactl は諦めて、このコマンドを起動時に流せばいいんじゃね?という発想により2.に続く。

2. systemd の設定

参考

How to start a script at boot? - #17 by poetaster - General - Sailfish OS Forum

上記を参考に ~/.config/systemd/user/autostart.service を以下の内容で作成する。ExecStart には1.で示したコマンドを入れ込む。

[Unit]
Description=Execute commands at startup

[Service]
Type=Oneshot
ExecStart=/bin/bash -c 'amixer set Speaker,0 100%,100% unmute'

[Install]
WantedBy=post-user-session.target

参考ではスクリプトファイルを分けているが、これまたうまく動かなかった短いので直書きにした。

これを以下により有効化する。

$ systemctl --user enable autostart

再起動後、自動的にミュートが解除されていることを確認する。