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
You should also make sure Samba is already installed and running on Ubuntu. You can find out by checking the service with:
sudo systemctl status smbd
If not installed, install with:
sudo apt update && sudo apt install samba
Also make sure you have at least one folder shared in Ubuntu.
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.
“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.
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.
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 WSD 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 WSD on Ubuntu
wsdd is a service by christgau on GitHub, which implements a Web Service Discovery host daemon for Ubuntu. This enables Samba hosts to be found by Web Service Discovery Clients like Windows 10.
If you are experiencing any issues with this service, please let us know in the comments or submit an issue on GitHub.
Download and unzip the archive.
sudo mv wsdd-master/src/wsdd.py wsdd-master/src/wsdd
sudo cp wsdd-master/src/wsdd /usr/bin
sudo cp wsdd-master/etc/systemd/wsdd.service /etc/systemd/system
nano and comment out
Group=nobody with a
sudo nano /etc/systemd/system/wsdd.service
[Unit] Description=Web Services Dynamic Discovery host daemon ; Start after the network has been configured After=network-online.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
Y and then press
sudo systemctl daemon-reload
Start and enable
sudo systemctl start wsdd
sudo systemctl enable wsdd
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
● wsdd.service - Web Services Dynamic Discovery host daemon Loaded: loaded (/etc/systemd/system/wsdd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-06-10 10:51:39 CEST; 8s ago Main PID: 40670 (python3) Tasks: 1 (limit: 6662) Memory: 10.8M CGroup: /system.slice/wsdd.service └─40670 python3 /usr/bin/wsdd --shortlog jun 10 10:51:39 ubuntu systemd: Started Web Services Dynamic Discovery host daemon. jun 10 10:51:40 ubuntu wsdd: WARNING: no interface given, using all interfaces
You should now be able to browse your Ubuntu machines and Samba shares in the Windows 10 file explorer. You may need to restart the Windows 10 machines to force discovery.
You may also want to reboot the Ubuntu server just to make sure the wsdd service starts up automatically without issue.
How to Uninstall wsdd
If you want to completely uninstall
wsdd, stop and disable the service.
sudo systemctl stop wsdd
sudo systemctl disable wsdd
sudo rm /usr/bin/wsdd
Remove service file.
sudo rm /etc/systemd/system/wsdd.service