2013-02-07 Now I┬┤m quite certain I have something that works. The issue was that I added the wrong bluetooth address. How to locate the correct one is now available in this guide.
2013-02-04, Sorry for the confusion. Even though I can trace the API calls the remote still doesn┬┤t seem to go into sleep. Need more time to test.
UPDATE (again!) Turned out the latest 4.0.4 version seems to have a working power saving implementation - just as peterm write in May 2010. I used API Monitor to verify that the plugin accessed the functions SetSniffMode and CancelSniffMode available in WidcommSdk.dll.
-----------------------------------------------------
Target OS: Windows8 x64
Bluetooth in Windows XP compared to Windows8
In Windows8 Microsoft provides the base for the BT implementation, and third party vendors can extend it ÔÇô but the BT foundation is still Microsoft. So Widcomm/Broadcom no longer ship a full stack instead they have a profile pack which extends the functionality of the Microsoft stack. Therefore when working with your own profiles you use the standard Microsoft APIs. Whereas in Windows XP, you could choose either Microsoft or some other BT stack provider for the entire BT implementation.
Notes about Widcomm 5.1.0.1100 BT stack
- Released in 2006
- The 5.1.0.1100 version is known to be the last version that supports BT hardware from other manufactures than Widcomm.
- Support the BT Stereo Audio profile, and some less interesting BT profiles.
- Is initially locked down to only support certain hardware but can be unlocked by using a license patcher. I┬┤ve found four different versions of the license patcher: 1.7, 1.8, 1.9 and 2.0. Note that only patchers prior to version 2 support x64 based systems.
- The SetSniffMode function provided by the Widcomm 5.x API which the PS3 Remote can use via the EG plugin was removed from the first version of the SDK that officially supported Vista, which was version 6.0.
- Get hold of & modify the Widcomm 5.1.x driver package to suit your USB dongle. Hint: Google: +"Widcomm 5.1.0.1100" +guide
- Disable the Microsoft Bluetooth Stack (See guide in #1..)
- Get hold of 32bit editions of two files... Look in this cab archive available in the driver package Widcomm.Bluetooth.Software.Drivers.5.1.0.1100\Win32\Data1.cab for WidcommSdk.dll
and F54515_wbtapi.dll. Rename the later mentioned file to wbtapi.dll. Place both files in the C:\Windows\SysWOW64 folder. It may seem weird that 32bit drivers are located in a folder with ÔÇ£64ÔÇØ in the name but it is correct. - Install BT stack & pair remote. These drivers are not signed from the start so we need to disable ÔÇ£Driver Signature EnforcementÔÇØ to be able to install it:
- Mouse over the lower-left corner, then select: Settings > Change PC Settings > General > Advanced startup > Restart now .. > Troubleshoot > Advanced Options > Startup Options > Restart > Disable Driver Signature Enforcement.
- Now install the drivers according the guides mentioned earlier. Windows will prompt you about the lack of signatures, just click yes. It might even prompt you about ÔÇ£a digitally signed driver is requiredÔÇØ, but even though I got that message the drivers got installed properly.
- Apply license patch
- When done, you might have to reboot into the same disabled ÔÇ£Driver Signature EnforcementÔÇØ mode again, and then right-click the Bluetooth icon in the tray and select something in line with ÔÇ£start use BluetoothÔÇØ. This will load yet some more drivers.
- Now pair your PS3 remote.
- Enable "test signing" & self-sign some drivers. In the ÔÇ£Disabled Driver Signature EnforcementÔÇØ mode you can load your drivers as well, but the problem is that you manually have to do some clicking each time you want to enter this less restricted mode. A more permanent solution is to enable ÔÇ£Test SigningÔÇØ, and self-sign some drivers.
- Load Driver Signature Enforcement Overrider 1.3b (DSEO) with admin permissions, and self-sign the drivers listed below:
- Bluetooth USB dongle driver provided by the Widcomm 5.1.x package C:\windows\system32\drivers\btwusb.sys
- Bluetooth Bus Enumerator c:\windows\system32\drivers\btkrnl.sys
- Bluetooth Hands-free Audio & Bluetooth Stereo Audio C:\windows\system32\drivers\btaudio.sys
- Bluetooth LAN Access Server Driver C:\windows\system32\drivers\btwdndis.sys
- Bluetooth Virtual HID Keyboard Properties - required to load HID-compliant game controller C:\windows\system32\drivers\btwhid.sys
- Bluetooth Communications Port COM3 & COM4 C:\windows\system32\drivers\btport.sys
- In an elevated command prompt run: bcdedit.exe /set TESTSIGNING ON, and reboot
- You probably want to remove the watermarks on your desktop using a tool like i.e. Water Mark removal tool: My WCP Watermark Editor
- Load Driver Signature Enforcement Overrider 1.3b (DSEO) with admin permissions, and self-sign the drivers listed below:
- Configuring EG
- Install the latest version of the PS3 plugin available in this thread. To date version 4.0.4.
- Launch RegEdit, and browse to this location (note that "1&30ee4ad&0&201ffffffffff" might be something else in your case):
Look for REG_BINARY value BdAddr. Write down the string shown in the "data column". It should be something like: "34 C7 31 00 7C B5". And add ":" to it so you get this kind of format: "34:C7:31:00:7C:B5". In file EventGhost\plugins\PS3\__init__.py, replace the bluetooth address listed at row: "BD_ADDR = "00:21:4f
Code: Select all
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\{95C7A0A0-3094-11D7-A202-00508B9D7D5A}\HID_KEYBOARD\1&30ee4ad&0&201ffffffffff\Device Parameters]5a:85" # XXX: auto detect" with the one you just built.
- Add these three macros to your configuration
Code: Select all
<?xml version="1.0" encoding="UTF-8" ?> <EventGhost Version="1610"> <Folder Name="PS3 remote" Expanded="True"> <Macro Name="Get battery level" Expanded="True"> <Action> HIDPS32.GetBatteryLevel() </Action> <Action Name="Show OSD: battery level: {int(eg.result)}"> EventGhost.ShowOSD(u'battery level: {int(eg.result)}', u'0;-37;0;0;0;700;0;0;0;0;3;2;1;34;Arial', (128, 255, 128), (0, 0, 0), 0, (0, 0), 0, 3.0, True) </Action> </Macro> <Macro Name='Set "Save power" sleep timer' Expanded="True"> <Event Name="PS3.Button.*" /> <Action> Timer.TimerAction(u'trigger PS3 remote sleep', 0, 1, 5.0, u'PS3.hibernate', False, True, 1, u'00:00:00') </Action> </Macro> <Macro Name="Save power" Expanded="True"> <Event Name="Timer.PS3.hibernate" /> <Action> HIDPS32.SavePower() </Action> </Macro> </Folder> </EventGhost>
- That should be it
