diff --git a/CHANGELOG.md b/CHANGELOG.md
index ed911e4138c1f2aaf0cde0740056343d249b087d..6310e2664c5fa6b9aa6f54eadcf0880b988dc568 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@ changed functionality, fixed bugs).
 - Fixed parsing of `--config` CLI param on Python 3.5
 - Added `--debug` CLI parameter to easily enable debug logging without having
   to edit `flamenco-worker.cfg`.
+- Only fail UPnP/SSDP discovery when it fails to send on both IPv4 and IPv6.
 
 
 ## Version 2.0.7 (released 2017-07-04)
diff --git a/flamenco_worker/ssdp_discover.py b/flamenco_worker/ssdp_discover.py
index 7407d384b321de259d9b44aff25fe9617f0c26c9..a8a6d862a765bb7affe9a94d561efaefc83b6b2d 100644
--- a/flamenco_worker/ssdp_discover.py
+++ b/flamenco_worker/ssdp_discover.py
@@ -57,6 +57,8 @@ def find_flamenco_manager(timeout=1, retries=5):
     families_and_addresses = list(unique(interface_addresses()))
 
     for _ in range(retries):
+        failed_families = 0
+
         for family, addr in families_and_addresses:
             try:
                 dest = DESTINATIONS[family]
@@ -64,17 +66,23 @@ def find_flamenco_manager(timeout=1, retries=5):
                 log.warning('Unknown address family %s, skipping', family)
                 continue
 
-            log.debug('Sending to %s %s, dest=%s' % (family, addr, dest))
+            log.debug('Sending to %s %s, dest=%s', family, addr, dest)
 
             sock = socket.socket(family, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
             sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
             sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
             sock.bind((addr, 0))
 
-            for _ in range(2):
-                # sending it more than once will
-                # decrease the probability of a timeout
-                sock.sendto(DISCOVERY_MSG, (dest, 1900))
+            try:
+                for _ in range(2):
+                    # sending it more than once will
+                    # decrease the probability of a timeout
+                    sock.sendto(DISCOVERY_MSG, (dest, 1900))
+            except PermissionError:
+                log.info('Failed sending UPnP/SSDP discovery message to %s %s, dest=%s',
+                         family, addr, dest)
+                failed_families += 1
+                continue
 
             try:
                 data = sock.recv(1024)
@@ -84,6 +92,11 @@ def find_flamenco_manager(timeout=1, retries=5):
                 response = Response(data)
                 return response.getheader('Location')
 
+        if failed_families >= len(families_and_addresses):
+            log.error('Failed to send UPnP/SSDP discovery message '
+                      'to every address family (IPv4/IPv6)')
+            break
+
     raise DiscoveryFailed('Unable to find Flamenco Manager after %i tries' % retries)