Re: ThinkPad X61s functions keys

Dan Langille <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Organization The FreeBSD Diary
Message-ID <[email protected]>
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

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.