maximkulkin / esp-homekit

Apple HomeKit accessory server library for ESP-OPEN-RTOS
MIT License
1.1k stars 168 forks source link

ESP RTOS sdk paring failed. #131

Closed GoRo33 closed 4 years ago

GoRo33 commented 4 years ago

Hi!

First of all I want to express words of appreciation for the hard work put into this project.

I have problem with connecting my iPhone to accessory. Apparently everything is fine, gets the connection but according to logs pairing is successful, while the phone shows information that the device cannot be added due to a connection error.

Somebody could help to solve this issue?

I'm using ESP RTOS SDK, branch release/v3.2 and iPhone 8 with latest iOS.

I (457) reset_reason: RTC reset 2 wakeup 0 store 0, reason is 2
STA start
I (5247) event: sta ip: 10.52.0.18, mask: 255.255.255.0, gw: 10.52.0.1
WiFI ready
>>> HomeKit: Starting server
>>> HomeKit: Using existing accessory ID: 8A:5A:C8:14:AE:DB
>>> HomeKit: Configuring mDNS
>>> homekit_setup_mdns: Accessory Setup ID = 1QJ8
>>> homekit_run_server: Staring HTTP server
>>> HomeKit: Got new client connection: 1 from 10.52.0.19
>>> homekit_client_process: [Client 1] Got 131 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 49160
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 0 value (1 bytes): \x00
>>> tlv_debug: Type 6 value (1 bytes): \x01
>>> HomeKit: [Client 1] Pair Setup Step 1/3
>>> homekit_server_on_pair_setup: Free heap: 49068
>>> crypto_srp_new: Initializing SRP
>>> homekit_server_on_pair_setup: [Client 1] Initializing crypto
>>> homekit_server_on_pair_setup: Free heap: 48396
>>> homekit_server_on_pair_setup: [Client 1] Using user-specified password: 327-98-547
>>> crypto_srp_init: Generating salt
>>> crypto_srp_init: Setting SRP username
>>> crypto_srp_init: Setting SRP params
>>> crypto_srp_init: Setting SRP password
>>> crypto_srp_init: Getting SRP verifier
>>> crypto_srp_init: Setting SRP verifier
>>> crypto_srp_get_public_key: Calculating public key
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 3 value (384 bytes): \x03;\x91\xB5k!\xEC\xE6\x961w\x02\x03\x8D\xBB\x03\xA09\x9DQ\x8C\x97\x0A#\x92\x09<- o\xB5\xC5\x07s\xACR}\x01\x9Cm"]\xDB%D\x8E\xCD\x92^Q\xC6\xD4\xD2NQ\xCE,\x80\xD2S`\x05Y\xD1\xB5\xA6\xCA,\x95<{l\x09\x0E\xCC\xDC\x8F\xCD\xB2-\xCBN\xDE\x0F\xCD\xBEJt\xD75\x0F\x15\xB8>\x88u\xAF\xA9\xC3\xC0\x82\x1D\x13b\xF2\xC9613\x91\xE7\x88\xC6\xCFK-a`\x8F\x95\xD3#"\x84\x9Bg\x03\x08r\xC6\x1B\x91\xC7\x84\x1C\x9BY\xA1)5\x1D\\\x81\xD9_\xB2\x8B\xF5\x9FL\xC9!\xB5\xBF\xDE*&\xE9\x0AJw!\x12\x8F)\xE2;\x09\x9D\xD9\xBCvtL\xBE~W\xEF\x87\x17\xA1\xC7\xB68\x09\xD6\xA3\x04\xFD\x0E\x14\x11|O\xDE{\xC3\x9B\xC4\xEA\x11\x89\xC5\x07\x16\x89\xC9\x90\xA8\x11\xFA\xCC\xD5\xAF;9\xA2\xE9\x9B;'$;\x17\x9B\x18\xC7\x8DR\xCA\x87\x81\x0B\x06\xF3\xA438\xB6\xAE\xAC\xD4\xB8U\xD7~\xCC\xE2w\x0D\x08:"KT\xC6\xC8}\xE28Fx\xFF\xCDv \xC0\x9F\x9B\xFB/\x17\xBA@\x86\x1F!.\xF6\xB6\xEB\xF2\xF3\x0F\xB1}\x19:\x0CCO\x11\xB1\x12_\xCF\x82\xA0\x9Db\x8F^h*n\x9B5B'"4\xDED\x84w\x8F\x10\xA1uR\x97\xBE,\x81\x94{~\xAD\x1D\xB0]\xBC"\x83\xFC\xEE\xAB \xF7(\x8F\x10\xC9\x0BH=\\\x88Z\xF6\x1Bu\x04\xCD$\xBFi\xE1\xF0\x15D\x16\xF4\xC5\x1Dyi\x10b\x18{y\x831\xFF\xB2L\xCB\xBA\xCD>\xDD
>>> tlv_debug: Type 2 value (16 bytes): B\x16i\x01\xC6\x15\xFD"\x02\x87\x9BWR\xA6{\xDB
>>> tlv_debug: Type 6 value (1 bytes): \x02
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 409\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x03\xFF\x03;\x91\xB5k!\xEC\xE6\x961w\x02\x03\x8D\xBB\x03\xA09\x9DQ\x8C\x97\x0A#\x92\x09<- o\xB5\xC5\x07s\xACR}\x01\x9Cm"]\xDB%D\x8E\xCD\x92^Q\xC6\xD4\xD2NQ\xCE,\x80\xD2S`\x05Y\xD1\xB5\xA6\xCA,\x95<{l\x09\x0E\xCC\xDC\x8F\xCD\xB2-\xCBN\xDE\x0F\xCD\xBEJt\xD75\x0F\x15\xB8>\x88u\xAF\xA9\xC3\xC0\x82\x1D\x13b\xF2\xC9613\x91\xE7\x88\xC6\xCFK-a`\x8F\x95\xD3#"\x84\x9Bg\x03\x08r\xC6\x1B\x91\xC7\x84\x1C\x9BY\xA1)5\x1D\\\x81\xD9_\xB2\x8B\xF5\x9FL\xC9!\xB5\xBF\xDE*&\xE9\x0AJw!\x12\x8F)\xE2;\x09\x9D\xD9\xBCvtL\xBE~W\xEF\x87\x17\xA1\xC7\xB68\x09\xD6\xA3\x04\xFD\x0E\x14\x11|O\xDE{\xC3\x9B\xC4\xEA\x11\x89\xC5\x07\x16\x89\xC9\x90\xA8\x11\xFA\xCC\xD5\xAF;9\xA2\xE9\x9B;'$;\x17\x9B\x18\xC7\x8DR\xCA\x87\x81\x0B\x06\xF3\xA438\xB6\xAE\xAC\xD4\xB8U\xD7~\xCC\xE2w\x0D\x08:"K\x03\x81T\xC6\xC8}\xE28Fx\xFF\xCDv \xC0\x9F\x9B\xFB/\x17\xBA@\x86\x1F!.\xF6\xB6\xEB\xF2\xF3\x0F\xB1}\x19:\x0CCO\x11\xB1\x12_\xCF\x82\xA0\x9Db\x8F^h*n\x9B5B'"4\xDED\x84w\x8F\x10\xA1uR\x97\xBE,\x81\x94{~\xAD\x1D\xB0]\xBC"\x83\xFC\xEE\xAB \xF7(\x8F\x10\xC9\x0BH=\\\x88Z\xF6\x1Bu\x04\xCD$\xBFi\xE1\xF0\x15D\x16\xF4\xC5\x1Dyi\x10b\x18{y\x831\xFF\xB2L\xCB\xBA\xCD>\xDD\x02\x10B\x16i\x01\xC6\x15\xFD"\x02\x87\x9BWR\xA6{\xDB\x06\x01\x02
>>> homekit_client_process: [Client 1] Finished processing
>>> homekit_client_process: [Client 1] Got 584 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 46208
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x03
>>> tlv_debug: Type 3 value (384 bytes): \xA5nsA\x13y\xEA\x15>\xEEXo*`\x0F\x09U\x1ERh\xEB\x09\x9DKA9\xA9\x82\x08/\xFA`\xB8\xA6!\xFCZ\x86\x05h\xCDt\xAE9q\xE2\x86\xF0\xB8\xEE\xE1\xA9}6\xF38\xA4vrST\xF0\xAF\xFDT\xB1"S\xDB\x9B\xE7A@\xD9\xD8>-\xF4\xD0\x07U\xD1\x8E&\xC4%\xCB\x83#d5m^ \xBCWLK+\xF3\x17U\x16\xA7m\xE3K\xA7=\xC9\x98\xD7\xCF\xCD\x89\xA7\x1AN\xFD\xA2\x12O~\xB5\x883$8ii5n\x16\xEAlEg\x95r\x8C\x86\xE3\x05\x8Dx\xA6\xC3\xC9\x08\\\x15\xF8k\xF2\x83\xA5\xD4\xF1\xBC=\xC4\x08\x0Ca\xC2\xFDd\x9D\xBE\xCE\x95b\xD8\xC3jkV\xF7SU\xFE\x97'0\x04\xAE\x1A\x12\xED\xF8w\xCD+\xF6\xEE#\xEC\x87\xBB_\xC7+^\xB4\x9A\x9F\xBA\xC3\xF7\x85\xE9\x84|\x19\xE8\xFFL\xC1!F\x01\xE9\xFA0\xC8\xB1"\xDF\xEB\xD4\x95\xE1\x11Mu\xF2\x0E\xD0^\xBE/\xFC8\xDA\x13f5\xC9wr\xEC\xA8+\xB2\xBD\x07\xFEL-\xA3\xFA\x10\x0Cq\xB3\xE3\x8B\xBD\xD7\x8A\x9F\x1C\xE9\x1C\xEBnp\xF1\x1B\xA4+\xF8\xD1\x9E?;N\xA9\\\x091Dq\x16\xCC\xE9\x1A\xF9G\x0AlI\x98\x83J\xF5\x07\xCA\xDB\xB9\x93\x8E\xD9\xF7\x04j\xF2H\x0B\x0D{\xC6\xA2\x09!\xF5!\x8C\x86\xF6\x9DaZ`j~\x00\xAA\x94^]&o\xAA\x13\xF7\x01\xA4\x8B\x88\xA2\xD5C\x9D\xF2\x15Qk-\x87\xB7E:hG\x83\x16\x008\xDA}\x81E {3I\xA5\xB3\\\xF6\x97\x00\x02
>>> tlv_debug: Type 4 value (64 bytes): \xD4\xCD\x1B.he\x0Eu\xFF\xAAH\x92WL\x8F\x8C9\x9Ahel\x00z\x92\x9BW/\xD6\xA7\xFC\xBC\xB0F\x8B\x01\xFB\x12\xB4Cz.\xCE\x8Dv\xD5\xDA\x82\x05\xDE\xBB\xBFl\xA9~\xC3!\xA6\x1F\xD1\xB2\xD4\xB6J
>>> HomeKit: [Client 1] Pair Setup Step 2/3
>>> homekit_server_on_pair_setup: Free heap: 45648
>>> homekit_server_on_pair_setup: [Client 1] Computing SRP shared secret
>>> homekit_server_on_pair_setup: Free heap: 45648
>>> homekit_server_on_pair_setup: [Client 1] Verifying peer's proof
>>> homekit_server_on_pair_setup: Free heap: 45968
>>> homekit_server_on_pair_setup: [Client 1] Generating own proof
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x04
>>> tlv_debug: Type 4 value (64 bytes): \x09\x0DK$*\xC4\x87X}\x16\x1B\xC3\x9DS\x8DVf7=\x0DNg\xA2\x8F\x88\x1F\xB0\xA6\xAE\x93;n5"14M5\xBA;>kQ\xBD\x08J.\xF0p\x971b|J\x07O"\xB7G\xA2X\x00\xCEs
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 69\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x04\x04@\x09\x0DK$*\xC4\x87X}\x16\x1B\xC3\x9DS\x8DVf7=\x0DNg\xA2\x8F\x88\x1F\xB0\xA6\xAE\x93;n5"14M5\xBA;>kQ\xBD\x08J.\xF0p\x971b|J\x07O"\xB7G\xA2X\x00\xCEs
>>> homekit_client_process: [Client 1] Finished processing
>>> homekit_client_process: [Client 1] Got 286 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 46828
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 5 value (154 bytes): \xDB8cf%2\xD5\xB4\xAA\x8C?\xD7\xB0*\xA7\xE1\x88\xC3(\xF1\xBD\xC3xQ\xA1A\xD7\x1D/\x03\x0Ay\xAA\xB8\xDF8\x8C\xC15\x8C\x06g\xF8\x8A\xD6i\xCE\xBC\x0D2\x86\x9A\xB9\xAA.\xB9\xA8\x83\x15\x8C4\xE0\x19\xD1\xAB\xA0\xC2}\xDE\xB5\x8FOb\x1ER\x0E\x8F\x06\x06\xBA\xC5\xA45P@\xCAJ\x1Er\xE0'$z{\xCEC\x8B\x09(\x0D,\xA2\xBA\xD3\xCA\xC8X1\xA3\x03d\x1D\xF5R\xAB=\xDB$#6\x8C\xA0\xB2\xB7\xC8h\xB9\xB3\xB0or7CN\xCB\xBD\xF2\xAC{\x15\xB3\x1F\x0E\xAD9+\x8B\x08\x08*\xDD]\\
>>> tlv_debug: Type 6 value (1 bytes): \x05
>>> HomeKit: [Client 1] Pair Setup Step 3/3
>>> homekit_server_on_pair_setup: Free heap: 46592
>>> homekit_server_on_pair_setup: [Client 1] Calculating shared secret
>>> homekit_server_on_pair_setup: [Client 1] Decrypting payload
>>> homekit_server_on_pair_setup: [Client 1] Importing device public key
>>> homekit_server_on_pair_setup: [Client 1] Calculating DeviceX
>>> homekit_server_on_pair_setup: [Client 1] Verifying device signature
>>> HomeKit: Added pairing with 9B1C8220-E0E5-4272-A9FC-4A841A296F92
>>> homekit_server_on_pair_setup: [Client 1] Exporting accessory public key
>>> homekit_server_on_pair_setup: [Client 1] Calculating AccessoryX
>>> homekit_server_on_pair_setup: [Client 1] Generating accessory signature
>>> homekit_server_on_pair_setup: Free heap: 46460
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 1 value (17 bytes): 8A:5A:C8:14:AE:DB
>>> tlv_debug: Type 3 value (32 bytes): \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
>>> tlv_debug: Type 10 value (64 bytes): \xB5\xEF3\x15\xD7\xF7\x9E\xB1\xDA\xCBp\x9E\xEB?6#\x89\x82\xD5>0\xF9`vx\xD9\x173|\x86/\xEF\xEF\xB5\xCEZ\xF9\x8D\xA9\x8BT\x0B<V\xF4"\x11G\xBE\x04]uQ\x00K.\x14\x16\x0D\x8A\x97\\\x0C\x07
>>> homekit_server_on_pair_setup: [Client 1] Encrypting response
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x06
>>> tlv_debug: Type 5 value (135 bytes): U^D2\x83F\x06\x11\xB1\xE7\xE3X>\x80\xCAV\x88\xEF\xB4o\xE8\x97\xC0\xD4^xb\x06\xAD\xBF\xEF6|\xEA\x9D\xC1%Fw|iL&HZ3\x0B:\xD4\xCC8\xE5\x93A\xF3\x0B\xB4A\x1A\xA7"\xFF\xC4&1\xD2\xB0\x06\x85\x8D\xB8\x857z\x81\xEBD\x89\x00\xC43>-\x1B\xCB\xF4[x\xBBi\x8AE.\x0E?\x9C\x08EM\xB9\x1A3\x1B\x94\x9F\xF0\xD9Nj\xC8\xA3\xD9\xB6N\xEFH\xF2\xF0\x81q\xD41\x0F9\xC4Q\xC6\x9A\xF1\xF3L9\x1C
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 140\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x06\x05\x87U^D2\x83F\x06\x11\xB1\xE7\xE3X>\x80\xCAV\x88\xEF\xB4o\xE8\x97\xC0\xD4^xb\x06\xAD\xBF\xEF6|\xEA\x9D\xC1%Fw|iL&HZ3\x0B:\xD4\xCC8\xE5\x93A\xF3\x0B\xB4A\x1A\xA7"\xFF\xC4&1\xD2\xB0\x06\x85\x8D\xB8\x857z\x81\xEBD\x89\x00\xC43>-\x1B\xCB\xF4[x\xBBi\x8AE.\x0E?\x9C\x08EM\xB9\x1A3\x1B\x94\x9F\xF0\xD9Nj\xC8\xA3\xD9\xB6N\xEFH\xF2\xF0\x81q\xD41\x0F9\xC4Q\xC6\x9A\xF1\xF3L9\x1C
>>> HomeKit: Configuring mDNS
>>> homekit_setup_mdns: Accessory Setup ID = 1QJ8
>>> HomeKit: [Client 1] Successfully paired
>>> homekit_client_process: [Client 1] Finished processing
>>> HomeKit: [Client 1] Closing client connection
>>> HomeKit: Got new client connection: 1 from 10.52.0.19
>>> homekit_client_process: [Client 1] Got 131 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 49168
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 0 value (1 bytes): \x00
>>> tlv_debug: Type 6 value (1 bytes): \x01
>>> HomeKit: [Client 1] Pair Setup Step 1/3
>>> homekit_server_on_pair_setup: Free heap: 49076
>>> HomeKit: [Client 1] Refusing to pair: already paired
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x02
>>> tlv_debug: Type 7 value (1 bytes): \x06
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 6\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x02\x07\x01\x06
>>> homekit_client_process: [Client 1] Finished processing
>>> HomeKit: [Client 1] Closing client connection

Maybe problem is that after flash at first boot I always get kernel panic?

WiFI ready
>>> HomeKit: Starting server
>>> HomeKit: Formatting HomeKit storage at 0x200000
>>> HomeKit: Generated new accessory ID: E8:22:BE:83:67:16

Task stack [HomeKit Server] stack from [0x3fff4590] to [0x3fff758c], total [12288] size

                   0          4          8          c         10         14         18         1c         20         24         28         2c         30         34         38         3c

3fff7480  0x00000022 0x401077ec 0x00000000 0x00000000 0x401077fe 0x401077fe 0x4010781e 0x4025eb0c 0x00000000 0x401077fe 0x401077fe 0x4024be45 0x00000083 0x00000067 0x00000016 0x00000000
0x4025eb0c: wc_ed25519_make_key at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/wolfssl/wolfssl-4.1.0/wolfcrypt/src/ed25519.c:713

0x4024be45: crypto_ed25519_generate at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/homekit/src/crypto.c:363

3fff74c0  0x00000000 0x00000000 0x401077ec 0x4024a60c 0xa5a5a5a5 0xa5a5a5a5 0x401077ec 0x4024a67c 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5
0x4024a60c: homekit_accessory_key_generate at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/homekit/src/server.c:3387

0x4024a67c: homekit_server_task at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/homekit/src/server.c:3421

3fff7500  0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5 0xa5a5a5a5
3fff7540  0x40105430 0x4024a630 0x00000030 0x00000000 0x3fff7590 0x401077ec 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
0x40105430: _xt_user_exit at /Users/maczek/esp_sdk/ESP8266_RTOS_SDK/components/freertos/port/esp8266/xtensa_vectors.S:715

0x4024a630: homekit_server_task at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/homekit/src/server.c:3398

3fff7580  0x00000000 0x00000000 0x00000000 0x00000000

        PC: 0x40260b84        PS: 0x00000030        A0: 0x40260b84        A1: 0x3fff7480
0x40260b84: hwrand_generate_block at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/wolfssl/wolfssl-4.1.0/wolfcrypt/src/random.c:943
 (inlined by) wc_RNG_GenerateBlock at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/wolfssl/wolfssl-4.1.0/wolfcrypt/src/random.c:883

0x40260b84: hwrand_generate_block at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/wolfssl/wolfssl-4.1.0/wolfcrypt/src/random.c:943
 (inlined by) wc_RNG_GenerateBlock at /Users/maczek/esp_sdk/esp-homekit-demo/components/common/wolfssl/wolfssl-4.1.0/wolfcrypt/src/random.c:883

        A2: 0xc9901094        A3: 0xfddb92a8        A4: 0x0000001e        A5: 0x4010783e
        A6: 0x40107830        A7: 0x00000001        A8: 0x00000000        A9: 0x0000ffff
       A10: 0x00000000       A11: 0xffffffff       A12: 0x4010781e       A13: 0x00000000
       A14: 0x00000004       A15: 0x00000020       SAR: 0x00000013  EXCCAUSE: 0x00000009

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 7176, room 16
0x40100000: _stext at ??:?
d4rkmen commented 4 years ago

Hi, wolfssl random error I have too (every first boot after reflash) Not sure what the problem is.

The pairing issue is well known (mDNS implementation + wrong place for paired flag set) and solving by PR #123

GoRo33 commented 4 years ago

Do you think changing branch to esp-RTOS-sdk 3.1 will help?

d4rkmen commented 4 years ago

Do you think changing branch to esp-RTOS-sdk 3.1 will help?

Definately, it will not help.

GoRo33 commented 4 years ago

Do you think changing branch to esp-RTOS-sdk 3.1 will help?

Definately, it will not help.

Ok, so only solution is to wait for PR to be merged ?

Edit:

My friend, I have checkout to this PR and it don't solve problem in my case. Still getting paring error on iOS side.

d4rkmen commented 4 years ago

@GoRo33 Can you provide the log? I have a feeling the changes were not applied.

GoRo33 commented 4 years ago

Of cors. Happy to help: I have made changes described in pull request commits add to components dir new mDns library and additionally turn off mDns library from menuconfig.

STA start
I (23478) event: sta ip: 10.52.0.18, mask: 255.255.255.0, gw: 10.52.0.1
WiFI ready
>>> HomeKit: Starting server
>>> HomeKit: Using existing accessory ID: 82:16:56:B6:95:87
>>> HomeKit: Configuring mDNS
>>> homekit_run_server: Staring HTTP server
>>> HomeKit: Got new client connection: 1 from 10.52.0.16
>>> homekit_client_process: [Client 1] Got 131 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 54732
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 0 value (1 bytes): \x00
>>> tlv_debug: Type 6 value (1 bytes): \x01
>>> HomeKit: [Client 1] Pair Setup Step 1/3
>>> homekit_server_on_pair_setup: Free heap: 54632
>>> crypto_srp_new: Initializing SRP
>>> homekit_server_on_pair_setup: [Client 1] Initializing crypto
>>> homekit_server_on_pair_setup: Free heap: 53968
>>> homekit_server_on_pair_setup: [Client 1] Using user-specified password: 111-11-111
>>> crypto_srp_init: Generating salt
>>> crypto_srp_init: Setting SRP username
>>> crypto_srp_init: Setting SRP params
>>> crypto_srp_init: Setting SRP password
>>> crypto_srp_init: Getting SRP verifier
>>> crypto_srp_init: Setting SRP verifier
>>> crypto_srp_get_public_key: Calculating public key
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 3 value (384 bytes): \x8A\xB8\x80\xAF\x09\xC6\xB5]\xE1\xF7\x04$\xB2 kYA\xD0\xFE\x1B\xF6\xE0eQ=\xB7\xCFH\xB43\xD1\x12%\x9E\xADH/\x0C\x80@`?g\xB3\xD3\xA8w\xDB\xC8\x9D\xD9\xB5Q2\xEEbAW\x0F\x86\xFB\xF8\x15\x07\xAD\xFC\xE9\xA1n\xE0\xB4\x8E#\xDC$\x8EC\x81i\xE9\xE9\x9E^\x8C\xC5\x82s`{\x98s#Qun(\x9F7\xD5c\xF8\xB4\xBBH\xF1\xF7\x88k\x05%?Z\xA5\x8Bk\xEEh?5\xD1\xF0\xCCk.\xFF\x90fm\xE7p3\x97\x11\xF5w\xE7\xA0\xE1\x1D\xD2\xBEkPq\x82\x11\xEE\x9C\xCF\x9C\xD0H\xB8\x9F\x803k\xB3\xCFP\xBF\xDAX\xD6o\xCECa\xD4\xD0~\x8B\xF2\xD8\x1D\xE6\x91\x8FaI{;\xE0\x8F>\x80\x18z\x9B\xB59?\x05\xD4\x02t\x08#\x9D\xDF\xFB\x14n\xD8\xC7\xED\xA2\xF7\x05\x0B\x0E\xA2\xF1\x97\xDA\x84\xF7\x0C/]N\xDC#\x9FI\xEC\x86\x86\xBBh\x15\xE5\x8B\xB7\xE9\xA5\x9F\xD4\x81\xBC\xF4\xC4u\xB3\xB9\xF7T\xCD\xA7\x86\xA9\xC8\x83\xAF\xE3\xD2\x96gJ\x81\x1A\x95\xF7\xAF\x17i\xF2\xAA@>X'\x1DZ|\xC1\xA4\x02O0\x18}J;\xEE\xA3\xD3<\xD10 ~K\xD5O\x92\x8A\xD0\xC3n{`\x0B\xFA\xAC\xD5A\xC3\x8D\xBF\x81\x05\xFA+\xDDvJ\xA3K\xBEYW\x18\xFC\xB6\\\xECVO\x9E!\xC0\xECF\xD1\x01\xAD\xA4\xB2\xE5\x1A'\xBE\x17\x82\xB1:\x1B\x0C\xFA',H\x00\x89\x0B\xED\xF4\x94\xB1\xB7"\x06\xBEU\x86\xBF\x01\xE2v\xF9\xA5]j\x04\x86!}3\xE7\xB9\xD7
>>> tlv_debug: Type 2 value (16 bytes): \xCF\x97 \xC4\x0F\x1FH4\xAF\x91\xBA0P\xE0\xDD\x97
>>> tlv_debug: Type 6 value (1 bytes): \x02
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 409\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x03\xFF\x8A\xB8\x80\xAF\x09\xC6\xB5]\xE1\xF7\x04$\xB2 kYA\xD0\xFE\x1B\xF6\xE0eQ=\xB7\xCFH\xB43\xD1\x12%\x9E\xADH/\x0C\x80@`?g\xB3\xD3\xA8w\xDB\xC8\x9D\xD9\xB5Q2\xEEbAW\x0F\x86\xFB\xF8\x15\x07\xAD\xFC\xE9\xA1n\xE0\xB4\x8E#\xDC$\x8EC\x81i\xE9\xE9\x9E^\x8C\xC5\x82s`{\x98s#Qun(\x9F7\xD5c\xF8\xB4\xBBH\xF1\xF7\x88k\x05%?Z\xA5\x8Bk\xEEh?5\xD1\xF0\xCCk.\xFF\x90fm\xE7p3\x97\x11\xF5w\xE7\xA0\xE1\x1D\xD2\xBEkPq\x82\x11\xEE\x9C\xCF\x9C\xD0H\xB8\x9F\x803k\xB3\xCFP\xBF\xDAX\xD6o\xCECa\xD4\xD0~\x8B\xF2\xD8\x1D\xE6\x91\x8FaI{;\xE0\x8F>\x80\x18z\x9B\xB59?\x05\xD4\x02t\x08#\x9D\xDF\xFB\x14n\xD8\xC7\xED\xA2\xF7\x05\x0B\x0E\xA2\xF1\x97\xDA\x84\xF7\x0C/]N\xDC#\x9FI\xEC\x86\x86\xBBh\x15\xE5\x8B\xB7\xE9\xA5\x9F\xD4\x81\xBC\xF4\xC4u\xB3\xB9\xF7T\xCD\xA7\x86\xA9\xC8\x83\xAF\x03\x81\xE3\xD2\x96gJ\x81\x1A\x95\xF7\xAF\x17i\xF2\xAA@>X'\x1DZ|\xC1\xA4\x02O0\x18}J;\xEE\xA3\xD3<\xD10 ~K\xD5O\x92\x8A\xD0\xC3n{`\x0B\xFA\xAC\xD5A\xC3\x8D\xBF\x81\x05\xFA+\xDDvJ\xA3K\xBEYW\x18\xFC\xB6\\\xECVO\x9E!\xC0\xECF\xD1\x01\xAD\xA4\xB2\xE5\x1A'\xBE\x17\x82\xB1:\x1B\x0C\xFA',H\x00\x89\x0B\xED\xF4\x94\xB1\xB7"\x06\xBEU\x86\xBF\x01\xE2v\xF9\xA5]j\x04\x86!}3\xE7\xB9\xD7\x02\x10\xCF\x97 \xC4\x0F\x1FH4\xAF\x91\xBA0P\xE0\xDD\x97\x06\x01\x02
>>> homekit_client_process: [Client 1] Finished processing
>>> homekit_client_process: [Client 1] Got 584 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 51788
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x03
>>> tlv_debug: Type 3 value (384 bytes): {\xD2\x93\xAF\x95\xA9\x05\xB1?\x02\x85^o\x0A\xCE\xF6\x17\xC0W\x83\x86m\x0D\x1A/\xEB\xBBO\x8E\xBBRHc`\xC5\xCB\x04-\xB7\xBA\x0B3\xAD\\\xC5\xDE'\x05\x09\x94\x9E/\x0D@^\xCC \\\xF5\xF1\x8D4\x87-h\xC4%\xA0\xA9\xAA\x0F\x18\x0C\x1A\x88\x06\xC7\x08`9\x1E\xB6\x94,\xB3\xC7\xC6gF\xB2$v\xA8o)\x06\xB0\x07\xEA?QR\x11\xF6E\xFE\x12Q\x9D\xFB\x1D\x11\x0Db\x82^\xA9U\x05\x1A\x0C\x8B\x8DM\xD9N\xF5\xA4\xBA)\x12\xBFl\xD5\xB3\xB1\xF1\x06\xDF-o4C.Z\xBF\x12\x1B\xAFI\xD3f\x06\xBC\x8C\xD8C\xFE\x8B]\xEBT\xB9\x11\x10\xCF\x0A\xA4\x04DxR<\xA7~_l\x0D\x10El}\x88E\xDA{\xFC\xB0_\x8B\xC2HS\xC8\xC4?\xD3\xD5\xE6;C\x8F6fA\xEA&\xF4\xB7z\x16z\x83\xA7!\xF8\x95\xC9\xEC\x93\xFB\xF8\x02\x8FG+\xE4\xED\x14\x1E\xDCh#\xDD'\xF5s\xCC'\xB1\x8F\x83\xDB\xBD\xAAxG\xAE2}\xB7\x95\xE8\xF2\x09\xC5\x13\x03*v,\xAF\xBA\xDE\x9Arsz\xC1\xEE4\xD0\xF5|\x03(yG\x1F\xB3\xF2k\xBA\x0E\xBA\x88<\x072\xA4>(S+\x90\xB1\xAC\xF1\xFF\x08\xE2\x05\x12\x86\x15\x10\xAALR\xDE\xD3\x0A\xE7\x03\x1A\x1A8(\xE6\xB4\xDF2&\x99\x88\xDB\x9A\x0D>\x11\x8E\xCC\xE9?\x0Em+"\x87\x06\xD3:\xE1\xC0 \xE0\xD9\x03o8r\x12\xE0\x03F\xAF\xE37Z}\xD8V\x0B\xD9\x9D\x18\x09\xC3i\x04\xA3$\x8D\xEF\x85\x88\xF4|!\xE0\xEFv
>>> tlv_debug: Type 4 value (64 bytes): \xDE\xA3\x89\x08>L \xBB5=\xD7\x1B\x11\x81u\xE6%\x89\x83\x1A\x95\x0F\x82c]\xDC2f\xED\x17\xC4\x1F\x92|y\x95P(\xE8\x1B7\xDA\xDBYz[ \xDA\x86R\xD4)\x93\xDA\x1C\xA2R\x87\xFD2\xEC\xDB\xB4\xFF
>>> HomeKit: [Client 1] Pair Setup Step 2/3
>>> homekit_server_on_pair_setup: Free heap: 51220
>>> homekit_server_on_pair_setup: [Client 1] Computing SRP shared secret
>>> homekit_server_on_pair_setup: Free heap: 51220
>>> homekit_server_on_pair_setup: [Client 1] Verifying peer's proof
>>> homekit_server_on_pair_setup: Free heap: 51540
>>> homekit_server_on_pair_setup: [Client 1] Generating own proof
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x04
>>> tlv_debug: Type 4 value (64 bytes): \x1Av\xFE\x87\xB8T\x0A\xF4\x08_\x89\xB3\xE2\xA5\x93.+\xAB\xB3\x85\xFC\xE6%\xD7\xF1HWL_\xBE2\xDEhYmnq\xCD-\x96\x8B\xA30\x8EX\xA3\x89\xA7\xE6\xD6Y\x0DM\xC2V\xEFYX\x86\x0D\x0Fk\xDC\xDA
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 69\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x04\x04@\x1Av\xFE\x87\xB8T\x0A\xF4\x08_\x89\xB3\xE2\xA5\x93.+\xAB\xB3\x85\xFC\xE6%\xD7\xF1HWL_\xBE2\xDEhYmnq\xCD-\x96\x8B\xA30\x8EX\xA3\x89\xA7\xE6\xD6Y\x0DM\xC2V\xEFYX\x86\x0D\x0Fk\xDC\xDA
>>> homekit_client_process: [Client 1] Finished processing
>>> homekit_client_process: [Client 1] Got 286 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 52408
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 5 value (154 bytes): \xE9\xCD\xD5\x8A\xFC"-\x18\xCCpc\xEC\xC8c\xF7\x179_\xBC\x8D\xBB\x9EiIE\xFD\x04<=]\xED\xC6\x88=9\xD2:\x9C\xC4\xD0\xA14\xAD!\xA6\x98ou\xAF\x08\xA0\xF4@\xA9\x98\x18\xFEl\x1A\x95\xCB\xD4>\x8DZ\xF3c\x09\x12\xB7\xCA\xD6]\xF5\x84y\x0Dj\xAEk\xB7\xC7\xD5\xA87\x0D\xDCo\xFD\x80B\x9E5\xDB\x09u\x04C\xFBd0\xE2\x80%\xF6>\x87S\x97\x16\xD5[\xF4\xB5\xA7\xBC\x13\xD8\xF2N#\x8A\xE4\x09\x16\x99\xA6\xE7\x0C\xD7E\xE9Rsh9I\x1B\xFA\xCCC\xEA\xC5Q^\xCEMS \xDA):
>>> tlv_debug: Type 6 value (1 bytes): \x05
>>> HomeKit: [Client 1] Pair Setup Step 3/3
>>> homekit_server_on_pair_setup: Free heap: 52172
>>> homekit_server_on_pair_setup: [Client 1] Calculating shared secret
>>> homekit_server_on_pair_setup: [Client 1] Decrypting payload
>>> homekit_server_on_pair_setup: [Client 1] Importing device public key
>>> homekit_server_on_pair_setup: [Client 1] Calculating DeviceX
>>> homekit_server_on_pair_setup: [Client 1] Verifying device signature
>>> HomeKit: Added pairing with B5D20CBA-70F8-45C9-BF33-F978E31F656C
>>> homekit_server_on_pair_setup: [Client 1] Exporting accessory public key
>>> homekit_server_on_pair_setup: [Client 1] Calculating AccessoryX
>>> homekit_server_on_pair_setup: [Client 1] Generating accessory signature
>>> homekit_server_on_pair_setup: Free heap: 52040
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 1 value (17 bytes): 82:16:56:B6:95:87
>>> tlv_debug: Type 3 value (32 bytes): \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
>>> tlv_debug: Type 10 value (64 bytes): $\xC6\xB8\xFC@\x18\x97:\xF5X\xF0V\x1F\xB53\xE3\x08\xBA\xA5<h9\xBBU+%3\x8E\x02p\xF1\x82\x91(\x99|\x82\xCD\xB8f\xCE\xB7\xFD\xF42\xC8\xAA\xC6\xAEm\xB2\xA2U*\x95\xE5\x07!&\xD2\x8AI\xFA\x04
>>> homekit_server_on_pair_setup: [Client 1] Encrypting response
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x06
>>> tlv_debug: Type 5 value (135 bytes): \xBD%- \xDF\xE8\xACT\xC5\x94$`\xBB\xEB\xC9\x90i3\xDE\xEDl\x81j\xA6\xC6\xD5A\xF3B\xA2\xEA\x8BH\xFA\xC2\xD4\xE7N1\xAA\x1A;\xF1Z(\xDF\xF4g\x13\x94\x85m}\xF4\x8C\xE2&\xCB+\x99{\xAC\x97\x1F\x08\x90\x95\xA2u\xAE\xC6\xD6\xDC\xA1@r\x84V\xA6\x19m\xA7\xF7m\x88\xA7'#\xE8\xBD\x92\xC7\xDA\xD6\xF4L\xE6\x00i\xFAw\xAA\xBE\xED\x14\xC7\xD9\x00(d[\xA6\x00\xE4\xFD\x16\xCF\xF4D\xFB\x06\x04\x0B\xEC\xDB\xB8AY\xF3t~\x861\xB0^
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 140\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x06\x05\x87\xBD%- \xDF\xE8\xACT\xC5\x94$`\xBB\xEB\xC9\x90i3\xDE\xEDl\x81j\xA6\xC6\xD5A\xF3B\xA2\xEA\x8BH\xFA\xC2\xD4\xE7N1\xAA\x1A;\xF1Z(\xDF\xF4g\x13\x94\x85m}\xF4\x8C\xE2&\xCB+\x99{\xAC\x97\x1F\x08\x90\x95\xA2u\xAE\xC6\xD6\xDC\xA1@r\x84V\xA6\x19m\xA7\xF7m\x88\xA7'#\xE8\xBD\x92\xC7\xDA\xD6\xF4L\xE6\x00i\xFAw\xAA\xBE\xED\x14\xC7\xD9\x00(d[\xA6\x00\xE4\xFD\x16\xCF\xF4D\xFB\x06\x04\x0B\xEC\xDB\xB8AY\xF3t~\x861\xB0^
>>> HomeKit: [Client 1] Successfully paired
>>> homekit_client_process: [Client 1] Finished processing
>>> HomeKit: [Client 1] Closing client connection
>>> HomeKit: Got new client connection: 1 from 10.52.0.16
>>> homekit_client_process: [Client 1] Got 131 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 54732
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 0 value (1 bytes): \x00
>>> tlv_debug: Type 6 value (1 bytes): \x01
>>> HomeKit: [Client 1] Pair Setup Step 1/3
>>> homekit_server_on_pair_setup: Free heap: 54632
>>> HomeKit: [Client 1] Refusing to pair: already paired
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x02
>>> tlv_debug: Type 7 value (1 bytes): \x06
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 6\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x02\x07\x01\x06
>>> homekit_client_process: [Client 1] Finished processing
>>> HomeKit: [Client 1] Closing client connection
d4rkmen commented 4 years ago

This is same error. Paired flag is set, but no crypted message comes from the controller (iOS) yet. This is the thing should be changed by PR. Check server.c file changes

GoRo33 commented 4 years ago

I have checked it and your changes are present. I have also try to change in project git submodule from originally to yours fork (master branch) and recompile clean project. Nothing changes still error. Tomorrow I will try to make environment from open-rtos-sdk and try if this will work but this is compromise I prefer ESP sdk.

d4rkmen commented 4 years ago

open-rtos-sdk

I was move to ESP_RTOS because I have faced this issue. So, it will not help. Checked the last log, yes, mDNS configuration was not performed right after "Successfully paired" and this is how I wanted it to be. This mean, look closer to mDNS implementation. May be to add a few extra debug outputs. Every 1 second it should send announcement packet. iOS side thinks accessory goes offline, thats why pairing context dropped and started all over.

GoRo33 commented 4 years ago

OK, I will try to debug this. But for now as I understand this library is not working with esp8266? Or is there any option to make it work? Like downgrade some components or make it on latest (master branch) esy-rtos-sdk ?

Edit: I have add extra debug output It's sending mDns announcement. To be sure that isn't router problem I have change the router to other one. This Is log:

D (5581) tcpip_adapter: ip:192.168.3.239,mask:255.255.255.0,gw:192.168.3.1

>>> HomeKit: Starting server
>>> HomeKit: Using existing accessory ID: 9D:D5:80:56:21:D6
>>> HomeKit: Configuring mDNS
mdns: creating MDNS service for Sample LED
mdns: Updating IPv4 to 192.168.3.239
mdns: Updating IPv6 to 0:0:0:0
mdns: Starting service
mdns: Service task started
mdns: joining multicast group
mdns: listening on MDNS port on 224.0.0.251
mdns: connecting
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Service started
>>> homekit_run_server: Staring HTTP server
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
>>> HomeKit: Got new client connection: 1 from 192.168.3.183
>>> homekit_client_process: [Client 1] Got 131 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 54728
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 0 value (1 bytes): \x00
>>> tlv_debug: Type 6 value (1 bytes): \x01
>>> HomeKit: [Client 1] Pair Setup Step 1/3
>>> homekit_server_on_pair_setup: Free heap: 54636
>>> crypto_srp_new: Initializing SRP
>>> homekit_server_on_pair_setup: [Client 1] Initializing crypto
>>> homekit_server_on_pair_setup: Free heap: 53972
>>> homekit_server_on_pair_setup: [Client 1] Using user-specified password: 111-11-111
>>> crypto_srp_init: Generating salt
>>> crypto_srp_init: Setting SRP username
>>> crypto_srp_init: Setting SRP params
>>> crypto_srp_init: Setting SRP password
>>> crypto_srp_init: Getting SRP verifier
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
>>> crypto_srp_init: Setting SRP verifier
>>> crypto_srp_get_public_key: Calculating public key
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 3 value (384 bytes): K\xA6dE\xF3\xA8\x86/\xE7\xB6\xDE\xC6$\xBC'\xA4Ny#\xF3\xDE*\xFE\xBE\xF1E\x19qL\x03\x0CG\x88\xD8\xD3\xFD\xF8_H\xB3\xBD\x03aI\xDD\x08!u1\x0D\x10\xC3\x9Bb\xDC\xA5#\x10\x85\x86\xE2_3P*U]a\x03\x9F\xC9\xD6\x9B\x8A\xFF\xE7O!\x81\xAF\x83\x1CI4\x93\xCA\xFD\xDD\xCC\x81\xBE\xF9\x86i'\xDD,|\xD8HL\x9E\xDE\x90\x90V|\x06\xEDK\x06\xD2\x8Ak\xD1\x96\xF7?\xF0/<\x04HQR\xBA\x8F\xB7L\xE6`\xB6\x9B=m\xE1/"gA\xBE\xF5\xA8\xD2\xB3e.w\xF2\x8B\xE8\xCDuA\xC9\x8B6\x0D8\xE1\x8A\xF5\xBF\xADH>D\x91\xE5\xB5\xFC\xC5\xA7\x91P,.-t\x8A\xDD\xB5\x1E\xE4\x12\x1C@\xC8\xE5<\xC2\xDA\x1Fm,\xB0\x02\xF7R\xA6\xF3\xC4Kg\xDE\xC2\x03Ks\xCE`\x98\xC6\x03J\xC7#=o$\x09\xD1\xDFp\x01\xBF\xFB:\x1EXF\xF1\x93\x9E\xAB\x9C\xA1\x8E\x1E\x1A\xD6W\xAB\x8D\x14\x80,E'*\xB92\x98\xC5N\x1F\x9F\xA0\xF9#\xDA,U\xB8}\x9E\x89\xCBe=!;\xBC\x01\x18\xFE\xE9K\xF0f\xDD\xAF\x8E\xB5f\xAA\x80C.;F\xA8\xDE\xCE"\xFFdt\xD6\x8F\x1E\xF5\xF8\x15\xA1\x90\x0A\xD8\xA2\xE8\xF3\xE9J\xB4\x01\xE5\x01]\xFF\xA8\x9A'\x8D\xDD+4E\xAFk\xF3\x80ajS\x16My\xB8\xC5\x11\x05\x09z\x8E\x00=T\xB9\x01\xE0\xA1\x91$I"&\xB17\xC3\xAC\xF5\xDEn:\xE8k:\x98q\xD6W\x16\x13-H/\xEB\x1F\xAF\xA5$~T
>>> tlv_debug: Type 2 value (16 bytes): \x19\xEDN\xAFH\x89d?\x1C\xFC\xEA\x9A\xDA)\x14\x99
>>> tlv_debug: Type 6 value (1 bytes): \x02
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 409\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x03\xFFK\xA6dE\xF3\xA8\x86/\xE7\xB6\xDE\xC6$\xBC'\xA4Ny#\xF3\xDE*\xFE\xBE\xF1E\x19qL\x03\x0CG\x88\xD8\xD3\xFD\xF8_H\xB3\xBD\x03aI\xDD\x08!u1\x0D\x10\xC3\x9Bb\xDC\xA5#\x10\x85\x86\xE2_3P*U]a\x03\x9F\xC9\xD6\x9B\x8A\xFF\xE7O!\x81\xAF\x83\x1CI4\x93\xCA\xFD\xDD\xCC\x81\xBE\xF9\x86i'\xDD,|\xD8HL\x9E\xDE\x90\x90V|\x06\xEDK\x06\xD2\x8Ak\xD1\x96\xF7?\xF0/<\x04HQR\xBA\x8F\xB7L\xE6`\xB6\x9B=m\xE1/"gA\xBE\xF5\xA8\xD2\xB3e.w\xF2\x8B\xE8\xCDuA\xC9\x8B6\x0D8\xE1\x8A\xF5\xBF\xADH>D\x91\xE5\xB5\xFC\xC5\xA7\x91P,.-t\x8A\xDD\xB5\x1E\xE4\x12\x1C@\xC8\xE5<\xC2\xDA\x1Fm,\xB0\x02\xF7R\xA6\xF3\xC4Kg\xDE\xC2\x03Ks\xCE`\x98\xC6\x03J\xC7#=o$\x09\xD1\xDFp\x01\xBF\xFB:\x1EXF\xF1\x93\x9E\xAB\x9C\xA1\x8E\x1E\x1A\xD6W\xAB\x8D\x14\x80,E'*\xB92\x98\xC5\x03\x81N\x1F\x9F\xA0\xF9#\xDA,U\xB8}\x9E\x89\xCBe=!;\xBC\x01\x18\xFE\xE9K\xF0f\xDD\xAF\x8E\xB5f\xAA\x80C.;F\xA8\xDE\xCE"\xFFdt\xD6\x8F\x1E\xF5\xF8\x15\xA1\x90\x0A\xD8\xA2\xE8\xF3\xE9J\xB4\x01\xE5\x01]\xFF\xA8\x9A'\x8D\xDD+4E\xAFk\xF3\x80ajS\x16My\xB8\xC5\x11\x05\x09z\x8E\x00=T\xB9\x01\xE0\xA1\x91$I"&\xB17\xC3\xAC\xF5\xDEn:\xE8k:\x98q\xD6W\x16\x13-H/\xEB\x1F\xAF\xA5$~T\x02\x10\x19\xEDN\xAFH\x89d?\x1C\xFC\xEA\x9A\xDA)\x14\x99\x06\x01\x02
mdns: Announcing
mdns: sending packet (261 bytes)
>>> homekit_client_process: [Client 1] Finished processing
>>> homekit_client_process: [Client 1] Got 584 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 51784
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x03
>>> tlv_debug: Type 3 value (384 bytes): \x07\xDB\x10\xD0\x17\xDA\xC1\x04\xC8\xB6\xA0\x9FD\xFA\xB4_-M\x16\xB4W\x02\xEEI\xF6\x87xR.\xAB\x1EYO\x90\xE36\xBD\xAD\xD8\xDF\xEE\xA0M\xCF\xED=\x07o\x0F\x1B0A\xCFq\x11\xCFG\xCD\xDD\xCB\x86i\xDE\x13\xD8\x9B\xE3\x84\xE0\xB3u\x03\x9C\x17\xAB\xA6\xC6\xA9\x0B\xE8"`a\x1A\xB3Hl\xEF\xB9\xCA\xBDe\xE2Rue8\x1D\x96y\xA2\xC6Z\xB6\xD1\xB3*\x9C6\xDE\x92\xFE\x9B\x16~'\xF2\x17\x07\x9B`\x0D\xE9\x01\xA0\xA8UA\xD9\x84\xFD\xAF\x96\x966\xF7\x89\xACQ\x9E\xDA\xE5\xE0\x0AJ#?U+}\xC1$n\x85\xE4\xD9\xD4\xB0\xD7\xFC\x95N\xBC\x11KonP\xACW\xA9)/f\x1AVT\xCA\x9A\xAE#]A\xECC\xBEH\xF2\xA8\xA02\x803v\xC1@B\xD5\x95\x84\x0C\x068\x01\xB6\xE7Gd\x860\xED\xD9\x18\xEC$\x0CQ\xF2kz\xC19V`\xC5\xCE\x0C_\x02#\x8A\xC8\xD4$\xEC\x110\xA8{D\xF5\xE0\xE9\xD3\x86\xEE\xB7\xA3Ej\x170\xD0\xB6\x03\xED\xFE6Ie:\xE4\xF0%\xD2rQ\x05\xCB\x1A\xFBb\x01A\x0Du0\x15f\x1E\xD3\x13J\x19\xFC\xAC\x81T\x13\xE5\x1C\xB0\xF8\xE9\x0F\x01hz\xEE\xC6\x8Fe\xB8\xED\x9D(\x01\x17\x09\xBBE\xAF=\xD8\\@w\x8F\x98\xA5\xA8\xCE+sQ\x80uE\xAD\xAB\x1E\xFA\xD3F\xB0T\xDC\x18\x96y4f\xED\xFE\xA8*Q\x0B\xB9\x96DD\xD9\x08)\xB6 \xCA{XV\xEF\x1B\x09{^\xED\x80\xAC0\xFC\x1E\x07\x8Ew\x83\xDCR|\x09\xB2]\x8D
>>> tlv_debug: Type 4 value (64 bytes): \x0A\xA1_V\x92\xA5\xE3A6,\x96U\xF9@\xCAz~\x06\xBF\xAE\xF0[\x89L\xBA\x1FC_\x17\x0E\xB1\x87C\x86j[\x9E\x08\xF22\x8E\xF5\x9Ai\x0E\x11\xC3\xDA\xCAR\x85\x99 b-@\x908\xAF\xA3r\xFC
>>> HomeKit: [Client 1] Pair Setup Step 2/3
>>> homekit_server_on_pair_setup: Free heap: 51224
>>> homekit_server_on_pair_setup: [Client 1] Computing SRP shared secret
>>> homekit_server_on_pair_setup: Free heap: 51224
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
>>> homekit_server_on_pair_setup: [Client 1] Verifying peer's proof
>>> homekit_server_on_pair_setup: Free heap: 51544
>>> homekit_server_on_pair_setup: [Client 1] Generating own proof
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x04
>>> tlv_debug: Type 4 value (64 bytes): )OV\xE5\x85\x05\x8F\x137$z\xD8x`\xCC/\x85\xAE\xA4,\xB1\x86\xF6(\xE8\xDB\xEE\xC2\xA7\x0B\xE2y;\xC5D\xF4\xF2%\x09\xDF\xA4\xC6i\xE6\xAA_\x80\xEF\xA0/\x82\xF7\x97\x11\xC1\x0C6~\x8F~\xA7\xED\xF0\xA7
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 69\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x04\x04@)OV\xE5\x85\x05\x8F\x137$z\xD8x`\xCC/\x85\xAE\xA4,\xB1\x86\xF6(\xE8\xDB\xEE\xC2\xA7\x0B\xE2y;\xC5D\xF4\xF2%\x09\xDF\xA4\xC6i\xE6\xAA_\x80\xEF\xA0/\x82\xF7\x97\x11\xC1\x0C6~\x8F~\xA7\xED\xF0\xA7
>>> homekit_client_process: [Client 1] Finished processing
>>> homekit_client_process: [Client 1] Got 286 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 52404
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 5 value (154 bytes): o\x1F$\xBB\xF9su\xAD\xCD\x8B\xA4\x10\xADz\x93\xDE\xB3p&~\xE1U\xCD\xD8\xA5K\xECt.>]\xB5\x16\xE4^\x86m\xF08D\xCF0@Z,0D\xFAz\x11E\xD4>[\xC3\xAA\xBA\x89\xAD\x86\xE1#9\x1D\x12\xCAq\xD0GU\x82\x90m\x9C\x98\x09\xB8>\xD1\xAE\x98GJ@<\xD1\xEF\xB6\xFD<4\xF8O\xE6\x0D+\xCF\x09`\x17\x870P\xD2,K\x94\xAE\xC6;\xCAo\xA0\xE8\xE1\x16\xF1dz\xA4\xD3\xEE(\x99*KgY\x8D\x19B\x81@\xDF\xF0\xC7\xE0b,\xE5,\xFA\xA7\xF4\x85\xDB\xF8x\xBEW\xDB#\xB4
mdns: Announcing
mdns: sending packet (261 bytes)
>>> tlv_debug: Type 6 value (1 bytes): \x05
>>> HomeKit: [Client 1] Pair Setup Step 3/3
>>> homekit_server_on_pair_setup: Free heap: 52168
>>> homekit_server_on_pair_setup: [Client 1] Calculating shared secret
>>> homekit_server_on_pair_setup: [Client 1] Decrypting payload
>>> homekit_server_on_pair_setup: [Client 1] Importing device public key
>>> homekit_server_on_pair_setup: [Client 1] Calculating DeviceX
>>> homekit_server_on_pair_setup: [Client 1] Verifying device signature
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
>>> HomeKit: Added pairing with B5D20CBA-70F8-45C9-BF33-F978E31F656C
>>> homekit_server_on_pair_setup: [Client 1] Exporting accessory public key
>>> homekit_server_on_pair_setup: [Client 1] Calculating AccessoryX
>>> homekit_server_on_pair_setup: [Client 1] Generating accessory signature
>>> homekit_server_on_pair_setup: Free heap: 52036
mdns: Announcing
mdns: sending packet (261 bytes)
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 1 value (17 bytes): 9D:D5:80:56:21:D6
>>> tlv_debug: Type 3 value (32 bytes): \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
>>> tlv_debug: Type 10 value (64 bytes): \xD3\x9D\x05\xF9{\x98=\xDD\xAE\x85\x809U\xDE\xF0\xB5nyH\xCEwoC\xA6\x88`\xD0\x90 S\xE9\xD7\xF0{/\x1A\xC8\xFCI\x9D\xDB6e\xE1(u|Y\xB3q\xAA<\xB4|\x87\xAF@4\xB6=\xDC\xD0\x9E\x0D
>>> homekit_server_on_pair_setup: [Client 1] Encrypting response
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x06
>>> tlv_debug: Type 5 value (135 bytes): d\x8F\xB6\x8F]7z\xFE\x01\xB6M"lfL\xC2\x8D3\xE0ng\x0Aia^0dR V!W\xE8\xC1\xEA\xD6\xEE\x83\x12\xA1\x0E\xA7\x04\x19\xE3\xDA_\xE9\xA5\x93\xEA\x9B\xEAB?\x01pa\x8A\x88\x02\xC9q?\xDE;\xCC\xC3\xDDY+\xDB\xAA\xE1\x83\x9E=\x95)\x13\\\x94\xF0j\xB5\xA6\x81\xCC\xAEixZ\x07\xC7B\x18\x84\xB5\x0D\xCF\xCF*\xF9)[H\xB4\xAFr\xF5>'\xE5\xD95\xB9!\xE15\xCD\x0Ei,\xEBPL\x08P|\x85\xB8ik\x83
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 140\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x06\x05\x87d\x8F\xB6\x8F]7z\xFE\x01\xB6M"lfL\xC2\x8D3\xE0ng\x0Aia^0dR V!W\xE8\xC1\xEA\xD6\xEE\x83\x12\xA1\x0E\xA7\x04\x19\xE3\xDA_\xE9\xA5\x93\xEA\x9B\xEAB?\x01pa\x8A\x88\x02\xC9q?\xDE;\xCC\xC3\xDDY+\xDB\xAA\xE1\x83\x9E=\x95)\x13\\\x94\xF0j\xB5\xA6\x81\xCC\xAEixZ\x07\xC7B\x18\x84\xB5\x0D\xCF\xCF*\xF9)[H\xB4\xAFr\xF5>'\xE5\xD95\xB9!\xE15\xCD\x0Ei,\xEBPL\x08P|\x85\xB8ik\x83
>>> HomeKit: [Client 1] Successfully paired
>>> homekit_client_process: [Client 1] Finished processing
>>> HomeKit: [Client 1] Closing client connection
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
mdns: Announcing
mdns: sending packet (261 bytes)
>>> HomeKit: Got new client connection: 1 from 192.168.3.183
>>> homekit_client_process: [Client 1] Got 131 incomming data
>>> homekit_server_on_pair_setup: Pair Setup
>>> homekit_server_on_pair_setup: Free heap: 54728
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 0 value (1 bytes): \x00
>>> tlv_debug: Type 6 value (1 bytes): \x01
>>> HomeKit: [Client 1] Pair Setup Step 1/3
>>> homekit_server_on_pair_setup: Free heap: 54628
>>> HomeKit: [Client 1] Refusing to pair: already paired
>>> send_tlv_response: [Client 1] Sending TLV response
>>> tlv_debug: Got following TLV values:
>>> tlv_debug: Type 6 value (1 bytes): \x02
>>> tlv_debug: Type 7 value (1 bytes): \x06
>>> client_send: [Client 1] Sending payload: HTTP/1.1 200 OK\x0D\x0AContent-Type: application/pairing+tlv8\x0D\x0AContent-Length: 6\x0D\x0AConnection: keep-alive\x0D\x0A\x0D\x0A\x06\x01\x02\x07\x01\x06
mdns: Announcing
mdns: sending packet (261 bytes)
>>> homekit_client_process: [Client 1] Finished processing
>>> HomeKit: [Client 1] Closing client connection
mdns: Announcing
mdns: sending packet (261 bytes)
d4rkmen commented 4 years ago

library is not working with esp8266?

it works. Just pairing success 2-3 times of 10 for me (without code changes)

Can you try Eve app for pairing? Just for the test

It is strange the next pair setup try is performed after such a long delay (10 sec?) All that time u see pairing in progress on iOS? Or error comes immediately? What message?

GoRo33 commented 4 years ago

I have done this from Eve and it's this same. Exactly as you describe. Paring is still in progres and after second connection attempt error shows: Paring Error, Unable to connect to device.

End if you are connecting 10 times to Esp how you are reseting connected status on device? Because if connection on device side is successfully and iOS, not it will still disable this option. I have to erase flash and refresh device. IS there better solution?

I'm sure that my network is correct because I use open sourced HomeKit ADK on linux devices and it works like charm. And I have 20 electrodragon relay's and was thinking to use them too ;)

d4rkmen commented 4 years ago

End if you are connecting 10 times to Esp how you are reseting connected status on device?

I think I have patched the error message on already paired for debug. Can't remember now.

May be you try to remove the last commit from my PR? (the socet connection setup changes)

mriksman commented 4 years ago

So you ALWAYS get a panic after the first boot after an accessory reset? Is there no way around this?

>>> HomeKit: Starting server
>>> HomeKit: Resetting HomeKit storage
>>> HomeKit: Formatting HomeKit storage at 0xd000
>>> HomeKit: Generated new accessory ID: 66:A6:DD:26:42:2E
Guru Meditation Error: Core  0 panic'ed (LoadStoreAlignment). Exception was unhandled.
Core 0 register dump:
PC      : 0x40228f27  PS      : 0x00000030  A0      : 0x40228f27  A1      : 0x3fff7c10
0x40228f27: hwrand_generate_block at c:\vscode\projects\esp8266_homekit\build/../components/wolfssl/wolfssl-4.1.0/wolfcrypt/src/random.c:943
 (inlined by) wc_RNG_GenerateBlock at c:\vscode\projects\esp8266_homekit\build/../components/wolfssl/wolfssl-4.1.0/wolfcrypt/src/random.c:883

0x40228f27: hwrand_generate_block at c:\vscode\projects\esp8266_homekit\build/../components/wolfssl/wolfssl-4.1.0/wolfcrypt/src/random.c:943
 (inlined by) wc_RNG_GenerateBlock at c:\vscode\projects\esp8266_homekit\build/../components/wolfssl/wolfssl-4.1.0/wolfcrypt/src/random.c:883

On the next boot, I can begin pairing, but I get a timeout panic;

>>> crypto_srp_init: Generating salt
>>> crypto_srp_init: Setting SRP username
>>> crypto_srp_init: Setting SRP params
>>> crypto_srp_init: Setting SRP password
>>> crypto_srp_init: Getting SRP verifier
Task watchdog got triggered.

Guru Meditation Error: Core  0 panic'ed (unknown). Exception was unhandled.
Core 0 register dump:
PC      : 0x4000dd11  PS      : 0x00000030  A0      : 0x4000066d  A1      : 0x3fff7860  
A2      : 0x0ae9f241  A3      : 0x073b1890  A4      : 0x00000ae9  A5      : 0x0000073b  
A6      : 0x07e3970b  A7      : 0x3fffa968  A8      : 0x3fffb5b0  A9      : 0x00000000  
A10     : 0x40109f5c  A11     : 0x010bfb10  A12     : 0x0ae9f241  A13     : 0x073b1890
A14     : 0x2532fa85  A15     : 0x00000001  SAR     : 0x00000010  EXCCAUSE: 0x000f9d64  

Backtrace: 0x4000dd11:0x3fff7860 0x4010984c:0x3fff7880 0x4000066d:0x3fff7880 0x4022b7bd:0x3fff78b0 0x4022d26f:0x3fff7900 0x4000066d:0x3fff7900
0x4022b7bd: fast_mp_montgomery_reduce at c:\vscode\projects\esp8266_homekit\build/../components/wolfssl/wolfssl-4.1.0/wolfcrypt/src/integer.c:116

0x4022d26f: mp_exptmod_fast at c:\vscode\projects\esp8266_homekit\build/../components/wolfssl/wolfssl-4.1.0/wolfcrypt/src/integer.c:116

Update: OK, following #119, I went to Component config -> Common ESP-related -> Task Watchdog timeout period (seconds)) and increased to 26.2144. Setting it to 13.1072 would get me a little further, but still failed at step 2/3.

Right, now the Watchdog timeout is out of the way - I am experience the exact same issue as @GoRo33.

mriksman commented 4 years ago

I got mine working - without the panic when using esp_random() by using the following in user_settings.h instead of the current function.

    #include "esp_libc.h"

    static inline int hwrand_generate_block(uint8_t *buf, size_t len) {
        os_get_random(buf, len);
        return 0;
    }

    #define CUSTOM_RAND_GENERATE_BLOCK hwrand_generate_block

Which leads me to believe that initial panic/fail IS what is causing the issue with pairing after rebooting.

mriksman commented 4 years ago

Also, by removing

CURVE25519_SMALL
ED25519_SMALL

from CMakeLists.txt, you can almost halve the pairing time, at the expense of 70KB flash space.

I've added this to my CMakeLists.txt file for WolfSSL and HomeKit;

if(CONFIG_HOMEKIT_SMALL)
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
    -DCURVE25519_SMALL \
    -DED25519_SMALL"
  )
endif()
mriksman commented 4 years ago

How long does it take to pair for you? From the moment I type in all the 1's and it begins pairing, until I get the pairing complete message is about 32 seconds on this ESP8266 RTOS SDK. About 20 seconds if I disable the above.

maximkulkin commented 4 years ago

I should say I see a lot of people doing builds with idf.py and having all kinds of problems. Just use Make, it will make your life so much easier. People on Windows, sorry, I do not care about that OS, help yourself.

GoRo33 commented 4 years ago

@mriksman You are my king! I have manage to make it working after your change, so the problem was with random number generator in wolfssl. My paring time is some of 15 - 20 seconds because I have increase cpu clock to 160 Mhz. If you will be in Poland you will get a beer from me ;)

@maximkulkin I'm building firmware only using make. And I don't like Window$ too ;)

mriksman commented 4 years ago

They may remove support for GNU Make. https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/build-system-legacy.html So it seems logical to keep up with the direction Espressif are heading.

Don’t think using or not using Windows has much of an impact...?

mriksman commented 4 years ago

@GoRo33 what’s odd is esp-homekit also uses esp_random() with no issues. So it must be the actual function itself in user_settings.h that’s causing the issue.

GoRo33 commented 4 years ago

@mriksman Maybe it is good idea to make a pull request with you solution? I'm sure that we are not only ones with this problem.