What are the necessary criteria for a firmware upgrade?