Momokuri's

CODE READING, WRITING, SLEEPING

header banner
Panasonic Hotkey driver homepage

 

Panasonic Hotkey driver homepage

|

Panasonic Hotkey Driver

The Panasonic Hotkey Driver implements hotkey functionality for Panasonic R1(N variant), R2, R3, T2, W2, and Y2 laptops on linux for machines running a 2.6 kernel.

You can find more generic information about Linux on Panasonic on David's Linux and the Panasonic R4 site, and it may helps you! Thanks a lot to David!

News

upload upated driver for kernels after 2.6.15

Status

The hotkey driver currently implements:

  • Hotkeys for raising and lowering brightness(Fn+F1, Fn+F2), muting sound (Fn+F4), raising and lowering volume (Fn+F5, Fn+F6), suspending to RAM (Fn+F7), spinning down the hard drive (Fn+F9), and suspending to disk (Fn+F10)
  • An interface for setting the screen brightness (see Technical Details section for more info)
  • An interface for muting the sound (not used; 0 for unmuted, 1 for muted)
  • An interface for reading the LCD type (0 for normal, 1 for semi-transparent)
  • An interface for reading the number of batteries installed
  • On some models, an interface for reading the current environment state (1 for normal temperature, 129 for high temperature, 0 for not implemented)

The hotkey driver currently does not implement:

  • The monitor switch hotkey (Fn+F3); this is because we haven't figured out how
  • An interface to enable or disable the internal and external display; this is something that could be done easily

Suspending to RAM is intentionally disabled because it does not work well on Linux. If you want it to work, you can add code to hotkey.pl to implement it.

Requirements

In order to get the driver working, you will need:

  • A 2.6.8.1 or greater kernel source tree
  • A Panasonic R1(N variant), R2, R3, T2, W2, or Y2 laptop
  • acpid running on your system
  • A Perl interpreter (this is for the key handler)

For anything more than the bare minimum of raising and lowering screen brightness, you'll want to have:

  • ALSA installed and functioning for sound functions
  • Software suspend configured in your kernel (see below)
  • hdparm if you want to be able to spin down your disk

Downloads

You'll need to download at least the hotkey handler and an appropriate kernel patch to get this to work. You'll probably want the AC adapter handler too.

You may want not to patch kernel but make modules outside of kernel tree. You can download driver package.

Driver package

Hotkey handlers

updated hotkeys utility

Kernel patches

hotkey drivers
video switch drivers

Instructions

Instructions by driver package

You will need to download a driver package. It is now only support 2.6 series kernel. You'll also need a script to handle the hotkey events.

Download and untar driver package.cd into package directory pcc-acpi-0.8/ and type make;su make install then driver automatically compile and install proper place. If you want to compile for the version that you don't run, please use instructions by kernel patch.

After install, type su depmod -aand su modprobe pcc_acpi then driver will be loaded to running kernel.

Instructions by patch

You will need to download an appropriate patch for your kernel. You'll also need a script to handle the hotkey events; one which works is available below.

Patching the kernel

Download an appropriate patch for your kernel. cd into your kernel source directory. Run the following command:

patch -p1 < location_of_patch

Now make menuconfig or use your favourite method of kernel configuration.

Kernel configuration
  1. Go under "Code maturity level options" and enable "Prompt for development and/or incomplete code/drivers". Then exit this menu.
  2. Go under "Power Management Options (ACPI, APM)" and enable "Power Management support".
  3. If you want suspend-to-disk (hibernate) to work, enable "Software Suspend"
  4. Enter the "ACPI (Advanced Configuration and Power Interface) Support" menu.
  5. Enable "ACPI support"
  6. Select "AC Adapter" as a built-in
  7. Select all other ACPI options you want
  8. Select "Panasonic Laptop Extras" as a built-in

Exit menuconfig (or your favourite configuration utility) and build and install the kernel.

Setting up acpid

