#chiroruLab

趣味と日々の雑記録

【Homebridge】homebridge-pc-volumeがRaspbian Buster環境でミュート出来ないバグを修正する方法

f:id:chiroru_27:20210222235656p:plain

amixer: Unable to find simple control 'PCM' 0

Homebridgeのプラグインで使わせてもらっているhomebridge-pc-volumeが、ミュート操作をするとエラーを吐いてしまう問題を修正する忘備録です。

参考にさせて頂いたサイト

Raspberry Pi 4B オーディオ出力先設定: PATHpilotのブログ
Latest Raspberry Pi OS update - May 2020 - Raspberry Pi
Linux - Default device · Issue #554 · JosephDuffy/homebridge-pc-volume · GitHub

背景

Raspberry Pi OSのアップデートによりALSAの仕様が変更され、サウンドバイスを一括管理していたのがデバイスごとの個別管理に変わった。実際、ターミナルでミキサーを確認するとPCMデバイスがなくなっているのがわかる。

$ amixer
Simple mixer control 'Master',0
Simple mixer control 'Capture',0
...

また、このプラグインの機能はnode-loudnessライブラリで実装されており、もろにこの変更の影響を受けている状態らしい。

修正

ソースでPCMデバイスを指定している箇所があるため、ここの自分の使っているデバイスに書き換えれば動作するようになる

amixerコマンドで使用しているデバイスを確認する

$ amixer
Simple mixer control 'Master',0

私の環境の場合はヘッドホンなどは使っておらずUSBDACからの出力のため、Masterデバイスが対象になる。

ソースを書き換える

$ sudo nano /usr/lib/node_modules/homebridge-pc-volume/node_modules/loudness/impl/linux.js
# line 55; PCM to Master
# return amixer('set', 'Master', (val ? 'mute' : 'unmute')).then(() => undefined)

Homebridgeからのアクセス権限を付与

$ sudo apt install pulseaudio pulseaudio-utils

PulseAudioのデーモンを作り自動起動に登録

$ sudo nano /etc/systemd/system/pulseaudio.service
[Unit] 
Description=Pulse Audio 

[Service] 
Type=simple 
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm

[Install]
WantedBy=multi-user.target

$ sudo systemctl start pulseaudio.service
$ sudo systemctl enable pulseaudio.service

$ sudo usermod -a -G pulse-access homebridge

あとはhomebridgeを再起動して動作確認し、エラーを吐かず動作すれば完了となる。



homebridgeは便利なプラグインがたくさん

いつかは私もなにか作りたいな。以上、@chiroru_27 でした。