mbox series

[BlueZ,0/5] Support Sixaxis gamepad with classic bonded only

Message ID 20250421111251.108943-1-ludovico.denittis@collabora.com
Headers show
Series Support Sixaxis gamepad with classic bonded only | expand

Message

Ludovico de Nittis April 21, 2025, 11:12 a.m. UTC
This series adds a new "SixaxisCablePairing" property to allow us to
indentify sixaxis devices that have been paired using the canonical USB
cable method. With that information, we can dynamically enforce
encryption to drastically reduce the attack surface, compared to just
disabling the "ClassicBondedOnly" property.

The "SixaxisCablePairing" property is exposed via D-Bus to allow
clients to potentually show this information to end users.

As far as I can tell, starting the listening input server with
BT_IO_SEC_LOW and then bumping it in `hidp_add_connection()` should not
have any negative effect regarding the overall security. However,
please let me know if it turns out not being the case. 

The last commit "input: Validate the Sixaxis HID report descriptor" can
probably be reviewed and merged separately if needed.

Addresses https://github.com/bluez/bluez/issues/1165

Ludovico de Nittis (5):
  src: Add new SixaxisCablePairing property
  client: Print SixaxisCablePairing value if BlueZ was compiled with
    sixaxis
  plugins: Set SixaxisCablePairing property when pairing a sixaxis with
    USB
  input: Start the server with sec low and bump it when making the
    connection
  input: Validate the Sixaxis HID report descriptor

 client/main.c            |  3 ++
 configure.ac             |  3 ++
 doc/org.bluez.Device.rst |  6 ++++
 plugins/sixaxis.c        |  5 ++-
 profiles/input/device.c  | 77 ++++++++++++++++++++++++++++++++++++++--
 profiles/input/server.c  |  7 ++++
 src/device.c             | 44 +++++++++++++++++++++++
 src/device.h             |  3 ++
 8 files changed, 145 insertions(+), 3 deletions(-)