Jump to content

Netbook hot key driver Asus Dell HP


hotKoffy
 Share

30 posts in this topic

Recommended Posts

Last update: 18 sept 2011

 

I've wrote a driver for my Asus EEEPC 1201N since the existing one didn't worked after sleep.

 

It is base on the WMI device you can find in the DSDT (PNP0C14 + ASUSWMI), so I think it can works

with other asus product shipped with win7. Feel free to try and report.

There should be this kind of entry in your DSDT to work :

Device (AMW0)
       {
           Name (_HID, EisaId ("PNP0C14"))
           Name (_UID, "ASUSWMI")
           Name (_WDG, Buffer (0x50)
           {...

For example, if you have this :
   Device (AMW0)
   {
       Name (_HID, EisaId ("PNP0C14"))
       Name (_UID, [b]Zero[/b])
       Method (_STA, 0, NotSerialized)
       {
           [b]If (LEqual (MSOS (), MSW7))[/b]
           {
               Return (0x0F)
           }

           Return (Zero)
       }

Make the following modification:

   Device (AMW0)
   {
       Name (_HID, EisaId ("PNP0C14"))
       Name (_UID, [b][s]Zero[/s]"ASUSWMI"[/b])
       Method (_STA, 0, NotSerialized)
       {
           [b][s]If (LEqual (MSOS (), MSW7))[/s] [/b]//no need to check if win7 is runing...[b][s]
           {[/s]
               Return (0x0F) [/b]// means device is enable [b] 
           [s]}

           Return (Zero)[/s] [/b]//means device is disable [b]  [/b]
       }

 

There is also experimental support for HP and Dell :

For HP put HPWMI instead of ASUSWMI

For Dell put DELLWMI instead of ASUSWMI

 

if there are several PNP0C14, locate the one with a Method (_Wed..., if there are several, try all.

 

Remove any other hotkey driver before trying it ! I.e. remove, rebuild kext cache and reboot.

IOWMIFamily.kext.zip

Install it in S/L/E (with Kext Utility or similar !)

Tested in i386 and x86_64.

 

Change log:

25/06/2011 : mangement of key repeat rate.

18/09/2011 : basic support for HP and Dell

source : IOWMIFamily_src.zip

 

 

Features on ASUS:

  • keystrokes to system:
    • SOUND_UP
    • SOUND_DOWN
    • MUTE
    • BRIGHTNESS_UP

    • BRIGHTNESS_DOWN
    • VIDMIRROR: (Fn + F8) toggle between extended desktop and clone mode

    [*]Hardware control:

    • BRIGHTNESS ON/OFF
    • BLUETOOTH ON/OFF (Fn + F2)
    • TRACKPAD ON/OFF (Fn + F9) : On my netbook, it only lights the button for the moment...

Features on Dell:

  • SOUND_UP
  • SOUND_DOWN
  • MUTE
  • BRIGHTNESS_UP

  • BRIGHTNESS_DOWN
  • VIDMIRROR

Features on HP:

  • BRIGHTNESS_UP

  • BRIGHTNESS_DOWN

 

I'm also wrote an ACPI Display driver for brightness control. ACPI Backlight

  • Like 1
Link to comment
Share on other sites

  • 3 months later...

This is really cool! I was going through my DSDT when I saw this PNP0C14 device, and when I found out that it is was for Windows Management Interface I was just about to rip out the whole section. But I figured I should search this forum first, and I found your extension!

 

I think it can works with other asus product shipped with win7. Feel free to try and report.

 

Unfortunately it's not working with my ASUS K53E. The kext loads and I see an EeePCWMIController under the AppleACPIPlatformExpert IOService. My WMI device in the DSDT doesn't even have an _STA method. Should I add one?

 

If I press Fn+F2 I get a KP out of EeePCWMIController. None of the other fn keys do anything. I also tried using "NVIF" with the same results minus the KP (is this one just for laptops with Nvidia Optimus?).

 

In IOService, I only see two entries under the "WDG" key. Are these the available key combos/actions?

 

Would you mind posting the source code? I'd love to check it out. Also, it would be cool to see your complete AMW0 section so I can compare it with mine (although for me it's called ATKD). There are some horrendously complicated looking methods in this part of my DSDT. Who writes these things?!

Link to comment
Share on other sites

This is really cool! I was going through my DSDT when I saw this PNP0C14 device, and when I found out that it is was for Windows Management Interface I was just about to rip out the whole section. But I figured I should search this forum first, and I found your extension!

 

 

 

Unfortunately it's not working with my ASUS K53E. The kext loads and I see an EeePCWMIController under the AppleACPIPlatformExpert IOService. My WMI device in the DSDT doesn't even have an _STA method. Should I add one?

 

If I press Fn+F2 I get a KP out of EeePCWMIController. None of the other fn keys do anything. I also tried using "NVIF" with the same results minus the KP (is this one just for laptops with Nvidia Optimus?).

 

In IOService, I only see two entries under the "WDG" key. Are these the available key combos/actions?

 

Would you mind posting the source code? I'd love to check it out. Also, it would be cool to see your complete AMW0 section so I can compare it with mine (although for me it's called ATKD). There are some horrendously complicated looking methods in this part of my DSDT. Who writes these things?!

 

 

Try this: Asus fn kext

Link to comment
Share on other sites

This is really cool! I was going through my DSDT when I saw this PNP0C14 device, and when I found out that it is was for Windows Management Interface I was just about to rip out the whole section. But I figured I should search this forum first, and I found your extension!

 

Unfortunately it's not working with my ASUS K53E. The kext loads and I see an EeePCWMIController under the AppleACPIPlatformExpert IOService. My WMI device in the DSDT doesn't even have an _STA method. Should I add one?

 

If I press Fn+F2 I get a KP out of EeePCWMIController. None of the other fn keys do anything. I also tried using "NVIF" with the same results minus the KP (is this one just for laptops with Nvidia Optimus?).

 

In IOService, I only see two entries under the "WDG" key. Are these the available key combos/actions?

 

Would you mind posting the source code? I'd love to check it out. Also, it would be cool to see your complete AMW0 section so I can compare it with mine (although for me it's called ATKD). There are some horrendously complicated looking methods in this part of my DSDT. Who writes these things?!

 

OK, can you post your DSDT and an ioreg dump starting at EeePCWMIController (ioreg -rSk WDG -w0)

As the driver loads, there is no need for _STA.

All explanation about WDG are here http://lwn.net/Articles/391230/.

NVIF is on Nvidia GPU. The driver only publish WDG properties on it and does nothing more for the moment.

Link to comment
Share on other sites

Thanks for taking a look.

 

+-o EeePCWMIController  <class EeePCWMIController>
{
  "IOProbeScore" = 35
  "CFBundleIdentifier" = "com.darwin.driver.EeePCWMIController"
  "IOProviderClass" = "IOACPIPlatformDevice"
  "IOClass" = "EeePCWMIController"
  "IOMatchCategory" = "IODefaultMatchCategory"
  "DataBlocks" = ()
  "IONameMatch" = ("PNP0C14","pnp0c14")
  "IOPowerManagement" = {"MaxPowerState"=1,"CurrentPowerState"=1}
  "IONameMatched" = "PNP0C14"
  "WDG" = ({"object_id"="NB","flags"=2,"instance_count"=1,"UUID"="97845ED0-4E6D-11DE-8A39-0800200C9A66"},{"flags"=8,"notify_value"=255,"instance_count"=1,"UUID"="0B3CBB35-E3C2-45ED-91C2-4C5A6D195D1C"})
}

 

Does this mean that for the volume keys I'm going to need to go through VoodooPS2?

 

@fargerjaques, no luck with that one.

dsdt.dsl.zip

Link to comment
Share on other sites

  • 3 months later...

hi i install this driver in hp

and getting this error:

 

Sep 18 18:13:18 localhost kernel[0]: IOWMIController: WMI driver version 1.0 Device name: WMID

Sep 18 18:13:18 localhost kernel[0]: IOWM IController: Cast error WQBC

i am attaché my dsdt and (ioreg -rSk WDG -w0 terminal output

may be you take quick look at it.plz

thanks for your help

DSDT.aml.zip

Terminal_Saved_Output.zip

Link to comment
Share on other sites

I've to make a small modification to the code I've send, it cannot works.

em. Fn+F5 and Fn+F12 works as backlight down/up now, as before.

I saw debug in kernel log.

 

Fn+arrow down/arrow up works as backlight down up too, but no icon is the screen and no moving of progressbar in the monitor settings.

kernel.log

Sep 18 17:48:21 GFKxx kernel[0]: Notice - new kext com.apple.iokit.IOHIDSystem, v1.7.1 matches prelinked kext but can't determine if executables are the same (no UUIDs).
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Probe()
Sep 18 17:48:21: --- last message repeated 2 times ---
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Probe(NVIF)
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Probe()
Sep 18 17:48:21: --- last message repeated 1 time ---
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Probe(NVIF)
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Probe()
Sep 18 17:48:21: --- last message repeated 1 time ---
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Probe(NVIF)
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Probe(OK)
Sep 18 17:48:21 GFKxx kernel[0]: IOWMIController: Probe()
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: WMI driver version 1.0	Device name: WMI0
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: NVWMIController::enableEvent()
Sep 18 17:48:21 GFKxx kernel[0]: IOWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: setPowerState(kPowerStateOn)
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Probe()
Sep 18 17:48:21: --- last message repeated 1 time ---
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Probe(MXM2)
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Probe()
Sep 18 17:48:21: --- last message repeated 1 time ---
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Probe(MXM2)
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Probe()
Sep 18 17:48:21: --- last message repeated 1 time ---
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Probe(MXM2)
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: IOWMIController: Probe()
Sep 18 17:48:21 GFKxx kernel[0]: IOWMIController: WMI driver version 1.0	Device name: WMI1
Sep 18 17:48:21 GFKxx kernel[0]: IOWMIController: IOWMIController::enableEvent()
Sep 18 17:48:21 GFKxx kernel[0]: IOWMIController: setPowerState(kPowerStateOn)
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Probe()
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Probe(DELLWMI)
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: Probe(OK)
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Probe()
Sep 18 17:48:21: --- last message repeated 1 time ---
Sep 18 17:48:21 GFKxx kernel[0]: DSMOS has arrived
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Probe(DELLWMI)
Sep 18 17:48:21 GFKxx kernel[0]: EeePCWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Probe()
Sep 18 17:48:21: --- last message repeated 1 time ---
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Probe(DELLWMI)
Sep 18 17:48:21 GFKxx kernel[0]: NVWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: IOWMIController: Probe()
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: WMI driver version 1.0	Device name: AMW0
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: No object of method WQBC
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: DellWMIController::enableEvent()
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: setEvent()
Sep 18 17:48:21 GFKxx kernel[0]: IOWMIController: Free
Sep 18 17:48:21 GFKxx kernel[0]: DellWMIController: setPowerState(kPowerStateOn)

Link to comment
Share on other sites

yes, I have tried all as before.

 

Before your WMI kext I had successfully fully worked sensor panel where I have wifi, stop, play/pause, forward,back, no sound, down sound, up sound and eject buttons. All of them work great exept the stop button, but as I understood stop button is not in original macs at all.

 

I had also working Fn+Arrow up/down for brightness before your WMI kext, but no icon about brightness was shown.

 

After I added your kext, I still have all features that I wrote in the top, but your kext added additionally brightness management by Fn+F5 and Fn+F12 down/up, and I have an icon when I use that keys, and the progressbar moves in the monitor settings too. It doesn't move if I use combination of Fn+arrows.

Link to comment
Share on other sites

hi i install this driver in hp

and getting this error:

 

Sep 18 18:13:18 localhost kernel[0]: IOWMIController: WMI driver version 1.0 Device name: WMID

Sep 18 18:13:18 localhost kernel[0]: IOWM IController: Cast error WQBC

i am attaché my dsdt and (ioreg -rSk WDG -w0 terminal output

may be you take quick look at it.plz

thanks for your help

 

What is your laptop model and manufacturer ?

I've

Name (_UID, "ASUSWMI")

and

Store ("HP WMI Command 0xB (BIOS Read)", Debug)

 

in your DSDT...

 

yes, I have tried all as before.

 

Before your WMI kext I had successfully fully worked sensor panel where I have wifi, stop, play/pause, forward,back, no sound, down sound, up sound and eject buttons. All of them work great exept the stop button, but as I understood stop button is not in original macs at all.

 

I had also working Fn+Arrow up/down for brightness before your WMI kext, but no icon about brightness was shown.

 

After I added your kext, I still have all features that I wrote in the top, but your kext added additionally brightness management by Fn+F5 and Fn+F12 down/up, and I have an icon when I use that keys, and the progressbar moves in the monitor settings too. It doesn't move if I use combination of Fn+arrows.

 

Do you have some log when you hit the Fn + F5 or Fn + up key ?

 

When you can change the backlight without seeing something in the screen, you are using legacy directly wired function (work also under MSDOS or BIOS) : no software in the loop. (normaly, the _DOS Method is here to disable it). Any changes you make to the dimmer with it will not be take into account by the driver and so will be overwritten on amy event like dim before sleep or AC plug/unplug.

Link to comment
Share on other sites

yes, I have brightness working in bios too. May be it's not too important to use your kexts at all, I just was wondered how you did backlight display

 

I have nothing in log when I press fn f12 or fn f5.

Strange ! if the code works, it shall log too !

 

Do you have tried the volume up / down and eject CD ? you have visual return for all of that ?

 

thanks for your replay :

my model is hp dv6-1125ee with c2d

i add this key to my dsdt like your dsdt:"ASUSWMI"

 

That was not a good idea !

put HPWMI instead and try this driver:

 

Link to comment
Share on other sites

thanks i am do it and now this is log:

 

9/18/11 8:19:13.000 PM kernel: IOWMIController: Probe()

9/18/11 8:19:13.000 PM kernel: IOWMIController: WMI driver version 1.0 Device name: WMID

9/18/11 8:19:13.000 PM kernel: IOWMIController: Cast error WQBC

9/18/11 8:19:13.000 PM kernel: IOWMIController: IOWMIController::enableEvent()

9/18/11 8:19:13.000 PM kernel: Previous Shutdown Cause: 3

9/18/11 8:19:13.000 PM kernel: IOWMIController: setPowerState(kPowerStateOn)

 

and this is in ioreg:

IOService:/AppleACPIPlatformExpert/WMID/IOWMIController

i attach the ioreg

macbook_pro.zip

Link to comment
Share on other sites

thanks i am do it and now this is log:

 

9/18/11 8:19:13.000 PM kernel: IOWMIController: Probe()

9/18/11 8:19:13.000 PM kernel: IOWMIController: WMI driver version 1.0 Device name: WMID

9/18/11 8:19:13.000 PM kernel: IOWMIController: Cast error WQBC

9/18/11 8:19:13.000 PM kernel: IOWMIController: IOWMIController::enableEvent()

9/18/11 8:19:13.000 PM kernel: Previous Shutdown Cause: 3

9/18/11 8:19:13.000 PM kernel: IOWMIController: setPowerState(kPowerStateOn)

 

and this is in ioreg:

IOService:/AppleACPIPlatformExpert/WMID/IOWMIController

i attach the ioreg

 

It seems that you have not installed the last driver I've posted

You should have:

HPWMIController: Probe()

and so on.

reinstall and reboot

Link to comment
Share on other sites

  • 1 month later...

I'm sorry if this question sound too newbish but would this driver works on a ASUS G53SX notebook? I'm looking for these features to work here but I'm unsucessful as of now. Thanks!

 

EDIT: I just tried but no success. Attached is the part in DSDT of my device PNP0C14. The method _STA I inserted myself, but I tried both with and wihout it and no success. Any help is appreciated, thanks ;)

PNP0c14.txt

 

EDIT 2: After changing PNP0C14 for PNP0c14 (which was the original and I changed before) the kext now loads but I still have no FN key or multimedia control or brightness or whatever. Here's what shows up in kernel.log

Oct 22 18:24:47 bsides-Macbook-Pro kernel[0]: IOWMIController: WMI driver version 1.0	Device name: ATKD

Link to comment
Share on other sites

I'm sorry if this question sound too newbish but would this driver works on a ASUS G53SX notebook? I'm looking for these features to work here but I'm unsucessful as of now. Thanks!

 

EDIT: I just tried but no success. Attached is the part in DSDT of my device PNP0C14. The method _STA I inserted myself, but I tried both with and wihout it and no success. Any help is appreciated, thanks :D

PNP0c14.txt

 

EDIT 2: After changing PNP0C14 for PNP0c14 (which was the original and I changed before) the kext now loads but I still have no FN key or multimedia control or brightness or whatever. Here's what shows up in kernel.log

Oct 22 18:24:47 bsides-Macbook-Pro kernel[0]: IOWMIController: WMI driver version 1.0	Device name: ATKD

 

Change also

Name (_UID, "ATK")

to

Name (_UID, "ASUSWMI")

Link to comment
Share on other sites

Change also

Name (_UID, "ATK")

to

Name (_UID, "ASUSWMI")

Just did it but I still got the same message (!!!). Reading through the DSDT I honestly think there's something misleading here... should I change all ATKD to ASUSWMI? Because the Device is still ATKD and there is a "name" instruction with the same very name...

 

Scope (_SB)
   {
       Name (ATKP, Zero)
       Name (AITM, Zero)
       Name (PLMD, Zero)
       Name (MUTX, One)
       Name (LEDS, Zero)
       Device (ATKD)
       {
           Name (_HID, "PNP0c14")
           Name (_UID, "ASUSWMI")
           Method (_STA, 0, NotSerialized)
           {
               Return (0x0F)
           }
           Name (ATKQ, Package (0x10)
           {
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones, 
               Ones
           })

 

EDIT: Also, I forgot to mention, after changing this the kexts wouldn't load anymore. So I went through the Info.plist of the driver and added this line PNP0c14 which is mine:

			<key>IONameMatch</key>
		<array>
			<string>PNP0C14</string>
			<string>pnp0c14</string>
			<string>PNP0c14</string>
		</array>

Link to comment
Share on other sites

EDIT: Also, I forgot to mention, after changing this the kexts wouldn't load anymore. So I went through the Info.plist of the driver and added this line PNP0c14 which is mine:

			<key>IONameMatch</key>
		 <array>
			 <string>PNP0C14</string>
			 <string>pnp0c14</string>
			 <string>PNP0c14</string>
		 </array>

 

Would have been simpler to put uppercase in your dsdt :(

 

put an ioregisteryexplorer dump with the driver loaded, I want to see the properties exposed

Link to comment
Share on other sites

Would have been simpler to put uppercase in your dsdt :(

 

put an ioregisteryexplorer dump with the driver loaded, I want to see the properties exposed

I know right? But like I said here, if I change that to uppercase it doesn't work anymore. Oh well go figure :P

 

Here's what you requested. Also my DSDT just because :)

bsides_Macbook_Pro.zipdsdt.dsl.zip

Link to comment
Share on other sites

I know right? But like I said here, if I change that to uppercase it doesn't work anymore. Oh well go figure :(

Maybe it because EisaId is missing.

 

Nevertheless, the driver can't works. There is a new driver in linux 3.0.4 "asus-nb-wmi.c" matching your hardware. I will try to integrate it later.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...