- Joined
- May 8, 2013
- Messages
- 13
- Motherboard
- Lenovo T470
- CPU
- i5-6300U
- Graphics
- HD 520
- Mac
- Mobile Phone
I could not get bluetooth to survive the sleep/wake cycle using the tunable sleep parameters in @RehabMan version. I did quite a bit of experimentation. @tluck version worked fine. I studied the TLUCK/Rehabman diffs and patched @RehabMan branch with 1 additional delay.
I boot with: bpr_probedelay=100 bpr_upgradedelay=200 bpr_initialdelay=300 bpr_postresetdelay=300
and have gone through hundreds of sleep wake cycles. This is with the following card from NewEgg.
Broadcom BCM94352Z NGFF M.2 WiFi WLAN Bluetooth 4.0 802.11ac up to 867 Mbps card 22*30mm
My diffs are:
t470-mbp:rehabman sjk$ git diff
diff --git a/BrcmPatchRAM/BrcmPatchRAM.cpp b/BrcmPatchRAM/BrcmPatchRAM.cpp
index e42d021..ac62db1 100644
--- a/BrcmPatchRAM/BrcmPatchRAM.cpp
+++ b/BrcmPatchRAM/BrcmPatchRAM.cpp
@@ -161,6 +161,9 @@ IOService* BrcmPatchRAM:robe(IOService *provider, SInt32 *probeScore)
}
#endif
+// tjl (sjk) port forward.
+ IOSleep(mUpgradeDelay);
+
clock_get_uptime(&start_time);
#ifndef NON_RESIDENT
@@ -220,6 +223,12 @@ IOService* BrcmPatchRAM:robe(IOService *provider, SInt32 *probeScore)
if (PE_parse_boot_argn("bpr_preresetdelay", &delay, sizeof delay))
mPreResetDelay = delay;
if (OSString* displayName = OSDynamicCast(OSString, getProperty(kDisplayName)))
provider->setProperty(kUSBProductString, displayName);
@@ -1208,7 +1217,8 @@ bool BrcmPatchRAM:erformUpgrade()
#ifdef DEBUG
DeviceState previousState = kUnknown;
#endif
-
mDeviceState = kInitialize;
diff --git a/BrcmPatchRAM/BrcmPatchRAM.h b/BrcmPatchRAM/BrcmPatchRAM.h
index ba901d8..d5b7b1a 100644
--- a/BrcmPatchRAM/BrcmPatchRAM.h
+++ b/BrcmPatchRAM/BrcmPatchRAM.h
@@ -81,6 +81,7 @@ private:
UInt32 mPreResetDelay;
UInt32 mPostResetDelay;
UInt32 mInitialDelay;
+ UInt32 mUpgradeDelay;
USBDeviceShim mDevice;
USBInterfaceShim mInterface;
I boot with: bpr_probedelay=100 bpr_upgradedelay=200 bpr_initialdelay=300 bpr_postresetdelay=300
and have gone through hundreds of sleep wake cycles. This is with the following card from NewEgg.
Broadcom BCM94352Z NGFF M.2 WiFi WLAN Bluetooth 4.0 802.11ac up to 867 Mbps card 22*30mm
My diffs are:
t470-mbp:rehabman sjk$ git diff
diff --git a/BrcmPatchRAM/BrcmPatchRAM.cpp b/BrcmPatchRAM/BrcmPatchRAM.cpp
index e42d021..ac62db1 100644
--- a/BrcmPatchRAM/BrcmPatchRAM.cpp
+++ b/BrcmPatchRAM/BrcmPatchRAM.cpp
@@ -161,6 +161,9 @@ IOService* BrcmPatchRAM:robe(IOService *provider, SInt32 *probeScore)
}
#endif
+// tjl (sjk) port forward.
+ IOSleep(mUpgradeDelay);
+
clock_get_uptime(&start_time);
#ifndef NON_RESIDENT
@@ -220,6 +223,12 @@ IOService* BrcmPatchRAM:robe(IOService *provider, SInt32 *probeScore)
if (PE_parse_boot_argn("bpr_preresetdelay", &delay, sizeof delay))
mPreResetDelay = delay;
- mUpgradeDelay = 0;
- if (OSNumber* upgradeDelay = OSDynamicCast(OSNumber, getProperty("UpgradeDelay")))
- mUpgradeDelay = upgradeDelay->unsigned32BitValue();
- if (PE_parse_boot_argn("bpr_upgradedelay", &delay, sizeof delay))
- mUpgradeDelay = delay;
if (OSString* displayName = OSDynamicCast(OSString, getProperty(kDisplayName)))
provider->setProperty(kUSBProductString, displayName);
@@ -1208,7 +1217,8 @@ bool BrcmPatchRAM:erformUpgrade()
#ifdef DEBUG
DeviceState previousState = kUnknown;
#endif
-
- // tjl (sjk) port forward.
- IOSleep(mUpgradeDelay);
mDeviceState = kInitialize;
diff --git a/BrcmPatchRAM/BrcmPatchRAM.h b/BrcmPatchRAM/BrcmPatchRAM.h
index ba901d8..d5b7b1a 100644
--- a/BrcmPatchRAM/BrcmPatchRAM.h
+++ b/BrcmPatchRAM/BrcmPatchRAM.h
@@ -81,6 +81,7 @@ private:
UInt32 mPreResetDelay;
UInt32 mPostResetDelay;
UInt32 mInitialDelay;
+ UInt32 mUpgradeDelay;
USBDeviceShim mDevice;
USBInterfaceShim mInterface;