Ubuntu machine visible in Windows file explorer

How to See Ubuntu Machines and Samba Shares on a Windows 10 Network

Last updated on

In this guide we will install a WDS service on Ubuntu, which will allow Windows 10 machines to see other Ubuntu machines and Samba shares in Windows File Explorer.

Prerequisites

This guide is for Windows 10 users who cannot see other Ubuntu machines in the Windows File Explorer, but can access them directly with the network path either by using the hostname (\\hostname\share) or IP (\\192.168.1.10\share).

You will need sudo privileges on the Ubuntu machine to install the wsdd service.

The Problem with Ubuntu 18.04/20.04 and Windows 10 Network Discovery

SMB 1.0 (SMBv1)

Several guides and YouTube videos I’ve researched suggest manually enabling SMB 1.0 in Windows 10 in order to make other Ubuntu machines visible in Windows File Explorer. While this may work on older editions of Windows 10, it is not advised due to the security implications.

From Microsoft:

“Hi folks, Ned here again and today’s topic is short and sweet: Stop using SMB1. Stop using SMB1 . STOP USING SMB1!” source

With Windows 10 version 1511, support for SMBv1 and thus NetBIOS device discovery was disabled by default. Depending on the actual edition, later versions of Windows starting from version 1709 (“Fall Creators Update”) do not allow the installation of the SMBv1 client anymore.

This causes hosts running Samba not to be listed in the Explorer’s “Network (Neighborhood)” views. While there is no connectivity problem and Samba will still run fine, users might want to have their Samba hosts to be listed by Windows automatically.

mDNS

Ubuntu 18.04/20.04 automatically register your samba server to the rest of the network using mDNS (Avahi). All other Linux machines as well as macOS can discover this registration automatically.

The reason Windows 10 cannot discover Ubuntu network shares is because although it can use mDNS it does not know how to scan the network for them automatically.

WDS

Web Services for Devices (WSD) is a Microsoft API to enable programming connections to web service enabled devices, such as printers, scanners and file shares. It serves as a replacement for older Windows networking functions such as NetBIOS.

With the addition of a WSD service in Ubuntu, Windows 10 will discover the Linux Samba server using its native WSD protocol.

Why Doesn’t Ubuntu Support WDS Natively?

This issue has been raised in the Samba bug tracker since 2015. So it may happen that this feature gets integrated into Samba at some time in the future. But for now, we have to manually install a patch ourselves.

Installing WDS on Ubuntu

wsdd implements a Web Service Discovery host daemon for Ubuntu. This enables (Samba) hosts to be found by Web Service Discovery Clients like Windows. Read more at: https://github.com/christgau/wsdd

Download and unzip the archive.

wget https://github.com/christgau/wsdd/archive/master.zip
unzip master.zip

Move wsdd.py.

sudo mv wsdd-master/src/wsdd.py wsdd-master/src/wsdd

Copy to /usr/bin.

sudo cp wsdd-master/src/wsdd /usr/bin

Copy service to /etc/systemd/system.

sudo cp wsdd-master/etc/systemd/wsdd.service /etc/systemd/system

Open wsdd.service in nano and replace After=network-online.target with After=network.target network-online.target multi-user.target

Also comment out User=nobody and Group=nobody with a # sign.

sudo nano /etc/systemd/system/wsdd.service
/etc/systemd/system/wsdd.service
[Unit]
Description=Web Services Dynamic Discovery host daemon
; Start after the network has been configured
After=network.target network-online.target multi-user.target
Wants=network-online.target
; It makes sense to have Samba running when wsdd starts, but is not required
;Wants=smb.service

[Service]
Type=simple
ExecStart=/usr/bin/wsdd --shortlog
; Replace those with an unprivledged user/group that matches your environment,
; like nobody/nogroup or daemon:daemon or a dedicated user for wsdd
#User=nobody
#Group=nobody
; The following lines can be used for a chroot execution of wsdd.
; Also append '--chroot /run/wsdd/chroot' to ExecStart to enable chrooting
;AmbientCapabilities=CAP_SYS_CHROOT
;ExecStartPre=/usr/bin/install -d -o nobody -g nobody -m 0700 /run/wsdd/chroot
;ExecStopPost=rmdir /run/wsdd/chroot

[Install]
WantedBy=multi-user.target

Save and exit (press CTRL + X, press Y and then press ENTER)

Reload daemon.

sudo systemctl daemon-reload

Start and enable wsdd.

sudo systemctl start wsdd
sudo systemctl enable wsdd

Output:

Created symlink /etc/systemd/system/multi-user.target.wants/wsdd.service → /etc/systemd/system/wsdd.service.

Now check that the service is running.

sudo service wsdd status

Output:

 wsdd.service - Web Services Dynamic Discovery host daemon
     Loaded: loaded (/etc/systemd/system/wsdd.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-03-09 13:43:04 CET; 1h 48min ago
   Main PID: 11976 (python3)
      Tasks: 1 (limit: 6662)
     Memory: 10.8M
     CGroup: /system.slice/wsdd.service
             └─11976 python3 /usr/bin/wsdd --shortlog

mar 09 13:43:04 bb-srv1 systemd[1]: Started Web Services Dynamic Discovery host daemon.
mar 09 13:43:04 bb-srv1 wsdd[11976]: WARNING: no interface given, using all interfaces

As long as Windows 10 is set up correctly, you should now be able to browse your Ubuntu machines and Samba shares in the Windows file explorer. Hurrah!

Let me know in the comments if this helped. Follow me on Twitter, Facebook and YouTube.

p.s. I increased my AdSense revenue by 68% using AI 🤖. Read my Ezoic review to find out how.

1 Star2 Stars3 Stars4 Stars5 Stars 4.50 (2 votes)

Leave a Reply

Your email address will not be published. Required fields are marked *

We use Markdown to style comments, like on Github and Reddit.
To do a line break, type two spaces after the sentence.
You can add inline code by wrapping it in backticks: `code here`

    To do an entire block of code  
    type four spaces before the line
    and it will appear in a block like this.
    <-- four empty spaces