There appears to be a conflict between ble_advertising and broadcasting while connected. If connected, the ble_advertising state machine still gets TIMEOUT messages from the broadcast and fails to ignore them and then advances the ble_advertising state machine into generating its own advertising packets while will cause false broadcasting. The ble_advertising state machine should ignore those TIMEOUT messages. I don't see a workaround other than compiling my own version of ble_advertising with a check to ignore timeouts if connected. Perhaps a better/proper fix for the Nordic SoftDevice would be to use a different timeout src: BLE_GAP_TIMEOUT_SRC_BROADCASTING for the evt.gap_evt.params.timeout.src field.