Writes don't work if more than 20 bytes written
I know it says that flags are truncated to 20 characters and I see that in the source code, but I don't think it's clear that you must truncate flags to 20 characters (at least on some devices). If I transmit the full md5 to flag 3 and view the console I see this: I (458161) ESP_GATTS_DEMO: ESP_GATTS_WRITE_EVT I (458161) ESP_GATTS_DEMO: PREPARE WRITE TRIGGERED I (458161) ESP_GATTS_DEMO: prepare write, handle = 44, value len = 18 I (458241) ESP_GATTS_DEMO: ESP_GATTS_WRITE_EVT I (458241) ESP_GATTS_DEMO: PREPARE WRITE TRIGGERED I (458241) ESP_GATTS_DEMO: prepare write, handle = 44, value len = 14
In fact anything over 20 characters is transmitted as two writes, so 18 and 4 for 22 characters for example, meaning nothing over 20 characters gets recognised as a correct flag. If I write exactly 20 characters then it works fine.
$ hciconfig hci0 hci0: Type: Primary Bus: USB BD Address: xx:xx... ACL MTU: 1021:4 SCO MTU: 96:6