{"record":{"id":"a98ba27c8053f0ae","repo":"JanDeDobbeleer/oh-my-posh","slug":"unknown-value-received","errorCode":null,"errorMessage":"unknown value received","messagePattern":"unknown value received","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/runtime/battery/battery_windows.go","lineNumber":75,"sourceCode":"var getSystemPowerStatus = kernel32.NewProc(\"GetSystemPowerStatus\")\n\nfunc systemGetAll() ([]*battery, error) {\n\tvar sps systemPowerStatus\n\n\tr1, _, errno := syscall.SyscallN(getSystemPowerStatus.Addr(), uintptr(unsafe.Pointer(&sps)))\n\tif r1 == 0 {\n\t\tif errno != 0 {\n\t\t\treturn nil, error(errno)\n\t\t}\n\t\treturn nil, syscall.EINVAL\n\t}\n\n\tif sps.BatteryFlag&batteryFlagNoBattery != 0 || sps.BatteryFlag == batteryFlagUnknown {\n\t\treturn nil, &NoBatteryError{}\n\t}\n\n\tif sps.BatteryLifePercent == batteryLifePercentUnknown {\n\t\treturn nil, errors.New(\"unknown value received\")\n\t}\n\n\tb := &battery{Full: 100, Current: float64(min(sps.BatteryLifePercent, 100))}\n\n\tswitch {\n\tcase sps.BatteryFlag&batteryFlagCharging != 0:\n\t\tb.State = Charging\n\tcase sps.BatteryLifePercent == 100 && sps.ACLineStatus == acLineOnline:\n\t\tb.State = Full\n\tcase sps.ACLineStatus == acLineOnline:\n\t\tb.State = NotCharging\n\tcase sps.BatteryFlag&batteryFlagCritical != 0:\n\t\tb.State = Empty\n\tdefault:\n\t\tb.State = Discharging\n\t}\n\n\treturn []*battery{b}, nil","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/JanDeDobbeleer/oh-my-posh/blob/0976794618c5ed95de0985dded50de1b4dc914cb/src/runtime/battery/battery_windows.go#L57-L93","documentation":"On Windows, systemGetAll calls Win32 GetSystemPowerStatus. When BatteryLifePercent is 0xFF (255) the OS is saying the percentage is unknown (e.g. no battery or transient state), so the library errors with 'unknown value received'.","triggerScenarios":"battery.Get()/systemGetAll on Windows when SYSTEM_POWER_STATUS.BatteryLifePercent == 255 (batteryFlag passed the no-battery checks but percent is still unknown).","commonSituations":"Desktops/VMs with a marginal battery detection race; UPS devices where Windows reports unknown percent; some laptops right after resume or with failing battery firmware; Hyper-V guests.","solutions":["Confirm a real battery exists (powercfg /batteryreport or Get-WmiObject Win32_Battery); if none, expect NoBatteryError instead","Retry after a moment - the value can be transiently unknown after resume/suspend","Update BIOS/battery drivers so Windows can report the percentage","Handle the error gracefully and hide the battery segment"],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"$sps = [System.Windows.Forms.SystemInformation]::PowerStatus\nif ($sps.BatteryLifePercent -eq 255) { 'percentage unknown - segment will error' }","typeGuard":null,"tryCatchPattern":"bat, err := battery.Get()\nif err != nil {\n  log.Printf(\"battery percentage unknown: %v\", err)\n  return nil // hide battery segment\n}","preventionTips":["Check Win32_Battery / powercfg /batteryreport to confirm a real battery exists","Retry after resume - BatteryLifePercent can be transiently 0xFF","Update BIOS/battery drivers when percent stays unknown"],"tags":["windows","battery","win32","unknown-value"],"backgroundTag":"battery-percent-unknown","analyzedSha":"0976794618c5ed95de0985dded50de1b4dc914cb","analyzedAt":"2026-08-31T23:41:19.708Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}