BLE not working; hcitool lescan says 'Set scan parameters failed: Input/output error'; Ubuntu 20.04 kernel

Bug #1870837 reported by mm
32
This bug affects 5 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Invalid
Undecided
Unassigned

Bug Description

Hi,

after some testing with Ubuntu 20.04 beta I couldn't get hcitool lescan working. I get the following error:

hcitool lescan
Set scan parameters failed: Input/output error

Bluetooth hardware:
hci0: Type: Primary Bus: USB
        BD Address: 04:EA:56:21:xx:xx ACL MTU: 1021:4 SCO MTU: 96:6
        UP RUNNING
        RX bytes:1605 acl:0 sco:0 events:123 errors:0
        TX bytes:5801 acl:0 sco:0 commands:123 errors:0
        Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy: RSWITCH SNIFF
        Link mode: SLAVE ACCEPT
        Name: 'xx'
        Class: 0x200104
        Service Classes: Audio
        Device Class: Computer, Desktop workstation
        HCI Version: 5.1 (0xa) Revision: 0x100
        LMP Version: 5.1 (0xa) Subversion: 0x100
        Manufacturer: Intel Corp. (2)

It is not hardware related, since I get the same error with a USB bluetooth dongle:

hcitool -i hci1 lescan
Set scan parameters failed: Input/output error

hcitool scan is working fine on both devices; bluetoothctl is also working and able to find ble devices.
I would normally prefer bluetoothctl, but I got a software which is based on hcitool.

dmesg shows this errors:
[ 138.152718] debugfs: File 'le_min_key_size' in directory 'hci0' already present!
[ 138.152722] debugfs: File 'le_max_key_size' in directory 'hci0' already present!

Bluez version:
bluez 5.53-0ubuntu2 amd64

System:
Distributor ID: Ubuntu
Description: Ubuntu Focal Fossa (development branch)
Release: 20.04
Codename: focal
---
ProblemType: Bug
ApportVersion: 2.20.11-0ubuntu22
Architecture: amd64
DistroRelease: Ubuntu 20.04
InstallationDate: Installed on 2020-04-01 (4 days ago)
InstallationMedia: Ubuntu-Server 20.04 LTS "Focal Fossa" - Beta amd64 (20200331)
InterestingModules: rfcomm bnep btusb bluetooth
Lsusb:
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 001 Device 003: ID 0463:ffff MGE UPS Systems UPS
 Bus 001 Device 002: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
 Bus 001 Device 004: ID 8087:0aaa Intel Corp.
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
MachineType: Intel(R) Client Systems NUC8i3BEH
Package: linux
PackageArchitecture: amd64
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-5.4.0-21-generic root=/dev/mapper/vgcs2ubct-root ro
ProcVersionSignature: Ubuntu 5.4.0-21.25-generic 5.4.27
Tags: focal
Uname: Linux 5.4.0-21-generic x86_64
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups:

_MarkForUpload: True
dmi.bios.date: 10/23/2019
dmi.bios.vendor: Intel Corp.
dmi.bios.version: BECFL357.86A.0075.2019.1023.1448
dmi.board.name: NUC8BEB
dmi.board.vendor: Intel Corporation
dmi.board.version: J72693-306
dmi.chassis.type: 35
dmi.chassis.vendor: Intel Corporation
dmi.chassis.version: 2.0
dmi.modalias: dmi:bvnIntelCorp.:bvrBECFL357.86A.0075.2019.1023.1448:bd10/23/2019:svnIntel(R)ClientSystems:pnNUC8i3BEH:pvrJ72753-305:rvnIntelCorporation:rnNUC8BEB:rvrJ72693-306:cvnIntelCorporation:ct35:cvr2.0:
dmi.product.family: Intel NUC
dmi.product.name: NUC8i3BEH
dmi.product.sku: BOXNUC8i3BEH
dmi.product.version: J72753-305
dmi.sys.vendor: Intel(R) Client Systems
hciconfig:
 hci0: Type: Primary Bus: USB
  BD Address: 04:EA:56:21:1E:D3 ACL MTU: 1021:4 SCO MTU: 96:6
  UP RUNNING
  RX bytes:17030 acl:0 sco:0 events:2764 errors:0
  TX bytes:677849 acl:0 sco:0 commands:2757 errors:0

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

It looks like that function is pretty close to the kernel so this is probably due to some kernel change.

Can you please try some older kernels and see if you can find any without the bug?

