華為云計(jì)算 云知識(shí) 玩轉(zhuǎn)物聯(lián)網(wǎng)設(shè)備固件升級(jí)
玩轉(zhuǎn)物聯(lián)網(wǎng)設(shè)備固件升級(jí)

華為云IoT 物聯(lián)網(wǎng)平臺(tái) :固件(Firmware)一般是指設(shè)備硬件的底層“驅(qū)動(dòng)程序”,承擔(dān)著一個(gè)系統(tǒng)最基礎(chǔ)最底層工作的軟件,比如計(jì)算機(jī)主板上的基本輸入/輸出系統(tǒng)BIOS(Basic Input/output System)。

固件升級(jí)又稱為FOTA(Firmware Over The Air),是指用戶可以通過OTA的方式對(duì)支持LwM2M協(xié)議和MQTT協(xié)議的設(shè)備進(jìn)行固件升級(jí)。

LwM2M協(xié)議設(shè)備固件升級(jí)流程

LwM2M協(xié)議FOTA升級(jí)流程的詳細(xì)說明:

1~2. 用戶在 設(shè)備接入服務(wù) 的控制臺(tái)上傳固件包,并在控制臺(tái)或者應(yīng)用服務(wù)器上創(chuàng)建固件升級(jí)任務(wù)。

3. LwM2M設(shè)備上報(bào)數(shù)據(jù),平臺(tái)感知設(shè)備上線,觸發(fā)升級(jí)協(xié)商流程。(超時(shí)時(shí)間為24小時(shí))

4~5. 物聯(lián)網(wǎng)平臺(tái)向設(shè)備下發(fā)查詢?cè)O(shè)備固件版本的命令,查詢成功后,物聯(lián)網(wǎng)平臺(tái)根據(jù)升級(jí)的目標(biāo)版本判斷設(shè)備是否需要升級(jí)。(第4步等待設(shè)備上報(bào)固件版本,超時(shí)時(shí)間為3分鐘)
  • 如果返回的固件版本信息與升級(jí)的目標(biāo)版本信息相同,則升級(jí)流程結(jié)束,不做升級(jí)處理。
  • 如果返回的固件版本信息與升級(jí)的目標(biāo)版本信息不同,則繼續(xù)進(jìn)行下一步的升級(jí)處理。
6~7. 物聯(lián)網(wǎng)平臺(tái)查詢終端設(shè)備所在的無線信號(hào)覆蓋情況,獲取小區(qū)ID、RSRP(Reference Signal Received Power,參考信號(hào)接收功率)和SINR(Signal to Interference Plus Noise Ratio,信號(hào)干擾噪聲比)信息。(等待上報(bào)無線覆蓋等級(jí)和小區(qū)ID,超時(shí)時(shí)間為3分鐘左右)
  • 查詢成功:則根據(jù)如下方式計(jì)算可同時(shí)升級(jí)的并發(fā)數(shù)計(jì)算,并按照步驟9進(jìn)行處理。
    • 如下圖所示,如果設(shè)備的RSRP強(qiáng)度和SINR強(qiáng)度均落在等級(jí)“0”中,則同時(shí)可以對(duì)該小區(qū)的50個(gè)相同信號(hào)覆蓋區(qū)間的設(shè)備進(jìn)行同時(shí)升級(jí)。
    • 如果設(shè)備的RSRP強(qiáng)度和SINR強(qiáng)度分別落在等級(jí)“0”和“1”中,則以信號(hào)較弱的等級(jí)“1”為準(zhǔn),則只能同時(shí)對(duì)該小區(qū)的10個(gè)設(shè)備進(jìn)行升級(jí)。
    • 如果設(shè)備的RSRP強(qiáng)度和SINR強(qiáng)度分別落在等級(jí)“1”和“2”中,則以信號(hào)較弱的等級(jí)“2”為準(zhǔn),則只能同時(shí)對(duì)該小區(qū)的1個(gè)設(shè)備進(jìn)行升級(jí)。

    • 如果設(shè)備的RSRP強(qiáng)度和SINR強(qiáng)度不在該3個(gè)等級(jí)范圍內(nèi),且均可以查詢到,則按照信號(hào)最弱覆蓋等級(jí)“2”處理,則只能同時(shí)對(duì)1個(gè)設(shè)備進(jìn)行升級(jí)。

      說明:如果用戶在固件升級(jí)中發(fā)現(xiàn)同時(shí)進(jìn)行升級(jí)的設(shè)備數(shù)較少,則可以聯(lián)系當(dāng)?shù)剡\(yùn)營(yíng)商檢查和優(yōu)化設(shè)備所在小區(qū)的無線覆蓋情況。
  • 查詢失?。簞t按照流程步驟8進(jìn)行處理。
