Site Tools


hardwarerelated:headset:sony_wh-1000xm2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
hardwarerelated:headset:sony_wh-1000xm2 [2020/11/24 08:58] – [Links] chrishardwarerelated:headset:sony_wh-1000xm2 [2022/11/13 12:06] – external edit 127.0.0.1
Line 1: Line 1:
 +====== What? ======
 +Just some notes around the Sony WH-1000XM2
 +  * pro: wireless: bluetooth profiles for headset and High Fidelity playback (A2DP)
 +  * pro: quite good noise cancelling
 +  * pro: build in rechargable battery
 +  * con: when the cable is used, only headphone functionality is available. No microphone signal goes over the analog cable.
 +  * con: after 60min of wearing, I need to take the headset off
  
 +===== Links =====
 +  * [[https://www.youtube.com/watch?v=VnzIIhLNHqg|Queen - Bohemian Rhapsody - AUDIO 3DD]]
 +  * [[https://lineageos.org/engineering/Bluetooth-SBC-XQ/|LineageOS implements now SBC XQ, comparable to aptX and aptX HD]] 
 +  * https://wiki.archlinux.org/index.php/PipeWire -- Archlinux great PipeWire docs
 +  * [[/hardwarerelated/headset/sony_wh-1000xm2_pa|Sony WH-1000XM2 pulseaudio notes]] (newer distros have pipewire)
 +
 +====== Bluetooth profiles ======
 +As of Fedora34 with pipewire, following bluetooth profiles which are supported on Fedora34 can also be used with the Sony WH-1000XM2. First is the name as seen in 'pactl list cards', then a description.
 +
 +  * **These modes provide pure audio, and do not transport the microphone signal to the computer**
 +    * a2dp-sink: High Fidelity Playback (A2DP Sink), good audio quality
 +    * a2dp-sink-sbc: High Fidelity Playback (A2DP Sink, codec SBC), good audio quality
 +    * a2dp-sink-sbc_xq: High Fidelity Playback (A2DP Sink, codec SBC-XQ), better audio quality
 +    * a2dp-sink-aac: High Fidelity Playback (A2DP Sink, codec AAC), better audio quality
 +    * a2dp-sink-ldac: High Fidelity Playback (A2DP Sink, codec LDAC), best audio quality
 +  * **These modes provide audio + micro channel, so for example useful for chats and conferences**
 +    * headset-head-unit: Headset Head Unit (HSP/HFP), bad quality
 +    * headset-head-unit-cvsd: Headset Head Unit (HSP/HFP, codec CVSD), bad quality, 16KHz/16 bit
 +    * headset-head-unit-msbc: Headset Head Unit (HSP/HFP, codec mSBC), better quality, 48KHz/16 bit
 +
 +"Hands-Free Profile (HFP) Version 1.6 adds optional support for wide band speech with the mSBC codec, a 16 kHz monaural configuration of the SBC codec mandated by the A2DP profile." That is usable on Fedora34, it was implemented in Pulsaudio 15 and pipewire 0.3.23. For headset-head-unit-msbc, it might be required to modify a config file as follows:
 +<code>
 +$ mkdir -p /etc/pipewire/media-session.d/
 +$ cp /usr/share/pipewire/media-session.d/bluez-monitor.conf /etc/pipewire/media-session.d/
 +$ vi /etc/pipewire/media-session.d/bluez-monitor.conf
 +### set this:
 +bluez5.msbc-support   = true
 +bluez5.sbc-xq-support = true
 +</code>
 +[[https://www.commander1024.de/wordpress/2021/07/bluetooth-hifi-unter-linux/|details in German]].
 +
 +===== Fedora 34 and later / pipewire based setups =====
 +<code>
 +### Let's install the required packages.
 +$ sudo dnf install -y pipewire-alsa pipewire-pulseaudio pipewire
 +  
 +### Now ensure dbus and pipewire are running as your user, and enabled.
 +$ systemctl --user restart dbus pipewire-pulse pipewire
 +$ systemctl --user enable dbus pipewire-pulse pipewire
 +$ systemctl --user status dbus pipewire-pulse pipewire
 +
 +$ sudo systemctl status bluetooth.service
 +
 +$ bluetoothctl 
 +Agent registered
 +[CHG] Controller XX:XX:XX:XX:XX:B7 Pairable: yes
 +[LE_WH-1000XM2]# scan on
 +Discovery started
 +[CHG] Controller XX:XX:XX:XX:XX:B7 Discovering: yes
 +[CHG] Device XX:XX:XX:XX:XX:85 RSSI: -48
 +[CHG] Device XX:XX:XX:XX:XX:85 TxPower: 4
 +[CHG] Device XX:XX:XX:XX:XX:85 Name: WH-1000XM2
 +[CHG] Device XX:XX:XX:XX:XX:85 Alias: WH-1000XM2
 +[NEW] Device XX:XX:XX:XX:XX:6D XX:XX:XX:XX:XX:6D
 +[LE_WH-1000XM2]#  trust XX:XX:XX:XX:XX:85
 +Changing XX:XX:XX:XX:XX:85 trust succeeded
 +[LE_WH-1000XM2]# connect XX:XX:XX:XX:XX:85
 +Attempting to connect to XX:XX:XX:XX:XX:85
 +Connection successful
 +[CHG] Device XX:XX:XX:XX:XX:85 RSSI: -59
 +[CHG] Device XX:XX:XX:XX:XX:85 Name: LE_WH-1000XM2
 +
 +$ sudo bluetoothctl
 +[bluetooth]# power on
 +[bluetooth]# agent on
 +[bluetooth]# default-agent
 +[bluetooth]# scan on
 +[NEW] Device XX:XX:XX:XX:XX:XX WH-1000XM2
 +[bluetooth]# scan off
 +[bluetooth]# trust XX:XX:XX:XX:XX:XX
 +[bluetooth]# pair XX:XX:XX:XX:XX:XX
 +Attempting to pair with XX:XX:XX:XX:XX:XX
 +[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
 +[CHG] Device XX:XX:XX:XX:XX:XX UUIDs: ... 
 +[CHG] Device XX:XX:XX:XX:XX:XX UUIDs: ... 
 +[CHG] Device XX:XX:XX:XX:XX:XX Paired: yes
 +Pairing successful
 +[CHG] Device XX:XX:XX:XX:XX:XX Connected: no
 +[bluetooth]# connect XX:XX:XX:XX:XX:XX
 +Attempting to connect to XX:XX:XX:XX:XX:XX
 +[CHG] Device XX:XX:XX:XX:XX:XX Connected: yes
 +Connection successful
 +[bluetooth]# quit
 +
 +### Which codec is currently active?
 +$ pactl info
 +$ pactl list sinks
 +[..]
 +Sink #199
 +[..]
 +        Description: WH-1000XM2
 +        Driver: PipeWire
 +        Sample Specification: s16le 2ch 48000Hz
 +[..]
 +        Properties:
 +                api.bluez5.transport = ""
 +                api.bluez5.profile = "a2dp-sink"
 +                api.bluez5.codec = "sbc"
 +[..]
 +OR
 +                api.bluez5.codec = "aac"  (aac codec, high quality)
 +OR
 +                api.bluez5.codec = "ldac" (for low latency)
 +OR
 +                api.bluez5.codec = "cvsd" (for headset use, with micro on)
 +
 +### Change profile, way 1
 +$ sudo dnf install -y pavucontrol
 +$ pavucontrol
 +
 +### Change profile, way 2
 +$ pactl list cards
 +Card #197
 +  Name: bluez_card.70_26_05_9D_31_85
 +  Driver: module-bluez5-device.c
 +  Owner Module: n/a
 +  Properties:
 +  [..]
 +  Profiles:
 +    off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
 +    a2dp-sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 0, available: yes)
 +    headset-head-unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 0, available: yes)
 +    a2dp-sink-sbc: High Fidelity Playback (A2DP Sink, codec SBC) (sinks: 1, sources: 0, priority: 0, available: yes)
 +    a2dp-sink-aac: High Fidelity Playback (A2DP Sink, codec AAC) (sinks: 1, sources: 0, priority: 0, available: yes)
 +    a2dp-sink-ldac: High Fidelity Playback (A2DP Sink, codec LDAC) (sinks: 1, sources: 0, priority: 0, available: yes)
 +    headset-head-unit-cvsd: Headset Head Unit (HSP/HFP, codec CVSD) (sinks: 1, sources: 1, priority: 0, available: yes)
 +    headset-head-unit-msbc: Headset Head Unit (HSP/HFP, codec mSBC) (sinks: 1, sources: 1, priority: 0, available: yes)
 +  Active Profile: a2dp-sink-ldac
 +  [..]
 +$ pactl set-card-profile bluez_card.70_26_05_9D_31_85 a2dp-sink-sbc
 +</code>
 +
 +===== Errors & solutions =====
 +== Problem ==
 +  * 'blueman-applet' says when trying to connect to the headset "protocol not available.
 +  * bluetoothctl reports this:
 +<code>
 +[chris@電脳 ~]$ bluetoothctl
 +Agent registered
 +[CHG] Controller 34:E1:2D:7C:61:B7 Pairable: yes
 +[bluetooth]# scan on
 +Discovery started
 +[CHG] Controller 34:E1:2D:7C:61:B7 Discovering: yes
 +[..]
 +[CHG] Device 70:26:05:9D:31:85 Name: LE_WH-1000XM2
 +[CHG] Device 70:26:05:9D:31:85 Alias: LE_WH-1000XM2
 +[bluetooth]# trust 70:26:05:9D:31:85
 +Changing 70:26:05:9D:31:85 trust succeeded
 +[NEW] Device 4D:E9:CA:BF:05:3B 4D-E9-CA-BF-05-3B
 +[bluetooth]# connect 70:26:05:9D:31:85
 +Attempting to connect to 70:26:05:9D:31:85
 +Failed to connect: org.bluez.Error.Failed
 +</code>
 +  * When trying to connect in 'blueman-applet', error "unknown protocol" appears, and "systemctl status bluetooth.service" reports:
 +<code>
 +bluetoothd[23]: src/service.c:btd_service_connect() a2dp-sink profile connect failed for 70:26:05:9D:31:85: Protocol not available
 +bluetoothd[23]: src/service.c:btd_service_connect() a2dp-sink profile connect failed for 70:26:05:9D:31:85: Protocol not available
 +</code>
 +== Solution 1 (pulseaudio based setups only) ==
 +  * Ensure package pulseaudio-module-bluetooth-freeworld or pulseaudio-module-bluetooth is installed.
 +  * If you installed the package after starting pulseaudio or your Xorg session, then do this as user:
 +<code>
 +killall pulseaudio
 +pulseaudio --start
 +</code>
 +== Solution 2 ==
 +Install package blueman and run 'blueman-manager', for me that frontend was able to connect when 'bluetoothctl' could not.
hardwarerelated/headset/sony_wh-1000xm2.txt · Last modified: 2024/03/03 06:44 by chris