CPU Type (system info) Returns Missing Value On Apple Silicon M1 Mac

set computername to computer name of (system info)
set hostname to host name of (system info)
set shortusername to short user name of (system info)
set longusername to long user name of (system info)
set userid to user ID of (system info)
set userlocale to user locale of (system info)
set bootvolume to boot volume of (system info)
set homedirectory to home directory of (system info)
set cputype to CPU type of (system info)
set cpuspeed to CPU speed of (system info)
set physicalmemory to physical memory of (system info)
set systemversion to system version of (system info)
set primaryethernetaddress to primary Ethernet address of (system info)
set ipv4address to IPv4 address of (system info)
set applescriptversion to AppleScript version of (system info)
set applescriptstudioversion to AppleScript Studio version of (system info)

set macmodelnumber to (do shell script "/usr/sbin/system_profiler SPHardwareDataType  | sed -En '/Model Identifier:/ s/^[^:]+: *//p'")

set macserialnumber to (do shell script "ioreg -l | grep IOPlatformSerialNumber | cut -d '\"' -f4")

display dialog "Computer Model Number: " & macmodelnumber & return & "Computer Serial Number: " & macserialnumber & return & return & "Computer Name: " & computername & return & "Host Name: " & hostname & return & "Short User Name: " & shortusername & return & "Long User Name: " & longusername & return & "User ID: " & userid & return & "User Locale: " & userlocale & return & return & "Boot Volume: " & bootvolume & return & "Home Directory: " & homedirectory & return & "CPU Type: " & cputype & return & "CPU Speed: " & cpuspeed / 1000 & " GHz." & return & "Physical Memory: " & physicalmemory / 1000 & " GB." & return & "Operating System Version: " & systemversion & return & return & "Primary Ethernet MAC Address: " & primaryethernetaddress & return & "IPv4 Address: " & ipv4address & return & return & "AppleScript Version: " & applescriptversion & return & "AppleScript Studio Version (deprecated in OS X v10.6): " & applescriptstudioversion

1: cpuspeed

Intel iMac: This script produces the expected results.

Apple Silicon Mac Studio: This script produces the expected results, except that the “cpuspeed” field displays “missing value GHz.”

2: Is there a command to get the Mac Studio to return “Mac Studio13,1” instead of “Mac13,1?”

3: Is there a command to get the Mac to return the “AXXXX” value, and, the “MXXXXLL/A” value?

4: Is there a command to get the Mac Studio to return “Apple M1 Max” or “Apple M1 Max ARM64E” instead of “ARM64E?”

Thank you.

Kurt

A1. “system info” with Apple Silicon Mac returns “missing value” as clock speed. That is a common behavior. The clock speed of Apple Silicon is dynamically changed in very very short period. So, there is no use to know clock maximum speed in catalog specification.

A2. No. ID format of Mac has been changed forever. If you want to know the model from machine ID, you can download “MacTracker” app from Mac App Store.

A3. I don’t know about it. See MacTracker.

A4. This AppleScript will return such information as you want. Try this on your Mac Studio and report the result here.

set aTargLabel to "machdep.cpu.brand_string:"
set aRes to retFilteredSysctrlValue(aTargLabel) of me
--> "Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz"
--> "Apple M1"
--> "Apple M2"

on retFilteredSysctrlValue(aTargLabel)
	try
		set aRes to do shell script "sysctl -a | grep " & aTargLabel
	on error
		return ""
	end try
	set aLen to length of aTargLabel
	set bRes to text (aLen + 2) thru -1 of aRes
	return bRes
end retFilteredSysctrlValue

I wrote these information on my ebook.

https://piyomarusoft.booth.pm/items/4923559

https://piyomarusoft.booth.pm/items/4923559

Hi, Piyomaru.

