diff --git a/examples/microcoap_server/Makefile b/examples/microcoap_server/Makefile
index 0d31dd2c8e37f47f587f450bcc14f6cea224f158..221f271bf1eecce83eeab6551de894f0240d2514 100644
--- a/examples/microcoap_server/Makefile
+++ b/examples/microcoap_server/Makefile
@@ -25,7 +25,7 @@ USEMODULE += gnrc_rpl
 USEMODULE += gnrc_icmpv6_echo
 
 #
-USEMODULE += gnrc_conn_udp
+USEMODULE += gnrc_sock_udp
 
 USEPKG += microcoap
 CFLAGS += -DMICROCOAP_DEBUG
diff --git a/examples/microcoap_server/main.c b/examples/microcoap_server/main.c
index 0ee00f4c70fb4b6fb829cd74bdc0ed44bec3979e..38e0d3b9c1abead726e14d6004676dc9c2b99baf 100644
--- a/examples/microcoap_server/main.c
+++ b/examples/microcoap_server/main.c
@@ -21,9 +21,6 @@
 #include "msg.h"
 #include "xtimer.h"
 
-#define MAIN_QUEUE_SIZE     (8)
-static msg_t _main_msg_queue[MAIN_QUEUE_SIZE];
-
 void microcoap_server_loop(void);
 
 /* import "ifconfig" shell command, used for printing addresses */
@@ -33,9 +30,6 @@ int main(void)
 {
     puts("RIOT microcoap example application");
 
-    /* microcoap_server uses conn which uses gnrc which needs a msg queue */
-    msg_init_queue(_main_msg_queue, MAIN_QUEUE_SIZE);
-
     puts("Waiting for address autoconfiguration...");
     xtimer_sleep(3);
 
diff --git a/examples/microcoap_server/microcoap_conn.c b/examples/microcoap_server/microcoap_sock.c
similarity index 82%
rename from examples/microcoap_server/microcoap_conn.c
rename to examples/microcoap_server/microcoap_sock.c
index 8fb9a51d78ce02f2a908a4c1b39fa39488c79af7..52e148627f7ce1b2d391067a4089fe2f5d24baf8 100644
--- a/examples/microcoap_server/microcoap_conn.c
+++ b/examples/microcoap_server/microcoap_sock.c
@@ -7,7 +7,7 @@
  */
 
 #include "net/af.h"
-#include "net/conn/udp.h"
+#include "net/sock/udp.h"
 
 #ifdef MICROCOAP_DEBUG
 #define ENABLE_DEBUG (1)
@@ -33,18 +33,18 @@ coap_rw_buffer_t scratch_buf = { scratch_raw, sizeof(scratch_raw) };
 void microcoap_server_loop(void)
 {
 
-    uint8_t laddr[16] = { 0 };
-    uint8_t raddr[16] = { 0 };
-    size_t raddr_len;
-    uint16_t rport;
+    static const sock_udp_ep_t local = { .family = AF_INET6,
+                                         .port = COAP_SERVER_PORT };
+    sock_udp_ep_t remote;
 
-    conn_udp_t conn;
+    sock_udp_t sock;
 
-    int rc = conn_udp_create(&conn, laddr, sizeof(laddr), AF_INET6, COAP_SERVER_PORT);
+    int rc = sock_udp_create(&sock, &local, NULL, 0);
 
     while (1) {
         DEBUG("Waiting for incoming UDP packet...\n");
-        rc = conn_udp_recvfrom(&conn, (char *)_udp_buf, sizeof(_udp_buf), raddr, &raddr_len, &rport);
+        rc = sock_udp_recv(&sock, (char *)_udp_buf, sizeof(_udp_buf),
+                           SOCK_NO_TIMEOUT, &remote);
         if (rc < 0) {
             DEBUG("Error in conn_udp_recvfrom(). rc=%u\n", rc);
             continue;
@@ -82,7 +82,7 @@ void microcoap_server_loop(void)
                 coap_dumpPacket(&rsppkt);
 
                 /* send reply via UDP */
-                rc = conn_udp_sendto(_udp_buf, rsplen, NULL, 0, raddr, raddr_len, AF_INET6, COAP_SERVER_PORT, rport);
+                rc = sock_udp_send(&sock, _udp_buf, rsplen, &remote);
                 if (rc < 0) {
                     DEBUG("Error sending CoAP reply via udp; %u\n", rc);
                 }