Re: ThinkPad X61s functions keys

Dan Langille <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Organization The FreeBSD Diary
Message-ID <[email protected]>
Elsewhere in this thread I had stated I'd solved the problem.  I'm 
posting the details here.

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

This is loaded:

$ kldstat
Id Refs Address            Size     Name
  1   15 0xffffffff80100000 ac6c08   kernel
  2    1 0xffffffff80bc7000 39138    linux.ko
  3    1 0xffffffff80c01000 7108     if_tap.ko
  4    1 0xffffffff80c09000 1a670    snd_hda.ko
  5    2 0xffffffff80c24000 673b8    sound.ko
  6    1 0xffffffff80c8c000 53d0     acpi_ibm.ko
  7    1 0xffffffffb16e4000 4b61     i915.ko
  8    1 0xffffffffb16e9000 d5d8     drm.ko


> 
> Then activate event passing to devd. Add
> dev.acpi_ibm.0.events=1
> to /etc/sysctl.conf

I cannot get this set to 1 after boot:

$ grep ibm /etc/sysctl.conf
dev.acpi_ibm.0.events=1

$ sysctl dev.acpi_ibm.0.events
dev.acpi_ibm.0.events: 0

Under these circumstances, the keys will not work.  If I manually set 
the events flag:

$ sudo sysctl dev.acpi_ibm.0.events=1
Password:
dev.acpi_ibm.0.events: 0 -> 1
$ sysctl dev.acpi_ibm.0.events
dev.acpi_ibm.0.events: 1


Then the brightness keys start working

> 
> 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";
> }

This was the missing key.  The last line needs a trailing ;

Once I added that in, things started working.

> 
> 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.
> 
> 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

Using the Fn key and pressing the F1-F12 keys, I get the following log 
entrys in /tmp/prova:
Sun Apr 13 11:39:48 EDT 2008
0x01
Sun Apr 13 11:39:48 EDT 2008
0x02
Sun Apr 13 11:39:49 EDT 2008
0x03
Sun Apr 13 11:39:50 EDT 2008
0x05
Sun Apr 13 11:39:50 EDT 2008
0x06
Sun Apr 13 11:39:50 EDT 2008
0x07
Sun Apr 13 11:39:54 EDT 2008
0x08
Sun Apr 13 11:39:54 EDT 2008
0x09
Sun Apr 13 11:39:55 EDT 2008
0x0b
Sun Apr 13 11:39:55 EDT 2008
0x0c


Note the following exceptions which can be observed from the above log 
entries:

Fn-F4 - sleep: does not give any log entry
Fn-F10 - unlabelled on the keyboard, gives no log entry

Other Fn key results:

SysReq - no log entry, no effect seen
NumLk - no log entry but system goes into NumLock mode
Pause - no log entry, no effect seen
ThinkLight - works, and creates a log entry 0x12
Spacebar - create log entry 0x14


_______________________________________________
[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.