go-ios
go-ios copied to clipboard
On iOS16, the DeveloperDiskImage is shown as successfully mounted, but in fact the mount fails.
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:
-
ios image auto
Expected behavior If the mount fails, it is expected to display "Failed to mount".
Screenshots
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
" enable developer mode " before mounting image @k-inoway
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.
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
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:
- Developer Mode not enabled on the device
- 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.
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.
I'll take a look. Thanks for the research folks!
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?