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.

LPSTK-CC1352R: Boot Image Manager security policy

Part Number: LPSTK-CC1352R
Other Parts Discussed in Thread: CC1352R

Dear TI Engineers and Experts,

I am learning how to use the Boot Image Manager to deploy Over-Air-Upload to my TI CC1352R board.

  1. In order to prevent hackers, what are the security features provided by BIM to prevent hackers to upload malicious firmware to my TI board?
  2. Apart from using Bluetooth wireless technology for uploading new firmware to my TI board,  does BIM support other wireless protocol for uploading new firmware?
  • Dear Tim,

    1. There is indeed some way to lock OAD, we will try to come back to you with the specifics on how to do so.

    2. As you might have seen in the SDK, you can also use BIM over other wireless technologies, such as IEEE 802.15.4. Please look at the following example, and at our documentation there: https://dev.ti.com/tirex/explore/node?node=AHMS2yA77-HDuWFq0pJs2w__BSEc4rl__LATEST&search=OAD

    BR,

    Arthur

  • Arthur,

    Okay.  Looking forward to more information.

  • Hi Tim,

    As mentioned in the warning in the stack user's guide, TI does not provide security or authentication mechanisms during the firmware update. 

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_6_10_00_29/docs/ti154stack/html/ti154stack-guide/oad-secure-index.html

    However you can use Secure BIM, that is an extension to BIM where unsigned OAD images are not accepted for upgrade. You can find the documentation for Secure BIM here.

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_6_10_00_29/docs/ti154stack/html/oad-secure/bim.html#secure-bim

    Regards,

    Sid

  • Hello Siddanth,

    So what is offchip BIM and onchip BIM?  Which type of example project should I choose?

  • Hello Siddanth,

    I am trying the OAD tool comes with Simplelink SDK 6.1.  It turns out to be a failure to install those python modules.  Here are the output.  How do I correct them?

    My system is Windows 10, WinPython 3.9.

    C:\TI\CCS\11.2\simplelink_cc13xx_cc26xx_sdk_6_10_00_29\tools\common\oad>pip install -r requirements.txt
    Collecting crcmod
      Using cached crcmod-1.7-py3-none-any.whl
    Collecting intelhex
      Using cached intelhex-2.3.0-py2.py3-none-any.whl (50 kB)
    Requirement already satisfied: ecdsa in c:\myprograms\python\python-3.9.10.amd64\lib\site-packages (from -r requirements.txt (line 3)) (0.17.0)
    Collecting staticx
      Using cached staticx-0.13.6.tar.gz (67 kB)
      Preparing metadata (setup.py) ... done
    Collecting patchelf-wrapper
      Using cached patchelf-wrapper-1.2.0.tar.gz (197 kB)
      Preparing metadata (setup.py) ... done
    Requirement already satisfied: six>=1.9.0 in c:\myprograms\python\python-3.9.10.amd64\lib\site-packages (from ecdsa->-r requirements.txt (line 3)) (1.16.0)
    Requirement already satisfied: pyelftools in c:\myprograms\python\python-3.9.10.amd64\lib\site-packages (from staticx->-r requirements.txt (line 4)) (0.28)
    Building wheels for collected packages: staticx, patchelf-wrapper
      Building wheel for staticx (setup.py) ... error
      error: subprocess-exited-with-error
    
      × python setup.py bdist_wheel did not run successfully.
      │ exit code: 1
      ╰─> [25 lines of output]
          running bdist_wheel
          Traceback (most recent call last):
            File "<string>", line 2, in <module>
            File "<pip-setuptools-caller>", line 34, in <module>
            File "T:\Users\Timmy\AppData\Local\Temp\pip-install-pyu7jpxn\staticx_8a9c1663faf348389bb98726871c1832\setup.py", line 122, in <module>
              setup(
            File "C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\__init__.py", line 87, in setup
              return distutils.core.setup(**attrs)
            File "C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\_distutils\core.py", line 148, in setup
              return run_commands(dist)
            File "C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\_distutils\core.py", line 163, in run_commands
              dist.run_commands()
            File "C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\_distutils\dist.py", line 967, in run_commands
              self.run_command(cmd)
            File "C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\dist.py", line 1229, in run_command
              super().run_command(command)
            File "C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\_distutils\dist.py", line 985, in run_command
              cmd_obj.ensure_finalized()
            File "C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\_distutils\cmd.py", line 107, in ensure_finalized
              self.finalize_options()
            File "T:\Users\Timmy\AppData\Local\Temp\pip-install-pyu7jpxn\staticx_8a9c1663faf348389bb98726871c1832\setup.py", line 56, in finalize_options
              self.plat_name = get_platform()     # Equivalent to passing --plat-name
            File "T:\Users\Timmy\AppData\Local\Temp\pip-install-pyu7jpxn\staticx_8a9c1663faf348389bb98726871c1832\setup.py", line 89, in get_platform
              uname = os.uname()
          AttributeError: module 'os' has no attribute 'uname'
          [end of output]
    
      note: This error originates from a subprocess, and is likely not a problem with pip.
      ERROR: Failed building wheel for staticx
      Running setup.py clean for staticx
      Building wheel for patchelf-wrapper (setup.py) ... error
      error: subprocess-exited-with-error
    
      × python setup.py bdist_wheel did not run successfully.
      │ exit code: 1
      ╰─> [18 lines of output]
          T:\Users\Timmy\AppData\Local\Temp\pip-install-pyu7jpxn\patchelf-wrapper_c3427cc652ce4506ae5808b97ff3843f\setup.py:222: DeprecationWarning: Due to possible ambiguity, 'convert()' is deprecated. Use 'convert_file()'  or 'convert_text()'.
            long_desc = pypandoc.convert(long_desc, 'rst', format='md')
          running bdist_wheel
          running build
          running build_py
          creating build
          creating build\lib
          creating build\lib\patchelf_wrapper
          copying patchelf_wrapper\__init__.py -> build\lib\patchelf_wrapper
          running build_patchelf
          C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
            warnings.warn(
          running check_patchelf
          patchelf not found
          running clean_patchelf
          Extracting to build\lib/patchelf-0.11
          Configuring: ./configure --prefix C:\MyPrograms\Python\python-3.9.10.amd64
          error: [WinError 193] %1 is not a valid Win32 application
          [end of output]
    
      note: This error originates from a subprocess, and is likely not a problem with pip.
      ERROR: Failed building wheel for patchelf-wrapper
      Running setup.py clean for patchelf-wrapper
    Failed to build staticx patchelf-wrapper
    Installing collected packages: patchelf-wrapper, intelhex, crcmod, staticx
      Running setup.py install for patchelf-wrapper ... error
      error: subprocess-exited-with-error
    
      × Running setup.py install for patchelf-wrapper did not run successfully.
      │ exit code: 1
      ╰─> [15 lines of output]
          T:\Users\Timmy\AppData\Local\Temp\pip-install-pyu7jpxn\patchelf-wrapper_c3427cc652ce4506ae5808b97ff3843f\setup.py:222: DeprecationWarning: Due to possible ambiguity, 'convert()' is deprecated. Use 'convert_file()'  or 'convert_text()'.
            long_desc = pypandoc.convert(long_desc, 'rst', format='md')
          running install
          C:\MyPrograms\Python\python-3.9.10.amd64\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
            warnings.warn(
          running build
          running build_py
          creating build\lib\patchelf_wrapper
          copying patchelf_wrapper\__init__.py -> build\lib\patchelf_wrapper
          running build_patchelf
          running check_patchelf
          patchelf not found
          running clean_patchelf
          Cleaning build\lib\patchelf-0.11
          error: [WinError 5] Access is denied: 'build\\lib\\patchelf-0.11\\build-aux\\compile'
          [end of output]
    
      note: This error originates from a subprocess, and is likely not a problem with pip.
    error: legacy-install-failure
    
    × Encountered error while trying to install package.
    ╰─> patchelf-wrapper
    
    note: This is an issue with the package mentioned above, not pip.
    hint: See above for output from the failure.
    

  • Hi Tim, 

    I am not entirely sure about your installation error. But have you looked into this SimpleLink academy for OAD?
    https://dev.ti.com/tirex/content/simplelink_academy_cc13xx_cc26xxsdk_6_10_01_00/modules/154-stack/154-stack_05_oad/154-stack_05_oad.html

    It provides an overview and a tutorial on how OAD can be sued with TI 15.4 stack. 

    Regards,

    Sid

  • Hello Sid,
    If we use 15.4 Stack to upload boot image, what is the effective communication range between the 2 SimpleLink devices?  I expect it will be much longer than that of BLE.

  • Hi Tim, 

    Yes, sub1GHz will typically give you a much better range. The range is dependent on a lot of factors, I would suggest you to use our range estimator tool and include factors for your specific use-case to get an estimation of range.

    https://www.ti.com/tool/RF-RANGE-ESTIMATOR

    Regards,

    Sid