LoginSignup
5
5

More than 5 years have passed since last update.

Arch LinuxでBluetoothイヤホンを接続して音を出す

Last updated at Posted at 2015-04-26

PulseAudioをアップデート後に音が出なくなった場合

pulseaudio-gitはヘッドセット/ハンズフリープロファイルと Bluez5 のネイティブサポートが追加されています

AURからBUILDしなおさなければなりません。なぜなら、module-bluetooth-discoverをロードできないからです。

したがって、以下の手順を踏みます。

## ARCHリポジトリからアップデートしてしまった場合
#$ sudo pacman -Syu
#pulseaudio

# pulseaudio-git はヘッドセット/ハンズフリープロファイルと Bluez5 のネイティブサポートが追加されています
# pulseaudioをビルドする
$ yaourt -S pulseaudio-git

$ pactl load-module module-bluetooth-discover

# 現在使ってるサウンドカードを調べる
$ pacmd list-sinks|egrep -i 'index:|name:'

$ vim /etc/pulse/default.pa
        ##場合によっては、先ほど調べたサウンドカードを指定する(MacBookの場合はcard_1が使われることが多いので、基本的には変更することになります。詳しくは"/etc/asound.conf"を見てください)
        #set-default-sink hoge.index.name
        ##場合によっては、恒久的にモジュールのロードを有効にする必要があるかもしれません
        #load-module module-bluetooth-discover

## 場合によっては、既に登録失敗済みの場合、再接続にはremoveが必要になるかもしれません
$ bluetoothctl
        remove 00:00:00:00:00

また、アップデートされないように設定しておくと良いかもしれません。この問題について発生するたびに調べるのも面倒です。

/etc/pacman.conf
IgnorePkg = pulseaudio

しかし、このあたり、挙動が本当に分かりにくいのでそれも注意。例えば、MacBookの場合は、サウンド関連は、通常、index 1,card 1を使用するため、独自に指定する必要があります。デフォルトではここは0を使用するようになってて、ほとんどのコンピュータはそれで音が出ます。

そして、module-bluetooth-discoverモジュールのロードだけど、ビルド直後はロードできるが、再起動後はできなくなり、かつ設定ファイルに書いても、エラーが出てしまい音が出なくなります。

基本的な説明

Bluetooth-Headsetで音を出すまでに結構ハマったので、メモ。

ポイントだけ先にあげておくと以下のようになります。

# 必要なもの
$ sudo pacman -S pulseaudio-alsa bluez bluez-libs bluez-utils bluez-firmware
# bluetooth-connect
# まず接続できるが、すぐに接続が切れる問題について
$ cat /etc/pulse/default.pa
$ pactl load-module module-bluetooth-discover

# sound-control
# 次に音が出ない問題について
$ sudo pacman -S pavucontrol
$ pavucontrol

通常、Bluetoothの接続は以下の手順でできると思われます。

$ bluetoothctl
 power on
 scan on
 connect 00:1D:43:6D:03:26

場合にっては
 pair 00:1D:43:6D:03:26
 trust 00:1D:43:6D:03:26
 connect 00:1D:43:6D:03:26

接続解除など
 disconnect 00:1D:43:6D:03:26
 remove 00:1D:43:6D:03:26

ヒント: 最新版の Bluez はヘッドセット/ハンズフリープロファイルをサポートしていません。そのためマイク入力は動作せず、A2DP プロファイルをサポートしていないヘッドセットには音声が出力されません。ヘッドセット/ハンズフリープロファイルのヘッドセットを使うときは、AUR を利用して他のパッケージを取得する旧式の方法を使用する必要があります。

ヒント: pulseaudio-git はヘッドセット/ハンズフリープロファイルと Bluez5 のネイティブサポートが追加されています。

ヒント: Bluez5 は PulseAudio しかサポートしておらず ALSA はサポートしていません。PulseAudio を使いたくない場合は AUR から昔のバージョンの Bluez をインストールする必要があります。

では、以下より具体的な説明に入りますが、かなり複雑な話になっていると思われますので、気になる方だけ。

Bluez5

まず、Bluez5は、Alsaではなく、PulseAudioを使います。私の場合は、Alsaで音を出しており、サウンドカードも既に指定済みでした。

# 使いたいサウンドカード情報
$ aplay -l
$ alsamixer 
/etc/asound.conf
pcm.!default {
    type hw
    card 1
}

ctl.!defalt {
    type hw
    card 1
}
#defaults.pcm.card 1
#defaults.pcm.device 0
#defaults.ctl.card 1

ここで、PulseAudioをインストールする場合、/etc/asound.confが置き換えられたりするので、音が出なくなることもありますので注意です。

私の場合は、MacBook特有の問題で、PulseAudioをMacBookで使う場合は、デフォルトのサウンドカードがHDMIに設定されてしまうため、pavucontrolをインストールしなければなりません。

Also, if you are using PulseAudio, sometimes it thinks HDMI is the default sound card; to solve this problem, install pavucontrol and set Analog Stereo as the fallback device.

あとは、pavucontrolでGUIにていろいろと設定できます。

$ pavucontrol

ちなみに、mplayerの場合は、以下の設定が必要です。

/etc/mplayer/mplayer.conf
ao=pulse

Bluez4

もしAlsaを使いたければ、Bluez5をアンインストールし、Bluez4をインストールして使わなければなりません。その場合、Bluetoothの接続コマンドも変わってきます。

$ hcitool scan
  00:1F:20:1D:1B:4B

$ hciconfig hci0 up

$ sudo bluez-simple-agent hci0 00:1F:20:1D:1B:4B

ボリューム調整

私は、正直、Alsaのほうが好きですが、Bluetoothを使う以上、PulseAudioのほうが良いと思われますので、乗り換えました。

したがって、ボリューム調整方法なども変更

$ yaourt -S pamixer-git
~/.zshrc
##alsa
#function vol(){
#case $OSTYPE in
#    darwin*)
#        osascript -e "set Volume ${1}"
#    ;;
#    linux*)
#        if [ $# != 1 ];then
#            echo mute
#            amixer sset Master mute
#        else
#            echo $1
#            amixer sset Master unmute
#            amixer sset Master ${1}
#        fi
#    ;;
#esac
#}

#pulseaudio
function vol(){
case $OSTYPE in
    darwin*)
        osascript -e "set Volume ${1}"
    ;;
    linux*)
        if [ $# != 1 ];then
            echo mute
            echo old `pamixer --get-volume`
            pamixer --mute
        else
            echo $1
            pamixer --unmute
            echo old `pamixer --get-volume`
            pamixer --set-volume $1
        fi
    ;;
esac
}

その他

blueman

メニューとしてbluemanを使ってみました。

$ yaourt -S blueman
~/.xinitrc
blueman-applet &

しかし、アイコンがダサいので、変更。

#!/bin/bash
numix_dir=/usr/share/icons/Numix/24x24/status
blueman_dir=/usr/share/icons/hicolor/24x24/status
sudo cp $numix_dir/bluetooth-tray.svg $blueman_dir/blueman-tray.png
sudo cp $numix_dir/bluetooth-active.svg $blueman_dir/blueman-active.png
sudo cp $numix_dir/bluetooth-active.svg $blueman_dir/blueman.png

ちなみに、メニューアイコンとか変更するやつ書きました。

気になるのあったら、ぜひ教えてください。

pasystray

ステータスバーに表示される形のボリューム調整ツールです。

$ yarout -S pasystray-git
~/.xinitrc
pasystray &
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5