           @_processLoadingScript(ledger.fup.updates.OS_INIT[index][1], States.LoadingOldApplication, true)
           .then =>
             @_checkReloadRecoveryAndHandleState()
-          .fail => @_failure(Errors.CommunicationError)
+          .fail (ex) =>
+            switch ex.message
+              when 'timeout'
+                @_waitForPowerCycle()
+              else @_failure(Errors.CommunicationError)
         else
           @_checkReloadRecoveryAndHandleState(firmware)
     .fail =>

          else
            throw Errors.WrongPinCode
    .fail =>
      @_failure(Errors.WrongPinCode)
    .done()


      .then =>
        @_waitForPowerCycle(null, yes)
      .fail (e) =>
        unless @_handleLoadingScriptError(e)
          switch @_getCard().SW
            when 0x6985
              l "Failed procces RELOAD BL FROM OS"
              @_processInitOs()
              return
            when 0x6faa then @_failure(Errors.ErrorDueToCardPersonalization)
            else @_failure(Errors.CommunicationError)
          @_waitForDisconnectDongle()
    .fail (err) ->
      console.error(err)