https://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D

tags: added: focal
summary: - Ubuntu 20.04 (focal): hcitool lescan broken
+ hcitool lescan says 'Set scan parameters failed: Input/output error'
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote : Missing required logs.

This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:

apport-collect 1870837

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: New → Incomplete
Revision history for this message
mm (mtl-0) wrote : CurrentDmesg.txt

apport information

tags: added: apport-collected
description: updated
Revision history for this message
mm (mtl-0) wrote : Dependencies.txt

apport information

Revision history for this message
mm (mtl-0) wrote : Lspci.txt

apport information

Revision history for this message
mm (mtl-0) wrote : Lsusb-t.txt

apport information

Revision history for this message
mm (mtl-0) wrote : Lsusb-v.txt

apport information

Revision history for this message
mm (mtl-0) wrote : ProcCpuinfo.txt

apport information

Revision history for this message
mm (mtl-0) wrote : ProcCpuinfoMinimal.txt

apport information

Revision history for this message
mm (mtl-0) wrote : ProcEnviron.txt

apport information

Revision history for this message
mm (mtl-0) wrote : ProcInterrupts.txt

apport information

Revision history for this message
mm (mtl-0) wrote : ProcModules.txt

apport information

Revision history for this message
mm (mtl-0) wrote : UdevDb.txt

apport information

Revision history for this message
mm (mtl-0) wrote : getfacl.txt

apport information

Revision history for this message
mm (mtl-0) wrote : rfkill.txt

apport information

Revision history for this message
mm (mtl-0) wrote : syslog.txt

apport information

Revision history for this message
mm (mtl-0) wrote : Re: hcitool lescan says 'Set scan parameters failed: Input/output error'
Revision history for this message
mm (mtl-0) wrote :
Revision history for this message
mm (mtl-0) wrote :

I tested the following mainline kernels:

Linux xxx 5.3.18-050318-generic #201912181133 SMP Wed Dec 18 16:36:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
root@xxx:~# hcitool lescan
Set scan parameters failed: Input/output error

root@xxx:~# uname -a
Linux xxx 4.15.18-041518-generic #201804190330 SMP Thu Apr 19 07:34:21 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@xxx:~# hcitool lescan
Set scan parameters failed: Input/output error

5.3. since it is Ubuntu 19.10's kernel; 4.15 since it is Ubuntu 18.04's kernel.
With both of them it didn't work. Thats strange since hcitool lescan did work on the same machine with Ubuntu 18.04 and the 4.15 kernel.

On another machine with Ubuntu 18.04 hcitool lescan works:
uname -a
Linux xxx 4.15.0-88-generic #88-Ubuntu SMP Tue Feb 11 20:11:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
root@xxx:~# hcitool lescan
LE Scan ...
6E:82:1E:5F:xx:xx (unknown)
...

So I think it is not kernel related ...

Revision history for this message
mm (mtl-0) wrote :

With current Ubuntu 18.04 installed on focal and the current bluez v5.48 (current Ubuntu 18.04 version):

I get the following error:
root@xxx:~# uname -a
Linux xxx 4.15.0-88-generic #88-Ubuntu SMP Tue Feb 11 20:11:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
root@xxx:~# hcitool lescan
Could not open device: No such device
root@xxx:~# dpkg -l | grep bluez
ii bluez 5.48-0ubuntu3.4 amd64 Bluetooth tools and daemons

Revision history for this message
You-Sheng Yang (vicamo) wrote :

https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=b1eb2c4cd057624312e0412f6c4be000f7fc3617
These legacy tools has been marked deprecated since 2017. You should try migrating to bluetoothctl instead.

no longer affects: linux (Ubuntu)
Revision history for this message
You-Sheng Yang (vicamo) wrote :

Not a kernel issue.

Revision history for this message
mm (mtl-0) wrote :

On uname -a
Linux xxx 4.15.0-88-generic #88-Ubuntu SMP Tue Feb 11 20:11:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux even with up to date focal bluez version the bluetooth device isn't recognized:
dmesg | grep Bluetooth = empty output

The backup usb bluetooth dongle also doesn't work with this kernel:
[ 417.427445] usb 1-2: new full-speed USB device number 5 using xhci_hcd
[ 417.843295] usb 1-2: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping
[ 417.843303] usb 1-2: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
[ 417.843323] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001
[ 417.843329] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
root@xxx:# hcitool scan
Device is not available: Address family not supported by protocol

