Bluetooth: Difference between revisions

From NixOS Wiki
imported>Samueldr
m (re-worked the page; added non-gui and gui variants of pairing and for pulseaudio management.)
imported>Samueldr
m (Adds a generalized "enabling" section, points archwiki link to the generic bluetooth pairing instructions.)
Line 1: Line 1:
== Enabling ==
Enabling bluetooth support is as simple as adding {{nixos:option|hardware.bluetooth.enable}} to configuration.nix
<syntaxhighlight lang="nix">{
  hardware.bluetooth.enable = true;
}</syntaxhighlight>
{{evaluate}}


== Pairing ==
== Pairing ==
Line 10: Line 19:
=== Pairing without GUI tools ===
=== Pairing without GUI tools ===


When not using a desktop-manager, configuring the device from the command line can be done following the [https://wiki.archlinux.org/index.php/Bluetooth_Headset ArchWiki instructions], as follows.
When not using a desktop-manager, configuring the device from the command line can be done following the [https://wiki.archlinux.org/index.php/Bluetooth#Configuration_via_the_CLI ArchWiki instructions], as follows.


<syntaxhighlight lang="console">$ bluetoothctl
<syntaxhighlight lang="console">$ bluetoothctl

Revision as of 20:16, 14 October 2017

Enabling

Enabling bluetooth support is as simple as adding hardware.bluetooth.enable to configuration.nix

{
  hardware.bluetooth.enable = true;
}

Pairing

Bigger desktop environments will usually provide a bluetooth management system.

Alternatively, using pkgs.blueman, it is possible to get a tray icon blueman-applet or use the manager directly using blueman-manager.

Pairing without GUI tools

When not using a desktop-manager, configuring the device from the command line can be done following the ArchWiki instructions, as follows.

$ bluetoothctl
[bluetooth] # power on
[bluetooth] # agent on
[bluetooth] # default-agent
[bluetooth] # scan on
...put device in pairing mode and wait [hex-address] to appear here...
[bluetooth] # pair [hex-address]
[bluetooth] # connect [hex-address]

Bluetooth headsets with PulseAudio

The package used for PulseAudio has to be pkgs.pulseaudioFull, which includes bluetooth support.

{
  hardware.pulseaudio = {
    enable = true;
    package = pkgs.pulseaudioFull;
  };
  hardware.bluetooth.enable = true;
}

Either restart the system for PulseAudio to load the bluetooth module, or restart your local instance of PulseAudio by running pkill ^pulseaudio$.

Ensure PulseAudio has loaded bluetooth modules by using pactl list | grep -i Name.*module.*blue. Bluetooth modules should be present in the list.

Managing the audio interface

Using pavucontrol, the headset profile can be changed to "High Fidelity Playback (A2DP Sink)" in the Configuration tab.

The default sink can be changed in the Output Devices tab. clicking on the right most button, which it title Set as fallback.

Managing the audio interface using pacmd

Setting the card to A2DP

$ pacmd set-card-profile "$(pactl list cards short | egrep -o bluez_card[[:alnum:]._]+)" a2dp_sink

Setting the bluetooth sink as default

$ pacmd set-default-sink "$(pactl list sinks short | egrep -o bluez_sink[[:alnum:]._]+)"

External resources