checkra1n / BugTracker

checkra1n bug tracker
723 stars 105 forks source link

Frequent error 31 on Hackintosh with AMD USB controllers. #9

Closed boiimakillu closed 4 years ago

boiimakillu commented 4 years ago

What device + iOS version are you on? iPhone 6s on 12.4

What are the steps to reproduce the issue? 1.Use my device and checkra1n on a mackintosh (not vm) 2.Put into DFU mode 3.Run checkra1n ...

What do you expect, and what is happening instead? It to not error out, but I keep getting error 31

Any other info, error logs, screenshots, ...? I've clicked the allow button to send to you guys but don't have the logs. Also Siri doesn't work on my phone idk if that related.

boiimakillu commented 4 years ago

Running 10.14.6 on an AMD system.

woachk commented 4 years ago

Hello, so you use a Hackintosh?

We don't really support those for now, but keeping the issue open just in case.

boiimakillu commented 4 years ago

What does error -31 mean?

littlelailo commented 4 years ago

I think this issue is related to your Macintosh/the usb controller on your Macintosh. Could you provide more information on the model you are using?

woachk commented 4 years ago

@littlelailo he says AMD system... so a Hackintosh

boiimakillu commented 4 years ago

I'm using a msg b450i gaming plus ac, with OSX 10.14.6, and no USB kexts.

boiimakillu commented 4 years ago

But unless error -31 refers to USB stuff, I think it's probably my device. My install of 12.4 is kinda messed up from being jailbroken and restore-roofs'ed a lot of times.

FM1337 commented 4 years ago

Error -31 here as well, also an amd hackintosh, gigabyte b450m and an iPad 6th gen

woachk commented 4 years ago

Try an USB 2.0 port (or the reverse if you were trying one)

benceb24 commented 4 years ago

either stuck on checking if device is ready or -31, AMD B450 Catalina

FM1337 commented 4 years ago

Try an USB 2.0 port (or the reverse if you were trying one)

Tried 3.0 rear, all result in -31 Tried usb 2.0 rear, it freezes at preparation stage

boiimakillu commented 4 years ago

I get error -31. I'll try on a real MacBook which I wasn't using before because it's hella slow.

boiimakillu commented 4 years ago

Success! Seems to be an issue with MSI boards, because I'm sure other people with hackintoshes would have reported too. Thanks!

woachk commented 4 years ago

ok, changed the issue title

glencoe2004 commented 4 years ago

Issue also occurs on a B350 hackintosh

FM1337 commented 4 years ago

So it's a USB driver issue for the amd hackintoshes that use the b450 (and b350) chipset (b450m, b450i, etc.) perhaps some special usb drivers are needed?

fuomag9 commented 4 years ago

b350 (asus b350 prime plus ) hackintosh as well. On my iphone 8 and ipad it worked. On the iphone 7 it gave me error -31

FM1337 commented 4 years ago

b350 (asus b350 prime plus ) hackintosh as well. On my iphone 8 and ipad it worked. On the iphone 7 it gave me error -31

What ipad generation?

fuomag9 commented 4 years ago

What ipad generation?

Wrongly tried on the ipad pro 10.5 first gen, checkra1n successfully exploited it (cydia doesn't obviously install since it's not supported)

benceb24 commented 4 years ago

https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/AMD/AMD-USB-map.md I used this guide to map my USB ports, managed to get it working.

FM1337 commented 4 years ago

https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/AMD/AMD-USB-map.md I used this guide to map my USB ports, managed to get it working.

So if you use Opencore as your bootloader and follow this guide it works? I'm using Clover and curious if there's something similar I can do?

benceb24 commented 4 years ago

https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/AMD/AMD-USB-map.md I used this guide to map my USB ports, managed to get it working.

So if you use Opencore as your bootloader and follow this guide it works? I'm using Clover and curious if there's something similar I can do?

well you're making a kext so it should work in clover? not sure. I went through the process and added the kext and it started working,not sure though if this is THE solution.

r3dlobst3r commented 4 years ago

https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/AMD/AMD-USB-map.md I used this guide to map my USB ports, managed to get it working.

So if you use Opencore as your bootloader and follow this guide it works? I'm using Clover and curious if there's something similar I can do?

well you're making a kext so it should work in clover? not sure. I went through the process and added the kext and it started working,not sure though if this is THE solution.

I have all of my USBs mapped already and have a patched SSDT for that, I am having an issue where the app stops at - [*] == Checkm8 Preparation stage == is that what was happening for you?

benceb24 commented 4 years ago

https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/AMD/AMD-USB-map.md I used this guide to map my USB ports, managed to get it working.

So if you use Opencore as your bootloader and follow this guide it works? I'm using Clover and curious if there's something similar I can do?

well you're making a kext so it should work in clover? not sure. I went through the process and added the kext and it started working,not sure though if this is THE solution.