set computername to computer name of (system info)
set hostname to host name of (system info)
set shortusername to short user name of (system info)
set longusername to long user name of (system info)
set userid to user ID of (system info)
set userlocale to user locale of (system info)
set bootvolume to boot volume of (system info)
set homedirectory to home directory of (system info)
set cputype to CPU type of (system info)
set cpuspeed to CPU speed of (system info)
set physicalmemory to physical memory of (system info)
set systemversion to system version of (system info)
set primaryethernetaddress to primary Ethernet address of (system info)
set ipv4address to IPv4 address of (system info)
set applescriptversion to AppleScript version of (system info)
set applescriptstudioversion to AppleScript Studio version of (system info)

set macmodelnumber to (do shell script "/usr/sbin/system_profiler SPHardwareDataType  | sed -En '/Model Identifier:/ s/^[^:]+: *//p'")

set macserialnumber to (do shell script "ioreg -l | grep IOPlatformSerialNumber | cut -d '\"' -f4")

set aTargLabel to "machdep.cpu.brand_string:"
set aRes to retFilteredSysctrlValue(aTargLabel) of me
--> "Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz"
--> "Apple M1"
--> "Apple M2"

on retFilteredSysctrlValue(aTargLabel)
	try
		set aRes to do shell script "sysctl -a | grep " & aTargLabel
	on error
		return ""
	end try
	set aLen to length of aTargLabel
	set bRes to text (aLen + 2) thru -1 of aRes
	return bRes
end retFilteredSysctrlValue

display dialog "Computer Model Number: " & macmodelnumber & return & "Computer Serial Number: " & macserialnumber & return & return & "Computer Name: " & computername & return & "Host Name: " & hostname & return & "Short User Name: " & shortusername & return & "Long User Name: " & longusername & return & "User ID: " & userid & return & "User Locale: " & userlocale & return & return & "Boot Volume: " & bootvolume & return & "Home Directory: " & homedirectory & return & "CPU Type: " & cputype & return & "CPU Speed: " & cpuspeed & " GHz." & return & "Physical Memory: " & physicalmemory / 1000 & " GB." & return & "Operating System Version: " & systemversion & return & return & "Primary Ethernet MAC Address: " & primaryethernetaddress & return & "IPv4 Address: " & ipv4address & return & return & "AppleScript Version: " & applescriptversion & return & "AppleScript Studio Version (deprecated in OS X v10.6): " & applescriptstudioversion & return & "CPU Type: " & retFilteredSysctrlValue

This script returned the error message:

error "Can’t make «handler retFilteredSysctrlValue» into type Unicode text." number -1700 from «handler retFilteredSysctrlValue» to Unicode text

Kurt

Your failure is two.

One, the position of handler “retFilteredSysctrlValue” is wrong. It must be the end of script.

Two, you had to use variable “aRes” instead of “retFilteredSysctrlValue”. retFilteredSysctrlValue is a handler not a variable.

This works.

set computername to computer name of (system info)
set hostname to host name of (system info)
set shortusername to short user name of (system info)
set longusername to long user name of (system info)
set userid to user ID of (system info)
set userlocale to user locale of (system info)
set bootvolume to boot volume of (system info)
set homedirectory to home directory of (system info)
set cputype to CPU type of (system info)
set cpuspeed to CPU speed of (system info)
set physicalmemory to physical memory of (system info)
set systemversion to system version of (system info)
set primaryethernetaddress to primary Ethernet address of (system info)
set ipv4address to IPv4 address of (system info)
set applescriptversion to AppleScript version of (system info)
set applescriptstudioversion to AppleScript Studio version of (system info)

set macmodelnumber to (do shell script "/usr/sbin/system_profiler SPHardwareDataType  | sed -En '/Model Identifier:/ s/^[^:]+: *//p'")

set macserialnumber to (do shell script "ioreg -l | grep IOPlatformSerialNumber | cut -d '\"' -f4")

set aTargLabel to "machdep.cpu.brand_string:"
set aRes to retFilteredSysctrlValue(aTargLabel) of me

