homeassistant zigbee2mqtt 에서 사용되는 펌웨어가 두가지 입니다. ezsp와 ember 펌웨어가 있는데 최근에는 ember 펌웨어를 공식 지원합니다. 동글을 PC에 연결후 웹에서 펌웨어 업데이트를 하는 방법이 쉽고 권장하는 방법이지만 그게 잘 안 되는 경우 터미널에서도 업데이트 할 수 있습니다. 여기서는 homeassistant 터미널을 이용해서 sonoff zigbee dongle-e 펌웨어 업데이트 하는 방법을 정리해 봅니다.
EFR32MG21칩셋을 사용하는 소노프 동글E, 스카이커넥트, 옐로우 등 EmberZnet 코디네이터들에 적용됩니다.
Ember 펌웨어로 업데이트 하는 것은 베타/실험적이었던 ezsp 드라이버를 공식 지원 드라이버로 교체해서 좀 더 안정적으로 작동하도록 합니다.
기기 및 실행환경
라즈베리파이5 HAOS 환경에서 sonoff zigbee dongle-e 코디네이터로 작동하는 시스템입니다.
NabuCasa의 universal silabs flasher 를 사용하여 진행합니다.
https://github.com/NabuCasa/universal-silabs-flasher
사용 펌웨어: darkxst의 z2m 권장 펌웨어를 사용합니다.
https://github.com/darkxst/silabs-firmware-builder
실행 준비
Advanced SSH & Web Terminal 에드온 설치 후 보호모드 끕니다.

애드온 설치 후 “구성”에서 사용자 이름 과 패스워드를 설정 후에 재시작합니다.
코디네이터는 HAOS가 구동중인 디바이스에 꽃혀있어야합니다. 기존에 Z2M을 사용중이었다면 상관 없습니다.
Zigbee2Mqtt를 정지해줍니다.
펌웨어 업데이트
Advanced SSH & Web Terminal 에드온의 화면에서부터 시작합니다.

펌웨어 업데이트 프로그램을 설치합니다.
pip install universal-silabs-flasher
소스코드를 입력 후 엔터

적용할 펌웨를 갖고 있는 기허브 주소를 clone 해옵니다.
펌웨어 업데이트 할 파일을 다운로드 하여 업데이트 하기 위해 복사해오는 것입니다.
git clone https://github.com/darkxst/silabs-firmware-builder.git

하기 소스코드를 입력 후 엔터, 출력된 값을 복사해줍니다.(위에 터미널 시작 스크린샷 참조)
ls -1 /dev/serial/by-id
호스트 기기에 인식되어있는 코디네이터의 Serial path를 확인합니다.
펌웨어 업데이트를 진행합니다.
cd silabs-firmware-builder universal-silabs-flasher —device /dev/serial/by-id/usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_c246c3716bxxxxxxxxxx9984-if00-port0 flash —allow-cross-flashing —firmware firmware_builds/zbdonglee/ncp-uart-hw-v7.4.4.0-zbdonglee-115200.gbl
업데이트 명령어에서 코디네이터 Serial path 와 펌웨어 파일명을 알맞게 수정하고 실행합니다.
정상적으로 진행된다면 하기의 이미지와 같이 진행됩니다.

모든 진행이 끝난 후
silabs-firmware-builder git:(main) 라고 뜨면 완료입니다.
다음 Z2M 애드온에서 구성으로 들어갑니다.
위에서 확인한 시리얼 부분을 다음과 같이 입력합니다.

Z2M을 재시작합니다.
정리
여기까지 터미널에서 sonoff zigbee dongle-e 펌웨어 업데이트 방법을 정리해 봤습니다. 웹에서 업데이트 하는게 편리하지만 터미널을 이용하면 HAOS장치에서 코디네이터를 분리하지 않고 바로 업데이트를 진행할 수 있는 장점이 있습니다.