Hello, t...@! Due to ACPI spec, _BST method returns the rate value in milliwats or milliamperes according to the unit reported by _BIF.
Tweak acpibat so sysctl sees the data like this: hw.sensors.acpibat0.power0=14.95 W (rate) Index: acpibat.c =================================================================== RCS file: /cvs/src/sys/dev/acpi/acpibat.c,v retrieving revision 1.58 diff -u -p -r1.58 acpibat.c --- acpibat.c 10 Nov 2010 21:40:55 -0000 1.58 +++ acpibat.c 19 Nov 2010 22:55:46 -0000 @@ -146,7 +146,8 @@ acpibat_monitor(struct acpibat_softc *sc sc->sc_sens[4].value = sc->sc_bst.bst_state; strlcpy(sc->sc_sens[5].desc, "rate", sizeof(sc->sc_sens[5].desc)); - sc->sc_sens[5].type = SENSOR_INTEGER; + sc->sc_sens[5].type = sc->sc_bif.bif_power_unit ? + SENSOR_AMPS : SENSOR_WATTS; sensor_attach(&sc->sc_sensdev, &sc->sc_sens[5]); sc->sc_sens[5].value = sc->sc_bst.bst_rate; @@ -242,7 +243,8 @@ acpibat_refresh(void *arg) sc->sc_sens[5].status = SENSOR_S_UNKNOWN; sc->sc_sens[5].flags = SENSOR_FUNKNOWN; } else { - sc->sc_sens[5].value = sc->sc_bst.bst_rate; + /* reported in milli{watts,ampers} */ + sc->sc_sens[5].value = sc->sc_bst.bst_rate * 1000; sc->sc_sens[5].status = SENSOR_S_UNSPEC; sc->sc_sens[5].flags = 0; }