What is ControlCenter on Mac?
ControlCenter draws Control Center and many built-in menu bar icons. It also hosts the AirPlay Receiver, which is why lsof shows ControlCenter listening on ports 5000 and 7000, the same ports Flask and many dev tools want.
Updated
- Process
ControlCenter- Comes from
- macOS
- Safe?
- Safe. Part of macOS; quitting it is harmless, the menu bar icons come right back.
What ControlCenter does
ControlCenter is an app at /System/Library/CoreServices/ControlCenter.app, running as your user. It provides:
- the Control Center panel (Wi-Fi, Bluetooth, Focus, display, sound, Now Playing)
- many built-in menu bar items: Wi-Fi, Bluetooth, battery, sound, clock and others you can add from System Settings › Control Center
- the AirPlay Receiver, which lets other Apple devices mirror or stream to your Mac
Why it’s on ports 5000 and 7000
The AirPlay Receiver listens for incoming streams on TCP 5000 and 7000, on all interfaces:
lsof -nP -iTCP:5000 -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 913 you 10u IPv4 0x... 0t0 TCP *:5000 (LISTEN)
That collides with Flask’s default port (5000), several Node and Python tools, and anything else that expects 7000. You’ll see Address already in use or, worse, your browser hitting AirPlay and getting a 403 Forbidden from it.
To free the ports, turn off System Settings › General › AirDrop & Handoff › AirPlay Receiver. Check again with lsof: nothing should be listening. Or keep AirPlay and move your app, for example flask run --port 5001. See the port 5000 and port 7000 pages for each tool’s setting.
Why it uses CPU
- Menu bar items refreshing: Wi-Fi scanning while the Wi-Fi menu is open, battery and sound updates.
- Now Playing with a browser or media app that updates artwork and progress constantly.
- AirPlay in use: receiving a mirror stream decodes video.
- A stuck module after waking from sleep or switching displays.
Restart it if it’s stuck:
killall ControlCenter
When to worry
ControlCenter is Apple’s and lives in CoreServices:
codesign -dv --verbose=2 /System/Library/CoreServices/ControlCenter.app 2>&1 | grep -E 'Identifier|Authority'
Port 5000 and 7000 being open to your whole network is the AirPlay design, and AirPlay can be limited under Allow AirPlay for (Current User, Anyone on the Same Network, Everyone). If you don’t use it, turning the receiver off also shrinks what your Mac exposes on public Wi-Fi.
Seeing it in Stat Space
Stat Space’s Ports tab lists every listening port with its process, and labels ControlCenter on 5000 and 7000 as the AirPlay receiver, so a “port in use” error doesn’t send you hunting for a dev server that isn’t there. It warns about dev servers bound to 0.0.0.0 (but not AirPlay, which is meant to be reachable), and statspace port 5000 answers the same question from Terminal.
Questions
Why is port 5000 already in use on my Mac?
On macOS 12 and later, AirPlay Receiver listens on 5000 and 7000 under the ControlCenter process. Turn off AirPlay Receiver in System Settings › General › AirDrop & Handoff, or run your app on another port.
Can I kill ControlCenter to free port 5000?
It restarts within a second and takes the port again. Turning off AirPlay Receiver is the only lasting fix.
Do I lose anything by turning off AirPlay Receiver?
Only the ability to AirPlay from an iPhone, iPad or another Mac to this Mac’s screen and speakers. Sending AirPlay from your Mac to a TV still works.
Know what your Mac is doing, without adding to it.
Free, no account. Pro is $9.99 once for the first 100 buyers.