Skip to content

Commit

Permalink
Merge pull request #934 from m1stadev/master
Browse files Browse the repository at this point in the history
Allow finding recovery/DFU mode devices without usbmuxd present
  • Loading branch information
doronz88 committed Apr 14, 2024
2 parents 75fba46 + ef81d4a commit 8d1d700
Showing 1 changed file with 15 additions and 11 deletions.
26 changes: 15 additions & 11 deletions pymobiledevice3/cli/restore.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

from pymobiledevice3 import usbmux
from pymobiledevice3.cli.cli_common import print_json, set_verbosity
from pymobiledevice3.exceptions import ConnectionFailedError, IncorrectModeError
from pymobiledevice3.exceptions import ConnectionFailedError, ConnectionFailedToUsbmuxdError, IncorrectModeError
from pymobiledevice3.irecv import IRecv
from pymobiledevice3.lockdown import LockdownClient, create_using_usbmux
from pymobiledevice3.restore.device import Device
Expand Down Expand Up @@ -44,16 +44,20 @@ def device(ctx, param, value):

ecid = value
logger.debug('searching among connected devices via lockdownd')
for device in usbmux.list_devices():
try:
lockdown = create_using_usbmux(serial=device.serial, connection_type='USB')
except (ConnectionFailedError, IncorrectModeError):
continue
if (ecid is None) or (lockdown.ecid == value):
logger.debug('found device')
return lockdown
else:
continue
try:
for device in usbmux.list_devices():
try:
lockdown = create_using_usbmux(serial=device.serial, connection_type='USB')
except (ConnectionFailedError, IncorrectModeError):
continue
if (ecid is None) or (lockdown.ecid == value):
logger.debug('found device')
return lockdown
else:
continue
except ConnectionFailedToUsbmuxdError:
pass

logger.debug('waiting for device to be available in Recovery mode')
return IRecv(ecid=ecid)

Expand Down

0 comments on commit 8d1d700

Please sign in to comment.