Si bien la mayoría de controladores compatibles con Zigbee2MQTT son para USB, también podemos utilizar conexión de red por cable, en este caso el coordinador CC2652P2 Zigbee PoE.
Vamos a actualizar desde Windows por lo que necesitaremos tener instalado Python y descargar el script de JelmerT para Texas Instruments CC2538, CC26xx y CC13xx SoCs (System on Chips). Lo primero será instalar las dependencias para ejecutar el script, desde la línea de comandos:
pip install pyserial
pip install intelhex
NOTA: este modelo nos permite operar por red IP más cómodamente y en remoto, para los dispositivo USB es necesario tener un conversor serial-USB
Descargamos el firmware correspondiente a nuestro modelo desde el repositorio de Koenkk, utilizar un archivo incorrecto puede dejar inservible el dispositivo, en nuestro caso CC1352P2_CC2652P_launchpad_coordinator_20220219.zip.
Tenemos en el mismo directorio el script de Python cc2538-bsl.py y el archivo .hex con el firmware correspondiente. Debemos iniciar el en modo BSL (serial boot loader / bootstrap loader / boot loader), accedemos a la dirección IP de nuestro dispositivo (es recomendable establecer IP fija o una reserva en el DHCP); pulsamos en «Prep the cc2652 form firmware update» lo que realmente realizará una pulsación de zBSL y a continuación otra de zRST con una cierta demora.
Si este método no funciona, el propio dispositivo tiene un botón BSL que deberemos mantener pulsado durante 10 segundos mientras conectamos la corriente (en este caso al ser PoE el cable de red), importante tener ya pulsado el botón antes de encenderlo; de este modo, forzamos a entrar en el modo de carga de arranque.
Con el dispositivo en este estado ejecutamos el comando sobre nuestra IP (en este ejemplo 10.0.0.10):
cc2538-bsl.py -p socket://10.0.0.10:6638 -evw ./CC1352P2_CC2652P_launchpad_coordinator_20220219.hex
Los parámetros que aplicamos al script elimina, escribe y verifica ([e]rase+[v]erify+[w]rite) el firmware.
En el caso de aparecer el error: «Timeout waiting ACK/NACK after “get Status (0x23)» y no completarse la carga, o bien el dispositivo no ha entrado en modo BSL o existe algún problema con los sockets abiertos en Windows, reinicia el ordenador para asegurarte que no existe ningún conflicto con otras aplicaciones y vuelve a iniciar el proceso.
Para hacerlo mediante USB, debemos conocer el puerto COM detectado por el sistema operativo, para Windows por ejemplo:
cc2538-bsl.py -ewv -p COM4 --bootloader-sonoff-usb ./CC1352P2_CC2652P_launchpad_coordinator_20240710.hex
NOTA: si al instalar python no está dentro del PATH de las aplicaciones o la ruta ha cambiado añade «python» antes del comando