diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index c05244b7e0a30ce4d93340b617c52a667f8facdc..4cdfffecbfd6d9bd4a7351ba61df0fff7c1bfa42 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -128,6 +128,11 @@ add_library(core STATIC
     hle/service/sm/controller.h
     hle/service/sm/sm.cpp
     hle/service/sm/sm.h
+    hle/service/sockets/bsd_u.cpp
+    hle/service/sockets/bsd_u.h
+    hle/service/sockets/sfdnsres.h
+    hle/service/sockets/sockets.cpp
+    hle/service/sockets/sockets.h
     hle/service/time/time.cpp
     hle/service/time/time.h
     hle/service/vi/vi.cpp
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index fe76b381c4c63042aea8909f4f978847d5d1242d..9a49d9e9c09640b7af023335319f594c0ff2ec6a 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -26,6 +26,7 @@
 #include "core/hle/service/service.h"
 #include "core/hle/service/sm/controller.h"
 #include "core/hle/service/sm/sm.h"
+#include "core/hle/service/sockets/sockets.h"
 #include "core/hle/service/time/time.h"
 #include "core/hle/service/vi/vi.h"
 
@@ -174,6 +175,7 @@ void Init() {
     LM::InstallInterfaces(*SM::g_service_manager);
     Nvidia::InstallInterfaces(*SM::g_service_manager);
     PCTL::InstallInterfaces(*SM::g_service_manager);
+    Sockets::InstallInterfaces(*SM::g_service_manager);
     Time::InstallInterfaces(*SM::g_service_manager);
     VI::InstallInterfaces(*SM::g_service_manager);
 
diff --git a/src/core/hle/service/sockets/bsd_u.cpp b/src/core/hle/service/sockets/bsd_u.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a819acc960c01bfe956c3c08401cc857ceda3dd5
--- /dev/null
+++ b/src/core/hle/service/sockets/bsd_u.cpp
@@ -0,0 +1,67 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/ipc_helpers.h"
+#include "core/hle/service/sockets/bsd_u.h"
+
+namespace Service {
+namespace Sockets {
+
+void BSD_U::RegisterClient(Kernel::HLERequestContext& ctx) {
+    LOG_WARNING(Service, "(STUBBED) called");
+
+    IPC::RequestBuilder rb{ctx, 3};
+
+    rb.Push(RESULT_SUCCESS);
+    rb.Push<u32>(0); // bsd errno
+}
+
+void BSD_U::Socket(Kernel::HLERequestContext& ctx) {
+    IPC::RequestParser rp{ctx};
+
+    u32 domain = rp.Pop<u32>();
+    u32 type = rp.Pop<u32>();
+    u32 protocol = rp.Pop<u32>();
+
+    LOG_WARNING(Service, "(STUBBED) called domain=%u type=%u protocol=%u", domain, type, protocol);
+
+    u32 fd = next_fd++;
+
+    IPC::RequestBuilder rb{ctx, 4};
+
+    rb.Push(RESULT_SUCCESS);
+    rb.Push<u32>(fd);
+    rb.Push<u32>(0); // bsd errno
+}
+
+void BSD_U::Connect(Kernel::HLERequestContext& ctx) {
+    LOG_WARNING(Service, "(STUBBED) called");
+
+    IPC::RequestBuilder rb{ctx, 4};
+
+    rb.Push(RESULT_SUCCESS);
+    rb.Push<u32>(0); // ret
+    rb.Push<u32>(0); // bsd errno
+}
+
+void BSD_U::SendTo(Kernel::HLERequestContext& ctx) {
+    LOG_WARNING(Service, "(STUBBED) called");
+
+    IPC::RequestBuilder rb{ctx, 4};
+
+    rb.Push(RESULT_SUCCESS);
+    rb.Push<u32>(0); // ret
+    rb.Push<u32>(0); // bsd errno
+}
+
+BSD_U::BSD_U() : ServiceFramework("bsd:u") {
+    static const FunctionInfo functions[] = {{0, &BSD_U::RegisterClient, "RegisterClient"},
+                                             {2, &BSD_U::Socket, "Socket"},
+                                             {11, &BSD_U::SendTo, "SendTo"},
+                                             {14, &BSD_U::Connect, "Connect"}};
+    RegisterHandlers(functions);
+}
+
+} // namespace Sockets
+} // namespace Service
diff --git a/src/core/hle/service/sockets/bsd_u.h b/src/core/hle/service/sockets/bsd_u.h
new file mode 100644
index 0000000000000000000000000000000000000000..1fe96d8501cf0bc2599a33c6781c0278b601bcaa
--- /dev/null
+++ b/src/core/hle/service/sockets/bsd_u.h
@@ -0,0 +1,29 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/hle_ipc.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace Sockets {
+
+class BSD_U final : public ServiceFramework<BSD_U> {
+public:
+    BSD_U();
+    ~BSD_U() = default;
+
+private:
+    void RegisterClient(Kernel::HLERequestContext& ctx);
+    void Socket(Kernel::HLERequestContext& ctx);
+    void Connect(Kernel::HLERequestContext& ctx);
+    void SendTo(Kernel::HLERequestContext& ctx);
+
+    /// Id to use for the next open file descriptor.
+    u32 next_fd = 1;
+};
+
+} // namespace Sockets
+} // namespace Service
diff --git a/src/core/hle/service/sockets/sfdnsres.h b/src/core/hle/service/sockets/sfdnsres.h
new file mode 100644
index 0000000000000000000000000000000000000000..32a3ac8c57614200f5e31178eaacdd17e32d0580
--- /dev/null
+++ b/src/core/hle/service/sockets/sfdnsres.h
@@ -0,0 +1,22 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/kernel/hle_ipc.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace Sockets {
+
+class SFDNSRES final : public ServiceFramework<SFDNSRES> {
+public:
+    SFDNSRES() : ServiceFramework("sfdnsres") {}
+    ~SFDNSRES() = default;
+
+private:
+};
+
+} // namespace Sockets
+} // namespace Service
diff --git a/src/core/hle/service/sockets/sockets.cpp b/src/core/hle/service/sockets/sockets.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f1396eaa195f8e11f14b722f78b7ac7adf7b46d6
--- /dev/null
+++ b/src/core/hle/service/sockets/sockets.cpp
@@ -0,0 +1,18 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "core/hle/service/sockets/bsd_u.h"
+#include "core/hle/service/sockets/sfdnsres.h"
+#include "core/hle/service/sockets/sockets.h"
+
+namespace Service {
+namespace Sockets {
+
+void InstallInterfaces(SM::ServiceManager& service_manager) {
+    std::make_shared<BSD_U>()->InstallAsService(service_manager);
+    std::make_shared<SFDNSRES>()->InstallAsService(service_manager);
+}
+
+} // namespace Sockets
+} // namespace Service
diff --git a/src/core/hle/service/sockets/sockets.h b/src/core/hle/service/sockets/sockets.h
new file mode 100644
index 0000000000000000000000000000000000000000..7e89c8d2c3405bb85cd69a4c88b3545ed45b2bdc
--- /dev/null
+++ b/src/core/hle/service/sockets/sockets.h
@@ -0,0 +1,16 @@
+// Copyright 2018 yuzu emulator team
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace Sockets {
+
+/// Registers all Sockets services with the specified service manager.
+void InstallInterfaces(SM::ServiceManager& service_manager);
+
+} // namespace Sockets
+} // namespace Service