Skip to content

Instantly share code, notes, and snippets.

@fuzzylogiq
Last active April 12, 2021 15:38
Show Gist options
  • Save fuzzylogiq/bedf253faeeee846df19b25f6b29fa68 to your computer and use it in GitHub Desktop.
Save fuzzylogiq/bedf253faeeee846df19b25f6b29fa68 to your computer and use it in GitHub Desktop.
Jamf PRO Extension Attribute/boolean exit script to ascertain whether Mac is compatible with a Big Sur installer

macOS Big Sur Installer no longer relies on Board IDs/Model IDs to judge compatibility, appears instead to use Board ID for older hardware and the new model codes (which have been around since T2 time IIRC) for M1s

To get the list of boardids/model codes:

  1. hdiutil mount -nobrowse -noverify /path/to/Install macOS Big Sur.app/Contents/SharedSupport/SharedSupport.dmg
  2. python2: cat /Volumes/Shared\ Support/com_apple_MobileAsset_MacSoftwareUpdate/com_apple_MobileAsset_MacSoftwareUpdate.xml | python -c "import sys; import plistlib; p=plistlib.readPlist(sys.stdin); print ' | '.join(p['Assets'][0]['SupportedDeviceModels']) + ' )'"
  3. python3: cat /Volumes/Shared\ Support/com_apple_MobileAsset_MacSoftwareUpdate/com_apple_MobileAsset_MacSoftwareUpdate.xml | python3 -c "import sys; import plistlib; p=plistlib.loads(sys.stdin.buffer.read()); print(' | '.join(p['Assets'][0]['SupportedDeviceModels']) + ' )')"
  4. copy and paste into script case statement
#!/bin/bash
# Check if Mac board/model id is supported by by Big Sur (in this case 11.3 Beta (20E5229a))
# To obtain this information mount the Big Sur installer along with Shared Support.
# cat /Volumes/Shared\ Support/com_apple_MobileAsset_MacSoftwareUpdate/com_apple_MobileAsset_MacSoftwareUpdate.xml
# And see under "SupportedDeviceModels"
BOARDID="$(ioreg -p IODeviceTree -r -n / -d 1 | awk -F "\"" ' /board-id/ {print $4}')"
if [ -z "$BOARDID" ]; then
# We've probably got an M1 Mac
BOARDID="$(ioreg -f -d 2 | awk '/IOPlatformExpertDevice/ { print $2 }')"
fi
case $BOARDID in
J132AP | J137AP | J140AAP | J140KAP | J152FAP | J160AP | J174AP | J185AP | J185FAP | J213AP | J214AP | J214KAP | J215AP | J223AP | J230AP | J230KAP | J680AP | J780AP | X589AMLUAP | X589ICLYAP | X86LEGACYAP | J274AP | J293AP | J313AP | Mac-06F11F11946D27C5 | Mac-06F11FD93F0323C5 | Mac-0CFF9C7C2B63DF8D | Mac-112818653D3AABFC | Mac-112B0A653D3AAB9C | Mac-189A3D4F975D5FFC | Mac-1E7E29AD0135F9BC | Mac-226CB3C6A851A671 | Mac-27AD2F918AE68F61 | Mac-2BD1B31983FE1663 | Mac-35C1E88140C3E6CF | Mac-35C5E08120C7EEAF | Mac-36B6B6DA9CFCD881 | Mac-3CBD00234E554E41 | Mac-42FD25EABCABB274 | Mac-473D31EABEB93F9B | Mac-4B682C642B45593E | Mac-50619A408DB004DA | Mac-53FDB3D8DB8CA971 | Mac-551B86E5744E2388 | Mac-5A49A77366F81C72 | Mac-5F9802EFE386AA28 | Mac-63001698E7A34814 | Mac-65CE76090165799A | Mac-66E35819EE2D0D05 | Mac-747B1AEFF11738BE | Mac-77F17D7DA9285301 | Mac-7BA5B2D9E42DDD94 | Mac-7BA5B2DFE22DDD8C | Mac-7DF21CB3ED6977E5 | Mac-81E3E92DD6088272 | Mac-827FAC58A8FDFA22 | Mac-827FB448E656EC26 | Mac-90BE64C3CB5A9AEB | Mac-937A206F2EE63C01 | Mac-937CB26E2E02BB01 | Mac-9394BDF4BF862EE7 | Mac-9AE82516C7C6B903 | Mac-9F18E312C5C2BF0B | Mac-A369DDC4E67F1C45 | Mac-A5C67F76ED83108C | Mac-A61BADE1FDAD7B05 | Mac-AA95B1DDAB278B95 | Mac-AF89B6D9451A490B | Mac-B4831CEBD52A0C4C | Mac-B809C3757DA9BB8D | Mac-BE088AF8C5EB4FA2 | Mac-BE0E8AC46FE800CC | Mac-C6F71043CEAA02A6 | Mac-CAD6701F7CEA0921 | Mac-CF21D135A7D34AA6 | Mac-CFF7D910A743CAAF | Mac-DB15BD556843C820 | Mac-E1008331FDC96864 | Mac-E43C1C25D4880AD6 | Mac-E7203C0F68AA0004 | Mac-EE2EBD4B90B839A8 | Mac-F305150B0C7DEEEF | Mac-F60DEB81FF30ACF6 | Mac-FA842E06C61E91C5 | Mac-FFE5EF870D7BA81A | VMM-x86_64 )
echo "<result>Passed: Hardware compatible</result>"
exit 0
;;
*)
echo "<result>Failed: Hardware incompatible</result>"
exit 1
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment