Re: ThinkPad X61s functions keys

Ian Smith <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Message-ID <[email protected]>
On Sat, 29 Mar 2008, Dan Langille wrote:
 > 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

Does needs to be 1, but your loop script below shows it set (reverted?) 
to 0, so devd events would not be invoked.

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

Not without having dev.acpi_ibm.0.events=1 anyway.

Suggest also checking Beto's examples which might help you debug it:

http://lists.freebsd.org/mailman/htdig/freebsd-mobile/2006-August/008959.html

http://lists.freebsd.org/pipermail/freebsd-mobile/2006-August/008948.html

and which I notice executes scripts like:
      action "/bin/sh -c /home/betom/bin/do_acpi_suspend.sh";

which might help if your script wasn't set executable?  and uses
/usr/local/etc/devd for devd conf files, as an alternative. 

HTH, Ian


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