Bluetooth: Difference between revisions

m Enabling A2DP Sink: Added ellipses to match other code blocks
Mach50 (talk | contribs)
Add warning about laptops that use combo wifi bluetooth cards. Add `powerOnBoot` option to the setup section code.
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Setup==
==Setup==
To enable support for Bluetooth devices, amend your system configuration as follows and apply changes:
To enable support for Bluetooth devices, amend your system configuration as follows and apply changes:
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|3=hardware.bluetooth = {
hardware.bluetooth.enable = true;
  enable = true;
</nowiki>}}
  powerOnBoot = false;
};|name=/etc/nixos/configuration.nix|lang=nix}}{{Warning|Some laptops use combo bluetooth wifi cards that might reduce wifi quality when both bluetooth and wifi are enabled. If you encounter degraded network quality after setup this might be the cause.}}
 
==Usage==
==Usage==
In order to use Bluetooth devices, they must be paired with your NixOS machine. Heavier [[:Category:Desktop_environment|desktop environments]] will usually provide a Bluetooth management GUI which you can use to pair devices.
In order to use Bluetooth devices, they must be paired with your NixOS machine. Heavier [[:Category:Desktop_environment|desktop environments]] will usually provide a Bluetooth management GUI which you can use to pair devices.
Line 10: Line 12:
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
services.blueman.enable = true;
services.blueman.enable = true;
</syntaxhighlight>Another option for a GUI based Bluetooth management GUI can be [https://search.nixos.org/packages?channel=unstable&show=overskride&from=0&size=50&sort=relevance&type=packages&query=overskride overskirde]
</syntaxhighlight>Another option for a GUI based Bluetooth management GUI can be [https://search.nixos.org/packages?channel=unstable&show=overskride&from=0&size=50&sort=relevance&type=packages&query=overskride overskride]


Alternatively if you wish to use a TUI<ref>https://en.wikipedia.org/wiki/Text-based_user_interface</ref> then check out [https://github.com/bluetuith-org/bluetuith bluetuith] or [https://github.com/pythops/bluetui bluetui]
Alternatively if you wish to use a TUI<ref>https://en.wikipedia.org/wiki/Text-based_user_interface</ref> then check out [https://github.com/bluetuith-org/bluetuith bluetuith] or [https://github.com/pythops/bluetui bluetui]
Line 53: Line 55:
To make these buttons usable with media players supporting the dbus-based [https://specifications.freedesktop.org/mpris-spec/latest/ MPRIS] standard,
To make these buttons usable with media players supporting the dbus-based [https://specifications.freedesktop.org/mpris-spec/latest/ MPRIS] standard,
one can use <code>mpris-proxy</code> that is part of bluez package.
one can use <code>mpris-proxy</code> that is part of bluez package.
The following snippet can be used in [[Home Manager]] to start this program as a daemon:
It can be used as a daemon in [[Home Manager]]:<syntaxhighlight lang="nix">
services.mpris-proxy.enable = true;
</syntaxhighlight>For versions preceding Home Manager 21.05, the following snippet can be used:


<syntaxHighlight lang="nix">
<syntaxHighlight lang="nix">
Line 63: Line 67:
};
};
</syntaxHighlight>
</syntaxHighlight>
Or, starting with Home Manager 21.05, enable the <code>mpris-proxy</code> service.


Some headsets (such as Sony's WH-1000XM series) also support AVRCP directly and as such <code>mpris-proxy</code> is not required for this functionality, as headset button presses will register as media key presses. If you are using a WM or a desktop environment which doesn't support media keys, you will have to set up keybindigs yourself; the keys are typically called <code>XF86AudioPlay</code>, <code>XF86AudioPause</code>, <code>XF86AudioNext</code>, and <code>XF86AudioPrev</code>. However, note that some functionality, such as "take off headphones to pause" on WH-1000XM4/5 requires two-way AVRCP communication to work properly, so `mpris-proxy` is still recommended if you wish to use it. It also may or may not help with Bluetooth multipoint.
Some headsets (such as Sony's WH-1000XM series) also support AVRCP directly and as such <code>mpris-proxy</code> is not required for this functionality, as headset button presses will register as media key presses. If you are using a WM or a desktop environment which doesn't support media keys, you will have to set up keybindigs yourself; the keys are typically called <code>XF86AudioPlay</code>, <code>XF86AudioPause</code>, <code>XF86AudioNext</code>, and <code>XF86AudioPrev</code>. However, note that some functionality, such as "take off headphones to pause" on WH-1000XM4/5 requires two-way AVRCP communication to work properly, so `mpris-proxy` is still recommended if you wish to use it. It also may or may not help with Bluetooth multipoint.