* Support for Logitech g703 mouse battery levels @ 2020-11-26 15:57 Max Illis 2020-11-26 16:43 ` Bastien Nocera 0 siblings, 1 reply; 8+ messages in thread From: Max Illis @ 2020-11-26 15:57 UTC (permalink / raw) To: linux-input I raised a ticket on upower, but have been pointed here (https://gitlab.freedesktop.org/upower/upower/-/issues/125) _Some_ info is reported: ``` /sys/class/power_supply/hidpp_battery_1$ ls device manufacturer online powers serial_number subsystem uevent wakeup27 hwmon3 model_name power scope status type voltage_now ``` But nothing is reported by upower apparently due to `capacity` or `capacity_level` missing I'm running Ubuntu 20.10 Linux 5.8.0-29-generic LMK if more info is needed Max max@illis.uk 07803 009 004 max@illis.uk 07803 009 004 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Support for Logitech g703 mouse battery levels 2020-11-26 15:57 Support for Logitech g703 mouse battery levels Max Illis @ 2020-11-26 16:43 ` Bastien Nocera 2020-11-26 18:40 ` Filipe Laíns 0 siblings, 1 reply; 8+ messages in thread From: Bastien Nocera @ 2020-11-26 16:43 UTC (permalink / raw) To: Max Illis, linux-input On Thu, 2020-11-26 at 15:57 +0000, Max Illis wrote: > I raised a ticket on upower, but have been pointed here > (https://gitlab.freedesktop.org/upower/upower/-/issues/125) > > _Some_ info is reported: > > ``` > /sys/class/power_supply/hidpp_battery_1$ ls > device manufacturer online powers serial_number subsystem > uevent > wakeup27 > hwmon3 model_name power scope status type > voltage_now > ``` > But nothing is reported by upower apparently due to `capacity` or > `capacity_level` missing The voltage is output, but it's not interpreted, so it's impossible to know what XX volts corresponds to as a battery level. Hans, Benjamin, any ideas how this could be better handled? Are we going to need voltage <-> capacity mapping? Cheers > > I'm running Ubuntu 20.10 Linux 5.8.0-29-generic > > LMK if more info is needed > Max > > max@illis.uk > 07803 009 004 > > max@illis.uk > 07803 009 004 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Support for Logitech g703 mouse battery levels 2020-11-26 16:43 ` Bastien Nocera @ 2020-11-26 18:40 ` Filipe Laíns 2020-11-26 18:46 ` Bastien Nocera 0 siblings, 1 reply; 8+ messages in thread From: Filipe Laíns @ 2020-11-26 18:40 UTC (permalink / raw) To: Bastien Nocera, Max Illis, linux-input [-- Attachment #1: Type: text/plain, Size: 1579 bytes --] On Thu, 2020-11-26 at 17:43 +0100, Bastien Nocera wrote: > On Thu, 2020-11-26 at 15:57 +0000, Max Illis wrote: > > I raised a ticket on upower, but have been pointed here > > (https://gitlab.freedesktop.org/upower/upower/-/issues/125) > > > > _Some_ info is reported: > > > > ``` > > /sys/class/power_supply/hidpp_battery_1$ ls > > device manufacturer online powers serial_number subsystem > > uevent > > wakeup27 > > hwmon3 model_name power scope status type > > voltage_now > > ``` > > But nothing is reported by upower apparently due to `capacity` or > > `capacity_level` missing > > > The voltage is output, but it's not interpreted, so it's impossible to > know what XX volts corresponds to as a battery level. > > Hans, Benjamin, any ideas how this could be better handled? Are we > going to need voltage <-> capacity mapping? > > Cheers > > > > > I'm running Ubuntu 20.10 Linux 5.8.0-29-generic > > > > LMK if more info is needed > > Max > > > > max@illis.uk > > 07803 009 004 > > > > max@illis.uk > > 07803 009 004 > > Relevant UPower issue: https://gitlab.freedesktop.org/upower/upower/-/issues/110 Logitech gave us permission to use the battery curve in OSS software, I can get it from them. The issue is where to put it. I am not sure Benjamin would be happy with embedding it in the kernel driver. I think knowing that was been the blocking factor, although I did not do a good job trying to following it up. Cheers, Filipe Laíns [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Support for Logitech g703 mouse battery levels 2020-11-26 18:40 ` Filipe Laíns @ 2020-11-26 18:46 ` Bastien Nocera 2020-11-26 19:10 ` Filipe Laíns 0 siblings, 1 reply; 8+ messages in thread From: Bastien Nocera @ 2020-11-26 18:46 UTC (permalink / raw) To: Filipe Laíns, Max Illis, linux-input On Thu, 2020-11-26 at 18:40 +0000, Filipe Laíns wrote: > On Thu, 2020-11-26 at 17:43 +0100, Bastien Nocera wrote: > > On Thu, 2020-11-26 at 15:57 +0000, Max Illis wrote: > > > I raised a ticket on upower, but have been pointed here > > > (https://gitlab.freedesktop.org/upower/upower/-/issues/125) > > > > > > _Some_ info is reported: > > > > > > ``` > > > /sys/class/power_supply/hidpp_battery_1$ ls > > > device manufacturer online powers serial_number subsystem > > > uevent > > > wakeup27 > > > hwmon3 model_name power scope status type > > > voltage_now > > > ``` > > > But nothing is reported by upower apparently due to `capacity` or > > > `capacity_level` missing > > > > > > The voltage is output, but it's not interpreted, so it's impossible > > to > > know what XX volts corresponds to as a battery level. > > > > Hans, Benjamin, any ideas how this could be better handled? Are we > > going to need voltage <-> capacity mapping? > > > > Cheers > > > > > > > > I'm running Ubuntu 20.10 Linux 5.8.0-29-generic > > > > > > LMK if more info is needed > > > Max > > > > > > max@illis.uk > > > 07803 009 004 > > > > > > max@illis.uk > > > 07803 009 004 > > > > > > Relevant UPower issue: > https://gitlab.freedesktop.org/upower/upower/-/issues/110 > > Logitech gave us permission to use the battery curve in OSS software, > I can get > it from them. But where's that "battery curve"? If we need to put it somewhere, it would be incredibly useful to actually know what it looks like. (And it looks like it's what I asked 9 months ago as well :/ https://gitlab.freedesktop.org/upower/upower/-/issues/110#note_411028 ) > > The issue is where to put it. I am not sure Benjamin would be happy > with > embedding it in the kernel driver. I think knowing that was been the > blocking > factor, although I did not do a good job trying to following it up. > > Cheers, > Filipe Laíns ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Support for Logitech g703 mouse battery levels 2020-11-26 18:46 ` Bastien Nocera @ 2020-11-26 19:10 ` Filipe Laíns 2020-11-26 21:50 ` Bastien Nocera 2020-11-27 10:42 ` Bastien Nocera 0 siblings, 2 replies; 8+ messages in thread From: Filipe Laíns @ 2020-11-26 19:10 UTC (permalink / raw) To: Bastien Nocera, Max Illis, linux-input [-- Attachment #1: Type: text/plain, Size: 2150 bytes --] On Thu, 2020-11-26 at 19:46 +0100, Bastien Nocera wrote: > On Thu, 2020-11-26 at 18:40 +0000, Filipe Laíns wrote: > > On Thu, 2020-11-26 at 17:43 +0100, Bastien Nocera wrote: > > > On Thu, 2020-11-26 at 15:57 +0000, Max Illis wrote: > > > > I raised a ticket on upower, but have been pointed here > > > > (https://gitlab.freedesktop.org/upower/upower/-/issues/125) > > > > > > > > _Some_ info is reported: > > > > > > > > ``` > > > > /sys/class/power_supply/hidpp_battery_1$ ls > > > > device manufacturer online powers serial_number subsystem > > > > uevent > > > > wakeup27 > > > > hwmon3 model_name power scope status type > > > > voltage_now > > > > ``` > > > > But nothing is reported by upower apparently due to `capacity` or > > > > `capacity_level` missing > > > > > > > > > The voltage is output, but it's not interpreted, so it's impossible > > > to > > > know what XX volts corresponds to as a battery level. > > > > > > Hans, Benjamin, any ideas how this could be better handled? Are we > > > going to need voltage <-> capacity mapping? > > > > > > Cheers > > > > > > > > > > > I'm running Ubuntu 20.10 Linux 5.8.0-29-generic > > > > > > > > LMK if more info is needed > > > > Max > > > > > > > > max@illis.uk > > > > 07803 009 004 > > > > > > > > max@illis.uk > > > > 07803 009 004 > > > > > > > > > > Relevant UPower issue: > > https://gitlab.freedesktop.org/upower/upower/-/issues/110 > > > > Logitech gave us permission to use the battery curve in OSS software, > > I can get > > it from them. > > But where's that "battery curve"? If we need to put it somewhere, it > would be incredibly useful to actually know what it looks like. > > (And it looks like it's what I asked 9 months ago as well :/ > https://gitlab.freedesktop.org/upower/upower/-/issues/110#note_411028 > ) > I did not have it at the time, Logitech has since made it public. I went looking for the link :) https://drive.google.com/file/d/1F_fuqL0-TbZ77u0suXRcj3YcDidCcN1M/view?usp=sharing Cheers, Filipe Laíns [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Support for Logitech g703 mouse battery levels 2020-11-26 19:10 ` Filipe Laíns @ 2020-11-26 21:50 ` Bastien Nocera 2020-11-27 10:41 ` Bastien Nocera 2020-11-27 10:42 ` Bastien Nocera 1 sibling, 1 reply; 8+ messages in thread From: Bastien Nocera @ 2020-11-26 21:50 UTC (permalink / raw) To: Filipe Laíns, Max Illis, linux-input On Thu, 2020-11-26 at 19:10 +0000, Filipe Laíns wrote: > <snip> > I did not have it at the time, Logitech has since made it public. > > I went looking for the link :) > https://drive.google.com/file/d/1F_fuqL0-TbZ77u0suXRcj3YcDidCcN1M/view?usp=sharing Looks small enough to put in the kernel to be fair. The hid++ source is already 4k long, what's 100 more lines ;) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Support for Logitech g703 mouse battery levels 2020-11-26 21:50 ` Bastien Nocera @ 2020-11-27 10:41 ` Bastien Nocera 0 siblings, 0 replies; 8+ messages in thread From: Bastien Nocera @ 2020-11-27 10:41 UTC (permalink / raw) To: Filipe Laíns, Max Illis, linux-input [-- Attachment #1: Type: text/plain, Size: 800 bytes --] On Thu, 2020-11-26 at 22:50 +0100, Bastien Nocera wrote: > On Thu, 2020-11-26 at 19:10 +0000, Filipe Laíns wrote: > > <snip> > > I did not have it at the time, Logitech has since made it public. > > > > I went looking for the link :) > > https://drive.google.com/file/d/1F_fuqL0-TbZ77u0suXRcj3YcDidCcN1M/view?usp=sharing > > Looks small enough to put in the kernel to be fair. The hid++ source > is > already 4k long, what's 100 more lines ;) > Patch that's not even compile-tested attached. We probably need more device IDs, although it might be possible to always do that conversion when the battery voltage is known but not the battery level? I'd need comments to finish this off if I'm on the right path, although I'd be happy to leave it to someone with the hardware to finish up. Cheers [-- Attachment #2: 0001-WIP-HID-logitech-hidpp-Map-voltage-to-capacity.patch --] [-- Type: text/x-patch, Size: 8469 bytes --] From 103e759f90a8f67bcd61d0fed4f098d841520810 Mon Sep 17 00:00:00 2001 From: Bastien Nocera <hadess@hadess.net> Date: Fri, 27 Nov 2020 11:35:41 +0100 Subject: [PATCH] WIP: HID: logitech-hidpp: Map voltage to capacity For devices in the G Pro Wireless range that usually sport a 240 mAh battery, convert the battery voltage to a capacity. --- drivers/hid/hid-logitech-hidpp.c | 161 ++++++++++++++++++++++++++++--- 1 file changed, 149 insertions(+), 12 deletions(-) diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c index b8b53dc95e86..222c8d70b3ca 100644 --- a/drivers/hid/hid-logitech-hidpp.c +++ b/drivers/hid/hid-logitech-hidpp.c @@ -75,6 +75,7 @@ MODULE_PARM_DESC(disable_tap_to_click, #define HIDPP_QUIRK_HIDPP_WHEELS BIT(29) #define HIDPP_QUIRK_HIDPP_EXTRA_MOUSE_BTNS BIT(30) #define HIDPP_QUIRK_HIDPP_CONSUMER_VENDOR_KEYS BIT(31) +#define HIDPP_QUIRK_BATTERY_LEVEL_FROM_VOLTAGE BIT(32) /* These are just aliases for now */ #define HIDPP_QUIRK_KBD_SCROLL_WHEEL HIDPP_QUIRK_HIDPP_WHEELS @@ -1251,8 +1252,116 @@ static int hidpp20_battery_event(struct hidpp_device *hidpp, #define EVENT_BATTERY_VOLTAGE_STATUS_BROADCAST 0x00 +static struct { + int mv_voltage; + int capacity; +} battery_to_capacity[] = { + { 4186, 100 }, + { 4156, 99 }, + { 4143, 98 }, + { 4133, 97 }, + { 4122, 96 }, + { 4113, 95 }, + { 4103, 94 }, + { 4094, 93 }, + { 4086, 92 }, + { 4076, 91 }, + { 4067, 90 }, + { 4060, 89 }, + { 4051, 88 }, + { 4043, 87 }, + { 4036, 86 }, + { 4027, 85 }, + { 4019, 84 }, + { 4012, 83 }, + { 4004, 82 }, + { 3997, 81 }, + { 3989, 80 }, + { 3983, 79 }, + { 3976, 78 }, + { 3969, 77 }, + { 3961, 76 }, + { 3955, 75 }, + { 3949, 74 }, + { 3942, 73 }, + { 3935, 72 }, + { 3929, 71 }, + { 3922, 70 }, + { 3916, 69 }, + { 3909, 68 }, + { 3902, 67 }, + { 3896, 66 }, + { 3890, 65 }, + { 3883, 64 }, + { 3877, 63 }, + { 3870, 62 }, + { 3865, 61 }, + { 3859, 60 }, + { 3853, 59 }, + { 3848, 58 }, + { 3842, 57 }, + { 3837, 56 }, + { 3833, 55 }, + { 3828, 54 }, + { 3824, 53 }, + { 3819, 52 }, + { 3815, 51 }, + { 3811, 50 }, + { 3808, 49 }, + { 3804, 48 }, + { 3800, 47 }, + { 3797, 46 }, + { 3793, 45 }, + { 3790, 44 }, + { 3787, 43 }, + { 3784, 42 }, + { 3781, 41 }, + { 3778, 40 }, + { 3775, 39 }, + { 3772, 38 }, + { 3770, 37 }, + { 3767, 36 }, + { 3764, 35 }, + { 3762, 34 }, + { 3759, 33 }, + { 3757, 32 }, + { 3754, 31 }, + { 3751, 30 }, + { 3748, 29 }, + { 3744, 28 }, + { 3741, 27 }, + { 3737, 26 }, + { 3734, 25 }, + { 3730, 24 }, + { 3726, 23 }, + { 3724, 22 }, + { 3720, 21 }, + { 3717, 20 }, + { 3714, 19 }, + { 3710, 18 }, + { 3706, 17 }, + { 3702, 16 }, + { 3697, 15 }, + { 3693, 14 }, + { 3688, 13 }, + { 3683, 12 }, + { 3677, 11 }, + { 3671, 10 }, + { 3666, 9 }, + { 3662, 8 }, + { 3658, 7 }, + { 3654, 6 }, + { 3646, 5 }, + { 3633, 4 }, + { 3612, 3 }, + { 3579, 2 }, + { 3537, 1 }, + { 3500, 0 } +}; + static int hidpp20_battery_map_status_voltage(u8 data[3], int *voltage, - int *level, int *charge_type) + int *level, int *charge_type, + int *capacity) { int status; @@ -1290,13 +1399,28 @@ static int hidpp20_battery_map_status_voltage(u8 data[3], int *voltage, *voltage = get_unaligned_be16(data); + if (hidd->quirks & HIDPP_QUIRK_BATTERY_LEVEL_FROM_VOLTAGE) { + int i; + for (i = 0; i < ARRAY_SIZE(battery_to_capacity); i++) { + if (*voltage < battery_to_capacity[i].mv_voltage) + continue; + if (*voltage == battery_to_capacity[i].mv_voltage || + i == 0) + *capacity = battery_to_capacity[i].capacity; + else + *capacity = battery_to_capacity[i - 1].capacity; + break; + } + } + return status; } static int hidpp20_battery_get_battery_voltage(struct hidpp_device *hidpp, u8 feature_index, int *status, int *voltage, - int *level, int *charge_type) + int *level, int *charge_type, + int *capacity) { struct hidpp_report response; int ret; @@ -1317,7 +1441,8 @@ static int hidpp20_battery_get_battery_voltage(struct hidpp_device *hidpp, hidpp->capabilities |= HIDPP_CAPABILITY_BATTERY_VOLTAGE; *status = hidpp20_battery_map_status_voltage(params, voltage, - level, charge_type); + level, charge_type, + capacity); return 0; } @@ -1326,7 +1451,7 @@ static int hidpp20_query_battery_voltage_info(struct hidpp_device *hidpp) { u8 feature_type; int ret; - int status, voltage, level, charge_type; + int status, voltage, level, charge_type, capacity; if (hidpp->battery.voltage_feature_index == 0xff) { ret = hidpp_root_get_feature(hidpp, HIDPP_PAGE_BATTERY_VOLTAGE, @@ -1338,14 +1463,18 @@ static int hidpp20_query_battery_voltage_info(struct hidpp_device *hidpp) ret = hidpp20_battery_get_battery_voltage(hidpp, hidpp->battery.voltage_feature_index, - &status, &voltage, &level, &charge_type); + &status, &voltage, &level, &charge_type, + &capacity); if (ret) return ret; hidpp->battery.status = status; hidpp->battery.voltage = voltage; - hidpp->battery.level = level; + if (hidd->quirks & HIDPP_QUIRK_BATTERY_LEVEL_FROM_VOLTAGE) + hidpp->batter.capacity = capacity; + else + hidpp->battery.level = level; hidpp->battery.charge_type = charge_type; hidpp->battery.online = status != POWER_SUPPLY_STATUS_NOT_CHARGING; @@ -1356,21 +1485,24 @@ static int hidpp20_battery_voltage_event(struct hidpp_device *hidpp, u8 *data, int size) { struct hidpp_report *report = (struct hidpp_report *)data; - int status, voltage, level, charge_type; + int status, voltage, level, charge_type, capacity; if (report->fap.feature_index != hidpp->battery.voltage_feature_index || report->fap.funcindex_clientid != EVENT_BATTERY_VOLTAGE_STATUS_BROADCAST) return 0; status = hidpp20_battery_map_status_voltage(report->fap.params, &voltage, - &level, &charge_type); + &level, &charge_type, &capacity); hidpp->battery.online = status != POWER_SUPPLY_STATUS_NOT_CHARGING; if (voltage != hidpp->battery.voltage || status != hidpp->battery.status) { hidpp->battery.voltage = voltage; hidpp->battery.status = status; - hidpp->battery.level = level; + if (hidd->quirks & HIDPP_QUIRK_BATTERY_LEVEL_FROM_VOLTAGE) + hidpp->battery.capacity = capacity; + else + hidpp->battery.level = level; hidpp->battery.charge_type = charge_type; if (hidpp->battery.ps) power_supply_changed(hidpp->battery.ps); @@ -3448,7 +3580,8 @@ static int hidpp_initialize_battery(struct hidpp_device *hidpp) num_battery_props = ARRAY_SIZE(hidpp_battery_props) - 3; - if (hidpp->capabilities & HIDPP_CAPABILITY_BATTERY_MILEAGE) + if (hidpp->capabilities & HIDPP_CAPABILITY_BATTERY_MILEAGE || + hidpp->quirks & HIDPP_QUIRK_BATTERY_LEVEL_FROM_VOLTAGE) battery_props[num_battery_props++] = POWER_SUPPLY_PROP_CAPACITY; @@ -3955,6 +4088,8 @@ static const struct hid_device_id hidpp_devices[] = { { /* Mouse Logitech MX Master */ LDJ_DEVICE(0x4041), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { LDJ_DEVICE(0x4060), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, + { /* Logitech G703 */ + LDJ_DEVICE(0x4070), .driver_data = HIDPP_QUIRK_BATTERY_LEVEL_FROM_VOLTAGE }, { LDJ_DEVICE(0x4071), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { /* Mouse Logitech MX Master 2S */ LDJ_DEVICE(0x4069), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, @@ -3997,7 +4132,8 @@ static const struct hid_device_id hidpp_devices[] = { { /* Logitech G703 Gaming Mouse over USB */ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC087) }, { /* Logitech G703 Hero Gaming Mouse over USB */ - HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC090) }, + HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC090), + .driver_data = HIDPP_QUIRK_BATTERY_LEVEL_FROM_VOLTAGE}, { /* Logitech G900 Gaming Mouse over USB */ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC081) }, { /* Logitech G903 Gaming Mouse over USB */ @@ -4008,7 +4144,8 @@ static const struct hid_device_id hidpp_devices[] = { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G920_WHEEL), .driver_data = HIDPP_QUIRK_CLASS_G920 | HIDPP_QUIRK_FORCE_OUTPUT_REPORTS}, { /* Logitech G Pro Gaming Mouse over USB */ - HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC088) }, + HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, 0xC088), + .driver_data = HIDPP_QUIRK_BATTERY_LEVEL_FROM_VOLTAGE}, { /* MX5000 keyboard over Bluetooth */ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb305), -- 2.28.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Support for Logitech g703 mouse battery levels 2020-11-26 19:10 ` Filipe Laíns 2020-11-26 21:50 ` Bastien Nocera @ 2020-11-27 10:42 ` Bastien Nocera 1 sibling, 0 replies; 8+ messages in thread From: Bastien Nocera @ 2020-11-27 10:42 UTC (permalink / raw) To: Filipe Laíns, Max Illis, linux-input [-- Attachment #1: Type: text/plain, Size: 229 bytes --] On Thu, 2020-11-26 at 19:10 +0000, Filipe Laíns wrote: > <snip> > O went looking for the link :) > https://drive.google.com/file/d/1F_fuqL0-TbZ77u0suXRcj3YcDidCcN1M/view?usp=sharing Contents of the link so it doesn't get lost. [-- Attachment #2: 240 mAh battery - soc conversion table.txt --] [-- Type: text/plain, Size: 1850 bytes --] Discharge conversion table for G Pro Wireless 240 mAh battery Valid for products using the original G Pro Wireless battery (G Pro Wireless, G502 LightSpeed, G703 LightSpeed) Values may vary between products and various parameters, like battery aging and temperature. Vbatt SoC [V] [%] 4.186 100% 4.156 99% 4.143 98% 4.133 97% 4.122 96% 4.113 95% 4.103 94% 4.094 93% 4.086 92% 4.076 91% 4.067 90% 4.06 89% 4.051 88% 4.043 87% 4.036 86% 4.027 85% 4.019 84% 4.012 83% 4.004 82% 3.997 81% 3.989 80% 3.983 79% 3.976 78% 3.969 77% 3.961 76% 3.955 75% 3.949 74% 3.942 73% 3.935 72% 3.929 71% 3.922 70% 3.916 69% 3.909 68% 3.902 67% 3.896 66% 3.89 65% 3.883 64% 3.877 63% 3.87 62% 3.865 61% 3.859 60% 3.853 59% 3.848 58% 3.842 57% 3.837 56% 3.833 55% 3.828 54% 3.824 53% 3.819 52% 3.815 51% 3.811 50% 3.808 49% 3.804 48% 3.8 47% 3.797 46% 3.793 45% 3.79 44% 3.787 43% 3.784 42% 3.781 41% 3.778 40% 3.775 39% 3.772 38% 3.77 37% 3.767 36% 3.764 35% 3.762 34% 3.759 33% 3.757 32% 3.754 31% 3.751 30% 3.748 29% 3.744 28% 3.741 27% 3.737 26% 3.734 25% 3.73 24% 3.726 23% 3.724 22% 3.72 21% 3.717 20% 3.714 19% 3.71 18% 3.706 17% 3.702 16% 3.697 15% 3.693 14% 3.688 13% 3.683 12% 3.677 11% 3.671 10% 3.666 9% 3.662 8% 3.658 7% 3.654 6% 3.646 5% 3.633 4% 3.612 3% 3.579 2% 3.537 1% 3.5 0% ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-11-27 10:42 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-11-26 15:57 Support for Logitech g703 mouse battery levels Max Illis 2020-11-26 16:43 ` Bastien Nocera 2020-11-26 18:40 ` Filipe Laíns 2020-11-26 18:46 ` Bastien Nocera 2020-11-26 19:10 ` Filipe Laíns 2020-11-26 21:50 ` Bastien Nocera 2020-11-27 10:41 ` Bastien Nocera 2020-11-27 10:42 ` Bastien Nocera
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).