On Friday 18 December 2020 13:32:29 Joakim Tjernlund wrote: > There seems to be quite a few USB controllers gaining the BTUSB_WIDEBAND_SPEECH which I guess means HW mSBC No, it does not mean mSBC. If you want to query if your bluetooth adapter supports hw mSBC then you need to check OCF_READ_LOCAL_CODECS command. You can look into script sco_features.pl for details. Note that currently it is not possible to send OCF_READ_LOCAL_CODECS command from non-root user as kernel currently does not allow it. > but currently there is no way to select this mode. Yes. "/bin/hciconfig voice" allows to set only voice settings for old Add Synchronous Connection HCI command which does not support hw mSCB. > Any idea if one could patch the kernel to default to HW mSBC and user apps like bluealsa/pulseaudio would just use it automatically? For usage mSBC hw encoder you need to use Enhanced Setup Synchronous Connection HCI command for establishing SCO connection. For using HW encoder you need to stop feeding socket with mSBC encoded data and instead put into this socket RAW pcm samples. Also you need somehow inform kernel about this change. For both things I designed new setsockopt() API which I described in: https://lore.kernel.org/linux-bluetooth/20200419234937.4zozkqgpt557m3o6@pali/