ACPI_FUJITSU(4)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1, nixpkgs unstable

πŸ’» acpi_fujitsu β€” the ACPI_FUJITSU(4) page, bestie edition πŸ’…

okay so picture this: it's ACPI_FUJITSU(4), from the Kernel Interfaces Manual, and it's literally the Fujitsu Laptop Extras driver. yes that's the whole vibe. let's get into it πŸ¦‹


✨ NAME ✨

acpi_fujitsu β€” Fujitsu Laptop Extras πŸŽ€


🌸 SYNOPSIS 🌸

so if you wanna compile this driver into the kernel (main character energy), you drop this line into your kernel configuration file:

device acpi_fujitsu

or, alternate route bestie, you can load it as a module at boot time instead β€” in which case you put this line in loader.conf(5):

acpi_fujitsu_load="YES"

πŸ’– DESCRIPTION πŸ’–

the acpi_fujitsu driver enables the ACPI-controlled buttons on Fujitsu notebooks. that's it, that's the job. ✨

the button events get sent to userspace via devd(8), and there's also a sysctl(8) interface provided so you can simulate the hardware events yourself. no cap.

using this driver you can control the brightness of the display, the volume of the speakers, and the internal (eraserhead) mouse pointer. three whole sliders of power, honestly iconic πŸ‘‘


🧚 SYSCTL VARIABLES 🧚

these sysctls are currently implemented:

  • hw.acpi.fujitsu.lcd_brightness β€” makes the LCD backlight brighter or dimmer.
  • hw.acpi.fujitsu.pointer_enable β€” enables or disables the internal mouse pointer.
  • hw.acpi.fujitsu.volume β€” controls the speaker volume.
  • hw.acpi.fujitsu.mute β€” mutes the speakers.

defaults for these sysctls can be set in sysctl.conf(5). set it and forget it, bestie πŸ’…


πŸ”₯ EXAMPLES πŸ”₯

the following can be added to devd.conf(5) in order to pass button events to a /usr/local/sbin/acpi_oem_exec.sh script:

notify 10 {
        match "system"          "ACPI";
        match "subsystem"       "FUJITSU";
        action "/usr/local/sbin/acpi_oem_exec.sh $notify fujitsu";
};

a possible /usr/local/sbin/acpi_oem_exec.sh script might look like:

#!/bin/sh
#
if [ "$1" = "" -o "$2" = "" ]
then
        echo "usage: $0 notify oem_name"
        exit 1
fi
NOTIFY=`echo $1`
LOGGER="logger"
CALC="bc"
BC_PRECOMMANDS="scale=2"
ECHO="echo"
CUT="cut"
MAX_LCD_BRIGHTNESS=7
MAX_VOLUME=16
OEM=$2
DISPLAY_PIPE=/tmp/acpi_${OEM}_display

case ${NOTIFY} in
        0x00)
                LEVEL=`sysctl -n hw.acpi.${OEM}.mute`
                if [ "$LEVEL" = "1" ]
                then
                        MESSAGE="volume muted"
                else
                        MESSAGE="volume unmuted"
                fi
                ;;
        0x01)
                LEVEL=`sysctl -n hw.acpi.${OEM}.pointer_enable`
                if [ "$LEVEL" = "1" ]
                then
                        MESSAGE="pointer enabled"
                else
                        MESSAGE="pointer disabled"
                fi
                ;;
        0x02)
                LEVEL=`sysctl -n hw.acpi.${OEM}.lcd_brightness`
                PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \
                         ${LEVEL} / ${MAX_LCD_BRIGHTNESS} * 100" |\
                         ${CALC} | ${CUT} -d . -f 1`
                MESSAGE="brightness level ${PERCENT}%"
                ;;
        0x03)
                LEVEL=`sysctl -n hw.acpi.${OEM}.volume`
                PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \
                        ${LEVEL} / ${MAX_VOLUME} * 100" | \
                         ${CALC} | ${CUT} -d . -f 1`
                MESSAGE="volume level ${PERCENT}%"
                ;;
        *)
                ;;
        esac
        ${LOGGER} ${MESSAGE}
        if [ -p ${DISPLAY_PIPE} ]
        then
                ${ECHO} ${MESSAGE} >> ${DISPLAY_PIPE} &
        fi
exit 0

like, copy it exactly bestie, those backslashes are doing real work 😭


🫢 SEE ALSO 🫢

acpi(4), sysctl.conf(5), devd(8), sysctl(8)


🌈 HISTORY 🌈

the acpi_fujitsu driver first appeared in FreeBSD 5.4. vintage. a classic. we respect the elders πŸ’œ


πŸ‘‘ AUTHORS πŸ‘‘

the acpi_fujitsu driver was written by Sean Bullington <shegget@gmail.com>, Anish Mistry <mistry.7@osu.edu>, and Marc Santcroos <marks@ripe.net>.

this manual page was written by Philip Paeps <philip@FreeBSD.org>.


that's the whole page, no notes πŸ’– and this lil drop of lore came from Debian, dated February 8, 2010 β€” on the ACPI_FUJITSU(4) page, slay πŸŽ€βœ¨

πŸ“¦ where this page comes from