Hi! On Sat, Oct 29, 2022 at 04:55:21PM +0300, Mia Kanashi wrote: > >>[1] Actually it should be set to discharging until this gets merged: > >> https://lore.kernel.org/linux-input/20221028181849.23157-1-jose.exposito89@xxxxxxxxx/T/ > > > >But i also currently applied this ^ patch, i will try testing without it and then report. > > Tested without it, same issue. > So yeah it seems that hid-input driver can set supply status to discharging before setting a battery capacity? Very good catch. I managed to reproduce it using the USB dongle. I didn't notice it before because I was running upower after connecting the device, which isn't fast enough. However, using watch as you suggested makes the issue pretty noticeable. The problem is that the battery is fetched when the USB dongle is connected. However, the tablet might not be paired at that point. To explain it with the actual code: if (dev->battery_status != HID_BATTERY_REPORTED && !dev->battery_avoid_query) { value = hidinput_query_battery_capacity(dev); ^ Here the battery is fetched, but because the tabled is not paired and this function returns garbage if (value < 0) return value; dev->battery_capacity = value; dev->battery_status = HID_BATTERY_QUERIED; ^ Now the battery is set as queried } if (dev->battery_status == HID_BATTERY_UNKNOWN) val->intval = POWER_SUPPLY_STATUS_UNKNOWN; else val->intval = POWER_SUPPLY_STATUS_DISCHARGING; ^ And therefore the battery is reported Thankfully, there is already a flag (battery_avoid_query) used to solve the same issue on stylus. The battery percentage is unknown until the stylus is in proximity. So I guess I could use the same flag to avoid this problem. I'll add a fix in a second revision of this patch. Thanks!!