I have all of my USBs mapped already and have a patched SSDT for that, I am having an issue where the app stops at - [*] == Checkm8 Preparation stage == is that what was happening for you?

yes, but I also tried a different port which had something plugged in. could be a piece of the puzzle aswell 😅

FM1337 commented 4 years ago

I copied the amd-usb-map.kext file from that guide without making any changes to it, and then I tried the usb port that my wifi adapter usb was using and it worked. No other port seemed to want to work though.

benceb24 commented 4 years ago

I copied the amd-usb-map.kext file from that guide without making any changes to it, and then I tried the usb port that my wifi adapter usb was using and it worked. No other port seemed to want to work though.

sounds like a workaround, i unplugged my USB sound card and it worked from that port.

FM1337 commented 4 years ago

Tried it again, and it didn't work. So it's really finicky

AidanDaniel97 commented 4 years ago

I will wait to get a lightning to usb-c cable as that may be the cause of me getting the error on my macbook as im using a usb hub.....but even though I get this error, everything still continues... I get the checkra1n boot screen, the checkra1n app, i can open it but then cydia doesn't install it just crashes, I assume some part of the step is missed when I get that error

woachk commented 4 years ago

@AidanDaniel97 which device? if an iPad it's issue #2

AidanDaniel97 commented 4 years ago

it is an iPad Air (1st gen) on 12.4.1 so most likely is that then thanks @woachk

FM1337 commented 4 years ago

Alright so I might've figured something out.

When attempting to use the app you will mostly encounter error -31 about 85-90% of the time, you just need to keep trying (don't exit the app, dismiss the submit error report dialog though) keep putting your device into DFU mode, it will keep trying to execute the exploit (and it will restart your iPad every time it fails) on the 10-15% that it works, it will do everything correctly.

glencoe2004 commented 4 years ago

Alright so I might've figured something out.

When attempting to use the app you will mostly encounter error -31 about 85-90% of the time, you just need to keep trying (don't exit the app, dismiss the submit error report dialog though) keep putting your device into DFU mode, it will keep trying to execute the exploit (and it will restart your iPad every time it fails) on the 10-15% that it works, it will do everything correctly.

Are you using a B450/350 hackintosh or a legitimate Mac?

FM1337 commented 4 years ago

Alright so I might've figured something out. When attempting to use the app you will mostly encounter error -31 about 85-90% of the time, you just need to keep trying (don't exit the app, dismiss the submit error report dialog though) keep putting your device into DFU mode, it will keep trying to execute the exploit (and it will restart your iPad every time it fails) on the 10-15% that it works, it will do everything correctly.

Are you using a B450/350 hackintosh or a legitimate Mac?

hackintosh AMD B450M

boiimakillu commented 4 years ago

I am able to confirm this. If I run it, get error -31 and then confirm the report, but don't exit the app, then restart my phone I am able to get the exploit to work consistently on the second try. However the preparing/heap takes multiple minutes and booting is a bit slow. So the USB can work but for some reason only on second try.

lilandrias commented 4 years ago

Same problem on FX990 chipset (cpu is FX-8350)

lilandrias commented 4 years ago

@FM1337 THANK YOU, YOUR SOLUTION WORKED!!!!! PEOPLE WITH AMD HACKINTOSH, JUST KEEP TRYING IT'LL WORK

woachk commented 4 years ago

Alright, renamed the issue. :-)

dhinakg commented 4 years ago

Can you guys provide IORegs and the exact motherboard models you are using? Interested to see which specific AMD controllers are affected.

Also as a workaround, if you have an ASMedia controller on your board (check your motherboard specs), use that, as Apple supports an ASMedia controller out of the box and other ASMedia controllers seem to play nice with the generic drivers.

EDIT: How to provide an IOReg:

  1. Download IORegistryExplorer.zip.
  2. Open IORegistryExplorer > File > Save As
  3. Upload it here, and make sure you mention what motherboard you have.

Also, do not just blindly download the USB map kext. The provided kext will not work for everyone and may screw up USB if the configuration in the kext does not match yours. Read the guide carefully. And yes, it works on Clover.

FM1337 commented 4 years ago

Can you guys provide IORegs and the exact motherboard models you are using? Interested to see which specific AMD controllers are affected.

Also as a workaround, if you have an ASMedia controller on your board (check your motherboard specs), use that, as Apple supports an ASMedia controller out of the box and other ASMedia controllers seem to play nice with the generic drivers.

EDIT: How to provide an IOReg:

  1. Download IORegistryExplorer.zip.
  2. Open IORegistryExplorer > File > Save As
  3. Upload it here, and make sure you mention what motherboard you have.

Also, do not just blindly download the USB map kext. The provided kext will not work for everyone and may screw up USB if the configuration in the kext does not match yours. Read the guide carefully. And yes, it works on Clover.

Gigabyte B450M FM1337's AMD Hackintosh Pro.zip

