We have observed consistently that when our App firmware is built on Windows SDK 2.2.0 (and 2.2.1) there is a tendency to get unexplained disconnects, but when the same App source is built on a Mac OSx platform with SDK 2.2.0 we do not get these unexplained disconnects.. none.
Can someone explain why the behavior is different on Mac and Windows? Is there some fix that has been made in the Mac version of the BLE Stack that can be retrofitted to the Windows platform?
Also, what is the ETA for SDK 2.2.1 on Mac OSx?
As ehoffman has noted, we have been consistently seeing differences in disconnect/reconnect behaviour and battery life between the two SDK's. The Mac SDK 2.2.0 (Dec 2014) behaves differently from both the Win SDK 2.2.0 (July 2014) and the Win SDK 2.2.1.
We did bench-top tests where a fresh battery in a coin cell holder is soldered to the board. The iPhone is kept right next to the board for the entire duration of the test. I ran the battery tests using the same hardware but having programmed the board the first time using the Mac SDK 2.2.0 and then subsequently after the test with the Win SDK 2.2.1
Test 1: Board programmed with Mac SDK 2.2.0
Disconnects/Reconnects: 0 , Resets: 1, Runtime: 79 hrs
Test 2, Same Board then reprogrammed with the Win SDK 2.2.1,
Disconnects/Reconnects: 138 , Resets: 1, Runtime: 69 hrs
Given that everything is similar between the two tests for the board, I would put up the Disconnect/Reconnects as a candidate for the 10 hour difference seen in the battery life.
The Disconnects/Reconnects are when the board quickly disconnects and within seconds reconnects with the app. The reset is where it actually does a complete reboot so there is a reset of the DataIndex which goes back to 0. I have seen this phenomenon consistently now across different boards ruling our hardware impacts. There seems to be no viable explanation that we can think of for the disconnects/reconnects, but obviously it is costing us in terms of battery life.
The one disadvantage to the the Mac SDK 2.2.0 is if we do a real world test where it often happens that the phone is away from the patch and misses the data transfer, the patch resets consistently, reseting the DataIndex back to 0. It is supposed to at that point write the data to the EEPROM which it does do but almost always resets. However in contrast, in the Windows SDK 2.2.1, it behaves quite well during these instances where it does not reset, maintains the DataIndex and writes to the EEPROM.
I will say this that I have built the SDK 2.2.1 using the (.7z) version in my Mac Eclipse IDE and I see the same behavior of disconnects when I build the firmware so it is not a question of Mac vs Win, it is more a question of the SDK 2.2.0 vs 2.2.1.
Any thoughts or pointers would be greatly appreciated.
Checked with the developers and it should not matter whether or not the program is compiled on Windows or OSX.
However, the patches applied to the December version of the SDK as compared to the one released in July of the same year will certainly be different.
If you run a diff/compare against the .7z download of each, then you should be able to see the differences.
Regarding the battery life difference and reconnections, they will probably need to know what application you are using and what it does in order to map which potential patch upgrade is causing the difference in behavior.
Thanks mwf_mmfae ! Still trying to understand what it is between the two, the diff does show differences but nothing specific that is coming across.
We have a custom board with the BCM20736S running a modified heart_rate_monitor. We have a fine timer interval of 200 msec, we are collecting the data from the ADC at 5hz and transmitting it to the iOS app in a streaming mode. If the transmission breaks we buffer data in RAM and write to an i2c bus Atmel 512kbit EEPROM.
ehoffman has earlier identified that the reboots were associated with high current draws but by changing the supervisor timeout to a lower number its been stabilized for both SDK 2.2.0 and 2.2.1. The shorter timeout prevents the connection event currents from reaching too high.
The rapid disconnect/reconnects that we see with 2.2.1 as ehoffman noted before are associated with the timeout disconnect (code 08).
Hi Eric, we've checked in with the developers again, and there have been other similar issues reported. This will be fixed in SDK 2.2.2, which should be out in around 30-45 days.
Is there a release date set for SDK 2.2.2. Our production is stalled right now and waiting for SDK 2.2.2 since we are hoping it will resolve our issues with reboots and disconnects.
There is not a confirmed release date for SDK 2.2.2
Re "Fixed in SDK 2.2.2, .. 30-45 days.." That would be awesome! Thanks Broadcom!
WICED-Smart-SDK-2.2.2-IDE-Installer.zip for MAC/OSX has been released.
Important installation note related to OSX/MAC and the Trace Plugin:
Please follow the steps below to change the sudo configuration for the IDE to install correctly.
If you have installed the IDE without changing the below, uninstall, go through the following and reinstall the IDE.
1. Open the Terminal on your Mac
Command + Space
2. Type the following in the Terminal
Change this line FROM:
%admin ALL=(ALL) ALL
%admin ALL=(ALL) NOPASSWD: ALL
3. Write and Quit
Once you have gone through the above procedure and installed the IDE, you should check the trace plugin to verify the IDE has installed correctly.
Please check the WICED Smart Quick Start Guide (SDK 2.x and TAG3 Board) for information on how to view traces from your TAG3 evaluation board.
"Unidentified Developer" issue when installing this SDK on MAC/OSX:
Go to System Preferences -> Security & Privacy -> General tab
and you will see a message "WICED-Smart-SDK-2.2.2-IDE-Installer" was blocked from opening because it is not from an identified developer
-> Click on "Open Anyway"