diff --git a/lib/src/l2cap_socket.cpp b/lib/src/l2cap_socket.cpp
index 79ff6a25918a470e3722776739f3f61f6176a0ff..24e423778a74318d81ddb12ab9b77e42df2841b1 100644
--- a/lib/src/l2cap_socket.cpp
+++ b/lib/src/l2cap_socket.cpp
@@ -12,6 +12,7 @@
 
 #include "cap_l2cap.h"
 #include "bdaddr.h"
+#include "util/system_error.h"
 
 namespace blue::l2cap
 {
@@ -23,8 +24,7 @@ l2cap_listen_socket::l2cap_listen_socket(util::shared_cap_chan chan,
 	l2cap_watcher(loop)
 {
 	if (fd == -1)
-		throw std::runtime_error("Could not listen on L2CAP socket:" +
-				std::string(strerror(errno)));
+		throw util::errno_exception("Could not listen on L2CAP socket");
 
 	l2cap_watcher.set<l2cap_listen_socket,
 	                  &l2cap_listen_socket::io_callback>(this);