root@cdsv2:# lsusb
...
Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
...

Revision history for this message
mm (mtl-0) wrote :

I also think it's not a kernel issue since bluetoothctl is working and able to find Bluetooth low energy devices.

Bluez Ubuntu 18.04 version with latest focal kernel also results in:
hcitool lescan
Set scan parameters failed: Input/output error

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Hmm, I think comment #21 got it right. hcitool has not been supported for years. Arguably we shouldn't be shipping it. But nobody is going to maintain it as far as I can tell.

Changed in bluez (Ubuntu):
status: New → Won't Fix
Revision history for this message
mm (mtl-0) wrote :
Download full text (3.3 KiB)

After some more investigation I found out that the software I am using is NOT using hcitool. It really seems to be another problem since the custom software and the hcitool lescan command are throwing the same error observed with btmon:

@ RAW Close: hcitool {0x0004} 20:16:29.633716
@ RAW Open: hcitool (privileged) version 2.22 {0x0004} [hci0] 20:16:29.633742
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #35 [hci0] 20:16:29.633780
        Type: Active (0x01)
        Interval: 10.000 msec (0x0010)
        Window: 10.000 msec (0x0010)
        Own address type: Public (0x00)
        Filter policy: Accept all advertisement (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #36 [hci0] 20:16:29.750680
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Command Disallowed (0x0c)
@ RAW Close: hcitool

Software (phython):
@ RAW Open: python (privileged) version 2.22 {0x0003} [hci0] 20:14:38.006713
> HCI Event: Command Complete (0x0e) plen 4 #28 [hci0] 20:14:38.119126
      LE Set Scan Enable (0x08|0x000c) ncmd 1
        Status: Command Disallowed (0x0c)
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #29 [hci0] 20:14:38.119219
        Type: Passive (0x00)
        Interval: 10.000 msec (0x0010)
        Window: 10.000 msec (0x0010)
        Own address type: Public (0x00)
        Filter policy: Accept all advertisement (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #30 [hci0] 20:14:38.119989
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Command Disallowed (0x0c)
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #31 [hci0] 20:14:38.120063
        Type: Passive (0x00)
        Interval: 10.000 msec (0x0010)
        Window: 10.000 msec (0x0010)
        Own address type: Public (0x00)
        Filter policy: Accept all advertisement (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #32 [hci0] 20:14:38.120946
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Command Disallowed (0x0c)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #33 [hci0] 20:14:38.120988
        Scanning: Enabled (0x01)
        Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x...

Read more...

Revision history for this message
mm (mtl-0) wrote :

Installed blueman for testing purpose (wasn't installed before): it is allowed to perform these commands:
@ RAW Open: blueman-manager (privileged) version 2.22 {0x0004} 20:43:17.578682
@ RAW Close: blueman-manager {0x0004} 20:43:17.578707
@ MGMT Command: Start Discovery (0x0023) plen 1 {0x0001} [hci0] 20:43:17.751082
        Address type: 0x07
          BR/EDR
          LE Public
          LE Random
< HCI Command: LE Set Random Address (0x08|0x0005) plen 6 #495 [hci0] 20:43:17.751177
        Address: 16:68:B8:85:83:60 (Non-Resolvable)
> HCI Event: Command Complete (0x0e) plen 4 #496 [hci0] 20:43:17.866069
      LE Set Random Address (0x08|0x0005) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Extended Scan Parameters (0x08|0x0041) plen 8 #497 [hci0] 20:43:17.866147
        Own address type: Random (0x01)
        Filter policy: Accept all advertisement (0x00)
        PHYs: 0x01
        Entry 0: LE 1M
          Type: Active (0x01)
          Interval: 22.500 msec (0x0024)
          Window: 11.250 msec (0x0012)
> HCI Event: Command Complete (0x0e) plen 4 #498 [hci0] 20:43:17.867046
      LE Set Extended Scan Parameters (0x08|0x0041) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Extended Scan Enable (0x08|0x0042) plen 6 #499 [hci0] 20:43:17.867156
        Extended scan: Enabled (0x01)
        Filter duplicates: Enabled (0x01)
        Duration: 0 msec (0x0000)
        Period: 0.00 sec (0x0000)
...

Revision history for this message
mm (mtl-0) wrote :

Executing "hcitool cmd 0x03 0x0003" made the error with hcitool disappear:
hcitool lescan
LE Scan ...

But hcitool does not seem to work as I can't find any ble devices.
btmon output after executing "hcitool cmd 0x03 0x0003 and hcitool lescan:

> HCI Event: Command Complete (0x0e) plen 4 #51 [hci0] 21:45:08.127791
      LE Set Scan Enable (0x08|0x000c) ncmd 2
        Status: Success (0x00)
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #52 [hci0] 21:45:08.127962
        Type: Passive (0x00)
        Interval: 10.000 msec (0x0010)
        Window: 10.000 msec (0x0010)
        Own address type: Public (0x00)
        Filter policy: Accept all advertisement (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #53 [hci0] 21:45:08.128699
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #54 [hci0] 21:45:08.128795
        Type: Passive (0x00)
        Interval: 10.000 msec (0x0010)
        Window: 10.000 msec (0x0010)
        Own address type: Public (0x00)
        Filter policy: Accept all advertisement (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #55 [hci0] 21:45:08.129744
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Success (0x00)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #56 [hci0] 21:45:08.129821
        Scanning: Enabled (0x01)
        Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #57 [hci0] 21:45:08.131737
      LE Set Scan Enable (0x08|0x000c) ncmd 2
        Status: Success (0x00)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #58 [hci0] 21:45:08.190201
        Scanning: Disabled (0x00)
        Filter duplicates: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4 #59 [hci0] 21:45:08.200856
      LE Set Scan Enable (0x08|0x000c) ncmd 2
        Status: Success (0x00)
@ RAW Close: hcitool

Revision history for this message
mm (mtl-0) wrote :

After some time I am back to:
hcitool lescan
Set scan parameters failed: Input/output error

Issuing
hcitool cmd 0x03 0x0003
< HCI Command: ogf 0x03, ocf 0x0003, plen 0
> HCI Event: 0x0e plen 4
  02 03 0C 00

helps again, but I still can't find any BLE devices with hcitool lescan. Nevertheless the i/o error is gone and btmon also doesn't report any error.
Sadly the result is still a non functional lescan ...

Revision history for this message
mm (mtl-0) wrote :

It seems to me that the "normal" LE commands are broken and only the LE Extended commands are working?

Revision history for this message
mm (mtl-0) wrote :

Bluetoothctl and blueman are both using LE Extended commands and are therefor working I think.

(btw: I would edit my comments if I could ...)

Revision history for this message
mm (mtl-0) wrote :

So, my fault: It IS actually a kernel issue. I didn't install linux-modules-extra-4.15.0-96-generic package when trying out Ubuntu 18.04 stock kernel on Ubuntu 20.04. After installing this package hcitool lescan works flawlessly...

affects: bluez (Ubuntu) → kernel-package (Ubuntu)
mm (mtl-0)
summary: - hcitool lescan says 'Set scan parameters failed: Input/output error'
+ BLE not working; hcitool lescan says 'Set scan parameters failed:
+ Input/output error';
summary: BLE not working; hcitool lescan says 'Set scan parameters failed:
- Input/output error';
+ Input/output error'; Ubuntu 20.04 kernel
mm (mtl-0)
affects: kernel-package (Ubuntu) → linux (Ubuntu)
Changed in linux (Ubuntu):
status: Won't Fix → New
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote : Status changed to Confirmed

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
Revision history for this message
motoroler (motoroler) wrote :

Also experiencing this issue. Took a long time to google this thread. Really hope for a fix in recent kernels. Please, let me know if any diagnostic/debug information or testing is required, I'm ready to assist.

Revision history for this message
You-Sheng Yang (vicamo) wrote :

Allow me to emphasis again, this is not a kernel issue.

Bluetooth spec "3.1.1 Legacy and extended advertising":

  If, since the last power-on or reset, the Host has ever issued
  a legacy advertising command and then issues an extended
  advertising command, or has ever issued an extended
  advertising command and then issues a legacy advertising
  command, the Controller shall return the error code Command
  Disallowed (0x0C).

Basically it follows you shall not mix legacy/extended commands. It will not be supported in the controller firmware as the specification says so. Old kernels may work, because they don't have BLE extended command set support at the time.

So please stop using hcitool. That's it.

Changed in linux (Ubuntu):
status: Confirmed → Invalid
Revision history for this message
Bruno Rocha Coutinho (bruno-r-coutinho) wrote :

I managed to work around this issue by disconnecting and reconnecting the device.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.