8. 物聯(lián)網(wǎng)平臺(tái)繼續(xù)下發(fā)查詢小區(qū)ID信息的命令,獲取終端設(shè)備所在的小區(qū)ID信息。
  • 如果查詢成功:物聯(lián)網(wǎng)平臺(tái)支持同時(shí)對(duì)該小區(qū)的10個(gè)相同情況的設(shè)備進(jìn)行固件升級(jí)。
  • 如果查詢失敗:則升級(jí)失敗。

9. 物聯(lián)網(wǎng)平臺(tái)向設(shè)備訂閱固件升級(jí)的狀態(tài)。

10~11. 物聯(lián)網(wǎng)平臺(tái)向設(shè)備下發(fā)下載固件包的URL地址,通知設(shè)備下載固件包。終端設(shè)備根據(jù)該URL地址下載固件包,固件包的下載支持分片下載,下載完成后,設(shè)備知會(huì)物聯(lián)網(wǎng)平臺(tái)固件包已下載完畢。(第11步超時(shí)時(shí)間為60分鐘)

12~13. 物聯(lián)網(wǎng)平臺(tái)向設(shè)備下發(fā)升級(jí)的命令,終端設(shè)備進(jìn)行升級(jí)操作,升級(jí)完成后終端設(shè)備向物聯(lián)網(wǎng)平臺(tái)反饋升級(jí)結(jié)束。(等待設(shè)備上報(bào)升級(jí)結(jié)果和升級(jí)狀態(tài),超時(shí)時(shí)間為30分鐘)

14~16. 物聯(lián)網(wǎng)平臺(tái)下發(fā)命令查詢固件升級(jí)的結(jié)果,獲取升級(jí)結(jié)果后,向終端設(shè)備取消訂閱升級(jí)狀態(tài)通知,并向控制臺(tái)應(yīng)用服務(wù)器通知升級(jí)的結(jié)果。

說明:在下載包中斷的情況下,平臺(tái)支持?jǐn)帱c(diǎn)續(xù)傳功能。

MQTT協(xié)議固件升級(jí)流程

MQTT協(xié)議FOTA升級(jí)流程的詳細(xì)說明:

1~2. 用戶在設(shè)備接入服務(wù)的控制臺(tái)上傳固件包,并在控制臺(tái)或者應(yīng)用服務(wù)器上創(chuàng)建固件升級(jí)任務(wù)。

3. 平臺(tái)感知設(shè)備是否在線,當(dāng)設(shè)備在線時(shí)立即觸發(fā)升級(jí)協(xié)商流程。當(dāng)設(shè)備不在線時(shí),等待設(shè)備上線訂閱升級(jí)Topic,平臺(tái)感知設(shè)備上線,觸發(fā)升級(jí)協(xié)商流程。(等待設(shè)備上線時(shí)間25小時(shí)以內(nèi))

4~5. 平臺(tái)向設(shè)備下發(fā)查詢?cè)O(shè)備固件版本號(hào)的命令,查詢成功后,物聯(lián)網(wǎng)平臺(tái)根據(jù)升級(jí)的目標(biāo)版本判斷設(shè)備是否需要升級(jí) 。(第5步超時(shí)時(shí)間3分鐘)
  • 如果返回的固件版本信息與升級(jí)的目標(biāo)版本信息相同,則升級(jí)流程結(jié)束,不做升級(jí)處理,升級(jí)任務(wù)置為成功。
  • 如果返回的固件版本信息與升級(jí)的目標(biāo)版本信息不同,且該版本號(hào)支持升級(jí),則繼續(xù)進(jìn)行下一步的升級(jí)處理。

