diff options
Diffstat (limited to 'drafts/dell-dock.html')
-rw-r--r-- | drafts/dell-dock.html | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/drafts/dell-dock.html b/drafts/dell-dock.html new file mode 100644 index 0000000..5b2526f --- /dev/null +++ b/drafts/dell-dock.html @@ -0,0 +1,54 @@ +<p class="description"> + Here's the problem. I have a Dell Latitude E-series laptop running FreeBSD + 12.1-RELEASE. I also have a Dell E-Port II docking station on my desk. I + wanted to be able to take my shut, sleeping laptop and plop it down on the + docking station, hit the dock power button, and have the laptop wake up and + switch over to all of the docking station peripherals. All of the USB devices + did this without any additional work. However, the ethernet hookup, external + monitor, and speakers all required some additional tinkering. This assumes + that you're already familiar with wired and wireless network interfaces on + FreeBSD! +</p> + +<h2>Link Aggregation (Failover)</h2> + +<p> + FreeBSD doesn't magically swap from wireless to wired connections by default, + but there's an easy way to remedy this: link failover. I recommend reading the + <a href="https://www.freebsd.org/doc/handbook/network-aggregation.html" + >FreeBSD handbook page on network aggregation</a + > + as it's where I found out how to do what I'm about to show you. Basically, + aggregation lets you bind two of your network interfaces together into a + single virtual interface. Failover lets your traffic continue moving as long + as one of the aggregated interfaces has is connected. The steps I had to + follow are as follows: +</p> + +<ul> + <li> + Bind the wireless network interface to the MAC address of the wired + interface + </li> + <li>Create a lagg interface using the two network interfaces</li> + <li>Bind the lagg interface to an IP address, preferably with DHCP</li> +</ul> + +<p>All of this is configured in my <code>rc.conf</code>:</p> + +<pre><code> +wlans_iwn0="wlan0" # <- wlan0 device should use the iwn driver +ifconfig_wlan0="WPA" # <- wlan0 should use WPA (wpa_supplicant) to connect to wireless SSIDs +create_args_wlan0="wlanaddr 5c:26:0a:06:c1:d6" # <- wlan0 MAC address is set to em0 device MAC address +ifconfig_em0="up" # <- enable em0 (ethernet) device +cloned_interfaces="lagg0" # <- create cloned interface lagg0 +ifconfig_lagg0="up laggproto failover laggport em0 laggport wlan0 DHCP" # <- configure lagg0 interface to act as a failover lagg protocol over em0 and wlan0 +</code></pre> + +<p> + In practice, the preferred device is <code>em0</code>, or my ethernet NIC. + FreeBSD will always try to use that first. If it's disconnected, such as when + the laptop is removed from the dock, the wireless device (<code>wlan0</code>) + will take over. This transition happens instantly, and without interrupting + traffic; active transactions aren't cut short for example. +</p> |