This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Samsung devices problem with nRF52840-DK throughput example (SDK 15.3.0)

Hi,

I've install the throughput example (examples/ble_central_and_peripheral/experimental/ble_app_att_mtu_throughput) on an nRF52840-DK and I test it against all kind of phones to make sure the possible throughput is enough for my purposes.

I works fine against almost every Android phone except Samsung devices.

Works on:

  1. OnePlus 5T
  2. Xiaomi RedMi 8

Doesnt work against the following devices:

  1. Samsung Galaxy S6
  2. Samsung Galaxy Note 9
  3. Samsung Galaxy S10

Here is how I perform the test:

  1. I press "reset" button on the board and I get:
    [00:00:00.000,061] <info> app: ATT MTU example started.
    [00:00:00.000,061] <info> app: Press button 3 on the board connected to the PC.
    [00:00:00.000,061] <info> app: Press button 4 on other board.
    
  2. I click button 3 on the board and I get:
    [00:00:03.129,638] <info> app: This board will act as tester.
    [00:00:03.129,638] <info> app: Type 'config' to change the configuration parameters.
    [00:00:03.129,638] <info> app: You can use the Tab key to autocomplete your input.
    [00:00:03.129,638] <info> app: Type 'run' when you are ready to run the test.
    
  3. I write "run" and I get the following:
    [00:00:05.399,291] <info> app: Preparing the test.
    [00:00:05.399,291] <info> app: Starting advertising.
    [00:00:05.399,475] <info> app: Starting scanning.
    
  4. I open nRF Connect on a phone and I attempt connecting to "NORDIC_ATT_MTU" .. the following happens:
    a. On Samsung phones it opens a new tab on the app and fails to connect after a while ("disconnect" on upper right changes to "connect") and nRF Connect log says:
        
    Error 8 (0x8): GATT CONN TIMEOUT

        The board log shows the following:
        
    [00:00:24.527,038] <info> app: Connected as a peripheral.
    [00:00:24.527,099] <info> app: Discovering GATT database...
    [00:00:24.527,160] <info> app: Sending PHY Update, 2 Mbps.
    [00:00:24.584,472] <info> app: ATT MTU exchange completed. MTU set to 247 bytes.
    [00:00:24.714,965] <info> app: PHY update rejected. PHY set to 1 Mbps.
    

    b. On other devices it opens a new tab, connects to the board successfully and lets me enable notification to the proprietary service thus starting the test.
        The board log shows the following:
        
    [00:00:38.663,330] <info> app: Connected as a peripheral.
    [00:00:38.663,391] <info> app: Discovering GATT database...
    [00:00:38.663,452] <info> app: Sending PHY Update, 2 Mbps.
    [00:00:38.750,305] <info> app: ATT MTU exchange completed. MTU set to 247 bytes.
    [00:00:38.885,192] <info> app: Data length updated to 27 bytes.
    [00:00:39.285,766] <info> app: PHY update accepted. PHY set to 2 Mbps.
    [00:00:39.466,674] <info> app: PHY update accepted. PHY set to 2 Mbps.
    [00:00:39.825,012] <info> app: Connection interval updated: 0x6, 0x6.
    [00:00:39.973,876] <info> app: Connection interval updated: 0x24, 0x24.
    

What is causing the problem with Samsung devices ?

Is this fixable on the board side ? on the Samsung phone side ?
Is this a matter of changing settings in the Android ?

I've tested this with SDK 15.3.0 and SDK 16.0.0.
Got same results.

Thanks

Related