how firmware works