I recently purchased an Asus 1215n equipped with Windows 7 64bit. The first thing I did was upgrade to Windows 8 since Microsoft is offering a promotional price of $15 until January 2013. Doing so led to some Hotkey driver compatibility issues though (missing Asus ACPI driver error + no working hotkeys), which were a pain to resolve to say the least. I was unable to find a solution on the web anywhere (one that worked anyways), so I had to figure things out myself. I’m posting my solution here in the hopes that it will be useful to others doing an upgrade to windows 8. I imagine that the solution would also apply to other 1215x models (1215b for example) that came with Windows 7 64bit. Im not sure if this solution is applicable to 32bit Windows 7 versions, though you should definitely still give it a try.
After installing windows 8 and logging in for the first time an error message window popped up:
“Missing Asus ACPI Driver.”
Closing the error window would cause it to open again. Also, none of the hotkeys (Fn+F11, Fn+F12, etc.) were working. The problem turned out to be with Asus HotkeyService (application + drivers) not being compatible with windows 8, nor with the synaptics touchpad driver.
Following the exact steps I list below should resolve the issue. For a deeper understanding of the root cause of the problem, how the hotkey service works, and how I came to this solution please refer to the remaining sections. If my solution does not work for you then at least perhaps the other information I provide can help you find your own solution.
1. Download the latest Asus ATK driver (includes KBFilter and HotkeyService) for Windows 7 (selecting 64bit or 32bit according to your machine) from the Asus support website:http://support.asus….guage=en&type=1
At the time of writing they are:
– KBFilter v22.214.171.124
– HotkeyService v1.37
2. Download the latest synaptics driver from the synaptics driver site: http://www.synaptics…sources/drivers
Direct link: http://drivers.synap…in7-64_Win8.zip
3. Uninstall the Asus HotkeyService using the windows “Programs and Features” tool (access the tool by pressing WinKey+x and selecting it from the menu).
4. Uninstall the Synaptics touchpad driver and software using the windows “Programs and Features” tool.
5. Restart the computer (if u havn’t already). Time to install HotkeyService:
– Using File Explorer, navigate to your downloads folder and locate the KBFilter.zip archive. Extract all files.
– Open the extracted KBFilter folder. Inside, open the Win764 folder (64 bit) or the Win7 folder (32 bit), according to your machine. Inside, open the HotkeyService folder.
– Start the installation by double clicking on HotkeyService_1.37.exe (your version number may differ).
– After installation completes, restart the computer.
Note: I am 99% certain that installing the KBFilter driver/software is not necessary (or even possible for that matter) since windows 8 already includes the same version of the driver (kbfiltr.sys v126.96.36.199), albeit with a newer creation date time stamp. However, if the solution steps outlined here fail to solve your hotkey problem, then you may wish to try installing this KBFilter driver/software just in case that solves the problem for some reason.
6. Now we need to set the compatibility mode for HotkeyService.exe to “Windows 7”. Do it like so:
– Using File Explorer, navigate to “C:Program Files (x86)AsusHotkeyService” (on 32 bit machines I think it will be “C:Program FilesAsusHotkeyService”).
– Right click on HotkeyService.exe and select Properties.
– At the top of the properties window select the Compatibility tab, then click the “Change settings for all users” button at the bottom.
– In the new properties window that opens, set the compatibility mode to “Windows 7” and click “OK” to apply settings and close the window. Now click “OK” on the first properties window to close it as well.
– Restart the computer. When you log into windows now the error message window should no longer pop up, however the mouse pointer icon will repeatedly change to the loading animation (spinning blue thing), and the hotkeys should still not be working yet. If, however, the error message window pops up again (i.e. “Missing Asus ACPI Driver.”), you may have to set the compatibility mode of the “C:WindowsSystem32AsusSender.exe” executable to “Windows 7” as well (in the same manner as was done for HotkeyService.exe).
Note: If you are still getting the error message window popup, then you may want to try setting the compatibility mode of all the executables for the hotkey related services to “Windows 7” (refer to section “More Information” further down this post to see the full list of hotkey related services and the locations of their respective executables). Also, make sureyou are setting the compatibility mode for all users by using the properties window that opens when you click the “Change settings for all users” button:. Otherwise, the settings will only apply to your own user account, and when the SYSTEM account starts the respective process automatically (which is exactly what it will be doing) it will do so using the default settings and the process will not start in compatibility mode!!!
7. Time to install the synaptics driver. Do it like so:
– Using File Explorer, navigate to your downloads folder and locate the Synaptics zip archive. Extract all files.
– Open the extracted Synaptics folder. Start the installation by double clicking on Setup.exe.
– After installation completes, restart the computer.
8. You’re done! That’s it. No need to change compatibility modes for the synaptics driver. If all went well then your hotkeys should be working now and there should be no more error messages. If the solution didn’t work for you then you may wish to read the rest of this post, hopefully gaining some useful information and insight to help you out.
Through all of my time spent on trouble shooting this hotkey issue this is what I’ve learned.
Note: The file paths I state here are for a 64 bit machine. I imagine that they would differ for a 32 bit machine.
There are actually 4 services (background processes) responsible in one way or another for making the hotkeys work:
They are all located in “C:Program Files (x86)AsusHotkeyService”. There is also a copy of AsusService.exe located in “C:WindowsSysWOW64”, and there are copies of AsusSender.exe located in “C:WindowsSysWOW64” and “C:Windowssystem32”. Below is what I’ve learned about each service.
AsusService.exe and AsusSender.exe:
AsusService.exe is installed as an actual windows service appearing under the “services” tab in Task Manager, as well as under the windows services utility. It can be started and stopped like any windows service. This service seems to act like some sort of a manager for other Asus services. As far as I can tell though, its only function is to launch other Asus Services (My information here is based on what I have seen in Task Manager after performing some basic experiments). Perhaps it has other functions that are not as apparent though, or that I just havn’t witnessed yet.
AsusService launches other Asus services by somehow reading launch requests from AsusSender. For example, when you login to windows there are several Asus services that start by default (CapsHook utility, Super Hybrid Engine, Asus Live Update, Hotkey Service, and HotKeyMon). These are all started by the AsusService after a request is sent by AsusSender. This is how its done (using the CapsHook utility as an example):
- After you login, SYSTEM issues the following command: AsusSender “C:Program Files (x86)AsusCapsHookCapsHook.exe”
- This launches the AsusSender.exe process (from the executable located at “C:Windowssystem32AsusService.exe”) with one command line argument (filepath of the service to be started; In this case, the CapsHook.exe service).
- The AsusSender.exe process starts execution and is almost immediately detected by AsusService.
- AsusService recieves the filepath information from AsusSender and performs whatever other exchanges are supposed to happen between the services.
- AsusSender.exe process ends execution and closes (his job is done).
- AsusService launches the service at the filepath provided (in this case: “C:Program Files (x86)AsusCapsHookCapsHook.exe”).
Note: For some reason entering and executing the same command (AsusSender <filepath>) yourself manually in either command prompt or in the windows “Run” utility does not work! My guess is that the command only works when executed by the SYSTEM user account.
The way I verified this behaviour was through a very simple experiment. I somehow figured out that if I end the HotkeyService.exe process while the HotKeyMon.exe process is still running, HotKeyMon will use AsusSender in exactly this way to ask AsusService to restart HotkeyService.exe. So I performed the following experiment:
- AsusService, HotkeyService, and HotKeyMon were all running and could be seen in Task Manager.
- I manually ended the process for AsusService. Now there was nothing to respond to AsusSender.
- I manually ended the HotkeyService process. Almost immediately AsusSender processes started appearing in Task Manager. It seems that HotKeyMon would start a new AsusSender process about every 3 seconds, and was going to continue to do so until it saw that HotkeyService was running again.
- The total number of AsusSender processes present in TaskManager kept increasing up to a maximum of 4, after which the total number began to oscillate between 3 and 4. It seems that each AsusSender process has some sort of timeout value, that once reached causes the process to quit.
- Ending the HotKeyMon process confirmed this, because after doing so the AsusSender processes began to disappear one by one from the Task Manager “Processes” tab as they each expired their timer and quit.
- Restarting HotKeyMon caused the AsusSender processes to start being launched again, and I could see them populating the Task Manager “Processes” tab again.
- I restarted the AsusService service and saw the AsusService process appear in Task Manager.
- Immediately after, all the AsusSender processes disappeared and the HotkeyService process appeared.
The way I know that AsusSender is used to start various Asus services at login is because I can see in Task Manager under the Startup tab there are 5 entries there for AsusSender. At first I thought this was some sort of registry error that occurred when I upgraded windows, but after I learned how AsusSender is used in the above mentioned situation I thought that these entries must represent SYSTEM calls to AsusSender with different command line args. Unfortunately, Task Manager does not give information on what each of the command line args are. Searching through windows registry values however, I found entries such as this one that is for the “Super Hybrid Engine” service:
Location in registry HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionRun
Data AsusSender.exe C:Program Files (x86)ASUSSHESuperHybridEngine.exe
There were equivalent entries for each of the other 4 services being started at login. The other 4 services were:
CapsHook utility (C:Program Files (x86)AsusCapsHookCapsHook.exe)
Asus Live Update (C:Program Files (x86)AsusLiveUpdateLiveUpdate.exe)
Hotkey Service (C:Program Files (x86)AsusHotkeyServiceHotkeyService.exe)
HotKeyMon (C:Program Files (x86)AsusHotkeyServiceHotKeyMon.exe)
So now I was sure that AsusSender is being used at login/startup to ask AsusService to start these various services. Disabling a few of the AsusSender startup items in Task Manager’s Startup tab confirmed this, because next time I logged in I saw that some of these services were not running now (because they never started). But why is AsusSender + AsusService being used to start services in this way? I don’t know. I don’t know why any one service can’t just simply be started directly by any one other service.
HotkeyService.exe and HotKeyMon.exe:
Interestingly, it seems that only HotkeyService.exe is responsible for handling the hotkeys and their functions. You can verify this by ending the HotKeyMon.exe service process and you will see that the hotkeys will still work fine. So it appears that HotKeyMon is another manager type service of some sort (like AsusService), and the only function I have seen it perform directly is to monitor whether or not HotkeyService.exe is running. If HotkeyService is not running, HotKeyMon will send an AsusSender request to AsusService to restart HotkeyService (I showed this in the previous section in my experiment). Maybe I am missing something, but to me the whole system seems bloated and unnecessarily complex.
HotkeyService.exe is incompatible in its default form with windows 8. This is what causes the “Missing Asus ACPI Driver” error message to appear when the service is started. Launching the service in compatibility mode for Windows 7 seems to resolve this though. I decided to try this because of some other solutions I had read on the internet which did similar things. Probably the problem is as simple as HotkeyService looking for the wrong driver file (driver name changed on windows 8) or looking in the wrong location (driver file location changed on windows 8). Using windows 7 compatibility must somehow redirect HotkeyService’s ACPI driver request to the correct location/filename on windows 8. Unfortunately, at least on my machine, this only resolves the problem of the missing ACPI driver. It does not completely resolve the issue, as afterwards HotkeyService will continuously start, crash, and restart, and the hotkeys will still not work.
The reason for this turned out to be (of all things!) the synaptics touchpad driver and/or services. This was really hard to figure out… This is how I did eventually realize it out though. Turns out HotkeyService generates a log file (C:Users<account name>AppDataLocalTempHS.log). For some reason though, the log file wasn’t getting generated when HotkeyService was being automatically started at windows login. In order to get the logfile to generate I had to manually start HotkeyService by double-clicking the executable (C:Program Files (x86)AsusHotkeyServiceHotkeyService.exe). Once I got a log file this is what was recorded inside:
11-25-2012 02:51:51:791 Get Nvidia Optimus Driver!
11-25-2012 02:51:53:273 Get WLAN Device!
11-25-2012 02:51:53:320 Get BT Device!
11-25-2012 02:51:53:320 Get 3G Device exist or not from Registry!
11-25-2012 02:51:53:320 No Get 3G Device!
11-25-2012 02:51:53:507 Display Mode = 5
11-25-2012 02:51:53:601 Enable KBFilter Success!
11-25-2012 02:51:53:679 Could not obtain a Synaptics API object.
As you can see, the last message HotkeyService generates before crashing/quitting is “Could not obtain a Synaptics API object”. So I figured the problem here must be something with the touchpad drivers/services. It may seem odd that HotkeyService requires some sort of communication with the touchpad, but it makes sense really since one of the hotkeys is to enable/disable the touchpad (Fn+F9). Without properly being able to interface with the touchpad this hotkey would not work. Unfortunately, simply running the touchpad software in compatibility mode for “Windows 7” does not resolve the issue in this case. I guess somehow the software + drivers are functioning completely differently under Windows 8. Updating the synaptics drivers/software with the latest Asus update for windows 7 64bit did not work either. However, getting the latest update from the synaptics website did work.
Note: Interestingly, if you uninstall the Synaptics device and its drivers all together, HotkeyService will cause an error messege window to pop up at login, stating something along the lines of (I can’t remember precisely): “Synaptics device drivers not present. Touchpad hotkey will be non functional”. After dismissing this message the hotkeys will all work fine except for Fn+F9 (Touchpad Enable/Disable). I stumbled upon this when I uninstalled my synaptics drivers/software in the process of updating them.