[Solved] BLEController Sketch Not Working with BLEController App using duo


#1

Hi guys,

I’ve setup the duo to properly take in arudino sketches and updated the firmware to be compatible with 0.3.2 of the board in arduino as well as the firmware itself. After uploading the BLEController sketch to the duo, I tried communicating with my custom app to the duo and it receives the messages from the app but the app doesn’t receive messages back from the duo.

Likewise, when using the provided BLEController app from the app store, it scans the duo but upon connection it displays “Error: No response from the BLE Controller sketch”, which is consistent with my custom app as well.

Is there something wrong with the

memcpy(characteristic2_data, buf_tx, 4);
ble.sendNotify(character2_handle, characteristic2_data, 4);   

sendNotify function or is something else going on?

The arduino console outputl log:

BLEController demo.
BLE start advertising.
Device connected!
value: 56  
Disconnected.

Device: iPhone X
iOS: 11.4
Arduino RedBear Duo Board: v0.3.2
Firmware: v0.3.2
OS: OSX

Thanks for any insights people can provide.


#2

Similarly, using the SimpleChat example, on the very first upload and execution, the phone would only receive the first message from the serial console. Afterwards all messages are not received by the phone but the phone’s messages are received by the duo. Only unplugging and replugging the duo would allow for the first message to be received again by the phone, but afterwards following messages from duo to phone are not received.


#3

After swimming through the docs on github, it tried changing the sample code from all sendNotify to all sendIndicate and all the examples and my custom app works now. What is the inherent difference between the two? The docs are just a copy and paste duplicate description so it’s weird why one would work while not the other. It seems indications are not as efficient as notifications, but I’m thinking if there is something wrong with the base sendNotify that is causing it to not work in both iOS and Android.

Either way I hope this solves problem for others struggling with the same situation! Back to tinkering


#4

I am very agree with your descriptions. My old project meet the same problems as you said. Now it does not work. I hope your following answer can save it.


#5

Differing from notification, the indication expects a response from the central. Diving deeper into the BLE driver, it shouldn’t happen that sending notification failed while sending indication succeeded. Just make sure the notification has been enabled before calling the sendNotify() API: https://github.com/redbear/STM32-Arduino/blob/master/arduino/libraries/RedBear_Duo/examples/03.BLE/SimpleBLEPeripheral/SimpleBLEPeripheral.ino#L256. Also, you can have it a try using the SimpleBLEPeripheral example working with the LightBlue App to see whether the notification works or not.

Best regards,
Guohui


#6

It’s odd enough. The SimpleBLEPeripheral example didn’t send timestamp to iPhone periodically, but it did using the sendIndicate API.


#7

I have found the issue. Will release a new version of system firmware by the end of today.

Update: You can now update the system firmware from the Arduino IDE or download the firmware images and upload them via dfu-util.

Cheer!


[Solved] New Redbear Duo does not work the SimpleChat Demo
#8

Happily! I upgrade to firmware 0.3.3. The sendNotify function works well now.


[Solved] New Redbear Duo does not work the SimpleChat Demo