Contribute
Register

[SOLVED] NVME SSD slower & non available Bluetooth after sleep [ThinkPad T470]

Status
Not open for further replies.
I also have two USB entries for Bluetooth in my system report if it's not working.

It is typical when BrcmPatchRAM deadlocks trying to push firmware.
Experiment with different delays.
Happy hunting.
 
Ok, good to know!
Thank you!

Do you have any idea regarding my SSD?
 
Do you have any idea regarding my SSD?

Samsung PM961 is a poor choice. Many problems with that device reported here...
 
I tried a lot of different values for the timing, but none worked for more than 4-5 sleep/wake cycles.

I solved it using Tlucks fork now, which works perfectly!
 
I studied the TLUCK/Rehabman diffs and pathed @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::probe(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::probe(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::performUpgrade()
#ifdef DEBUG
DeviceState previousState = kUnknown;
#endif
-
  • // tjl (sjk) port forward.
  • IOSleep(mUpgradeDelay);
IOLockLock(mCompletionLock);
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;
 
Status
Not open for further replies.
Back
Top