go-ios icon indicating copy to clipboard operation
go-ios copied to clipboard

On iOS16, the DeveloperDiskImage is shown as successfully mounted, but in fact the mount fails.

Open k-inoway opened this issue 2 years ago • 7 comments

Describe the bug On iOS16, the DeveloperDiskImage is shown as successfully mounted, but in fact the mount fails. The DeveloperDiskImage itself is successfully downloaded, but fails to mount. I think there is a problem with DeveloperDiskImage, as it failed to mount even with libimobiledevice's ideviceimagemounter. However, it is a problem that the success log is displayed as "success mounting image".

To Reproduce Steps to reproduce the behavior:

  1. ios image auto

Expected behavior If the mount fails, it is expected to display "Failed to mount".

Screenshots image

go-ios version

  • v1.0.80

Desktop (please complete the following information):

  • OS: Windows10 20H2

Smartphone (please complete the following information):

  • Device: iPhone12 mini
  • OS: iOS 15.6.1

k-inoway avatar Sep 14 '22 09:09 k-inoway

" enable developer mode " before mounting image @k-inoway

Dantee296 avatar Sep 14 '22 09:09 Dantee296

It appears that when iOS is connected to Xcode, an item called Developer Mode is added to the settings. It seems that DeveloperDiskImage cannot be mounted unless this is enabled. Therefore, Xcode was required for the series of operations.

k-inoway avatar Sep 15 '22 03:09 k-inoway

Reference link

Unable to debug in iOS 16 developer beta 2 #1333 https://github.com/libimobiledevice/libimobiledevice/issues/1333

Adding devmodctl to lockdown to enable developer mode for iOS 16 #301 https://github.com/doronz88/pymobiledevice3/issues/301

k-inoway avatar Sep 15 '22 03:09 k-inoway

We've also encountered this issue, and not just with iOS 16. go-ios does not appear to currently detect when a mount fails on a device that does not already have a developer image mounted.

Stated differently, if the device doesn't think the image you are trying to mount is compatible, it will simply refuse to mount it, but go-ios does not report this failure.

Temporary workaround: Immediately after your attempted mount, run

go-ios image list

look for the string: "msg":"none"

if present, the mount failed, and presumably no image is mounted on the device. (otherwise you will see an identifier for the mounted image in the output)

As noted above, the reasons for a failed mount are either:

  1. Developer Mode not enabled on the device
  2. You don't have a compatible image. For the latest iOS 16.1 beta, you need the image from XCode 14.1 beta. None of the XCode 14.0 beta iOS 16.0 images will mount.

briankrznarich avatar Sep 17 '22 09:09 briankrznarich

Interesting to note, but with this change on iOS, there is a new tool available on macOS Ventura which is devmodectl. k-inoway references link are linking to one of my issue in pymobiledevice3 about it if you want further information. I did not really checked in details how it works.

I wonder if devmodectl would enter in the scope of go-ios as it can be done with libimobiledevice, but that actually could be a nice tool to have in order to activate developer mode before mounting the devimg if the developer mode is not activated. This could be a great feature/improvement I suppose.

Valkhes avatar Sep 21 '22 13:09 Valkhes

I'll take a look. Thanks for the research folks!

danielpaulus avatar Oct 07 '22 17:10 danielpaulus

devmodectl is specifically meant for "controller dev mode". Hence its name.

It is unrelated to mounting the developer image. It won't help you.

Integrating devmodectl functionality is a good idea / ticket, but should be a separate ticket. This one should be closed.

When the mount fails, as Brian says, Apple code says it succeeded. This is an Apple bug. Not go-ios issue. Brian already provided a workaround as well. Check after to list the image and see if it is there.

Perhaps the go-ios mount command should automatically do its own "image list" afterwards to verify it worked?

nanoscopic avatar Nov 18 '22 08:11 nanoscopic