MacOS – My MacBook Pro disconnects from office wifi when other people join the network

airportmacbook promacosNetworkwifi

I recently switched offices. The new office is located downtown, so there are multiple access points, both company controlled and external.

The laptop wireless disconnects shortly after I first connect to the network in the morning. It also seems to disconnect when groups of people join the network throughout the day (like, after meetings). I do not have this problem on other networks.

The problem only occurs with Mac laptops on our network. Linux, Windows, and Android devices all seem to stay connected.

OS X El Capitan (10.11.6)
AirPort Extreme (0x14E4, 0x134)
Firmeware Version: Broadcom BCM43xx 1.0 (7.21.95.175.1a6)
WPA2 Personal
RSSI: -50 dBm
Noise: -90 dBm
Channel: 132 (DFS)
Channel width: 80 MHz

I did use Onyx to collect information about the connection when it failed most recently.

From the bottom of the wifi.log:

Tue Aug 30 10:57:55.635 <airportd[62]> _SC_callback: Changed keys = { 'Setup:/Network/Interface/en0/AirPort' }
Tue Aug 30 10:57:55.651 SC: <airportd[62]> airportdProcessSystemConfigurationEvent: Processing 'Setup:/Network/Interface/en0/AirPort'

From wifi-oCZ0nU.log:

