わけあって Ubuntu Xenial 上で libasound2 (v1.1.0) と仲良くしなくてはいけなくなったのだが、古いラップトップにインストールしたため、キーボードとかモニタとかトラックパッドがいまいち使いにくい。できれば ssh で全部終わりにしたい。その時の作業ログ。
- リモートコンソールログイン(ssh)時に音を出したい
まず大前提として、基本的に ssh でのログイン時には ALSA デバイスにさわれない。aplay -l
としても一つもデバイスが出てこない。たとえ modprobe snd-aloop
とかして仮想デバイスを作ったとしても一覧に出てこない。
ログインしているユーザがaudio
グループに属していないと音まわりにはさわれないようになっている。これが普通にX上の端末からだとできて、わけがわからなくなっていたが、LightDMがいろいろしてくれるらしい。
gpasswd -a <username> audio
色々検索すると結構あたりまえの話のようで、Raspberry Pi などで苦戦している先人たちが散見される。
speaker-test
などで確認してみると音が出せるようになっていると思う。alsamixer
でコンソールからでも音量は調整できる。
- モノラルなファイルを
aplay
すると謎のエラーが出る
libasound2 を使っているものを簡単にテストしたいときに、入出力デバイスをスピーカーにすると便利なのだが、スピーカーがステレオデバイスで、再生したいファイルがモノラルといった風にチャンネル数が合わないと色々面倒になる。
hw:x,y,z
形式でデバイスを指定すると、デバイスごとに決め打ちでチャンネルが定義されているため、それぞれが一致しないとエラーが出る。front
のようにaplay -L
で出てくる名前がついているものでも同様。aplay
の--disable-channels
がそういう用途なのかと思ったがそうではないらしい。
解決策としては、頭に"plug"をつけたplughw:x,y,z
の形でデバイスを指定するか、/etc/asound.conf
や~/.asoundrc
にて適切なチャンネルを持ったデバイスを新しく定義する。