interfaces parameter in smb.conf to include the new Ethernet device or set it to * for all interfaces. This ensures the service listens on the active connection regardless of whether you use WiFi or wired networking.
Understanding the Interface Binding Issue
When you connect your Raspberry Pi via Ethernet, the operating system assigns a different network interface identifier than it did when using WiFi. Typically, WiFi interfaces are named wlan0 or similar, while Ethernet interfaces are named eth0. If your Samba configuration explicitly restricts listening to specific interfaces, it will ignore the new Ethernet connection.
This behavior is often intentional in server environments to prevent security leaks, but for a home NAS or file share, it causes connectivity issues. The symptom is usually that other devices on the local network can ping the Pi, but attempts to access //raspberrypi or //192.168.x.x time out or fail with "Network Path Not Found." This happens because Samba is not broadcasting its presence on the Ethernet subnet.
For more context on how network interfaces behave during transitions, see our guide on Troubleshooting Linux Device Not Reachable During Network (Ping).
Locating and Editing smb.conf
The primary configuration file for Samba is located at /etc/samba/smb.conf. You need root privileges to edit this file safely. Open a terminal on your Raspberry Pi and use a text editor like nano:
sudo nano /etc/samba/smb.conf
Scroll down until you find the [global] section. Look for a line that starts with interfaces. It might look like this:
interfaces = wlan0 127.0.0.0/8 ::1/128
If this line exists, it tells Samba to only listen on wlan0. When you switch to Ethernet, eth0 is ignored. In many cases, this line may be commented out with a semicolon (;interfaces = ...) or missing entirely, which means Samba should listen on all interfaces by default. However, if it is present and active, it is the culprit.
Updating the Configuration
You have two main options to fix this: binding to the specific Ethernet interface or allowing all interfaces. The most robust solution for a dynamic environment is to allow all interfaces.
Option 1: Listen on All Interfaces
To make Samba work regardless of whether you use WiFi or Ethernet, comment out the interfaces line or remove it entirely. Alternatively, you can set it to accept any address:
interfaces = *
However, the standard and safest approach is simply to ensure the line is commented out so Samba defaults to binding to all available network cards. If you prefer explicit control, you can list both:
interfaces = eth0 wlan0
Option 2: Bind to Specific Subnets
If you want to restrict Samba to your local LAN only, you can specify the subnet mask instead of interface names. For example:
interfaces = 192.168.1.0/24
This ensures Samba listens on any interface connected to the 192.168.1.x network, whether it arrives via WiFi or Ethernet.
For deeper insights into network bridging issues that might affect interface visibility, check out Ubuntu Server on Raspberry Pi 4: Layer2 WiFi-Eth Bridge Not Forwarding DHCP Requests.
Restarting and Verifying Samba
After saving the changes to smb.conf, you must restart the Samba services for the changes to take effect. Run the following commands:
sudo systemctl restart smbd
sudo systemctl restart nmbd
The smbd service handles file sharing, while nmbd handles NetBIOS name resolution (allowing you to access the share by hostname like //raspberrypi). If you do not restart nmbd, you might still be able to connect via IP address but fail to resolve the name.
Verify that Samba is now listening on the correct ports using netstat or socat:
sudo netstat -tlnp | grep smbd
You should see output indicating that smbd is listening on port 445 (TCP) across all interfaces or specifically on the Ethernet IP address. Additionally, test connectivity from another device on the same network. Try pinging the Pi's new Ethernet IP, then attempt to map the network drive or access the share via your file explorer.
Troubleshooting Firewall Rules
If Samba is configured correctly but still inaccessible, check your firewall settings. Raspberry Pi OS typically uses ufw (Uncomplicated Firewall). Ensure that traffic on ports 139, 445, and 137-138 is allowed.
sudo ufw status
If the status shows inactive, firewalls are not the issue. If it is active, ensure the Samba application profile is enabled:
sudo ufw app info 'Samba'
If rules are blocking incoming connections, enable them:
sudo ufw allow samba
Remember that changing networks can sometimes trigger firewall zone changes depending on your setup. Always verify that the firewall allows traffic on the subnet associated with your Ethernet connection.
Frequently Asked Questions
Why can I ping the Raspberry Pi but not access Sambashare?
Ping uses ICMP protocol, which operates at a lower layer than the TCP/IP ports used by Samba. Your network route is working, but Samba is likely bound to the wrong interface or blocked by a firewall rule specific to SMB ports. Check the interfaces setting in smb.conf first.
Does restarting the Raspberry Pi fix the interface binding issue?
No, a reboot does not change the Samba configuration. While the Pi will recognize the new Ethernet interface, Samba will continue to ignore it if smb.conf still points to the old WiFi interface. You must manually edit the configuration file to resolve this.
How do I find my Raspberry Pi's new Ethernet IP address?
Run the command ip addr show eth0 in the terminal. Look for the inet value under the eth0 section. This is the IPv4 address you should use to connect to the share if hostname resolution fails.
What is the difference between smbd and nmbd?
smbd provides the actual file and printer sharing services over TCP ports 139 and 445. nmbd provides NetBIOS name services, allowing devices to find the Pi by name rather than just IP address. Both need to be restarted after configuration changes.
Can I use a static IP to prevent future connectivity issues?
Yes, assigning a static IP to your Raspberry Pi via /etc/dhcpcd.conf ensures the address remains constant. However, this does not solve the Samba interface binding issue; you still need to update smb.conf to listen on the Ethernet interface.