As of this weekend I encountered some trouble with LCM (LifeCycle Manager). After contacting the the maker (HacK a.k.a. HomeACcessoryKid) of LifeCycle Manager, it turns out there is very small issue but the consequences are big, it’s an issues that has to be solved! For whom that reeds my blog regularly know that I use LCM for every HomeKit device I design.

 

Trouble

This weekend I wanted to test a new written code, but after doing my standard setup I received this error:

connected with AirPort Network, channel 11
dhcp client start...
ip:192.168.178.157,mask:255.255.255.0,gw:192.168.178.1
>>> wifi_config: wifi_config_sta_connect_timeout_callback: Successfully connected
>>> wifi_config: Stopping DNS server
Timer Start Failed
Timer Stop Failed
>>> wifi_config: Client disconnected
>>> wifi_config: Stopping HTTP server
wifiready-done
--- ota_boot...0
OTABOOT VERSION: 1.0.0
--- ota_init
userbeta='0' otabeta='0'
Function called without core lock
Function called without core lock
Function called without core lock
Function called without core lock
Function called without core lock
Function called without core lock
Function called without core lock
Function called without core lock
Function called without core lock
Function called without core lock
active_sector: 0x0
--- ota_set_verify...OFF
--- DNS: done!
--- ota_get_version
--- ota_connect LocalPort=c833 DNS IP:140.82.118.3 local..OK remote..OK SSL..OK set_fd to github.com port 443..OK
GET /HomeACcessoryKid/life-cycle-manager/releases/latest HTTP/1.1
Host: github.comsent OK
HTTP returns 302 for Fatal exception (28): 
epc1=0x4024105c
epc2=0x00000000
epc3=0x4022f016
excvaddr=0x00000000
depc=0x00000000
excsave1=0x402196a1
Registers:
a0 402196a1 a1 3fffcaa0 a2  00000000 a3  0000000d
a4  00000048 a5  0000ff00 a6  00000000 a7  0000004c
a8  3fffcea0 a9  00000400 a10 0000003b a11 00000000
a12 3fff1590 a13 00000000 SAR 0000001fStack: SP=0x3fffcaa0Free Heap: 23792
_heap_start 0x3fff2600 brk 0x3fffd02c supervisor sp 0x40000000 sp-brk 12244 bytes
arena (total_size) 43564 fordblks (free_size) 11548 uordblocks (used_size) 32016 ets Jan  8 2013,rst cause:2, boot mode:(3,6)load 0x40100000, len 2292, room 16 
tail 4
chksum 0x57
load 0x3ffe8000, len 772, room 4 
tail 0
chksum 0x0b
csum 0x0brBoot v1.4.0 - [email protected]
Flash Size:   8 Mbit
Flash Mode:   DOUT
Flash Speed:  40 MHz
rBoot Option: Big flash
rBoot Option: RTC dataBooting rom 0.
WAd⸮|⸮c⸮⸮o⸮p⸮⸮o'⸮lno⸮g⸮p'⸮sc⸮o<co⸮$c`sdpp_task_hdl : 3ffefac8, prio:14, stack:512
pm_task_hdl : 3ffef530, prio:1, stack:176
frc2_timer_task_hdl:0x3fff4780, prio:12, stack:200ESP-Open-SDK ver: 0.0.1 compiled @ Feb 14 2020 14:12:48
phy ver: 273, pp ver: 8.3user-init-start
--- ota_read_rtc
--- count_step=3
--- count=0
--- standard ota
>>> wifi_config: Initializing WiFi config
>>> wifi_config: Found configuration, connecting to AirPort Network
user-init-done
mode : sta(dc:4f:22:11:04:73)
add if0
scandone
add 0
aid 1
cnt

Whats going on? After re flashing my ESP module, trying a beta version and a new ESP module, it still didn’t work? Fortunately I know (HacK a.k.a. HomeACcessoryKid) and contacted him if he knew what was going on? He had a look into it: The answer from github has changed: they have used ‘location’ instead of ‘Location’ this caused the error. It seems out that Microsoft has bought GitHub and changed some guidelines.

The Issue

Unless this is fixed we could have thousands of devices out there that are now stuck with there current firmware. So HacK started immediately trying to solve this problem for as far as he can for now.

The Fix
There is no solution (for now) for the devices with the “old” LCM (v1.0.0) for now. For new devices you can install the LCM beta version v1.9.1. You need to do this:
Download this file:

Version: 1.9.1 (Beta)

 

 

The clean your ESP module:

esptool.py erase_flash

Then re flash your esp using the downloaded file like this:

esptool.py -p /dev/cu.usbserial-1430 --baud 115200 write_flash -fs 1MB -fm dout -ff 40m 0x0 rboot.bin 0x1000 blank_config.bin 0x2000 otabootbeta.bin

Connect to LCM-XXXX en follow the regular steps.

The future

I know that HacK is working on a new version of  LifeCycle Manager with all new features, It supposed to also update the “old” LifeCycle Manager (v1.0.0) to the new version (2.X.X) automatically. But the changes on GitHub made by Microsoft has caused some major problems. How things will turn out for  the future I don’t know. but I will keep you updated!

REFERENCE

Maxim Kulkin, esp-homekit-demo (2019), Demo of Apple HomeKit accessory server library , https://github.com/maximkulkin/esp-homekit-demo Paul Sokolovsky, esp-open-sdk (2019), Free and open (as much as possible) integrated SDK for ESP8266/ESP8285 chips, https://github.com/pfalcon/esp-open-sdk Espressif Systems, esptool (2019), ESP8266 and ESP32 serial bootloader utility, https://github.com/espressif/esptool HomeACcessoryKid, life-cycle-manager (2019), Initial install, WiFi settings and over the air firmware upgrades for any esp-open-rtos repository on GitHub, https://github.com/HomeACcessoryKid/life-cycle-manager