How can I make upower refresh more frequently?

Basically, upower refreshes slow enough that when I plug the charger in, the battery icon doesn’t show the “charging” status at all!

I know I can make a python script that restarts upower every few seconds (e.g. 2s), but the problem is that when upower restarts, the battery icon disappears for a short moment alongside the battery percent then reappears again, which is annoying!

Does anyone have a solution?

What you seem to be saying is that only on startup does upower see the true state of your hardware. That seems like the problem to address. restarting upower is a work around it seems?

Often with laptops there is unique support code that needs to be in the linux kernel.
Maybe that support is missing or buggy?

If you share details of your hardware other may have insight into what may be wrong.

Install inxi (sudo dnf install inxi) and post the output of inxi -Fzxx here as pre-
formatted text, using the </> button.

Actually, upower sees the true state of my hardware even after startup. It just sees it extremely infrequently (When I plug in the charging cable, the icon updates after 30-90 seconds.), and restarting upower seems to often get it to check the correct state. Anyways, Here is the output of inxi:

System:
  Kernel: 6.19.10-200.fc43.x86_64 arch: x86_64 bits: 64 compiler: gcc
    v: 15.2.1
  Desktop: GNOME v: 49.5 tk: GTK v: 3.24.52 wm: gnome-shell dm: 1: GDM
    2: LightDM note: stopped 3: SDDM note: stopped Distro: Fedora Linux 43
    (Workstation Edition)
Machine:
  Type: Laptop System: Sony product: VPCEH18FA v: C105QRH5
    serial: <superuser required> Chassis: type: 10 serial: <superuser required>
  Mobo: Sony model: VAIO serial: <superuser required> Firmware: BIOS
    vendor: INSYDE v: R0180Z9 date: 04/28/2011
Battery:
  ID-1: BAT0 charge: 10.2 Wh (91.7%) condition: 11.1/45 Wh (24.7%) volts: 3.76
    min: 10.8 model: SONY Corp. VGP-BPS26 serial: <filter> charging:
    status: not charging cycles: N/A
