# 软固件包上传
#### 概述
软件（Software）一般分为系统软件和应用软件，系统软件实现设备最基本的功能，比如编译工具、系统文件管理等；应用软件可以根据设备的特点，提供不同的功能，比如采集数据、数据分析处理等。软件升级又称为SOTA（SoftWare Over The Air），是指用户可以通过OTA的方式支持对LwM2M协议和MQTT协议的设备进行软件升级。
- 基于LwM2M协议的产品模型，软件升级遵循的协议为PCP协议（[PCP协议介绍](https://support.huaweicloud.com/devg-iothub/iot_01_0047_3.html)），设备侧需要遵循PCP协议进行软件升级的适配开发，适配方法请参考[设备侧适配开发指导](https://support.huaweicloud.com/devg-iothub/iot_01_0047_2.html)。
- 基于MQTT协议的产品模型，不校验软件升级协议类型。
固件（Firmware）一般是指设备硬件的底层"驱动程序"，承担着一个系统最基础最底层工作的软件，比如计算机主板上的基本输入/输出系统BIOS（Basic Input/output System)。固件升级又称为FOTA（Firmware Over The Air），华为云用户可以通过OTA的方式对支持LwM2M协议和MQTT协议的设备进行固件升级。
#### 操作步骤
华为物联网平台进行软固件升级，需要在控制台添加升级包。平台支持升级包关联OBS服务桶中对象和本地文件上传升级包两种方式。
![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
- 升级包关联OBS服务桶中对象，升级包大小限制最大为1G，由于升级文件保存在OBS服务中，会产生额外的存储和下载费用。 OBS计费项由存储费用、请求费用、流量费用、数据恢复费用和数据处理费用组成。计费模式分为按需计费和包年包月。具体费用请参考[OBS计费说明](https://support.huaweicloud.com/price-obs/obs_42_0001.html)。
  例如：在华北-北京四区域下，用户一个月需要升级1万设备，升级包的大小为100M，如果按需计费，则需要存储费用￥0.139，流量费用￥512，请求次数费用￥0.01，总计￥512.15。
  如果包年包月，则需要存储费用￥1.00，流量费用￥505.00（1TB 公网流出流量包1个月价格），请求次数费用￥0.01，总计￥506.01。
  
- 本地文件上传升级包的方式，不收取费用，但是升级包大小限制最大为20M。
- 升级包只支持.bin、.dav、.tar、.gz、.zip、.gzip、.apk、.tar.gz、.tar.xz、.pack、.exe、.bat、.img格式的文件。
 
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
2. 选择"设备 \> 软固件升级"。
3. 上传固件升级包时，选择"固件列表"页签，单击"上传固件"，上传软件升级包时，选择"软件列表"页签，单击"上传软件"。
4. 在上传升级包界面，选择上传方式OBS文件或者本地文件 
   - OBS文件，使用前请单击"访问授权"弹出授权窗口后单击"同意授权"。授权后请选择升级文件所在的桶。如果暂时还没有创建桶，可以单击"创建桶"跳转到OBS页面创建桶。如果没有上传升级文件到对应的桶，可以单击"前往OBS上传对象"跳转到OBS对应桶页面上传升级文件。勾选需要的OBS对象后单击按钮"下一步"。
     ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/notice_3.0-zh-cn.png)
     如果设备接入服务未访问授权密钥管理服务（KMS)，请单击"加密服务授权"处的"访问授权"进行授权访问，否则在OBS服务侧设置或修改存储桶配置为启用"默认加密"时，会影响升级文件的下载。
     图1上传升级包-OBS文件   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001981577941.png "点击放大") 
   
   - 本地文件，请拖拽或者单击"添加文件"上传软固件升级包。
     图2上传升级包-本地文件   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001950378364.png "点击放大") 
   
   
   
   
5. 选择OBS对象或上传本地文件后，在升级包列表里面按照如下信息填写参数后，单击"确定"上传软件包。 
   图3上传升级包-OBS文件参数   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001981497793.png "点击放大")
   在上传软固件包时，需要填写如下信息：
   
   | 参数名称    | 说明                                                                                                                                                                                                                                            |
   |:---|:---|
   | 固件(软件)版本   | **参数说明：**固件(软件)包的版本。（设备升级完成后需要上报升级版本号，平台检查设备上报的版本号是否与此参数一致，一致为升级成功。）                                                                                                                                                                          |
   | 选择产品      | **参数说明：** 选择对应设备的[产品模型](https://support.huaweicloud.com/usermanual-iothub/iot_01_0054.html#ZH-CN_TOPIC_0221225203__section5477105165913)。                                                                                                   |
   | 支持设备源版本    | **参数说明：**支持升级的设备的源版本号。手动输入，如需输入多个，可以在输入完一个版本后，单击"回车"按键，再输入下一个。 说明： 平台目前暂不支持自动差分升级包的功能，用户可以自己本地差分后上传到平台，并对不同的差分包指定不同的支持升级的设备源版本号。在创建升级任务时可以选择多个差分包创建升级任务。在软固件升级过程中，平台将根据设备上报的源版本号，下发不同的差分包。 |
   | 软件包分片大小   | **参数说明：**终端下载软件包的每个分片的大小，单位为byte。取值范围：32\~500，默认值500。只有NB协议的设备软件升级支持该功能。                                                                                                                                                                     |
   | 描述          | **参数说明：**软固件包的描述信息。                                                                                                                                                                                                                          |
   | 推送给设备的自定义信息 | **参数说明：** [平台下发升级通知](https://support.huaweicloud.com/api-iothub/iot_06_v5_3030.html)时，会同时下发该自定义信息给设备端。                                                                                                                                     |
      
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   - 平台已经下线上传签名软固件包功能，之前已经上传的签名软固件包能正常升级使用。为了保障您能够正常使用软固件升级功能，请直接上传需要下发给设备的升级文件。
   
   - 只有MQTT协议设备支持使用OBS文件作为软固件升级包，且需要在设备侧适配新的event_type，可参考[平台下发升级通知](https://support.huaweicloud.com/api-iothub/iot_06_v5_3030.html)。
   
   - 升级包如果不指定支持设备源版本，则软固件升级时将对所有选择的设备进行升级。
    
   
   
 