Tue Aug 30 11:01:34.033 Driver Event: <airportd[62]> _bsd_80211_event_callback: DUMP_LOGS (en0)
Tue Aug 30 11:01:34.034 Info: <airportd[62]> SCAN request received from pid 452 (WiFiProxy) with priority 2
Tue Aug 30 11:01:34.142 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:34.158 Info: <airportd[62]> GET CURRENT TETHER DEVICE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:34.160 Info: <airportd[62]> QUERY GAS CACHE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:34.162 Info: <airportd[62]> GET CURRENT TETHER DEVICE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:34.179 Info: <CoreWLAN PPPController[345]> -[CWEAPOLClient eapolClientSupplicantState]: failed to retrieve 8021X state (2)
Tue Aug 30 11:01:34.180 Info: <CoreWLAN PPPController[345]> -[CWEAPOLClient eapolClientSupplicantState]: failed to retrieve 8021X state (2)
Tue Aug 30 11:01:34.260 Driver Event: <airportd[62]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en0)
Tue Aug 30 11:01:34.262 AutoJoin: <airportd[62]> Successful cache-assisted scan request for WiFiProxy with channels {(
Tue Aug 30 11:01:34.262     <CWChannel: 0x7f95c5b13c60> [channelNumber=1(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.262     <CWChannel: 0x7f95c5b11080> [channelNumber=2(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.262     <CWChannel: 0x7f95c5b050d0> [channelNumber=3(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.262     <CWChannel: 0x7f95c5b15ca0> [channelNumber=4(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.262     <CWChannel: 0x7f95c5b0ead0> [channelNumber=5(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.262     <CWChannel: 0x7f95c5b047d0> [channelNumber=6(2GHz), channelWidth={20MHz}, active]
Tue Aug 30 11:01:34.262 )} took 0.2275 seconds, returned 1 results
Tue Aug 30 11:01:34.262 Info: <Wi-Fi Menu Extra[345]> scan cache updated
Tue Aug 30 11:01:34.273 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:34.280 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 86 (locationd)
Tue Aug 30 11:01:34.288 Info: <airportd[62]> GET CURRENT TETHER DEVICE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:34.289 Info: <airportd[62]> QUERY GAS CACHE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:34.292 Info: <airportd[62]> GET CURRENT TETHER DEVICE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:34.307 Info: <CoreWLAN PPPController[345]> -[CWEAPOLClient eapolClientSupplicantState]: failed to retrieve 8021X state (2)
Tue Aug 30 11:01:34.308 Info: <CoreWLAN PPPController[345]> -[CWEAPOLClient eapolClientSupplicantState]: failed to retrieve 8021X state (2)
Tue Aug 30 11:01:34.489 Driver Event: <airportd[62]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en0)
Tue Aug 30 11:01:34.491 AutoJoin: <airportd[62]> Successful cache-assisted scan request for WiFiProxy with channels {(
Tue Aug 30 11:01:34.491     <CWChannel: 0x7f95c5b04ea0> [channelNumber=7(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.491     <CWChannel: 0x7f95c5b09370> [channelNumber=8(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.491     <CWChannel: 0x7f95c5b1c2b0> [channelNumber=9(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.491     <CWChannel: 0x7f95c5b01c30> [channelNumber=10(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.491     <CWChannel: 0x7f95c5b02f10> [channelNumber=11(2GHz), channelWidth={20MHz}, active],
Tue Aug 30 11:01:34.491     <CWChannel: 0x7f95c5b1c3c0> [channelNumber=36(5GHz), channelWidth={40MHz(+1)}, active]
Tue Aug 30 11:01:34.491 )} took 0.2290 seconds, returned 2 results
Tue Aug 30 11:01:34.492 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 86 (locationd)
Tue Aug 30 11:01:34.744 Driver Event: <airportd[62]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en0)
Tue Aug 30 11:01:34.747 AutoJoin: <airportd[62]> Successful cache-assisted scan request for WiFiProxy with channels {(
Tue Aug 30 11:01:34.747     <CWChannel: 0x7f95c5b15580> [channelNumber=40(5GHz), channelWidth={40MHz(-1)}, active],
Tue Aug 30 11:01:34.747     <CWChannel: 0x7f95c5b090b0> [channelNumber=44(5GHz), channelWidth={40MHz(+1)}, active],
Tue Aug 30 11:01:34.747     <CWChannel: 0x7f95c5b09a10> [channelNumber=48(5GHz), channelWidth={40MHz(-1)}, active],
Tue Aug 30 11:01:34.747     <CWChannel: 0x7f95c5b06850> [channelNumber=132(5GHz), channelWidth={20MHz}, active, DFS],
Tue Aug 30 11:01:34.747     <CWChannel: 0x7f95c5b12c90> [channelNumber=136(5GHz), channelWidth={40MHz(-1)}, active, DFS],
Tue Aug 30 11:01:34.747     <CWChannel: 0x7f95c5b14430> [channelNumber=140(5GHz), channelWidth={20MHz}, active, DFS]
Tue Aug 30 11:01:34.747 )} took 0.2557 seconds, returned 4 results
Tue Aug 30 11:01:34.747 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 86 (locationd)
Tue Aug 30 11:01:34.979 Driver Event: <airportd[62]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en0)
Tue Aug 30 11:01:34.981 AutoJoin: <airportd[62]> Successful cache-assisted scan request for WiFiProxy with channels {(
Tue Aug 30 11:01:34.981     <CWChannel: 0x7f95c5b070b0> [channelNumber=144(5GHz), channelWidth={40MHz(-1)}, active, DFS],
Tue Aug 30 11:01:34.981     <CWChannel: 0x7f95c5b1b960> [channelNumber=149(5GHz), channelWidth={40MHz(+1)}, active],
Tue Aug 30 11:01:34.981     <CWChannel: 0x7f95c5b0a9e0> [channelNumber=153(5GHz), channelWidth={40MHz(-1)}, active],
Tue Aug 30 11:01:34.981     <CWChannel: 0x7f95c5b1d500> [channelNumber=157(5GHz), channelWidth={40MHz(+1)}, active],
Tue Aug 30 11:01:34.981     <CWChannel: 0x7f95c5b0ba60> [channelNumber=161(5GHz), channelWidth={40MHz(-1)}, active],
Tue Aug 30 11:01:34.981     <CWChannel: 0x7f95c5b152c0> [channelNumber=165(5GHz), channelWidth={20MHz}, active]
Tue Aug 30 11:01:34.981 )} took 0.2337 seconds, returned 1 results
Tue Aug 30 11:01:34.982 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 86 (locationd)
Tue Aug 30 11:01:35.470 Info: <airportd[62]> STOP BROWSING TETHER DEVICES request received from pid 452 (WiFiProxy)
Tue Aug 30 11:01:35.470 Info: <WiFiAgent[386]> STOP BROWSING TETHER DEVICES request received
Tue Aug 30 11:01:35.869 Driver Event: <airportd[62]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en0)
Tue Aug 30 11:01:35.872 AutoJoin: <airportd[62]> Successful cache-assisted scan request for WiFiProxy with channels {(
Tue Aug 30 11:01:35.872     <CWChannel: 0x7f95c5b09f90> [channelNumber=52(5GHz), channelWidth={40MHz(+1)}, DFS],
Tue Aug 30 11:01:35.872     <CWChannel: 0x7f95c5b0a3b0> [channelNumber=56(5GHz), channelWidth={40MHz(-1)}, DFS],
Tue Aug 30 11:01:35.872     <CWChannel: 0x7f95c5b149a0> [channelNumber=60(5GHz), channelWidth={40MHz(+1)}, DFS],
Tue Aug 30 11:01:35.872     <CWChannel: 0x7f95c5b14dc0> [channelNumber=64(5GHz), channelWidth={40MHz(-1)}, DFS],
Tue Aug 30 11:01:35.872     <CWChannel: 0x7f95c5b17240> [channelNumber=100(5GHz), channelWidth={40MHz(+1)}, DFS],
Tue Aug 30 11:01:35.872     <CWChannel: 0x7f95c5b15940> [channelNumber=104(5GHz), channelWidth={40MHz(-1)}, DFS]
Tue Aug 30 11:01:35.872 )} took 0.8906 seconds, returned 4 results
Tue Aug 30 11:01:35.872 Info: <Wi-Fi Menu Extra[345]> scan cache updated
Tue Aug 30 11:01:35.883 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 86 (locationd)
Tue Aug 30 11:01:36.375 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:36.387 Info: <airportd[62]> GET CURRENT TETHER DEVICE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:36.395 Info: <airportd[62]> QUERY GAS CACHE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:36.397 Info: <airportd[62]> GET CURRENT TETHER DEVICE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:36.407 Info: <CoreWLAN PPPController[345]> -[CWEAPOLClient eapolClientSupplicantState]: failed to retrieve 8021X state (2)
Tue Aug 30 11:01:36.407 Info: <CoreWLAN PPPController[345]> -[CWEAPOLClient eapolClientSupplicantState]: failed to retrieve 8021X state (2)
Tue Aug 30 11:01:36.413 Info: <airportd[62]> START BROWSING TETHER DEVICES request received from pid 452 (WiFiProxy)
Tue Aug 30 11:01:36.414 Info: <WiFiAgent[386]> START BROWSING TETHER DEVICES request received
Tue Aug 30 11:01:36.524 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:36.537 Info: <airportd[62]> GET CURRENT TETHER DEVICE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:36.538 Info: <airportd[62]> QUERY GAS CACHE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:36.541 Info: <airportd[62]> GET CURRENT TETHER DEVICE request received from pid 345 (SystemUIServer)
Tue Aug 30 11:01:36.550 Info: <CoreWLAN PPPController[345]> -[CWEAPOLClient eapolClientSupplicantState]: failed to retrieve 8021X state (2)
Tue Aug 30 11:01:36.550 Info: <CoreWLAN PPPController[345]> -[CWEAPOLClient eapolClientSupplicantState]: failed to retrieve 8021X state (2)
Tue Aug 30 11:01:36.855 Driver Event: <airportd[62]> _bsd_80211_event_callback: SCAN_CACHE_UPDATED (en0)
Tue Aug 30 11:01:36.857 AutoJoin: <airportd[62]> Successful cache-assisted scan request for WiFiProxy with channels {(
Tue Aug 30 11:01:36.857     <CWChannel: 0x7f95c5b0e400> [channelNumber=108(5GHz), channelWidth={40MHz(+1)}, DFS],
Tue Aug 30 11:01:36.857     <CWChannel: 0x7f95c5b17700> [channelNumber=112(5GHz), channelWidth={40MHz(-1)}, DFS],
Tue Aug 30 11:01:36.857     <CWChannel: 0x7f95c5b17b20> [channelNumber=116(5GHz), channelWidth={40MHz(+1)}, DFS],
Tue Aug 30 11:01:36.857     <CWChannel: 0x7f95c5b17f40> [channelNumber=120(5GHz), channelWidth={40MHz(-1)}, DFS],
Tue Aug 30 11:01:36.857     <CWChannel: 0x7f95c5b10ef0> [channelNumber=124(5GHz), channelWidth={20MHz}, DFS],
Tue Aug 30 11:01:36.857     <CWChannel: 0x7f95c5b017e0> [channelNumber=128(5GHz), channelWidth={40MHz(-1)}, DFS]
Tue Aug 30 11:01:36.857 )} took 0.9852 seconds, returned 1 results
Tue Aug 30 11:01:36.880 Info: <airportd[62]> QUERY SCAN CACHE request received from pid 86 (locationd)
Tue Aug 30 11:01:37.923 IPC: <airportd[62]> ADDED XPC CLIENT CONNECTION [wdhelper (pid=75, euid=0, egid=0)]
Tue Aug 30 11:01:37.924 Info: <airportd[62]> DUMP TEMP WIFI LOG request received from pid 75 (wdhelper)

Here's the relevant access points from the scan:

'TS' <5453>, bssid=f0:5c:19:25:08:20, channel=[6, width=20], cc=US, type=11n, rssi=-52, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:08:30, channel=[149, width=80], cc=US, type=11ac, rssi=-54, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:36:a0, channel=[1, width=20], cc=US, type=11n, rssi=-55, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:36:b0, channel=[36, width=80], cc=US, type=11ac, rssi=-57, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:37:f0, channel=[132, width=80], cc=US, type=11ac, rssi=-59, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:38:30, channel=[52, width=80], cc=US, type=11ac, rssi=-53, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:39:60, channel=[6, width=20], cc=US, type=11n, rssi=-52, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:39:70, channel=[116, width=80], cc=US, type=11ac, rssi=-63, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:3e:f0, channel=[100, width=80], cc=US, type=11ac, rssi=-63, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:43:c0, channel=[11, width=20], cc=US, type=11n, rssi=-38, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 
'TS' <5453>, bssid=f0:5c:19:25:43:d0, channel=[132, width=80], cc=US, type=11ac, rssi=-49, rsn=[mcast=aes_ccm, ucast={ aes_ccm }, auths={ psk ft_psk }, caps=0x28], wpa=(null), wep=no, ibss=no, ph=no, swap=no, hs20=no, airport=no, 

Monitor results:

08/30/16 10:57:18.0800  LAN: WiFi interface can ping IPv4 router 172.31.98.1 . . . YES —— [1/1 (0% loss) min=1.3 max=1.3 avg=1.3]
08/30/16 10:57:18.2070  WAN: WiFi interface can ping DNS server 17.254.0.50 . . . YES —— [1/1 (0% loss) min=73.5 max=73.5 avg=73.5]
08/30/16 10:57:18.2070  TS / ch132 [RSSI=-50 dBm, Noise=-93 dBm, SNR=43, Tx=1053 Mbps]
08/30/16 10:57:18.2070  AWDL: Disabled [0 ]
08/30/16 10:57:31.2700  LAN: WiFi interface can ping IPv4 router 172.31.98.1 . . . NO —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:33.2830  QOS (BK_SYS) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:35.2960  QOS (BK) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:37.3120  QOS (BE) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:39.3220  QOS (RD) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:41.3370  QOS (OAM) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:43.3520  QOS (AV) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:45.3650  QOS (RV) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:47.3820  QOS (VI) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:49.3860  QOS (VO) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:51.3910  QOS (CTL) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:51.3920  TS / ch132 [RSSI=-50 dBm, Noise=-94 dBm, SNR=44, Tx=1053 Mbps]
08/30/16 10:57:51.3920  AWDL: Disabled [0 ]
08/30/16 10:57:51.3920  UNEXPECTED DROP DETECTED!!!

# --- Monitor Test Cases
08/30/16 10:57:55.6770  Wi-Fi On . . . YES
08/30/16 10:57:55.6780  Wi-Fi Associated . . . YES
08/30/16 10:57:57.6910  QOS (BK_SYS) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:57:59.7050  QOS (BK) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:01.7180  QOS (BE) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:03.7300  QOS (RD) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:05.7450  QOS (OAM) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:07.7600  QOS (AV) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:09.7730  QOS (RV) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:11.7870  QOS (VI) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:13.8000  QOS (VO) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:15.8150  QOS (CTL) ping address 172.31.98.1 . . . fail —— [0/1 (1% loss) min=0.0 max=0.0 avg=0.0]
08/30/16 10:58:23.8760  LAN: WiFi interface can ping IPv4 router 172.31.98.1 . . . NO —— [0/4 (1% loss) min=0.0 max=0.0 avg=0.0]

# --- Monitor Summary
08/30/16 10:58:26.7230  LAN Connectivity Failure

I've been told that this is mostly a personal problem and not something IT can help with, so I was hoping somebody here could help.

Best Answer

I have this problem constantly at my office as well. Some days are more often than others. After reading several topics I came to the conclusion that the wireless adapter on Mac is more susceptible to network noise (when many devices are connected to a network) then it drops (sometimes it takes a while to connect). You can do one of the following approaches.

  1. Go to Apple menu -> System Preferences -> Network, Select Wifi and on the settings

enter image description here

Then

enter image description here

then Press OK and then Apply.

OR

  1. Change the router radio channel to 2.4Ghz. Make sure your WI-Fi access point is set to automatically choose the best radio channel to use - as your radio environment changes constantly and the access point needs to be able to cope with this.

  2. If your Macbook Pro doesn't have Ethernet connector, you should get an Ethernet adapter to avoid the frustration.

I hope it helps.