To configure acpid for using the new Hotkey driver, you will need to download the "Hotkey Handler" package (listed under downloads). Untar this file in /etc/acpi (or your distribution's acpid configuration location).

If you want acpid to reduce the screen brightness when on battery power, you should also download the "AC Power Handler" package (listed under downloads) Untar this file in /etc/acpi (or your distribution's acpid configuration location).

If you plan not to use GUI for volume and mute(hotkeys or Gnome), please edit hotkey.pl to change $config values as "mute_mode" = 0 or 1 and "mixer_mode" = 0. In default, these are set to 2 that mean volume and mute is set by GUI utility.

Setting up hotkeys or Gnome shortcut keys

download new hotkeys utility which support Panasonic. If you use Debian GNU/Linux, you only download deb package. Not so, you may download source package and compile. It is easy to compile. $ ./configure $ make $ make install thats all.

To configure hotkeys for using the hotkey driver, you will need to download the "pcc.def" file(listed under downloads). Make directory $HOME/.hotkeys and copy this file. After you launch hotkeys -t pcc , you may show overlay gui by pushing Fn+F1,F2, Fn+F4, Fn+F5, Fn+F6 hotkeys.

Final steps

Now you are ready to restart the system. Reboot. Try the hotkeys. Do they work? If so, great! If not, please see the Troubleshooting section.

Troubleshooting

So, it isn't working for you. To try and save you (and us!) a lot of time, I've assembled a checklist of things to check before reporting a bug. Please go through the following steps before sending us an email:

  • Review the requirements and ensure that they are all present and functional
  • Ensure acpi is enabled on your machine by checking that /proc/acpi exists
  • Make sure the hotkey driver is enabled by running ls /proc/acpi/pcc/. If it says "No such file or directory" then the hotkey driver is not installed and operational.
  • Ensure acpid is installed and running
  • Make sure that /etc/acpi/hotkey.pl exists and is executable, and that /etc/acpi/event/hotkey exists

If this does not solve your problem and you are sure that it should work, please email (dbronaugh (at) linuxboxen (dot) org) or (miura (at) da-cha (dot) org). Make sure you include:

  • The output of dmesg
  • Your kernel's .config
  • The output of uname -a
  • The model of your laptop (CF-R1N62ZVKM for example) and details about its configuration
  • A description of the problem
  • A patch which fixes the problem (yeah, we don't really expect this)

Technical Details

The hotkey part of the kernel driver emits ACPI events (like the AC adapter does, etc). These are caught by acpid and dispatched via /etc/acpi/events/hotkey to /etc/acpi/hotkey.pl . hotkey.pl in turn performs the appropriate action, be it setting volume, muting the sound card, changing the brightness, spinning down the hard drive, or suspending to disk. The driver also emit key input events (same as normal keyboard). These are caught by Gnome shortcut key configuration and hotkeys utilities. It is useful to show GUI and launch helper programs.

Screen brightness controls on the Panasonic laptops look complicated, but in the end they make sense. The driver implements these using 6 files: ac_brightness, ac_brightness_max, ac_brightness_min, dc_brightness, dc_brightness_max, dc_brightness_min. All the files prefixed with ac_ are for controlling the brightness when the laptop is under AC power. They affect persistent (across reboot) status registers which store the screen brightness, as well as controlling the actual brightness. The files prefixed with dc_ do the same for when the laptop is under battery power.

When the AC Power Handler script is being used, when AC power is connected the ac_brightness value is loaded. The dc_brightness field is not affected by this. Likewise, when AC power is disconnected, the dc_brightness value is loaded; the ac_brightness register is not affected by this. So, there are effectively 2 sets of brightness -- one set for when the laptop is under DC power, and one set for when the laptop is under AC power.

The *_brightness_min files show the minimum brightness for their respective power levels. Likewise, the *_brightness_max files show the maximum brightness for their respective power levels.

Reference


First created on Aug 23, 2004 by David Bronaugh Last modified by Hiroshi Miura
添付サイズ
ac-power-handler-1.0.tar.gz1.16 KB
hotkey-handler-1.4.tar.gz3.84 KB
hotkeys.conf265 バイト
hotkeys-0.6.1.tar.gz442.29 KB
hotkeys_0.6.1_i386.deb144.35 KB
i810switch_lets.patch.txt2.22 KB
pcc.def385 バイト
pcc-acpi-0.8.4.tar.gz17.24 KB
pcc-acpi-0.9.tar.bz216.45 KB
acpi_video-2.6.8.1.patch33.88 KB

印刷用 | export OPML

水曜, 2008-06-04 22:03 by Anonymous

Hello!

I know that this is no support site for the old CF-M34 (latest 1GHz model) but since I couldnt find another driver support I wanted to at least give it a try. But I couldnt compile and install the driver (I dont think its a problem of different models, but of coding or rather compiling).
OK, this is what I typed into the Konsole and the error messages it returned:

root@FuCkuP:/home/user/Desktop/pcc-acpi-0.8.4# make;su
make -C /lib/modules/2.6.24-18-generic/build SUBDIRS=/home/user/Desktop/pcc-acpi-0.8.4 modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.24-18-generic'
CC [M] /home/user/Desktop/pcc-acpi-0.8.4/pcc_acpi.o
/home/user/Desktop/pcc-acpi-0.8.4/pcc_acpi.c:159: warning: initialization from incompatible pointer type
/home/user/Desktop/pcc-acpi-0.8.4/pcc_acpi.c:163: warning: initialization from incompatible pointer type
/home/user/Desktop/pcc-acpi-0.8.4/pcc_acpi.c: In function ‘acpi_pcc_retrieve_biosdata’:
/home/user/Desktop/pcc-acpi-0.8.4/pcc_acpi.c:261: error: implicit declaration of function ‘acpi_os_free’
/home/user/Desktop/pcc-acpi-0.8.4/pcc_acpi.c: In function ‘acpi_pcc_hotkey_notify’:
/home/user/Desktop/pcc-acpi-0.8.4/pcc_acpi.c:554: error: implicit declaration of function ‘acpi_bus_generate_event’
make[2]: *** [/home/user/Desktop/pcc-acpi-0.8.4/pcc_acpi.o] Error 1
make[1]: *** [_module_/home/user/Desktop/pcc-acpi-0.8.4] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.24-18-generic'
make: *** [default] Error 2
root@FuCkuP:/home/user/Desktop/pcc-acpi-0.8.4# make install
install -d /lib/modules/2.6.24-18-generic/kernel/drivers/acpi/
install -m 644 -c pcc_acpi.ko /lib/modules/2.6.24-18-generic/kernel/drivers/acpi/
install: cannot stat `pcc_acpi.ko': No such file or directory
make: *** [install] Error 1
root@FuCkuP:/home/user/Desktop/pcc-acpi-0.8.4#

Please help me, I dont know what to do and I would hate nothing more than turning back to windows :/

Cheers,

Dirk

火曜, 2008-04-15 19:27 by Anonymous

最近のディストリビューションでは db3 はランタイムのみで開発環境は含まれていないみたいで、ドライバのコンパイルが ./configure で失敗してしまいます。
そこでなんとか手動で db3 を導入しようとしてみたのですが、こちらも何が悪いのか ./configure で失敗してしまいます。

恥ずかしながら自分の技術ではなんともならないようです……

金曜, 2008-03-14 20:53 by Anonymous

unable to open hotkeys_0.6.1_i386.deb. might be corrupted.

水曜, 2008-03-05 19:41 by Anonymous

I have a CF74 runing CentOS 5. I installed the driver package and hotkeys handler with no problem. but when i tried to compile the hotkeys utility i run into error as show below.

checking for db_create in -ldb3... no
checking for db_create in -ldb... yes
checking for version of db3...

水曜, 2008-03-05 15:25 by Anonymous

I just installed Slackware-12.0 on my Japanese W5A. Kernel-2.6.24.2. The patch works. Thx :)

Brightness used to work with xf86-video-intel-2.0.0. When I updated to xf86-video-intel-2.1.0 it broke. It's either min or max.

Now I use xbacklight to adjust the brightness. Works like a charm.

Volume up/down jumps a few levels at a time. Neither Mute (Fn+F4) nor changing the value of /proc/acpi/pcc/mute have any effect.

ctk

金曜, 2008-02-08 01:48 by Anonymous

..but now I upgraded to a cf-r7 the hotkeys are not working anymore, the values in /proc/acpi/ac_brightness are changing, but the brightness is not changing.

土曜, 2008-02-09 20:14 by Anonymous

I have the same problem on a US Y7:
the values change but I only get
two levels: either minimal brightness
or full brightness.

Fixing this is useful for me --would be
happy to pay $50 paypal for your time
fixing it.

火曜, 2008-02-12 05:35 by Anonymous

did u try the newer kernel if it supports the Y7 from scratch with xbrightness?

火曜, 2008-02-12 05:45 by Anonymous

sorry i meant xbacklight - 5:30 in the morning here |)

木曜, 2008-02-14 03:50 by Anonymous

Thank you!

xbacklight works on the CF-19 running Fedora8
(2.6.23 kernel))

木曜, 2008-05-01 19:54 by Anonymous

Unfortunately it does not work for me on
Ubuntu 8.04 (kernel 2.6.24), US Y7. It still
gives only two levels: min and max.
I have tried with the hot keys and with
xbacklight and it is always the same (min/max).

日曜, 2008-05-11 23:15 by Hiroshi Miura

backlight might be controlled with video.ko driver by setting kernel command line acpi_osi="Windows 2001" to claim it as Windows XP on Y,W,T,R 6 and 7.

A BIOS writer in Panasonic said me that they have an internal rule not to enable features which is not tested on the OS.
They only tested on Windows XP and vista, then they did not enable ACPI video interface for linux.

ubuntu may have a driver and interface to control through acpi video driver. see /proc/acpi/video/

木曜, 2008-05-22 23:09 by Anonymous

please try:

# xrandr --output LVDS --set BACKLIGHT_CONTROL native

and then:

# xbacklight -set 50

or so.

BACKLIGHT_CONTROL can be either kernel, legacy, native or combination, but "kernel" does not work - see output of "xrandr --prop".

土曜, 2008-01-26 08:57 by Anonymous

values change in proc files but no change in backlight intensity.

月曜, 2008-01-21 01:19 by Anonymous

I just installed Gutsy on a CF-Y7 and cannot get pcc_acpi to control the screen brightness.

I just posted to this thread:

My problem:

sudo su root -c "echo 1 > /proc/acpi/ac_brightness"

changes the value in the file, but this has no effect on the actual screen. changing the value of /proc/acpi/pcc/mute, however does mute the laptop so something is working in pcc_acpi. I tried blacklisting the video module in case that was interfering. No improvement.

__________________

木曜, 2008-01-17 09:32 by Anonymous

Not quite working for me with a Y7: Brightness controls have no effect. THe *_brightness files change correctly by hitting fn-f1/f2 according to AC or DC, but this does not change the actual screen brightness.

Less importantly: the volume controls also do not work. Volume will hit only two levels: 11 and full.

-Dylan

水曜, 2007-12-26 03:55 by Anonymous

Hello, i just want to let you know that your patch also sucessfully works with an european CF-Y2 (14' display, 1,1 Ghz Centrino CPU).

:-)

水曜, 2007-11-21 03:26 by Anonymous

Any chance you can merge the CD patch? I merged it but now it is broken under 2.6.22 in Ubuntu Gutsy. I'm no coder, I just matched it up line by line.

Thanks!

水曜, 2007-11-07 23:47 by Anonymous

hi there, I am using your pcc_acpi module on a Panasonic Toughbook CF-74. When I upgraded to the 2.6.23 kernel, the module had to be changed to compile. The "acpi_bus_generate_event" function was renamed to "acpi_bus_generate_proc_event" and changing that allowed the module to compile. The module loads and unloads, but does nothing now. I get no proc entry and no acpi events when the module is loaded. Perhaps something changed in the acpi handler? Thanks for making this module!

Tony

土曜, 2007-12-29 16:58 by Anonymous

Hi,

kernel-2.6.23 has differenet KAPI, so please fix the pcc-acpi.c for the kernel. I wrote the patch below, works fine on my CF-R3. I hope that the original pcc_acpi will be fixed by this patch :-)

Regards,
KAICHO

--- pcc_acpi.c.org 2007-12-29 16:50:29.000000000 +0900
+++ pcc_acpi.c 2007-12-29 16:48:08.000000000 +0900
@@ -168,7 +168,17 @@ MODULE_LICENSE("GPL");
#define METHOD_HKEY_SQTY "SQTY"
#define METHOD_HKEY_SINF "SINF"
#define METHOD_HKEY_SSET "SSET"
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
+static struct acpi_device_id HKEY_HID[] = {
+ {"MAT0012",0},
+ {"MAT0013",0},
+ {"MAT0018",0},
+ {"MAT0019",0},
+ {"",0}
+};
+#else
#define HKEY_HID "MAT0012,MAT0013,MAT0018,MAT0019"
+#endif
#define HKEY_NOTIFY 0x80

/* for brightness control */
@@ -212,8 +222,11 @@ enum SINF_BITS { SINF_NUM_BATTERIES = 0,

static int acpi_pcc_hotkey_add(struct acpi_device *device);
static int acpi_pcc_hotkey_remove(struct acpi_device *device, int type);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+static int acpi_pcc_hotkey_resume(struct acpi_device *device);
+#else
static int acpi_pcc_hotkey_resume(struct acpi_device *device, int state);
-
+#endif

static struct acpi_driver acpi_pcc_driver = {
.name = ACPI_PCC_DRIVER_NAME,
@@ -622,7 +635,12 @@ void acpi_pcc_hotkey_notify(acpi_handle
case HKEY_NOTIFY:
if (acpi_pcc_hotkey_get_key(hotkey)) {
/* generate event like '"pcc HKEY 00000080 00000084"' when Fn+F4 pressed */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
+ acpi_bus_generate_proc_event(hotkey->device, event, hotkey->status);
+#else
acpi_bus_generate_event(hotkey->device, event, hotkey->status);
+#endif
+
}
acpi_pcc_generete_keyinput(hotkey);
break;
@@ -834,7 +852,11 @@ static int acpi_pcc_init_input(struct ac
module init
-------------------------------------------------------------------------- */

+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
+static int acpi_pcc_hotkey_resume(struct acpi_device *device)
+#else
static int acpi_pcc_hotkey_resume(struct acpi_device *device, int state)
+#endif
{
struct acpi_hotkey *hotkey = acpi_driver_data(device);
acpi_status status = AE_OK;

土曜, 2007-12-29 05:01 by Anonymous

May I paypal you money to fix this? It's worth $50US if you can make this work again!

Tony

土曜, 2007-12-29 05:00 by Anonymous

May I please paypal you some money to fix the pcc_acpi driver? It's worth $50US if you can give me a fix!

Tony

金曜, 2007-11-30 06:47 by Anonymous

I think these changes may have broken the module:

http://kernelnewbies.org/Linux_2_6_23#head-abb31f211ce2126b445cd5444020d93712709d5d

木曜, 2007-11-29 03:57 by Anonymous

go to:
http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/suse/src/
and download
pcc-acpi-0.9-4.src.rpm
in the package are the necessary patches included.
worked for me.

julian

木曜, 2007-11-29 03:56 by Anonymous

go to:
http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/suse/src/
and download
pcc-acpi-0.9-4.src.rpm
in the package are the necessary patches included.
worked for me.

julian

日曜, 2006-12-31 19:24 by Anonymous

The following files are broken (won't gunzip):
ac-power-handler-1.0.tar.gz
hotkey-handler-1.4.tar.gz

月曜, 2007-01-15 21:01 by Hiroshi Miura

Thank you for telling me but it looks good for me...

コメントオプションの設定

コメントを表示し変更を有効にする為に「設定の保存」をクリックし、好ましい方法を選択してください。

新しいコメントの投稿

  • HTMLタグの許可: <a> <p> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • 行と段落は自動的に分けます。
フォーマットのオプションに関する詳細情報

Firefox 2Get Thunderbird! Firefox 2 無料ダウンロード