12 Replies Latest reply on Apr 15, 2015 11:32 AM by userc_2618 Branched from an earlier discussion.

    How to lock Tx on a particular channel? (Con't)

      Hi BCM support,

       

      As a follow on to the thread here: How to lock Tx on a particular channel? (Con't)

       

      I used the below approach for following tests:

       

      a) Modulated test:

          * call blecm_StartTransmitterTest() on channel 0(2404-2406MHz), packet length of 20bytes and packetType = 0x7(01010101)

          * We expected the frequency to get locked down to channel 0.

          * But in the spectrum analyzer we saw the frequency hopping

       

      b) Unmodulated test:

          * blecm_EnableUnmodulatedTxCarrierFrequencyTest() on 2404MHz at power level +4dB(I think stack ceils it to +3dB internally)

          * We could see unwanted noise in frequencies other than desired above.

       

      Can you please let us know if this is the right way to execute both of these tests for FCC?

       

      Regards,

      Subash

        • 1. Re: How to lock Tx on a particular channel? (Con't)
          MichaelF_56

          Are you planning on leveraging Broadcom's existing regulatory per the guidelines provided here: Broadcom CYW2073XS SiP Module Regulatory Approvals

           

          Specific to FCC: FCC Certification Flow for Broadcom module products

           

          I ask because most customers leverage the existing regulatory, so we have little knowledge internally of how the specific regulatory tests themselves are conducted.

           

          userc_2831 FlSa_2131931

          • 2. Re: How to lock Tx on a particular channel? (Con't)
            BoonT_56

            Here is another good write up in case you want to verify some of these RF parameters yourself.

             

            BLE RF Testing Setup Procedures

            • 3. Re: How to lock Tx on a particular channel? (Con't)

              We are going to leverage FCC 15-b from BCM approval. But we also need to run FCC 15-C on our product. Do you think BCM already has regulatory approval for this? If so, then how can we leverage it?

              • 4. Re: How to lock Tx on a particular channel? (Con't)
                MichaelF_56

                Per this thread, Re: Europe and Canada approval for BCM20732S, the following FCC 15-B and 15-C tests need to be completed when leveraging the regulatory we have completed for the SIP module:

                 

                • FCC Part B 15.109; (spurious emission)
                • FCC Part C 15.207;  (transmitter test)
                • FCC Part C 15.247; (transmitter test)

                 

                I had verified the information in this thread earlier with our regulatory team, so it's correct.

                 

                Does this agree with the direction provided by the FCC accredited Test house you are working with?

                 

                In addition, the document below should be in the regulatory documents that the local Broadcom Rep (RF Associates) provided to you.

                 

                FlSa_2131931

                 

                FCC-15C.png

                • 5. Re: How to lock Tx on a particular channel? (Con't)

                  Hi mwf_mmfae,

                   

                  Thanks for that detailed explanation. From your email (and what our test lab has asked us to test) this is the summary of what I understood:

                   

                  a) EN 300328 (RSE) - We will leverage Broadcom approval - no need to retest

                  b) EN 301489-1/-17 -  We will run system level test only

                  c) FCC Part B 15.109 - We need to retest

                  d) FCC Part C 15.207 -  We need to retest

                  e) FCC Part C 15.247 - We need to retest

                   

                  The link BLE RF Testing Setup Procedures suggests running these tests using MBT. For using MBT, device needs to have access to HCI interface. Our final product doesn't have HCI(through debug UART) interface exposed. When I had inquired BCM support a while ago, I was suggest following way How to lock Tx on a particular channel? From our tests at the lab using these APIs, we saw issues which has been reported here: Re: How to lock Tx on a particular channel? (Con't)

                   

                  Can I please get to know what is the right way to setup tests (without HCI interface) for (b) through (e) to get these regulatory approval?

                   

                  Regards,

                  Subash

                  • 6. Re: How to lock Tx on a particular channel? (Con't)
                    MichaelF_56

                    Are you saying that your end product does not provide access to the HCI UART (none of the 2073X products allow HCI access), which is required for all initial programming of the device?  The MBT document here is a better source of information for MBT.  This tool only requires access to your design over the HCI UART.

                     

                    Take a look: Manufacturing Bluetooth Test Tool Application Note (SDK 2.x and TAG3/4 Board)

                    • 7. Re: How to lock Tx on a particular channel? (Con't)
                      MichaelF_56

                      I spoke with the developers and it appears that there are some APIs you can use for regulatory tests without having to use HCI commands (in app mode).

                       

                      However, you will need to write the program in such a way that you turn off all adv/scans/connections before invoking these APIs (some customers have used this mechanism and is known to work).

                       

                      See blecm.h, rf_cw_test_api.{h,a}:

                       

                      /**
                      * Ends all LE tests that were started with blecm_StartReveiverTest or blecm_StartTransmitterTest
                      *
                      * \param NONE
                      */
                      void blecm_EndTest(void);

                      /**
                      * Starts the standard LE receiver test on the given channel
                      *
                      * \param channel The channel to use for the test. 0-39.
                      * \return <ReturnValue> True if test was started successfully, else could not start the test.
                      */
                      UINT8 blecm_StartReveiverTest(UINT8 channel);

                      /**
                      * Starts the standard LE transmitter test with the given parameters
                      *
                      * \param channel  The channel to use for the test. 0-39.
                      * \param packetLength The Length test packet. 0-37
                      * \param packetType   The type of packet to use - The following are supported:
                      *                                                             {0x00, "Pseudo-Random bit sequence 9"},
                      *                                                             {0x01, "Pattern of alternating bits '11110000'"},
                      *                                                             {0x02, "Pattern of alternating bits '10101010'"},
                      *                                                             {0x03, "Pseudo-Random bit sequence 15 - Optional"},
                      *                                                             {0x04, "Pattern of All '1' bits - Optional"},
                      *                                                             {0x05, "Pattern of All '0' bits - Optional"},
                      *                                                             {0x06, "Pattern of alternating bits '00001111' - Optional"},
                      *                                                             {0x07, "Pattern of alternating bits '01010101' - Optional"}
                      * \return <ReturnValue> True if test was started successfully, else could not start the test.
                      */
                      UINT8 blecm_StartTransmitterTest(UINT8 channel, UINT8 packetLength, UINT8 packetType);

                      /**
                      * Set advertising parameters and starts advertisements.
                      * \details Sets the advertisement parameters and starts it.
                      * \param advType The advertismenet type. See LE_Set_Advertising_Parameters HCI command for acceptable values.
                      * \param advInterval The advertisement interval in BT slots (min 32, max 16384).
                      * \param advChannel The advertisement channel mask (can bitwise OR). 0x01 for ch37; 0x02 for ch38; 0x04 for ch39.
                      * \param advAdrType The advertiser type (Public/random).
                      * \param advFilterPolicy The filter policy to use. See BT spec for acceptable values.
                      * \param initiatorAdrType The address type of the peer device - valid only when advType is directed advertisement.
                      * \param initiatorAdr The address of the peer device - valid only when advType is directed advertisement.
                      */
                      void blecm_startAdv(INT32 advType, INT32 advInterval, INT32 advChannel, INT32 advAdrType,
                                          INT32 advFilterPolicy, INT32 initiatorAdrType, UINT8* initiatorAdr);

                      ////////////////////////////////////////////////////////////////////////////////
                      /// Enables TX CW test.
                      /// \param cwFreq   The desired Bluetooth carrier frequency (min: 2402MHz, max: 2490MHz).
                      /// \param txPower    The TX power to use.Will be rounded to closest value possible.
                      /// \return TRUE if successful; else FALSE.
                      ////////////////////////////////////////////////////////////////////////////////
                      UINT8 blecm_EnableUnmodulatedTxCarrierFrequencyTest(UINT16 cwFreq, INT8 txPower);

                      ////////////////////////////////////////////////////////////////////////////////
                      /// Disables unmodulated carrier frequenct TX test.
                      /// \return TRUE if successful; else FALSE.
                      ////////////////////////////////////////////////////////////////////////////////
                      UINT8 blecm_DisableUnmodulatedTxCarrierFrequencyTest(void);

                      ////////////////////////////////////////////////////////////////////////////////
                      /// Register callback to be invoked when the end test command completes.
                      /// \param cb Pointer to a function that takes a UINT16 num packet completed parameter.
                      ////////////////////////////////////////////////////////////////////////////////
                      void blecm_setEndTestCompleteCallback(void (*cb)(UINT16));


                      • 8. Re: How to lock Tx on a particular channel? (Con't)

                        Yes. We dont have access to HCI over UART. We use i2c to update the firmware image.

                         

                        Due to lack of HCI over UART, we connect our device to a host, and send the FCC tests as commands and use API's below for starting the test. But it looks like these APIs are not setting up the transmitter in the right mode.

                         

                        blecm_StartTransmitterTest()

                        blecm_EnableUnmodulatedTxCarrierFrequencyTest()

                         

                        Your help in this regards is highly appreciable.

                        • 9. Re: How to lock Tx on a particular channel? (Con't)
                          MichaelF_56

                          Are you referring to the code I pasted below that the developers provided?  Again, we do not normally provide much guidance in this area, so I am trying to determine what you are looking for exactly.

                           

                          Specific questions are helpful when discussing with the developers.

                          • 10. Re: How to lock Tx on a particular channel? (Con't)

                            From my post on 04/07/2015:

                             

                            a) LE transmitter test:

                                * send the command(through a private characteristic) to run this test from host

                                * disconnect from the device using blecm_disconnect()

                                * call blecm_StartTransmitterTest() on channel 0(2404-2406MHz), packet length of 20bytes and packetType = 0x7(01010101)

                                * We expected the frequency to get locked down to channel 0.

                                * But in the spectrum analyzer we saw the frequency hopping

                                * rebooting the device will stop the test(as host cannot connect back during test)

                             

                            b) Transmitter test:

                                * send the command(through a private characteristic) to run this test from host

                                * disconnect from the device using blecm_disconnect()

                                * blecm_EnableUnmodulatedTxCarrierFrequencyTest() on 2404MHz at power level +4dB(I think stack ceils it to +3dB internally)

                                * We could see unwanted noise in frequencies other than desired above.

                                * rebooting the device will stop the test(as host cannot connect back during test)

                            • 11. Re: How to lock Tx on a particular channel? (Con't)

                              Hello Subash,

                               

                              1.  Have you tried using MBT (Manufacturing Bluetooth Test Tool Application Note (SDK 2.1 and TAG3 Board))  and if so, does it show the same behavior?

                              2.  If you do not see the same behavior with MBT, then there is other RF Activity being produced in your app.

                               

                              Hope this helps,

                              Thanks,

                              JT

                              • 12. Re: How to lock Tx on a particular channel? (Con't)

                                Hi j.t,

                                 

                                This issue is resolved. Thanks for checking back. MBT is not useful for devices which don't expose debug UART.

                                 

                                Regards,

                                Subash