• Bastien Nocera's avatar
    USB: core: Add wireless_status sysfs attribute · f98e0640
    Bastien Nocera authored
    Add a wireless_status sysfs attribute to USB devices to keep track of
    whether a USB device that's comprised of a receiver dongle and an emitter
    device over a, most of the time proprietary, wireless link has its emitter
    connected or disconnected.
    
    This will be used by user-space OS components to determine whether the
    battery-powered part of the device is wirelessly connected or not,
    allowing, for example:
    - upower to hide the battery for devices where the device is turned off
      but the receiver plugged in, rather than showing 0%, or other values
      that could be confusing to users
    - Pipewire to hide a headset from the list of possible inputs or outputs
      or route audio appropriately if the headset is suddenly turned off, or
      turned on
    - libinput to determine whether a keyboard or mouse is present when its
      receiver is plugged in.
    
    This is done at the USB interface level as:
    - the interface on which the wireless status is detected is sometimes
      not the same as where it could be consumed (eg. the audio interface
      on a headset dongle will still appear even if the headset is turned
      off), and we cannot have synchronisation of status across subsystems.
    - this behaviour is not specific to HID devices, even if the protocols
      used to determine whether or not the remote device is connected can
      be HID.
    
    This is not an attribute that is meant to replace protocol specific
    APIs, such as the ones available for WWAN, WLAN/Wi-Fi, or Bluetooth
    or any other sort of networking, but solely for wireless devices with
    an ad-hoc “lose it and your device is e-waste” receiver dongle.
    
    The USB interface will only be exporting the wireless_status sysfs
    attribute if it gets set through the API exported in the next commit.
    Signed-off-by: default avatarBastien Nocera <hadess@hadess.net>
    Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20230302105555.51417-4-hadess@hadess.netSigned-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
    f98e0640
sysfs.c 32.5 KB