Maybe different machines have different root cause for this issue, for my case: I have 3 laptops: 1 dell laptop with intel BT 8087:0aaa, 1 dell laptop with Atheros BT 0cf3:e007 and 1 lenovo laptop with intel BT 8087:0029. I have 4 BT headsets: 1 QC35 II, 1 harman kardon soho wireless, 1 sony wl-1000x and 1 plantronics Go2. After freshly installing the ubuntu 20.04, those 4 headsets work well on both Dell laptops, in the hsp/hfp mode, both playback and recording work well. But on the Lenovo machine, I reproduced the issue, all headsets could work in A2DP mode, couldn't output and record in hsp/hfp mode. I ran $sudo btmon, found after switch to Synchronous connection successfully (HCI Event: Synchronous Connect Complete), the dell machines could receive the sco packets from headsets, while the lenovo machine couldn't. The difference between Lenovo and Dell machines is they have different BT host controllers. Then I debugged the bt kernel driver, found on that lenovo machine, the btusb driver could not receive the usb_isoc packets from headsets (length always equals 0). So on my LENOVO laptop, it is highly possible this is a kernel driver or BT firmware/WiFi firmware's bug. So if possible, you could plug in an external USB BT dongle to redo the test, let headsets connect to that dongle instead of BT hci on your laptop. Or you could run sudo btmon to check the log, if it is a synchronous connection failure or TX/RX on SCO packets failure. This is a example log captured on my Dell machine (without hsp/hfp issue), starting capture when manually switch to hsp/hfp mode: Bluetooth monitor ver 5.48 = Note: Linux version 5.3.0-56-generic (x86_64) 0.694655 = Note: Bluetooth subsystem version 2.22 0.694662 = New Index: 18:1D:EA:86:BE:E6 (Primary,USB,hci0) [hci0] 0.694666 = Open Index: 18:1D:EA:86:BE:E6 [hci0] 0.694667 = Index Info: 18:1D:EA:86:BE:E6 (Intel Corp.) [hci0] 0.694668 @ MGMT Open: bluetoothd (privileged) version 1.14 {0x0002} 0.694673 @ MGMT Open: bluetoothd (privileged) version 1.14 {0x0001} 0.694674 @ MGMT Open: btmon (privileged) version 1.14 {0x0003} 0.694731 < HCI Command: Exit Sniff Mode (0x02|0x0004) plen 2 #1 [hci0] 6.574419 Handle: 256 > HCI Event: Command Status (0x0f) plen 4 #2 [hci0] 6.688939 Exit Sniff Mode (0x02|0x0004) ncmd 1 Status: Success (0x00) > HCI Event: Mode Change (0x14) plen 6 #3 [hci0] 6.829008 Status: Success (0x00) Handle: 256 Mode: Active (0x00) Interval: 0.000 msec (0x0000) < HCI Command: Setup Synchronous Connection (0x01|0x0028) plen 17 #4 [hci0] 6.829108 Handle: 256 Transmit bandwidth: 8000 Receive bandwidth: 8000 Max latency: 10 Setting: 0x0060 Input Coding: Linear Input Data Format: 2's complement Input Sample Size: 16-bit # of bits padding at MSB: 0 Air Coding Format: CVSD Retransmission effort: Optimize for power consumption (0x01) Packet type: 0x0380 3-EV3 may not be used 2-EV5 may not be used 3-EV5 may not be used > HCI Event: Command Status (0x0f) plen 4 #5 [hci0] 6.830016 Setup Synchronous Connection (0x01|0x0028) ncmd 1 Status: Success (0x00) > HCI Event: Max Slots Change (0x1b) plen 3 #6 [hci0] 6.834999 Handle: 256 Max slots: 1 > HCI Event: Synchronous Connect Complete (0x2c) plen 17 #7 [hci0] 6.917015 Status: Success (0x00) Handle: 257 Address: 48:C1:AC:D1:18:12 (PLANTRONICS, INC.) Link type: eSCO (0x02) Transmission interval: 0x0c Retransmission window: 0x02 RX packet length: 60 TX packet length: 60 Air mode: CVSD (0x02) > SCO Data RX: Handle 0 flags 0x00 dlen 48 #8 [hci0] 6.919960 > ACL Data RX: Handle 256 flags 0x02 dlen 20 #9 [hci0] 6.924559 Channel: 64 len 16 [PSM 0 mode 0] {chan 0} 63 ff 14 00 01 41 54 2b 56 47 53 3d 31 35 0d 12 c....AT+VGS=15.. > HCI Event: Max Slots Change (0x1b) plen 3 #10 [hci0] 6.926005 Handle: 256 Max slots: 5 < SCO Data TX: Handle 257 flags 0x00 dlen 48 #11 [hci0] 6.926474 < ACL Data TX: Handle 256 flags 0x00 dlen 19 #12 [hci0] 6.927142 Channel: 88 len 15 [PSM 0 mode 0] {chan 0} 61 ef 17 0d 0a 2b 56 47 4d 3d 31 35 0d 0a d4 a....+VGM=15... < ACL Data TX: Handle 256 flags 0x00 dlen 14 #13 [hci0] 6.927574 Channel: 88 len 10 [PSM 0 mode 0] {chan 0} 61 ef 0d 0d 0a 4f 4b 0d 0a d4 a....OK... > SCO Data RX: Handle 0 flags 0x00 dlen 48 #14 [hci0] 6.929969 > SCO Data RX: Handle 0 flags 0x00 dlen 48 #15 [hci0] 6.929976 > SCO Data RX: Handle 0 flags 0x00 dlen 48 #16 [hci0] 6.929977 > HCI Event: Number of Completed Packets (0x13) plen 5 #17 [hci0] 6.931993 Num handles: 1 Handle: 256 Count: 1 > HCI Event: Number of Completed Packets (0x13) plen 5 #18 [hci0] 6.936043 Num handles: 1 Handle: 256 Count: 1 > SCO Data RX: Handle 0 flags 0x00 dlen 48 #19 [hci0] 6.939958 > SCO Data RX: Handle 257 flags 0x00 dlen 48 #20 [hci0] 6.939968 > SCO Data RX: Handle 257 flags 0x00 dlen 48 #21 [hci0] 6.939969 > SCO Data RX: Handle 257 flags 0x00 dlen 48 #22 [hci0] 6.939971 < SCO Data TX: Handle 257 flags 0x00 dlen 48 #23 [hci0] 6.940293 < SCO Data TX: Handle 257 flags 0x00 dlen 48 #24 [hci0] 6.940372 < SCO Data TX: Handle 257 flags 0x00 dlen 48 #25 [hci0] 6.940428 .....