Re: Unplugging USB-C charger cable causes `ucsi_acpi USBC000:00: ucsi_handle_connector_change: ACK failed (-110)`

From: Heikki Krogerus
Date: Wed Nov 22 2023 - 13:39:44 EST


On Tue, Nov 21, 2023 at 03:25:59PM +0100, Paul Menzel wrote:
> Dear Heikki,
>
>
> Thank you for your prompt reply.
>
> Am 21.11.23 um 15:08 schrieb Heikki Krogerus:
> > On Tue, Nov 21, 2023 at 12:50:43PM +0100, Paul Menzel wrote:
>
> > > On the Dell XPS 13, BIOS 2.21.0 06/02/2022, with Debian sid/unstable and
> > > Linux 6.5.10, when unplugging the (Dell) USB Type-C charger cable, Linux
> > > logs the error below:
> > >
> > > ucsi_acpi USBC000:00: ucsi_handle_connector_change: ACK failed (-110)
> > >
> > > As this is logged with level error, can this be somehow fixed?
> > >
> > > drivers/usb/typec/ucsi/ucsi.c: dev_err(ucsi->dev, "%s: ACK failed (%d)", __func__, ret);
> > >
> > > Please find the output of `dmesg` attached.
> >
> > Thanks. The firmware not reacting to the ACK command is weird, but I'm
> > not sure if it's critical. Does the interface continue working after
> > that? Do you see the partner devices appearing under /sys/class/typec/
> > when you plug them, and disappearing when you unplug them?
>
> ```
> $ LANG= grep .
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000\:001/*
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/current_max:0
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/current_now:0
> grep: /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/device:
> Is a directory
> grep: /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/hwmon7:
> Is a directory
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/online:0
> grep:
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/power:
> Is a directory
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/scope:System
> grep: /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/subsystem:
> Is a directory
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/type:USB
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_NAME=ucsi-source-psy-USBC000:001
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_TYPE=USB
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_USB_TYPE=[C]
> PD PD_PPS
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_ONLINE=0
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_VOLTAGE_MIN=5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_VOLTAGE_MAX=5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_VOLTAGE_NOW=5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_CURRENT_MAX=0
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_CURRENT_NOW=0
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_SCOPE=System
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/usb_type:[C]
> PD PD_PPS
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/voltage_max:5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/voltage_min:5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/voltage_now:5000000
> grep: /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/wakeup49:
> Is a directory
> ```
>
> Now I unplugged the device, and the error is *not* logged. (I had a USB
> Type-C port replicator plugged in during the day before.)
>
> The directory is still there:
>
> ```
> $ LANG= grep .
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000\:001/*
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/current_max:0
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/current_now:0
> grep: /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/device:
> Is a directory
> grep: /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/hwmon7:
> Is a directory
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/online:0
> grep:
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/power:
> Is a directory
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/scope:System
> grep: /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/subsystem:
> Is a directory
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/type:USB
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_NAME=ucsi-source-psy-USBC000:001
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_TYPE=USB
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_USB_TYPE=[C]
> PD PD_PPS
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_ONLINE=0
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_VOLTAGE_MIN=5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_VOLTAGE_MAX=5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_VOLTAGE_NOW=5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_CURRENT_MAX=0
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_CURRENT_NOW=0
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/uevent:POWER_SUPPLY_SCOPE=System
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/usb_type:[C]
> PD PD_PPS
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/voltage_max:5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/voltage_min:5000000
> /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/voltage_now:5000000
> grep: /sys/class/typec/port0/device/power_supply/ucsi-source-psy-USBC000:001/wakeup49:
> Is a directory
> ```
>
> I guess, that is the wrong directory I look at though?
>
> (I am going to monitor the logs over the next days.)

Just list what you have in /sys/class/typec/ before and after plugging
a device to the port:

ls /sys/class/typec/

thanks,

--
heikki