From owner-freebsd-mobile@FreeBSD.ORG Mon Apr 14 04:21:58 2008 Return-Path: Delivered-To: freebsd-mobile@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9EC73106564A for ; Mon, 14 Apr 2008 04:21:58 +0000 (UTC) (envelope-from smithi@nimnet.asn.au) Received: from gaia.nimnet.asn.au (nimbin.lnk.telstra.net [139.130.45.143]) by mx1.freebsd.org (Postfix) with ESMTP id BF3128FC12 for ; Mon, 14 Apr 2008 04:21:43 +0000 (UTC) (envelope-from smithi@nimnet.asn.au) Received: from localhost (smithi@localhost) by gaia.nimnet.asn.au (8.8.8/8.8.8R1.5) with SMTP id OAA26538; Mon, 14 Apr 2008 14:20:27 +1000 (EST) (envelope-from smithi@nimnet.asn.au) Date: Mon, 14 Apr 2008 14:20:26 +1000 (EST) From: Ian Smith To: Dan Langille In-Reply-To: <48022A8F.3010703@langille.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: Alberto Rizzi , freebsd-mobile@freebsd.org Subject: Re: ThinkPad X61s functions keys X-BeenThere: freebsd-mobile@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Mobile computing with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Apr 2008 04:21:58 -0000 On Sun, 13 Apr 2008, Dan Langille wrote: > Elsewhere in this thread I had stated I'd solved the problem. I'm > posting the details here. We've been waiting with bated breath :) > 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 Strange if that doesn't work. Can you check your /var/log/console.log (assuming you've got 'console.info /var/log/console.log' in syslog.conf) which should show the transition, or at least the attempt, eg: Apr 1 02:51:32 paqi kernel: vfs.usermount: Apr 1 02:51:32 paqi kernel: 0 Apr 1 02:51:32 paqi kernel: -> Apr 1 02:51:32 paqi kernel: 1 Apr 1 02:51:32 paqi kernel: Apr 1 02:51:32 paqi kernel: hw.snd.verbose: Apr 1 02:51:32 paqi kernel: 1 Apr 1 02:51:32 paqi kernel: -> Apr 1 02:51:32 paqi kernel: 2 > $ 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 You could, if maybe sysctl.conf is being run too early (?), try adding 'sysctl dev.acpi_ibm.0.events=1' to /etc/rc.local, which, as I recall, also reports into console.log > > 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. Fussy, ain't it. > > 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 Are the bits for these keys set in .availmask, or posted to .eventmask? > 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 Does Fn-F4 (still?) act as sleep (suspend-to-RAM)? ie does/did STR work on your X61s, and does dev.acpi_ibm.0.events=1 affect that at all? You might like to compare your results with Beto's Z60m at: http://lists.freebsd.org/mailman/htdig/freebsd-mobile/2006-August/008959.html and also his earlier reference: http://lists.freebsd.org/pipermail/freebsd-mobile/2006-August/008948.html where a) he gets to use Fn-F4 for a custom sleep script, b) also found that Fn-F10 does nothing, but c) gets events from volume and mute keys. > 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 On my T23, Pause does nothing in X, but (same as NumLk/ScrollLock key pressed without Fn) works as the scroll lock in a vty. Also on mine, Fn-F7 switches between LCD/Monitor/both. > ThinkLight - works, and creates a log entry 0x12 > Spacebar - create log entry 0x14 Weird about the sysctl not getting set from sysctl.conf though .. cheers, Ian