summaryrefslogtreecommitdiffstats
path: root/docs/4_APIs_and_Services/4.6_Audio_Framework/4.6.3_Bluetooth.md
blob: 668b2f3cfbdafdb3bd17ec7b569404edbc628820 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
---
edit_link: ''
title: Bluetooth
origin_url: >-
  https://raw.githubusercontent.com/automotive-grade-linux/docs-sources/master/docs/audio/bluez-alsa.md
---

<!-- WARNING: This file is generated by fetch_docs.js using /home/boron/Documents/AGL/docs-webtemplate/site/_data/tocs/apis_services/master/audio-developer-guides-audio-book.yml -->

# bluez-alsa

## Introduction

Bluetooth Audio ALSA Backend allow bluetooth audio without PulseAudio.

This project is a rebirth of a direct integration between Bluez and ALSA. Since Bluez >= 5, the build-in integration has been removed in favor of 3rd party audio applications. From now on, Bluez acts as a middleware between an audio application, which implements Bluetooth audio profile, and a Bluetooth audio device.

github source : [bluez-alsa](https://github.com/Arkq/bluez-alsa)

## Add bluez-alsa to an AGL image

You can add bluez-alsa to your image

```yocto
IMAGE_INSTALL_append = "bluez-alsa"
```

## Check bluez-alsa status

You can check the bluez-alsa status by running:

```bash
systemctl status bluez-alsa.service
```

## Stop pulseaudio

You must disable pulseaudio if you want to use bluez-alsa

```bash
systemctl --user stop pulseaudio
```

or disable pulseaudio bluetooth support

```bash
vi /etc/pulse/default.pa
#.ifexists module-bluetooth-policy.so
#load-module module-bluetooth-policy
#.endif

#.ifexists module-bluetooth-discover.so
#load-module module-bluetooth-discover
#.endif
```

## Connect your Bluetooth device

You need to connect a bluetooth device

```bash
$ bluetoothctl
[bluetooth]# pair ${BT_ADDR}
[bluetooth]# connect ${BT_ADDR}
[bluetooth]# info ${BT_ADDR}
```

Here somes documentation links:

* [Bluetooth headset from archlinux](https://wiki.archlinux.org/index.php/Bluetooth_headset)
* [Bluetooth Headset from gentoo](https://wiki.gentoo.org/wiki/Bluetooth_Headset)
* [Bluez A2DP AudioSink for ALSA](http://www.lightofdawn.org/blog/?viewDetailed=00032)
* [Bluez A2DP](http://www.lightofdawn.org/wiki/wiki.cgi/BluezA2DP)

## Test bluez-alsa speacker

```bash
wget http://www.kozco.com/tech/piano2.wav

aplay -D bluealsa:HCI=hci0,DEV=${BT_ADDR},PROFILE=a2dp ./piano2.wav
```

## Add bluez-alsa pcm config to alsa

```bash
vi /etc/asound.conf
# Bluetooth headset
pcm.btheadset {
        type plug
        slave.pcm {
                type bluealsa
                device "${BT_ADDR}"
                profile "a2dp"
        }
        hint {
                show on
                description "Bluetooth Audio ALSA Backend"
        }
}
```

Doc [asoundrc](https://alsa.opensrc.org/Asoundrc)

Test bluez-alsa pcm

```bash
aplay -D btheadset ./piano2.wav
```

## Test gstreamer player

```bash
gst-launch-1.0 uridecodebin uri=file:///mnt/Holy-Mountain.mp3  ! alsasink device=btheadset
```

## Test bluez-alsa phone

After connected your phone with bluez:

```bash
bluealsa-aplay ${BT_ADDR}
```