myspaghetti / macos-virtualbox

Push-button installer of macOS Catalina, Mojave, and High Sierra guests in Virtualbox on x86 CPUs for Windows, Linux, and macOS
GNU General Public License v2.0
13.46k stars 1.11k forks source link

iServices not working - can't get system info from real device #658

Closed CompuGenius-Programs closed 1 year ago

CompuGenius-Programs commented 1 year ago

I've perused the other issues along with the internet, yet can't seem to find a working solution. I spoofed my information using GenSMBIOS which didn't work, so then I considered copying my device info from my real device.

First off, would that mess with my Apple ID because it too is signed in?

Second, if it's safe, how can I get the information? I tried running the code you sent in #163, yet both nvram commands return nvram: Error getting variable: (iokit/common) data was not found and ioreg -l -p IODeviceTree | grep \"system-id returns nothing. I saw what seemed to be a similar issue in #544, but didn't understand the solution too well.

Would you be able to help me move forward with this? Thank you so much!!

myspaghetti commented 1 year ago

First off, would that mess with my Apple ID because it too is signed in?

Yes, Apple detects the same system info being used on two devices and blocks the Apple ID. You then have to contact Apple if you want to un-block it. They were pretty nice about it when I called and unblocked it immediately, but I've only tried it once.

Second, if it's safe, how can I get the information? I tried running the code you sent in https://github.com/myspaghetti/macos-virtualbox/issues/163

It's safe if you don't use the real and virtual machine concurrently, but it's safer to use spoofed parameters. You can edit the script to get the info automatically. On line 50, change get_parameters_from_macOS_host="no" to get_parameters_from_macOS_host="yes"

But, if nvram 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM produces nothing, then maybe you have a newer Mac that stores the parameter value somewhere else, and you're better off spoofing it rather than hunting it down.

I spoofed my information using GenSMBIOS which didn't work

Remember to drop to "EFI Internal Shell" on boot and then allow the startup.nsh script to execute. The process is detailed in the "iCloud and iMessage connectivity" section which can be read with ./macos-guest-virtualbox.sh documentation | less -R

CompuGenius-Programs commented 1 year ago

Remember to drop to "EFI Internal Shell" on boot and then allow the startup.nsh script to execute.

I did this, yet it still doesn't work. On one of my builds, this even caused the machine to go into a boot loop. I believe I'm spoofing the system uuid incorrectly. Can it be any uuid or does it have to be related to the hardware uuid that is generated from GenSMBIOS?

myspaghetti commented 1 year ago

the hardware uuid that is generated from GenSMBIOS?

GenSMBIOS generates a system UUID (SmUUID)

Hardware UUID can be any hex string in the following format: CAFECAFE-CAFE-CAFE-CAFE-DECAFFDECAFF

System UUID (SmUUID) must be genuine (or spoofed) and entered in all lowercase with no dashes: aabbccddeeff00112233445566778899

GenSMBIOS generates it in uppercase with dashes; strip the dashes and convert to lowercase, because that's the way it's stored in NVRAM and the script doesn't format it automatically. (Could be a nice feature.)

CompuGenius-Programs commented 1 year ago

GenSMBIOS generates a system UUID (SmUUID) Hardware UUID can be any hex string in the following format: CAFECAFE-CAFE-CAFE-CAFE-DECAFFDECAFF

Oh wow, this changes everything! But why does GenSMBIOS label it as Hardware UUID then? Also, do I enter the Hardware UUID with uppercase and dashes or lowercase and strip dashes the same way as for System UUID?

myspaghetti commented 1 year ago

Maybe you have a different verson of GenSMBIOS? At any rate, hardware UUID is entered in the eight-four-four-four-twelve chars hex string with dashes. System UUID is entered as a hex string in all lowercase with no dashes. startup.nsh then stores the SmUUID in (virtual) NVRAM using dmpstore.

CompuGenius-Programs commented 1 year ago

Maybe you have a different verson of GenSMBIOS?

I don't, and after checking again, it seems I just simply misunderstood and didn't even bother checking again 😅 I'll give this a try and follow up! Thank you for all your help!