This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2564: Running ISPP demo on Windows and iOS

Part Number: CC2564

Hi,

Using the ISPP demo on SDK version 4.2.1.1, I am unable to get this working on Windows 10.

I read on the related post that this is a known issue caused by Windows 10 only considering the first UUID in the sequence, and so I tried implementing ISPP_Register_Generic_SDP_Record myself to reorder those UUIDs using the SDP_Create_Service_Record and SDP_Add_Attribute APIs.

I have now a solution which works on: Linux, Android, MAC, but *not* iOS. With this change, iOS reports that the device is not supported. If I then reorder the UUIDs back to the same way that ISPP_Register_Generic_SDP_Record does, this does not help, I still get the same error on iOS.

So I'm wondering if there's any advice on how to get this sample running on Windows and iOS? Maybe there's another step somewhere else that I am missing? Or maybe ISPP_Register_Generic_SDP_Record is performing some action that I am not?

My SDP table implementation according to sdptool in Linux:

Attribute Identifier : 0x0 - ServiceRecordHandle
  Integer : 0x10000
Attribute Identifier : 0x1 - ServiceClassIDList
  Data Sequence
    UUID16 : 0x1101 - SerialPort
    UUID128 : 0x00000000-deca-fade-deca-deafdeca-cafe
Attribute Identifier : 0x4 - ProtocolDescriptorList
  Data Sequence
    Data Sequence
      UUID16 : 0x0100 - L2CAP
    Data Sequence
      UUID16 : 0x0003 - RFCOMM
      Channel/Port (Integer) : 0x1
Attribute Identifier : 0x100
  Data : 53 65 72 69 61 6c 20 50 6f 72 74 20 53 65 72 76 65 72 20 50 6f 72 74 20 31 00

Christian

  • Christian,

     

    One of our experts has been OOO, so sorry for the delay.  Are you using iSPP demo with Windows10? You should use SPP demo. We have customers successfully interfacing to a Windows10 SPP. There was an issue fixed a while back in the application by registering SPP service in the Service descriptors. Please, check the below thread..

     

    https://e2e.ti.com/support/wireless-connectivity/bluetooth/f/538/p/712063/2657577#pi320995=1

    I'll get additional eyes on this too.

    Thanks,

    Travis

  • Hi Travis,

    Thanks for the response.

    The SPP demo works fine for us. We need to use the iSPP demo as we are talking to all of: Linux, OSX, iOS, Windows 10, and Android with our application.

    Kind regards,
    Christian

  • In fact, by reordering the UUIDs as described in my initial post, I can get the ISPP demo to work on Windows 10. It just then doesn't work on iOS.... So we really need this to be working on all platforms.

    Kind regards,

    Christian

  • Hi Christian,

    I am working on reproducing this issue with the iSPP demo and IOS, and wanted some clarification on your current setup.

    1. How are you handling the MFi authentication? By default, the iSPP demo code expects there to be a MFi boosterpack that it can interface with when needed. Do you have that MFi hardware connected?

    2. What is the program output that you get when you try to connect to an IOS device? Seeing the uart output of the example will help me understand what might be going wrong on your setup

    3. What app are you using on the IOS side to test the iSPP demo? Is it the EADemo app that is suggested in the user's guide, or some other app?

    Regards,

    Michael

  • Hi Michael,

    I have the iSPP demo working with iOS and MAC with no changes. I am using MFI hardware to do this.

    The issue is that the iSPP demo *does not* work with Windows 10 out of the box.

    If I comment out the following line:

      ret_val = ISPP_Register_Generic_SDP_Record(BluetoothStackID, SerialPortID, ServiceName, &SPPServerSDPHandle);

    and replace it with my own SDP record which reorders the UUIDs so the serial port profile UUID comes first in the sequence in the SDP record, then it works on Windows 10, but iOS stops working.

    I have a workaroud now, where I open two ports and use the builtin SDP record generation for one port, and manually create the SDP record for the other. This seems to work so far.

    Christian