Bluetooth: Difference between revisions

mNo edit summary
m Enabling A2DP Sink: Added ellipses to match other code blocks
 
(4 intermediate revisions by 4 users not shown)
Line 12: Line 12:
</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 overskirde]


Alternatively if you wish to use a TUI<ref>https://en.wikipedia.org/wiki/Text-based_user_interface</ref> then check out [https://search.nixos.org/packages?channel=unstable&show=bluetuith&from=0&size=50&sort=relevance&type=packages&query=bluetui 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]


===Pairing devices from the command line===
===Pairing devices from the command line===
Line 50: Line 50:


=== Using Bluetooth headset buttons to control media player ===
=== Using Bluetooth headset buttons to control media player ===
Some bluetooth headsets have buttons for  pause/play or to skip to the next track.
Many bluetooth headsets have buttons for  pause/play or to skip to the next track.
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.
Line 65: Line 65:


Or, starting with Home Manager 21.05, enable the <code>mpris-proxy</code> service.
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.


==== System-Wide PulseAudio ====
==== System-Wide PulseAudio ====
Line 86: Line 88:


To enable extra codecs add the following to <tt>/etc/nixos/configuration.nix</tt>:
To enable extra codecs add the following to <tt>/etc/nixos/configuration.nix</tt>:
<syntaxHighlight lang="nix">
<syntaxhighlight lang="nix">
{
{
...
...
   hardware.pulseaudio = {
   services.pulseaudio = {
     enable = true;
     enable = true;
     package = pkgs.pulseaudioFull;
     package = pkgs.pulseaudioFull;
Line 95: Line 97:
...
...
}
}
</syntaxHighlight>
</syntaxhighlight>


==== Enabling A2DP Sink ====
==== Enabling A2DP Sink ====
Modern headsets will generally try to connect using the A2DP profile. To enable this for your bluetooth connection, add the following to <tt>/etc/nixos/configuration.nix</tt>
Modern headsets will generally try to connect using the A2DP profile. To enable this for your bluetooth connection, add the following to <tt>/etc/nixos/configuration.nix</tt>


<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">{
{
...
   hardware.bluetooth.settings = {
   hardware.bluetooth.settings = {
     General = {
     General = {
Line 107: Line 109:
     };
     };
   };
   };
}
...
</syntaxhighlight>
}</syntaxhighlight>
This configuration may be unnecessary and does not work with bluez5 (<tt>Unknown key Enable for group General</tt> ).
This configuration may be unnecessary and does not work with bluez5 (<tt>Unknown key Enable for group General</tt> ).


Line 150: Line 152:


Add following to your system config and apply it:
Add following to your system config and apply it:
{{Note|Parts of this instruction and module are not yet stable and will be available in the upcoming NixOS 25.04 release.}}


<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
Line 178: Line 178:


Run the command <code>asha_pipewire_sink</code> and choose your hearing aids as audio sink in your sound mixer application, for example <code>pavucontrol</code>.
Run the command <code>asha_pipewire_sink</code> and choose your hearing aids as audio sink in your sound mixer application, for example <code>pavucontrol</code>.


=== File Transfer from/to Mobile Device ===
=== File Transfer from/to Mobile Device ===