6~7. 物聯(lián)網(wǎng)平臺(tái)下發(fā)設(shè)備側(cè)升級(jí)包下載指導(dǎo)、token及包的相關(guān)信息,用戶根據(jù)下載包URL和token通過HTTPS協(xié)議來下載軟件包,24小時(shí)后token無效。(下載包和升級(jí)狀態(tài)上報(bào)超時(shí)時(shí)間為24小時(shí))

8. 終端設(shè)備進(jìn)行下載包升級(jí)操作,升級(jí)完成后終端設(shè)備向物聯(lián)網(wǎng)平臺(tái)反饋升級(jí)的結(jié)果。(設(shè)備升級(jí)完成后返回的版本號(hào)和設(shè)置的版本一致為成功)

9. 物聯(lián)網(wǎng)平臺(tái)向控制臺(tái)/應(yīng)用服務(wù)器通知升級(jí)的結(jié)果。

說明:下載包中斷的情況下,平臺(tái)支持?jǐn)帱c(diǎn)續(xù)傳功能。

上傳固件包

設(shè)備接入服務(wù)的控制臺(tái),提供固件包的管理能力,您可以將需要升級(jí)的固件包統(tǒng)一上傳到“固件列表”界面上進(jìn)行管理。

  1. 訪問設(shè)備接入服務(wù),單擊“管理控制臺(tái) ”進(jìn)入設(shè)備接入控制臺(tái)。
  2. 選擇設(shè)備 > 軟固件升級(jí)
  3. 選擇“固件列表”頁簽,單擊“上傳固件”。
  4. 在彈出的頁面中,按照如下信息填寫參數(shù)后,單擊“確認(rèn)”上傳固件包。

在上傳固件包時(shí),需要填寫如下信息:

參數(shù)名稱

說明

固件文件

添加固件包,固件包名不能帶中文字符。

固件版本

固件包的版本。(設(shè)備升級(jí)完成后需要上報(bào)升級(jí)版本號(hào),平臺(tái)檢查設(shè)備上報(bào)的版本號(hào)是否與此參數(shù)一致,一致為升級(jí)成功。)

選擇產(chǎn)品

選擇對(duì)應(yīng)設(shè)備的產(chǎn)品模型。

支持設(shè)備源版本

手動(dòng)輸入,如需輸入多個(gè),可以在輸入完一個(gè)版本后,單擊“回車”按鍵,再輸入下一個(gè)。

說明:目前平臺(tái)仍然支持上傳已簽名的固件包,但無法修改公鑰。如果您上傳的是簽過名的固件包,平臺(tái)會(huì)使用之前上傳的公鑰對(duì)簽名進(jìn)行校驗(yàn)。如果您之前沒有上傳過公鑰或者簽名的私鑰發(fā)生變化,簽名會(huì)校驗(yàn)失敗從而導(dǎo)致固件包上傳失敗。

后續(xù)平臺(tái)將下線上傳簽名固件包功能,為了保障您能夠正常使用固件升級(jí)功能,請(qǐng)直接上傳需要下發(fā)給設(shè)備的文件。

批量設(shè)備固件升級(jí)

用戶對(duì)批量設(shè)備進(jìn)行固件升級(jí)有兩種方式:

  1. 應(yīng)用服務(wù)器通過調(diào)用的“創(chuàng)建固件升級(jí)任務(wù)”API接口,創(chuàng)建批量設(shè)備的升級(jí)任務(wù),詳情請(qǐng)參考創(chuàng)建批量任務(wù)。
  2. 通過控制臺(tái),創(chuàng)建批量設(shè)備的固件升級(jí)任務(wù)。

下面將重點(diǎn)介紹通過控制臺(tái)創(chuàng)建批量設(shè)備的固件升級(jí)任務(wù)。

1.訪問設(shè)備接入服務(wù),單擊“管理控制臺(tái) ”進(jìn)入設(shè)備接入控制臺(tái)。

2. 在左側(cè)導(dǎo)航欄選擇"設(shè)備 > 軟固件升級(jí)",單擊“升級(jí)任務(wù)”。

3. 在“固件升級(jí)”頁簽,單擊“新建任務(wù)”按鈕,進(jìn)入新建固件任務(wù)頁面。