(When I saved the IOReg I had the AMD USB map kext enabled, if you want i can disable it and take it again)

benceb24 commented 4 years ago

alright so to me it seems like it'll only work when plugged into a specific controller (XHC0 in my case), can anyone verify?

boiimakillu commented 4 years ago

IOReg with USB Kext.zip MSI B450I gaming plus AC with 2600. Does checkra1n have any stored logs, because I'd be happy to test different methods of running it and see the results.

boiimakillu commented 4 years ago

Wow! Ok so I have found something very interesting. The issue is definitely tied to usb, but in a weird way. I've found that for it to be successful the second time I need to unplug it at the Type-A, and then plug it back in. This works 100% when the app recognizes the phone without closing, but it takes 5-10 minutes. Maybe the correct things are executing over USB, but when I replug it makes it fall back to really slow speeds? I've also completely fcked up my USB mapping. The reg isn't showing anything under the controllers and I don't know if the kext is even doing anything. Also, the re-plug method either doesn't care about the port or it doesn't like my XHC0 3.1 ports.

glencoe2004 commented 4 years ago

Wow! Ok so I have found something very interesting. The issue is definitely tied to usb, but in a weird way. I've found that for it to be successful the second time I need to unplug it at the Type-A, and then plug it back in. This works 100% when the app recognizes the phone without closing, but it takes 5-10 minutes. Maybe the correct things are executing over USB, but when I replug it makes it fall back to really slow speeds? I've also completely fcked up my USB mapping. The reg isn't showing anything under the controllers and I don't know if the kext is even doing anything. Also, the re-plug method either doesn't care about the port or it doesn't like my XHC0 3.1 ports.

Probably doesn't like your 3.1; USB 2.0 devices are always way more stable than 3 for me. Also the whole 'using unsupported hardware on an unsupported OS' thing.

FM1337 commented 4 years ago

Wow! Ok so I have found something very interesting. The issue is definitely tied to usb, but in a weird way. I've found that for it to be successful the second time I need to unplug it at the Type-A, and then plug it back in. This works 100% when the app recognizes the phone without closing, but it takes 5-10 minutes. Maybe the correct things are executing over USB, but when I replug it makes it fall back to really slow speeds? I've also completely fcked up my USB mapping. The reg isn't showing anything under the controllers and I don't know if the kext is even doing anything. Also, the re-plug method either doesn't care about the port or it doesn't like my XHC0 3.1 ports.

Probably doesn't like your 3.1; USB 2.0 devices are always way more stable than 3 for me. Also the whole 'using unsupported hardware on an unsupported OS' thing.

Complete opposite in my case, the USB 2.0 ports would lock up at the "Checking if Device is Ready" stage, forcing me to force quit the app.

0x41c commented 4 years ago

I think this is great but it’s not just hackintosh that gets an error code -31 My computer which is a MacOS Catalina running in a late 2013 Mac Pro gets the same issue... my fix for non X devices is to hold the home button and not let go for the first part of the exploit. So instead of stopping at the your Iphone is in dfu mode message, just hold it a little bit longer and it gives a 100% success rate

im-not-a-dev commented 4 years ago

@boiimakillu likely has to do with what @dhinakg mentioned. ASMedia controllers having proper macOS support, unlike the chipset controller.

foresterfx commented 4 years ago

Well, I of course got the error-31 on my ryzentosh (b350; 2600). No usbs worked at all. I tried to follow the usb mapping tutorial, but I couldn't save the ports info file he talks about in the beginning. Just gave an error.

Anyway, I tried doing the checkrain on my roommates macbook pro, and I got further... but still error-31. Tried all 3 ports he had with no success.

iPhone X 12.4 (didn't want to update if it failed. 12.4 might be the reason).

BitGrub commented 4 years ago

My Ryzentosh works, I've jailbroken my i7 on 13.2.2 multiple times

MSI B350, r2700, Mojave 10.14.4, clover

Sounds like it could be a 12.4 issue?

dhinakg commented 4 years ago

@BitGrub What USB ports did you use, what specific motherboard?

foresterfx commented 4 years ago

Wow @BitGrub that's lucky haha.

Just for context: I tried 10.14.6 (I think. It's on the supported list) with Clover. My mobo is the ROG Strix B350-F Gaming motherboard. When I would mount my EFI and try to save DSDT with the iregistry stuff in the guide, it would just say "error can't save" or something along those lines. I tried using USB3.0 and 2.0. I definitely exceed the 15 port limit, though. probably 6 usb3.0/3.1 and 4-6 usb 2.0 (going from memory there). I only tried my front usbs, so maybe using the ones that are actually directly on the IO would be more successful?

I wanted to try going to high sierra, but I couldn't get it to get past randomseed even when I downgraded clover and put the ryzen patches in. I figured an older osx might have more support since it's been played with for longer. Also I saw the automated usbmapping command line that I wanted to use, but it said it wasn't compatible with mojave and newer.