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.

CC254x OAD Service not available

Other Parts Discussed in Thread: CC2541

Hi,

 

I work on CC2541, i would like to add the service "firmware update" to use with the Android application "BLE Device monitor" (V 1.12).

I use the program BLE Device monitor (V 1.2) on my computer and it works, but not with Android application.

 

In my software (for the CC2541), I added "Connection Control Service" as it is in the SensorTag software (V 1.4).

CcService_AddService( GATT_ALL_SERVICES );
...
VOID CcService_RegisterAppCBs( &sensorTag_ccCBs );
VOID GAPRole_RegisterAppCBs( &paramUpdateCB );

That's all and the Android application "BLE Device Monitor" can see this service.

 

I don't know why it doesn't work, maybe I have forgot to set something...

 

Thanks for yours Answers.

Regards

  • Hi,

    Connection control service doesn't have anything to do with OAD, it's merely a service to workaround limitations on iOS devices. If you want to implement OAD, I suggest you look at the SensorTag sample application. Also, have a look at this guide.

    Another point is that i'm not sure BLE Device Monitor for Android supports OAD yet, although I could be wrong.

    Best Regards

    Joakim

  • Hi,

    Thanks for your answer.

    I followed the Guide, but it didn't work.
    I don't know why.

    With my Sensor-Tag (V 1.4) and Nexus 7, when I use BLE Device Monotor (V 1.2) I can use OAD Service.

    Do you know the condition for accepting OAD Service by the application "BLE Device Monitor" in Android ?
    May be can I contact the developer of this application ?

    Best Regards.

    Guillaume.

  • I was in your situation some months ago.

    The BLE Device Monitor app looks for an OAD service with UUID f000ffc0-0451-4000-b000-000000000000 plus a Connection Control Service with UUID f000ccc0-0451-4000-b000-000000000000.

    Those are the conditions to let you enter the Firmware update screen.

  • Hi,

    Thanks Ivan for your answer.

    What did you do to fix this problem ?
    Because for me I see just UUID CCC0 not f000ccc0-0451-4000-b000-000000000000.

    When I show the characteristics, I can see 0000CCC0-0000-1000-8000-002005F9B34FB, Connection Parameters CCC1, Request Connection Parameters CCC2 and Disconnect Request CCC3.
    In ccservice.h this is write :

    // Service UUID
    #define CCSERVICE_SERV_UUID 0xCCC0
    #define CCSERVICE_CHAR1_UUID 0xCCC1 // F000CCC1-0451-4000-B000-00000000-0000
    #define CCSERVICE_CHAR2_UUID 0xCCC2
    #define CCSERVICE_CHAR3_UUID 0xCCC3

    I didn't change this file neither ccservice.c.
    I did similar the software SensorTag.

    Regards.

    Guillaume.

  • Hi,
    dont know whether you solve it or not. I just encountered exactly same problem as you recently and solved it sucessfully.
    the reason why the uuid looks totally different from the official one is at "ccservice.c"
    change the way uuid produced by following steps
    ccServiceServUUID:
    TI_UUID ->TI_BASE_UUID_128
    TI_UUID_SIZE->ATT_UUID_SIZE

    hope it also works for you
  • Hi, thanks for answer.

    I wastesting your answer.

    CONST uint8 ccServiceServUUID[TI_UUID_SIZE] =
    {
      TI_UUID(CCSERVICE_SERV_UUID),
    };
    ...
    static CONST gattAttrType_t ccServiceService = { TI_UUID_SIZE, ccServiceServUUID };

    to

    CONST uint8 ccServiceServUUID[ATT_UUID_SIZE] =
    {
      TI_BASE_UUID_128(CCSERVICE_SERV_UUID),
    };
    ...
    static CONST gattAttrType_t ccServiceService = { ATT_UUID_SIZE, ccServiceServUUID };
    

    But I have the same problem.

    The UUID received is reversed, I use the application Device Monitor for Android 4.4.

    I took a screenshot for being more understandable.

    App Device Monitor for Android 4.4, connection Sensortag : 

    App Device Monitor for Android 4.4, connection my device CC2541 : 

    The penultimate line should be the Connection Control Service.

    Regards.

    Guillaume.

  • Plz add "static" before CONST 

    and use "GATT_SERVICE" as mask code

  • Sorry for "static" before CONST...

    Now the UUID is common sense, but the value is always bad..
    I have F0000001-0451-4000-B000-000000000000
    With  GATT_SERVICE or CCSERVICE_SERV_UUID

    I checked value :

    #define GATT_SERVICE 0x00000001

    and

    #define CCSERVICE_SERV_UUID 0xCCC0

    Thanks for your help.

  • Sigh, then i have no idea what situation you in.

    anyway you can do oad withou ccs by setting the connection interval to minimun.

  • Hi,

    You need to apply GATT_TI_UUID_128_BIT parametr. (by default Using 16-bit UUID, check st_util.h)

  • Hi,

    Thanks for answer.

    Explain your work to show this service :).
    But when I would like to do "Firmware update" this message is displayed: "OAD service not available on this device"

    I don't know why and I had added OAD Service and Connection Control Service.
    I need to add another service, or what I need update in my software ?