How to force wired connection in FreeBSD 13 on a laptop
Quick note-to-self sort of post: I decided to plug my FreeBSD machine into the wired LAN cable. The WiFi connection is still going great, but I'd rather use the full Gigabit connection when I can. To my surprise, the moment after I connected and switched off the WiFi, however, all connectivity from the laptop died - couldn't even ping addresses out of my local network.
This is a little unexpected, since usually what happens is that the WiFi doesn't work while the cabled connection is a walk in the park (lack of drivers, not knowing how to configure
wpa_supplicant and so). Never had the cabled connection let me down before when I was on Linux!
After wrestling a little with the problem, I eventually honed in on the problem: for some reason, FreeBSD wasn't setting up a route for the wired network
em0, even if an IP address was assigned to it via DHCP! And so, I derived the fix:
# set down wifi to make sure only the cabled connection works: ifconfig wlan0 down # if no IP address yet, get one for your cabled interface: dhclient em0 # now that we have an address, add a default route via the gateway: # change this to your router's IP address: route add default <192.168.X.X>
Now check the status of your routing table via the command
netstat -r. It should be something like this:
Routing tables Internet: Destination Gateway Flags Netif Expire default 192.168.0.1 UGS em0 localhost link#2 UH lo0 ...
And there you have it! Everything should be working normally. Note that I wrote the steps to fix the issue in more or less a script form. This is on purpose: you could make a script of sorts out of this to "activate" wired connection mode, and its reverse (swapping the
em0 interfaces) for the wireless one. Happy fast browsing!