Date: Sat, 29 Mar 2008 09:37:25 -0400 From: Dan Langille <dan@langille.org> To: Alberto Rizzi <greenant@fastmail.fm>, freebsd-mobile@freebsd.org Subject: Re: ThinkPad X61s functions keys Message-ID: <47EE4615.5060409@langille.org> In-Reply-To: <47ED5BF7.2000109@fastmail.fm> References: <DC131D35-4F6A-4CC5-8220-AF29A06B54E5@langille.org> <47ED5BF7.2000109@fastmail.fm>
next in thread | previous in thread | raw e-mail | index | archive | help
Alberto Rizzi wrote: > Dan Langille ha scritto: >> Hi, >> >> Running FreeBSD 7.0-RELEASE on a ThinkPad X61s. >> >> Some keys do not work: >> >> - volume adjustment >> - screen brightness (FN HOME, FN END) >> >> The keyboard light does work (FN-PgUp) as does >> Numeric Lock (FN ScrLk). >> >> What can I do to help diagnose the issue so we can get these >> functions working? >> > Have the same problem with a Thinkpad T61 > If you read man acpi_ibm there is a partial solution > > You have to load acpi_ibm at boot. Add > acpi_ibm_load="YES" > to /boot/loader.conf $ kldstat Id Refs Address Size Name 1 10 0xffffffff80100000 ac6c08 kernel 2 1 0xffffffff80bc7000 1a670 snd_hda.ko 3 2 0xffffffff80be2000 673b8 sound.ko 4 1 0xffffffff80c4a000 53d0 acpi_ibm.ko 5 1 0xffffffffb1694000 4b61 i915.ko 6 1 0xffffffffb1699000 d5d8 drm.ko > Then activate event passing to devd. Add > dev.acpi_ibm.0.events=1 > to /etc/sysctl.conf $ sysctl dev.acpi_ibm.0.events dev.acpi_ibm.0.events: 1 > > Then tell devd that you want to get events. Add > notify 10 { > match "system" "ACPI"; > match "subsystem" "IBM"; > action "/usr/local/sbin/acpi_oem_exec.sh $notify ibm"; It seems that this script is never invoked. > } > > to /etc/devd.conf > > Now you have to create that script > ---------- > #!/bin/sh > NOTIFY=`echo $1` > ECHO="echo" > CALC="bc" > > case ${NOTIFY} in > 0x10) > LEVEL=`sysctl -n dev.acpi_ibm.0.lcd_brightness` > PERCENT=`${ECHO} "${LEVEL} + 1" | ${CALC}` > MESSAGE="brightness level ${PERCENT}" > sysctl dev.acpi_ibm.0.lcd_brightness=${PERCENT} > ;; > 0x11) > LEVEL=`sysctl -n dev.acpi_ibm.0.lcd_brightness` > PERCENT=`${ECHO} "${LEVEL} - 1" | ${CALC}` > MESSAGE="brightness level ${PERCENT}" > sysctl dev.acpi_ibm.0.lcd_brightness=${PERCENT} > ;; > *) > ;; > esac > echo `date` >> /tmp/prova > ${ECHO} ${LEVEL} ${NOTIFY} ${MESSAGE} >> /tmp/prova > exit 0 > > ------- > If you leave the last two debug line, with a tail -f /tmp/prova you can > check the events sent to devd. Nothing hits /tmp/prova I ran this loop while pressing keys: while true; do clear; sysctl dev.acpi_ibm.0; date; sleep 1; done dev.acpi_ibm.0.%desc: IBM ThinkPad ACPI Extras dev.acpi_ibm.0.%driver: acpi_ibm dev.acpi_ibm.0.%location: handle=\_SB_.PCI0.LPC_.EC__.HKEY dev.acpi_ibm.0.%pnpinfo: _HID=IBM0068 _UID=0 dev.acpi_ibm.0.%parent: acpi0 dev.acpi_ibm.0.initialmask: 2060 dev.acpi_ibm.0.availmask: 16777215 dev.acpi_ibm.0.events: 0 dev.acpi_ibm.0.eventmask: 2060 dev.acpi_ibm.0.hotkey: 3491 dev.acpi_ibm.0.lcd_brightness: 0 dev.acpi_ibm.0.volume: 7 dev.acpi_ibm.0.mute: 0 dev.acpi_ibm.0.thinklight: 0 dev.acpi_ibm.0.bluetooth: 0 dev.acpi_ibm.0.wlan: 1 dev.acpi_ibm.0.fan_speed: 3815 dev.acpi_ibm.0.fan_level: 0 dev.acpi_ibm.0.fan: 1 dev.acpi_ibm.0.thermal: 41 47 47 38 33 -1 30 -1 Sat Mar 29 09:30:09 EDT 2008 I can get dev.acpi_ibm.0.thinklight to change when turning off/on the think light. I can get dev.acpi_ibm.0.hotkey to change between two values: 2467 and 3491 That's it. Nothing else. > With this script you can change the brightness both under console and > under xorg but you are bound to 8 levels (0 - 7) > If you want 100 levels you can use xbacklight under xorg only and modify > the script to use xbacklight instead of sysctl > > Mute and volume keys don't send events to devd: I don't know why but if > I press mute it works and dev.acpi_ibm.0.mute becomes 1 > If I press volume up or down, dev.acpi_ibm.0.mute becomes 0
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?47EE4615.5060409>