4. 設(shè)置“任務(wù)信息”,填寫任務(wù)名稱、執(zhí)行時(shí)機(jī)、啟用重試。

啟用重試后,可以設(shè)置重啟次數(shù)和重啟間隔。重啟次數(shù)建議設(shè)置為2次,重啟間隔設(shè)置為5分鐘(最大重啟次數(shù)為5次,最大重啟間隔為1440分鐘),即設(shè)備升級(jí)失敗后,隔5分鐘后會(huì)進(jìn)行升級(jí)重試。

5. 選擇需要升級(jí)的固件包。

6. 選擇需要升級(jí)的設(shè)備群組,然后單擊“提交”。

設(shè)備群組可以參考群組與標(biāo)簽創(chuàng)建需要升級(jí)的設(shè)備群組,并綁定對(duì)應(yīng)的設(shè)備。

7. 創(chuàng)建完批量升級(jí)任務(wù)后,可以在固件升級(jí)任務(wù)列表中查看批量任務(wù)的執(zhí)行結(jié)果。單擊對(duì)應(yīng)任務(wù)"查看"按鈕,可以在“執(zhí)行詳情”界面查看每個(gè)設(shè)備的升級(jí)結(jié)果。

說明:如果升級(jí)任務(wù)正在執(zhí)行中,是不允許刪除任務(wù)的,如需刪除,請(qǐng)先在任務(wù)列表中,手動(dòng)停止任務(wù)后,再刪除升級(jí)任務(wù)。

固件升級(jí)失敗原因

物聯(lián)網(wǎng)平臺(tái)上報(bào)的失敗原因:

失敗原因

原因解釋

處理建議

Device Abnormal is not online

設(shè)備異常未在線

請(qǐng)檢查設(shè)備側(cè)。

Task Conflict

任務(wù)沖突

請(qǐng)檢查當(dāng)前設(shè)備是否有軟件升級(jí)、固件升級(jí)、日志收集或設(shè)備重啟的任務(wù)正在進(jìn)行。

Waiting for the device online timeout

等待設(shè)備上線超時(shí)

請(qǐng)檢查設(shè)備側(cè)。

Wait for the device to report upgrade result timeout

等待設(shè)備上報(bào)升級(jí)結(jié)果超時(shí)

請(qǐng)檢查設(shè)備側(cè)。

Waiting for report device firmware version timeout

等待上報(bào)設(shè)備固件版本超時(shí)

請(qǐng)檢查設(shè)備側(cè)。

Waiting for report cellId timeout

等待上報(bào)cellId超時(shí)

請(qǐng)檢查設(shè)備側(cè)。

Updating timeout and query device version for check timeout

等待升級(jí)結(jié)果超時(shí),且等待設(shè)備版本信息超時(shí)

請(qǐng)檢查設(shè)備側(cè)。

Waiting for device downloaded package timeout

等待設(shè)備完成下載固件包超時(shí)

請(qǐng)檢查設(shè)備側(cè)。

Waiting for device start to update timeout

等待設(shè)備啟動(dòng)更新超時(shí)

請(qǐng)檢查設(shè)備側(cè)。

Waiting for device start download package timeout

等到設(shè)備開始下載固件包超時(shí)

請(qǐng)檢查設(shè)備側(cè)。

設(shè)備上報(bào)的失敗原因:

失敗原因

原因解釋

處理建議

Not enough storage for the new firmware package

下載的固件包存儲(chǔ)空間不足

請(qǐng)檢查設(shè)備存儲(chǔ)。

Out of memory during downloading process

下載過程中內(nèi)存不足

請(qǐng)檢查設(shè)備內(nèi)存。

Connection lost during downloading process

下載過程中連接斷開

請(qǐng)檢查設(shè)備連接狀態(tài)。

Integrity check failure for new downloaded package

下載的固件包完整性校驗(yàn)失敗

請(qǐng)檢查設(shè)備下載的固件包是否完整。

Unsupported package type

固件包類型不支持

請(qǐng)檢查設(shè)備狀態(tài)和廠商提供的固件包是否正確。

Invalid URI

URI不可用

檢查設(shè)備側(cè)的固件包下載地址是否正確。

Firmware update failed

固件更新失敗

請(qǐng)檢查設(shè)備側(cè)。