Introduction
This guide shows you how to enable Linux machines to be visible in the Windows 10/11 network neighborhood using WSD (Web Services for Devices).
If you can map a share via \\hostname\share
or \\ip_address\share
but it doesn’t show automatically under “Network,” you likely need WSD (Web Services for Devices) support on the Linux side.
While many examples here use Ubuntu/Debian commands, notes for other popular distributions (such as Fedora, Arch, or openSUSE) are included where applicable. This article focuses solely on using wsdd for network discovery, not a complete Samba setup guide—though having Samba installed is a prerequisite for file sharing.
Why You Need WSD for Windows Discovery
Microsoft disabled SMBv1 and NetBIOS-based browsing by default in Windows 10 and later versions. While you can still connect manually to SMB shares, they don’t appear automatically under “Network.” Instead, Windows expects devices to advertise themselves via WSD (Web Services for Devices). If your Linux system doesn’t run a WSD service, Windows won’t “see” it.
1. Install Samba (If Not Already Installed)
For Windows to access shared folders on Linux, Samba must be installed and running. On Ubuntu/Debian, run:
sudo apt update && sudo apt install samba
For Fedora users, try: sudo dnf install samba
. Arch Linux users can use: sudo pacman -S samba
. Also, ensure at least one folder is shared and verify your firewall isn’t blocking necessary Samba or WSD ports.
2. Install WSD (wsdd)
Starting with Ubuntu 22.04 LTS (and some prior releases), wsdd
is readily available in the default repository, so you can install it with a single command. This means no manual downloads or service file edits are typically required anymore.
On Ubuntu/Debian:
sudo apt update && sudo apt install wsdd
For Fedora, you may run: sudo dnf install wsdd
, and on Arch Linux: sudo pacman -S wsdd
(if available). Check your distro’s package repositories for details.
3. Check and Enable the wsdd Service
Verify that the wsdd
service is active:
systemctl status wsdd
If it’s not running, start and enable it:
sudo systemctl start wsdd
sudo systemctl enable wsdd
4. (Optional) Restrict wsdd to Specific Network Interfaces
If you want to restrict wsdd to specific network interfaces, edit the configuration file (usually /etc/default/wsdd
or /etc/systemd/wsdd.defaults
):
# List of interfaces (space-separated)
WSDD_INTERFACES="eth0 wlan0"
# Additional wsdd options (see 'man wsdd' or 'wsdd --help')
WSDD_OPTIONS="--shortlog"
Save and exit (press CTRL
+ X
, press Y
, then press ENTER
)
Then reload systemd and restart the service:
sudo systemctl daemon-reload
sudo systemctl restart wsdd
5. Firewall Considerations
Ensure your firewall permits the necessary WSD ports so Windows can detect your Linux machine. For example, on Ubuntu with ufw
:
sudo ufw allow 3702/udp
sudo ufw allow 5357/tcp
sudo ufw allow 5358/tcp
Keep in mind that Samba itself also requires ports 139/tcp
and 445/tcp
(and 137-138/udp
if you use NetBIOS).
6. Manual Installation for Older or Unsupported Distros
If your distribution does not offer wsdd
in its repositories (common on older releases or less common distros), you can manually install it from the wsdd GitHub repository. Follow the instructions there to compile and configure the service.
7. Testing and Usage
With wsdd running and your firewall properly configured, any Windows 10 or 11 PC on the same LAN should eventually detect your Linux machine under “Network.” You may need to refresh or reboot your Windows PC to expedite discovery.
Remember that even if your Linux machine appears, you still need valid Samba credentials (or guest access configured) to access shared folders.
8. Uninstalling wsdd
To remove wsdd
installed from your package manager (Ubuntu/Debian example):
sudo apt remove wsdd
If you manually installed wsdd, stop and disable the service, then remove the installed files:
sudo systemctl stop wsdd
sudo systemctl disable wsdd
sudo rm /usr/bin/wsdd
sudo rm /etc/systemd/system/wsdd.service
Reload systemd to finalize the uninstallation:
sudo systemctl daemon-reload
9. Conclusion
This guide focused on enabling WSD to allow Windows 10/11 systems to discover Linux machines on the network. Whether you are running Ubuntu, Fedora, Arch, or another Linux distribution, wsdd is a lightweight solution that bridges the gap between Linux and Windows network discovery. If you encounter any issues or have questions, feel free to leave a comment or visit the wsdd GitHub repository for more details. Happy networking!
Let me know if this helped. Follow me on Twitter, Facebook and YouTube, or 🍊 buy me a smoothie.
Thanks
In 2023 with Ubuntu:
sudo apt install wsdd
just works by default on all interfaces. You can edit /etc/default/wsdd to restrict which interfaces it listens on.
(Ubuntu 22.04.2 LTS)
wsdd is in the Ubuntu repositories as of version 22. “apt install wsdd” did the job for me.
Hello.
Last version of wsdd need a file wsdd.defaults that is located in /etc/systemd.
You can see in wsdd.service that a variable ‘EnvironmentFile’ in the bloc Service point to this file.
This file must be under /etc/default and called wsdd.
sudo cp wsdd-master/etc/systemd/wsdd.defaults /etc/default
cd /etc/default
sudo mv wsdd.defaults /etc/default/wsdd
Then you can reload daemon, start and enable wsdd like it is described in this present ‘how to’
My original purpose was to detect my ubuntu pc in my printer/scanner ‘wsd’ discovery mode, but, at the moment, it doesn’t work.
I tried apt install wsdd, same result, doesn’t seen the ubuntu pc in my scanner menu
THANK YOU! I followed the original instructions but ran into an error starting the WSDD service. I then saw and followed your additional instructions and they worked perfectly. I can now see my ubuntu machine and shares on my Windows 10 machine.
dont work on ubuntu 16.04 LTS
Dang. Any error?
Work great for me. Thanx a lot for such great tutorial.
Worked fine for me, replace your ENTIRE wsdd.service file with that in the original post, then the resource problem goes away. It did for me.
Simon I apologize but am a little ignorant on the structure and commands of Linux. Can you send me exactly what you did to replace the entire wsdd.service file?
Thank you for your time and help,
ernie
Totally failed for me unfortunately. No idea where i went wrong as i followed each step.
wsdd.service – Web Services Dynamic Discovery host daemon
Loaded: loaded (/etc/systemd/system/wsdd.service; enabled; vendor preset: enabled)
Active: failed (Result: resources)
Docs: man:wsdd(8)
CPU: 0
Jul 06 10:42:32 taze-Satellite-Pro-L500 systemd[1]: wsdd.service: Failed to load environment files: No such file or directory
Jul 06 10:42:32 taze-Satellite-Pro-L500 systemd[1]: wsdd.service: Failed to run ‘start’ task: No such file or directory
Jul 06 10:42:32 taze-Satellite-Pro-L500 systemd[1]: wsdd.service: Failed with result ‘resources’.
Jul 06 10:42:32 taze-Satellite-Pro-L500 systemd[1]: Failed to start Web Services Dynamic Discovery host daemon.
Same problem here.
Worked great. Thanks for the instruction. I did modify the config file to match what was shown in the instructions. I can now see my samba server in Windows file explorer. However, since updates to Samba and Windows 10 this week, I cannot access the shares on this server. I ge the Windows security Enter nerwork credentials “the user name or passwork is incorrect”. I have checked numerous settings and changes, but nothing has resolved this. Has anyone else experienced this?
Well it seemed to go ok until I keep getting this error.
Job for wsdd.service failed because of unavailable resources or another system error.
I do not have the firewall running, during testing, and the edit I commented out had wdss as a user and group.. should I use the other computer or just comment it out?
Ed, I had the same error. I noticed the code in the wsdd.service file (shown above) was dramatically different from the wsdd.service file I downloaded from Github. As a test, I copied the code for wsdd.service shown above and pasted it over (deleting) the code in the new wsdd.service file, and it suddenly worked! Hopefully this helps someone else.
Great article. And great hint Chris, I had the same problem and this fixed it. On windows I then found my shared folder, but I still had no authentication. It was because I had to create a samba user on the Ubuntu machine with `sudo smbpasswd -a albert` and then I was good to go.
Yes it did. Got the same error on my Debian 11 server.
Thank you so much. This worked for me as well.
Great article. You might want to consider adding that firewall needs to have the following opened:
outgoing unicast traffic from udp/3702
incoming to tcp/5357
In Ubuntu:
sudo ufw allow 3702/udp
sudo ufw allow 5357/tcp
I don’t know about other distros.
It took me a while to figure out why it wasn’t working despite following your instructions to the letter.
That was fantastic help. It took me a while to find this post and your advice. Thank you. I also had to open up port 445/tcp as well, in order to be able to log in. I couldn’t see my laptop before that though.
**running Debian 11 on fresh install… forgot I had installed ufw.
I installed it on latest, updated Raspbian OS (ubuntu), it works perfect, thank you for your effort to gradually explain everything how to install this WSD service, thanks !
I’ll not bore you with my noobness, what am I supposed to do from here:
Open wsdd.service in nano and comment out User=nobody and Group=nobody with a ; semicolon.
sudo nano /etc/systemd/system/wsdd.service
When I open wsdd.service it shows a blank page. Is that right? Do I just type in ; User=nobody, ; Group=nobody, Save & Exit?