CPU:
  Info: dual core model: Intel Core i5-2410M bits: 64 type: MT MCP
    arch: Sandy Bridge rev: 7 cache: L1: 128 KiB L2: 512 KiB L3: 3 MiB
  Speed (MHz): avg: 800 min/max: 800/2900 cores: 1: 800 2: 800 3: 800 4: 800
    bogomips: 18357
  Flags-basic: avx ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
  Device-1: NVIDIA GF119M [GeForce 410M] vendor: Sony driver: nouveau
    v: kernel arch: Fermi pcie: speed: 2.5 GT/s lanes: 16 ports: active: LVDS-1
    empty: HDMI-A-1,VGA-1 bus-ID: 01:00.0 chip-ID: 10de:1055 temp: 58.0 C
  Device-2: Microdia Sony Visual Communication Camera driver: uvcvideo
    type: USB rev: 2.0 speed: 480 Mb/s lanes: 1 bus-ID: 1-1.2:3
    chip-ID: 0c45:6436
  Display: wayland server: X.org v: 1.21.1.21 with: Xwayland v: 24.1.9
    compositor: gnome-shell driver: X: loaded: modesetting alternate: fbdev,vesa
    dri: nouveau gpu: nouveau display-ID: 0
  Monitor-1: LVDS-1 model: Chi Mei Opto 0x15a7 res: 1366x768 hz: 60 dpi: 99
    diag: 398mm (15.7")
  API: EGL v: 1.5 platforms: device: 0 drv: nouveau device: 1 drv: swrast
    gbm: drv: nouveau surfaceless: drv: nouveau wayland: drv: nouveau x11:
    drv: nouveau
  API: OpenGL v: 4.5 compat-v: 4.3 vendor: mesa v: 25.3.6 glx-v: 1.4
    direct-render: yes renderer: NVD9 device-ID: 10de:1055 display-ID: :0.0
  API: Vulkan v: 1.4.341 surfaces: N/A device: 0 type: cpu
    driver: mesa llvmpipe device-ID: 10005:0000
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor wl: wayland-info x11: xdriinfo,
    xdpyinfo, xprop, xrandr
Audio:
  Device-1: Intel 6 Series/C200 Series Family High Definition Audio
    vendor: Sony driver: snd_hda_intel v: kernel bus-ID: 00:1b.0
    chip-ID: 8086:1c20
  Device-2: NVIDIA GF119 HDMI Audio vendor: Sony driver: snd_hda_intel
    v: kernel pcie: speed: 2.5 GT/s lanes: 16 bus-ID: 01:00.1 chip-ID: 10de:0e08
  API: ALSA v: k6.19.10-200.fc43.x86_64 status: kernel-api
  Server-1: PipeWire v: 1.4.11 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin
Network:
  Device-1: Qualcomm Atheros AR9285 Wireless Network Adapter vendor: Foxconn
    driver: ath9k v: kernel pcie: speed: 2.5 GT/s lanes: 1 bus-ID: 07:00.0
    chip-ID: 168c:002b
  IF: wlp7s0 state: up mac: <filter>
  Device-2: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: Sony driver: r8169 v: kernel pcie: speed: 2.5 GT/s lanes: 1
    port: 2000 bus-ID: 13:00.0 chip-ID: 10ec:8168
  IF: enp19s0 state: down mac: <filter>
  IF-ID-1: ipv6leakintrf0 state: unknown speed: N/A duplex: N/A
    mac: <filter>
  IF-ID-2: tun0 state: unknown speed: 10000 Mbps duplex: full mac: N/A
Bluetooth:
  Device-1: Qualcomm Atheros AR3011 Bluetooth driver: btusb v: 0.8 type: USB
    rev: 1.1 speed: 12 Mb/s lanes: 1 bus-ID: 1-1.5:5 chip-ID: 0cf3:3005
  Report: btmgmt ID: hci0 rfk-id: 3 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: <filter> bt-v: 3.0 lmp-v: 5
Drives:
  Local Storage: total: 465.76 GiB used: 62.72 GiB (13.5%)
  ID-1: /dev/sda vendor: Seagate model: ST9500325AS size: 465.76 GiB
    speed: 1.5 Gb/s serial: <filter>
Partition:
  ID-1: / size: 97.93 GiB used: 62.68 GiB (64.0%) fs: ext4 dev: /dev/sda2
  ID-2: /boot/efi size: 475.7 MiB used: 38.3 MiB (8.1%) fs: vfat
    dev: /dev/sda1
Swap:
  ID-1: swap-1 type: zram size: 7.72 GiB used: 0 KiB (0.0%) priority: 100
    dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 69.0 C mobo: N/A gpu: nouveau temp: 58.0 C
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 8 GiB available: 7.72 GiB used: 2.76 GiB (35.7%)
  Processes: 315 Power: uptime: 7m wakeups: 0 Init: systemd v: 258
    default: graphical
  Packages: pm: rpm pkgs: N/A note: see --rpm pm: flatpak pkgs: 34
    Compilers: gcc: 15.2.1 Shell: Bash v: 5.3.0 running-in: ptyxis-agent
    inxi: 3.3.40

I wanna add that this command seems to always show the state (Adapter 0: on-line or off-line) correcly:

acpi -a

While this command gives the same false status as upower (e.g. Battery: Not charging):

acpi -b

watch -n 5 acpi -a

This command gives the correct state of the battery charger being plugged in

I wanna also clarify that what I want is for the UI itself to show the correct status.

Maybe @madmaxmadmax was thinking that the BIOS was not updating the status via ACPI frequently? If the ACPI calls are lagging then the UI will.

I see. Well, I don’t think so because:
1- I tested the command and it updates frequently.

2- I don’t have this problem on windows 10 on the same laptop.