Ubuntu 21.10, PulseAudio 1.15, Bluetooth and its Codecs

When it comes to in-ear headphones, the neckband format is by far my personal favorite. While I have several Bluetooth headphones, my most liked in-ear one is the Fiio FH3: comfortable, great sound. But it’s cabled, and I do not like cables. So I got a Shanling MW200 for my FH3. And the FH3 still sound great!

But the MW200 blinks in blue which means it’s using the SBC audio codec when connecting to my Linux PC! Unacceptable!

It turns out that on an older Ubuntu version (20.04), the Bluetooth Codecs only support SBC. Not a big problem: PulseAudio 1.15 supports better codecs like aptX, AAC and LDAC. And it’s part of Ubuntu 21.10.

Time to upgrade from 20.04 to 21.10 then!

After doing the usual

❯ apt update
❯ apt upgrade
❯ do-release-update

I still only see SBC used: the MW200 blinks blue when it’s using it. If it was using another codec, it would blink in another color (e.g. green=LDAC or purple=aptX).

The fix is simple:

❯ add-apt-repository ppa:berglh/pulseaudio-a2dp
❯ apt update
❯ apt install pulseaudio-modules-bt libldac

Once done, you can see the codecs:

❯ pactl list
[...]
Card #4
        Name: bluez_card.4C_00_00_00_00_24
        Driver: module-bluez5-device.c
        Owner Module: 29
        Properties:
                device.description = "Shanling MW200"
                device.string = "4C:00:00:00:00:24"
                device.api = "bluez"
                device.class = "sound"
                device.bus = "bluetooth"
                device.form_factor = "headphone"
                bluez.path = "/org/bluez/hci0/dev_4C_00_00_00_00_24"
                bluez.class = "0x240418"
                bluez.alias = "Shanling MW200"
                device.icon_name = "audio-headphones-bluetooth"
        Profiles:
                headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
                a2dp_sink_sbc: High Fidelity Playback (A2DP Sink: SBC) (sinks: 1, sources: 0, priority: 40, available: yes)
                a2dp_sink_aac: High Fidelity Playback (A2DP Sink: AAC) (sinks: 1, sources: 0, priority: 40, available: yes)
                a2dp_sink_aptx: High Fidelity Playback (A2DP Sink: aptX) (sinks: 1, sources: 0, priority: 40, available: yes)
                a2dp_sink_aptx_hd: High Fidelity Playback (A2DP Sink: aptX HD) (sinks: 1, sources: 0, priority: 40, available: yes)
                a2dp_sink_ldac: High Fidelity Playback (A2DP Sink: LDAC) (sinks: 1, sources: 0, priority: 40, available: yes)
                off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
        Active Profile: a2dp_sink_ldac
        Ports:
                headphone-output: Headphone (type: Unknown, priority: 0, latency offset: 0 usec, available)
                        Part of profile(s): headset_head_unit, a2dp_sink_sbc, a2dp_sink_aac, a2dp_sink_aptx, a2dp_sink_aptx_hd, a2dp_sink_ldac
                headphone-input: Bluetooth Input (type: Unknown, priority: 0, latency offset: 0 usec, availability unknown)
                        Part of profile(s): headset_head_unit

Even better is that it’s very easy to change the codec via the volume control and clicking on the hamburger menu next to the Bluetooth headset:

Audio Volume Control for MW200

And the MW200 now blinks in green (means it’s using not SBC, but LDAC)!

If anyone wonders: I cannot differentiate between aptX, aptX HD and LDAC. SBC sounds a bit duller though.

AKG Lyra – A (Big) Microphone

All this work-from-home puts more focus on sound quality of audio and video conferences. Some people are very hard to understand on a conference call. Speakerphone with echo, noisy background, windy area or they simply don’t have the microphone in the right place. In all cases having a discussion is hard when someone who has to say something is inaudible.

So good audio quality is important. And listening to YouTube, Twitch and Podcasts gives you an idea of what is good and what is bad.

So I wanted to get myself a decent microphone. Turns out that I’m not the only one who thought so: Amazon (.co.jp) is pretty much sold out on USB connected “good” microphones. Literally all the recommended brand name microphones were sold out. What’s left is either way too expensive (30000 Yen or more) or of very questionable quality with matching bad ratings.

Moving off the mainstream helps: Where Amazon is sold out, Sound House is not. While they sell mainly music things, they also sell USB connected microphones. And while most were sold out here too, not all were. One in particular was supposed to arrive on April 30th: the AKG Lyra. It’s USB-C connected, and seems to be generally good according to reviews. It was marked as “in stock” on 30th, so I ordered one. And it arrived today.

And it’s…huge.

But it sounds really nice: very natural. Picks up sound from far away too. Not overly sensitive to plosives. Can do stereo. Has a headphone connector to listen to yourself and it acts as a sound output for your computer too.

I am mightily impressed with the whole design and functionality.

It works on Phones too!

But the best part, which was unconfirmed until I tested it: It works as a microphone and sound output using my Sony Xperia XZ2: plug it in via USB-C and programs like Audio Recorder use the Lyra as input (and output).

Will it work during a normal phone call? We’ll see.