Get external monitor serials on Apple Silicon Macs (USB-C)
Hi community,
we’re trying to build a small script that MacBook Pro users at our company can run to collect serial numbers / Dell Service Tags for their connected monitors for inventory purposes.
Typical setup
- Device: MacBook Pro with Apple Silicon (e.g. M1 Pro)
- External displays: typically 1–2 Dell monitors (e.g. U2721DE, U2520D)
- Connection: each monitor connected via USB‑C directly to the Mac (no daisy chain / no USB‑B in use)
Goal
Script should list all connected displays and return, per monitor:
- Manufacturer
- Model
- Serial number (or Service Tag for Dell, if available)
We are aware that on Windows this is usually done via EDID/WMI, and that EDID should in principle contain the monitor serial or Dell’s Service Tag.
What we’ve tried so far on macOS
- system_profiler
system_profiler SPDisplaysDataType
This correctly lists all displays, e.g.:
- Color LCD
- DELL U2721DE
- DELL U2520D
- with resolution, “UI Looks like”, connection type (internal/USB‑C), etc.
However, no monitor serial numbers appear in the output (which matches what others have reported: SPDisplaysDataType does not expose serials).
- IORegistry – AppleDisplay
ioreg -lw0 -r -c AppleDisplay -l | grep -n IODisplayEDID
- IORegistry – IODisplayConnect
ioreg -lw0 -r -c IODisplayConnect -d 2 | grep -n IODisplayEDID
On this MacBook Pro + 2×USB‑C Dell monitors, both commands return no IODisplayEDID entries at all.
So we don’t even have EDID data to decode from IORegistry for these displays.
What we observed / suspect
On this particular setup (MacBook Pro + 2 Dell monitors over USB‑C), macOS:
- Sees and uses both displays correctly (system_profiler shows them with the correct names and resolutions),
- But does not expose EDID (IODisplayEDID) via AppleDisplay / IODisplayConnect at all.
- We have seen references that in the past it was possible to get EDID (and thus serials) via other connections (e.g. USB‑B / DisplayPort / HDMI), but we haven’t found a way that works reliably with USB‑C-only setups.
Questions
- Is there any supported way on recent macOS versions to obtain external monitor serial numbers (or Dell Service Tags) via USB‑C?
- Either via IORegistry, system_profiler, CoreGraphics, IOKit APIs, or anything else?
- Has anyone successfully read EDID (IODisplayEDID) for USB‑C connected monitors on Apple Silicon MacBook Pros?
If yes, which:
- macOS version,
- Mac model,
- Monitor model,
- Cable/adapter/dock combination
- and which command or API did you use?
- Are there any known limitations/changes on Apple Silicon or recent macOS versions that prevent EDID (and thus serials) from being exposed over USB‑C?
- If EDID over USB‑C is not available:
- Is there any practical workaround (short of asking users to physically read the sticker), e.g.:
- DisplayLink or other vendor-specific tools/agents that can expose the monitor serial on macOS?
- Any pointers, examples, or confirmation that “this is simply not available over USB‑C on macOS” would be very helpful. Our aim is to understand whether we should keep investing in an automated solution, or accept that on macOS we can only script manufacturer/model and not the serial/Service Tag.
Thanks in advance!