display dialog "Computer Model Number: " & macmodelnumber & return & "Computer Serial Number: " & macserialnumber & return & return & "Computer Name: " & computername & return & "Host Name: " & hostname & return & "Short User Name: " & shortusername & return & "Long User Name: " & longusername & return & "User ID: " & userid & return & "User Locale: " & userlocale & return & return & "Boot Volume: " & bootvolume & return & "Home Directory: " & homedirectory & return & "CPU Type: " & cputype & return & "CPU Speed: " & cpuspeed & " GHz." & return & "Physical Memory: " & physicalmemory / 1000 & " GB." & return & "Operating System Version: " & systemversion & return & return & "Primary Ethernet MAC Address: " & primaryethernetaddress & return & "IPv4 Address: " & ipv4address & return & return & "AppleScript Version: " & applescriptversion & return & "AppleScript Studio Version (deprecated in OS X v10.6): " & applescriptstudioversion & return & "CPU Type: " & aRes


on retFilteredSysctrlValue(aTargLabel)
	try
		set aRes to do shell script "sysctl -a | grep " & aTargLabel
	on error
		return ""
	end try
	set aLen to length of aTargLabel
	set bRes to text (aLen + 2) thru -1 of aRes
	return bRes
end retFilteredSysctrlValue
1 Like

Hi, Piyomaru.

Your code works well. My gratitude.

Here is the code that I am using:

set computername to computer name of (system info)
set hostname to host name of (system info)
set shortusername to short user name of (system info)
set longusername to long user name of (system info)
set userid to user ID of (system info)
set userlocale to user locale of (system info)
set bootvolume to boot volume of (system info)
set homedirectory to home directory of (system info)
set cputype to CPU type of (system info)
set cpuspeed to CPU speed of (system info)
set physicalmemory to physical memory of (system info)
set systemversion to system version of (system info)
set primaryethernetaddress to primary Ethernet address of (system info)
set ipv4address to IPv4 address of (system info)
set applescriptversion to AppleScript version of (system info)
set applescriptstudioversion to AppleScript Studio version of (system info)

set macmodelnumber to (do shell script "/usr/sbin/system_profiler SPHardwareDataType  | sed -En '/Model Identifier:/ s/^[^:]+: *//p'")

set macserialnumber to (do shell script "ioreg -l | grep IOPlatformSerialNumber | cut -d '\"' -f4")

set aTargLabel to "machdep.cpu.brand_string:"
set aRes to retFilteredSysctrlValue(aTargLabel) of me

display dialog "Computer Model Number: " & macmodelnumber & return & "Computer Serial Number: " & macserialnumber & return & return & "Computer Name: " & computername & return & "Host Name: " & hostname & return & "Short User Name: " & shortusername & return & "Long User Name: " & longusername & return & "User ID: " & userid & return & "User Locale: " & userlocale & return & return & "Boot Volume: " & bootvolume & return & "Home Directory: " & homedirectory & return & "CPU Type: " & cputype & return & "CPU Model: " & " " & aRes & return & "CPU Speed: " & cpuspeed & " GHz." & return & "Physical Memory: " & physicalmemory / 1000 & " GB." & return & "Operating System Version: " & systemversion & return & return & "Primary Ethernet MAC Address: " & primaryethernetaddress & return & "IPv4 Address: " & ipv4address & return & return & "AppleScript Version: " & applescriptversion & return & "AppleScript Studio Version: " & applescriptstudioversion & " (deprecated in OS X v10.6)"

on retFilteredSysctrlValue(aTargLabel)
	try
		set aRes to do shell script "sysctl -a | grep " & aTargLabel
	on error
		return ""
	end try
	set aLen to length of aTargLabel
	set bRes to text (aLen + 2) thru -1 of aRes
	return bRes
end retFilteredSysctrlValue

If you thank for me, I want to know the result of retFilteredSysctrlValue handler with Mac Studio.