821 lines
19 KiB
Markdown
821 lines
19 KiB
Markdown
2022-02-16
|
||
|
||
## Bridged Wireless Access Point
|
||
|
||
A `Bridged Wireless Access Point` (aka Dumb AP) works within an existing
|
||
ethernet network to add WiFi capability where it does not exist or to
|
||
extend the network to WiFi capable computers and devices in areas where
|
||
the WiFi signal is weak or otherwise does not meet expectations. One big
|
||
advantage of this setup is that it can cost far less than many of the
|
||
Mesh kits that are available. Another advantage this setup has is that
|
||
the Raspberry Pi is a general purpose computer so it can be used for
|
||
additional tasks while performing as a `Bridged Wireless Access Point`.
|
||
|
||
```
|
||
((((( tablet
|
||
╱
|
||
INTERNET >>>>>>> modem/router >>>>>>> RasPi ))))) ((((( laptop
|
||
(cable) ╱ ╲
|
||
(fiber) CAT 5e+ ((((( phone
|
||
(dsl) Powerline AV2
|
||
Ethernet Over Coax
|
||
```
|
||
|
||
Note: The connection from the router to the RasPi is best served by a
|
||
CAT 5e or greater ethernet cable but alternatives exist. One
|
||
alternative is to use your existing electrical wiring by using
|
||
`Powerline AV2` adapters. These adapters are also called `Homeplug AV2`
|
||
adapters and come in a variety of speeds and prices. I have had success
|
||
with `Powerline AV2` adapters but success depends on the quality and setup
|
||
of the electrical wiring to be used. Another option is `Ethernet Over
|
||
Coax (MoCa)`. Anyone considering `Powerline AV2` or `Ethernet Over
|
||
Coax (MoCa)` should research the products and be prepared to return
|
||
the products if expectations are not met.
|
||
|
||
#### Single Band or Dual Band - Your Choice
|
||
|
||
This document outlines single band and dual band WiFi setups using a
|
||
Raspberry Pi 3B, 3B+ or 4B with an AC600 USB2 or AC1200 USB3 WiFi
|
||
adapter for 5 GHz band and either an additional external WiFi adapter or
|
||
internal WiFi for 2.4 GHz band. There is a lot of flexibility and
|
||
capability available with this type of setup.
|
||
|
||
#### Information
|
||
|
||
This setup supports WPA3-SAE. It is disabled by default.
|
||
|
||
WPA3-SAE will not work with some Realtek 88xx drivers. Let's just say
|
||
that this issue is in progress.
|
||
|
||
WPA3-SAE works with Mediatek 761x chipset based USB WiFI adapters and,
|
||
as far as I can tell, with all usb wifi adapters that use Linux
|
||
in-kernel drivers and I have tested many.
|
||
|
||
Note: This guide uses `systemd-networkd` for network management. If your
|
||
Linux distro uses Network Manager or Netplan, they must be disabled.
|
||
Sections that explain how to do this are located near the end of this
|
||
document. Please go to and follow the appropriate section now, if
|
||
required, before continuing with this setup guide. If you are using the
|
||
Raspberry Pi OS, you may continue with this setup guide now as the
|
||
Raspberry Pi OS does not use Network Manager or Netplan.
|
||
|
||
-----
|
||
|
||
#### Tested Setup
|
||
|
||
[Raspberry Pi 4B (4gb)](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/)
|
||
|
||
[Raspberry Pi OS (2021-10-30) (32 bit) (kernel 5.10)](https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit)
|
||
|
||
Ethernet and Powerline AV2 connections providing internet (both tested)
|
||
|
||
[USB WiFi Adapter(s)](https://github.com/morrownr/USB-WiFi)
|
||
|
||
[Case](https://www.amazon.com/dp/B07T2CPC2H)
|
||
|
||
[Right Angle USB Extender](https://www.amazon.com/dp/B07S6B5X76)
|
||
|
||
[Power Supply](https://www.amazon.com/dp/B08C9VYLLK)
|
||
|
||
[SD Card](https://www.amazon.com/Samsung-Endurance-32GB-Micro-Adapter/dp/B07B98GXQT)
|
||
|
||
Note: I use the case upside down with little stick-on rubber feet. There
|
||
are several little things that work better with the case upside down and
|
||
no negatives that I can find.
|
||
|
||
Note: Very few Powered USB 3 Hubs will work well with Raspberry Pi hardware. The
|
||
primary problem has to do with the backfeeding of current into the Raspberry Pi.
|
||
One that seems to work well here is:
|
||
|
||
[Transcend USB 3.0 4-Port Hub TS-HUB3K](https://www.amazon.com/gp/product/B005D69QD8)
|
||
|
||
Note: The rtl88XXxu chipset based USB3 WiFi adapters require from 504 mA of
|
||
power up to well over 800 mA of power depending on the adapter. The Raspberry
|
||
Pi 3B, 3B+ and 4B USB subsystems are only able to supply a total of 1200
|
||
mA of power total divided between all attached devices.
|
||
|
||
Note: The Alfa AWUS036ACM adapter, a mt7612u based adapter, requests a maximum
|
||
of 400 mA from the USB subsystem during initialization. Testing with a meter
|
||
shows actual usage of 360 mA during heavy load and usage of 180 mA during
|
||
light loads. This is much lower power usage than most AC1200 class adapters
|
||
which makes this adapter a good choice for a Raspberry Pi based access point.
|
||
Other mt7612u and mt7610u chipset based adapters also show low power usage.
|
||
Another adapter that is very good for use in this setup is the Alfa AWUS036ACHM
|
||
which is an AC600 class adapter that has very impressive range.
|
||
|
||
-----
|
||
|
||
#### Setup Steps
|
||
|
||
USB WiFi adapter driver installation, if required, should be performed
|
||
and tested prior to continuing.
|
||
|
||
Note: For USB3 adapters based on the Realtek rtl8812au, rtl8812bu and
|
||
rtl8814au chipsets, the following module parameters may be needed for
|
||
best performance when the adapter is set to support 5 GHz band: (if
|
||
using a rtl8812bu based adapter with a Raspberry Pi 4B or 400, you may
|
||
need to limit USB mode to USB2 due to a bug, probably in the Raspberry
|
||
Pi 4B, that causes dropped connections-- rtw_switch_usb_mode=2)
|
||
|
||
```
|
||
rtw_vht_enable=2 rtw_switch_usb_mode=1
|
||
```
|
||
|
||
Note: For USB2 adapters based on the Realtek rtl8811au and rtl8821cu
|
||
chipset, the following module parameters may be needed for best
|
||
performance when the adapter is set to support 5 GHz band:
|
||
|
||
```
|
||
rtw_vht_enable=2
|
||
```
|
||
|
||
Note: For USB3 adapters based on the Realtek rtl8812au, rtl8812bu and
|
||
rtl8814au chipsets, the following module parameters may be needed for
|
||
best performance when the adapter is set to support 2.4 GHz band:
|
||
|
||
```
|
||
rtw_vht_enable=1 rtw_switch_usb_mode=2
|
||
```
|
||
|
||
Note: For USB2 adapters based on the Realtek rtl8811au and rtl8821cu
|
||
chipset, the following module parameters may be needed for best
|
||
performance when the adapter is set to support 2.4 GHz band:
|
||
|
||
```
|
||
rtw_vht_enable=1
|
||
```
|
||
|
||
Note: For USB3 adapters based on Mediatek mt7612u chipsets, the
|
||
following module parameter may be needed for best performance:
|
||
|
||
```
|
||
disable_usb_sg=1
|
||
```
|
||
|
||
Note: Here is a quick way to set the `disable_usb_sg` paramter:
|
||
|
||
```
|
||
sudo -i
|
||
echo "options mt76_usb disable_usb_sg=1" > /etc/modprobe.d/mt76_usb.conf
|
||
exit
|
||
```
|
||
|
||
Note: More information is available at the following site:
|
||
|
||
https://github.com/morrownr/7612u
|
||
|
||
Note: For this access point setup to support WPA3-SAE in a dual band
|
||
setup, two USB WiFi adapters with Mediatek or Atheros chipsets are
|
||
required as the Realtek and internal Raspberry Pi WiFi drivers do not
|
||
support WPA3-SAE as of the date of this document.
|
||
|
||
The follow site provides links to adapters that support WPA3-SAE: [USB-WIFI](https://github.com/morrownr/USB-WiFi)
|
||
|
||
-----
|
||
|
||
Update, upgrade and clean up the operating system.
|
||
```
|
||
sudo apt update && sudo apt upgrade && sudo apt autoremove
|
||
```
|
||
|
||
Note: Upgrading the operating system is not mandatory for this
|
||
installation but since some users forget to upgrade their system on a
|
||
regular basis, maybe it is a good idea.
|
||
|
||
-----
|
||
|
||
Reduce overall power consumption and overclock the CPU a modest amount.
|
||
|
||
Note: All items in this step are optional and some items are specific to the
|
||
Raspberry Pi 4B. If installing to a Raspberry Pi 3B or 3B+ or other Pi you will
|
||
need to use the appropriate settings for that hardward.
|
||
|
||
```
|
||
sudo nano /boot/config.txt
|
||
```
|
||
|
||
Change:
|
||
|
||
```
|
||
# turn off onboard audio
|
||
#dtparam=audio=on
|
||
|
||
# disable DRM VC4 V3D driver on top of the dispmanx display stack
|
||
#dtoverlay=vc4-fkms-v3d
|
||
#max_framebuffers=2
|
||
```
|
||
Add:
|
||
```
|
||
# turn off Mainboard LEDs
|
||
dtoverlay=act-led
|
||
|
||
# disable Activity LED
|
||
dtparam=act_led_trigger=none
|
||
dtparam=act_led_activelow=off
|
||
|
||
# disable Power LED
|
||
dtparam=pwr_led_trigger=none
|
||
dtparam=pwr_led_activelow=off
|
||
|
||
# turn off Ethernet port LEDs
|
||
dtparam=eth_led0=4
|
||
dtparam=eth_led1=4
|
||
|
||
# turn off Bluetooth
|
||
dtoverlay=disable-bt
|
||
|
||
# turn off onboard WiFi
|
||
dtoverlay=disable-wifi
|
||
|
||
# overclock CPU
|
||
# (may not be required on current versions of the RasPiOS with a RasPi4B)
|
||
over_voltage=1
|
||
arm_freq=1600
|
||
```
|
||
|
||
-----
|
||
|
||
Enable predictable network interface names
|
||
|
||
Note: While this step is optional, problems can arise without it on dual
|
||
band setups. Some Linux distros have this capability enabled by default
|
||
but not the Raspberry Pi OS.
|
||
|
||
```
|
||
sudo raspi-config
|
||
```
|
||
|
||
Select: Advanced options > A4 Network Interface Names > Yes
|
||
|
||
-----
|
||
|
||
Reboot system.
|
||
|
||
```
|
||
sudo reboot
|
||
```
|
||
|
||
-----
|
||
|
||
Determine name and state of the network interfaces.
|
||
|
||
```
|
||
ip a
|
||
```
|
||
|
||
You may need to additionally run the following commands in order to
|
||
determine which adapter, in a dual band setup, has which interface name.
|
||
|
||
```
|
||
iw list
|
||
```
|
||
```
|
||
iw dev
|
||
```
|
||
|
||
Note: If the interface names are not `eth0`, `wlan0` and `wlan1`,
|
||
then the interface names used in your system will have to replace
|
||
`eth0`, `wlan0` and `wlan1` for the remainder of this document.
|
||
|
||
-----
|
||
|
||
Install needed package. Website - [hostapd](https://w1.fi/hostapd/)
|
||
|
||
```
|
||
sudo apt install hostapd
|
||
```
|
||
|
||
-----
|
||
|
||
Enable the wireless access point service and set it to start when your
|
||
Raspberry Pi boots.
|
||
|
||
```
|
||
sudo systemctl unmask hostapd
|
||
```
|
||
```
|
||
sudo systemctl enable hostapd
|
||
```
|
||
|
||
-----
|
||
|
||
Note: The below steps include creating two hostapd configurations files
|
||
but only one is needed if using a single band setup.
|
||
|
||
Create hostapd configuration file for 5 GHz band.
|
||
|
||
```
|
||
sudo nano /etc/hostapd/hostapd-5g.conf
|
||
```
|
||
|
||
File contents
|
||
|
||
```
|
||
# /etc/hostapd/hostapd-5g.conf
|
||
# Documentation: https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf
|
||
# 2022-02-11
|
||
|
||
# SSID
|
||
ssid=myPI-5g
|
||
# PASSPHRASE
|
||
wpa_passphrase=myPW1234
|
||
# Band: a = 5g (a/n/ac), g = 2g (b/g/n)
|
||
hw_mode=a
|
||
# Channel
|
||
channel=36
|
||
# Channel width
|
||
vht_oper_chwidth=1
|
||
# VHT center channel (chan + 6)
|
||
vht_oper_centr_freq_seg0_idx=42
|
||
# Country code
|
||
country_code=US
|
||
# Bridge interface
|
||
bridge=br0
|
||
# WiFi interface
|
||
interface=wlan0
|
||
|
||
# nl80211 is used with all Linux mac80211 (in-kernel) and modern Realtek drivers
|
||
driver=nl80211
|
||
#ctrl_interface=/var/run/hostapd
|
||
#ctrl_interface_group=0
|
||
|
||
ieee80211d=1
|
||
# Enables support for 5GHz DFS channels
|
||
#ieee80211h=1
|
||
|
||
beacon_int=100
|
||
dtim_period=2
|
||
max_num_sta=32
|
||
macaddr_acl=0
|
||
rts_threshold=2347
|
||
fragm_threshold=2346
|
||
#send_probe_response=1
|
||
|
||
# security
|
||
# auth_algs=3 is required for WPA-3 SAE and WPA-3 SAE Transitional
|
||
auth_algs=1
|
||
ignore_broadcast_ssid=0
|
||
# wpa=2 is required for WPA2 and WPA3 (read the docs)
|
||
wpa=2
|
||
rsn_pairwise=CCMP
|
||
# only one wpa_key_mgmt= line should be active.
|
||
# wpa_key_mgmt=WPA-PSK is required for WPA2-AES
|
||
wpa_key_mgmt=WPA-PSK
|
||
# wpa_key_mgmt=SAE WPA-PSK is required for WPA3-AES Transitional
|
||
#wpa_key_mgmt=SAE WPA-PSK
|
||
# wpa_key_mgmt=SAE is required for WPA3-SAE
|
||
#wpa_key_mgmt=SAE
|
||
#wpa_group_rekey=1800
|
||
# ieee80211w=1 is required for WPA-3 SAE Transitional
|
||
# ieee80211w=2 is required for WPA-3 SAE
|
||
#ieee80211w=1
|
||
# if parameter is not set, 19 is the default value.
|
||
#sae_groups=19 20 21 25 26
|
||
# sae_require_mfp=1 is required for WPA-3 SAE Transitional
|
||
#sae_require_mfp=1
|
||
# if parameter is not 9 set, 5 is the default value.
|
||
#sae_anti_clogging_threshold=10
|
||
|
||
# Note: Capabilities can vary even between adapters with the same chipset.
|
||
#
|
||
# Note: Only one ht_capab= line and one vht_capab= should be active. The
|
||
# content of these lines is determined by the capabilities of your adapter.
|
||
#
|
||
# IEEE 802.11n
|
||
ieee80211n=1
|
||
wmm_enabled=1
|
||
#
|
||
# generic setting
|
||
ht_capab=[HT40+][HT40-][SHORT-GI-20][SHORT-GI-40]
|
||
#
|
||
# mt7612u - mt7610u
|
||
#ht_capab=[HT40+][HT40-][GF][SHORT-GI-20][SHORT-GI-40]
|
||
#
|
||
# rtl8812au - rtl8811au - rtl8811cu
|
||
#ht_capab=[HT40+][HT40-][SHORT-GI-20][SHORT-GI-40][MAX-AMSDU-7935]
|
||
# rtl8812bu
|
||
#ht_capab=[LDPC][HT40+][HT40-][SHORT-GI-20][SHORT-GI-40][MAX-AMSDU-7935]
|
||
# rtl8814au
|
||
#ht_capab=[LDPC][HT40+][HT40-][SHORT-GI-20][SHORT-GI-40][MAX-AMSDU-7935][DSSS_CCK-40]
|
||
#
|
||
|
||
# IEEE 802.11ac
|
||
ieee80211ac=1
|
||
#
|
||
# generic setting
|
||
vht_capab=[SHORT-GI-80]
|
||
#
|
||
# mt7610u
|
||
#vht_capab=[SHORT-GI-80][MAX-A-MPDU-LEN-EXP3][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN]
|
||
# mt7612u
|
||
#vht_capab=[RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][MAX-A-MPDU-LEN-EXP3][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN]
|
||
#
|
||
# rtl8812au - rtl8812bu
|
||
#vht_capab=[MAX-MPDU-11454][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][HTC-VHT][MAX-A-MPDU-LEN-EXP7]
|
||
# rtl8814au
|
||
#vht_capab=[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][HTC-VHT][MAX-A-MPDU-LEN-EXP7]
|
||
# rtl8811au
|
||
#vht_capab=[MAX-MPDU-11454][SHORT-GI-80][RX-STBC-1][HTC-VHT][MAX-A-MPDU-LEN-EXP7]
|
||
# rtl8811cu
|
||
#vht_capab=[MAX-MPDU-11454][SHORT-GI-80][HTC-VHT][MAX-A-MPDU-LEN-EXP7]
|
||
#
|
||
# Note: [TX-STBC-2BY1] may cause problems with some Realtek drivers
|
||
|
||
# end of hostapd-5g.conf
|
||
```
|
||
|
||
-----
|
||
|
||
Create the 2g hostapd configuration file.
|
||
```
|
||
sudo nano /etc/hostapd/hostapd-2g.conf
|
||
```
|
||
File contents
|
||
```
|
||
# /etc/hostapd/hostapd-2g.conf
|
||
# Documentation: https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf
|
||
# 2021-11-15
|
||
|
||
# SSID
|
||
ssid=myPI-2g
|
||
# PASSPHRASE
|
||
wpa_passphrase=myPW1234
|
||
# Band: a = 5g (a/n/ac), g = 2g (b/g/n)
|
||
hw_mode=g
|
||
# Channel
|
||
channel=6
|
||
# Country
|
||
country_code=US
|
||
# Bridge interface
|
||
bridge=br0
|
||
# WiFi interface
|
||
interface=wlan1
|
||
|
||
# nl80211 is used with all Linux mac80211 (in-kernel) and modern Realtek drivers
|
||
driver=nl80211
|
||
#ctrl_interface=/var/run/hostapd
|
||
#ctrl_interface_group=0
|
||
|
||
beacon_int=100
|
||
dtim_period=2
|
||
max_num_sta=32
|
||
rts_threshold=2347
|
||
fragm_threshold=2346
|
||
#send_probe_response=1
|
||
|
||
# security
|
||
# auth_algs=3 is required for WPA-3 SAE and WPA-3 SAE Transitional
|
||
auth_algs=1
|
||
macaddr_acl=0
|
||
ignore_broadcast_ssid=0
|
||
wpa=2
|
||
wpa_pairwise=CCMP
|
||
# WPA-2 AES
|
||
wpa_key_mgmt=WPA-PSK
|
||
# WPA-3 SAE
|
||
#wpa_key_mgmt=SAE
|
||
#wpa_group_rekey=1800
|
||
rsn_pairwise=CCMP
|
||
# ieee80211w=2 is required for WPA-3 SAE
|
||
#ieee80211w=2
|
||
# If parameter is not set, 19 is the default value.
|
||
#sae_groups=19 20 21 25 26
|
||
#sae_require_mfp=1
|
||
# If parameter is not 9 set, 5 is the default value.
|
||
#sae_anti_clogging_threshold=10
|
||
|
||
# IEEE 802.11n
|
||
ieee80211n=1
|
||
wmm_enabled=1
|
||
#
|
||
# Note: Only one ht_capab= line should be active. The content of these lines is
|
||
# determined by the capabilities of your adapter.
|
||
#
|
||
# generic 20 NHz setting
|
||
ht_capab=[SHORT-GI-20]
|
||
#
|
||
# RasPi4B internal wifi
|
||
#ht_capab=[HT40+][HT40-][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]
|
||
#
|
||
# ar9271
|
||
#ht_capab=[HT40+][HT40-][SHORT-GI-20][SHORT-GI-40][RX-STBC1][DSSS_CCK-40]
|
||
#
|
||
# mt7612u - mt7610u
|
||
#ht_capab=[HT40+][HT40-][GF][SHORT-GI-20][SHORT-GI-40]
|
||
#
|
||
# rtl8812au - rtl8811au - rtl8812bu - rtl8811cu
|
||
#ht_capab=[HT40+][HT40-][SHORT-GI-20][SHORT-GI-40][MAX-AMSDU-7935]
|
||
# rtl8814au
|
||
#ht_capab=[LDPC][HT40+][HT40-][SHORT-GI-20][SHORT-GI-40][MAX-AMSDU-7935][DSSS_CCK-40]
|
||
|
||
# End of hostapd-2g.conf
|
||
```
|
||
|
||
-----
|
||
|
||
Establish hostapd conf file and log file locations.
|
||
|
||
Note: Make sure to change <your_home> to your home directory.
|
||
|
||
```
|
||
sudo nano /etc/default/hostapd
|
||
```
|
||
|
||
Select one of the following options
|
||
|
||
Dual band option: Add to bottom of file
|
||
|
||
```
|
||
DAEMON_CONF="/etc/hostapd/hostapd-5g.conf /etc/hostapd/hostapd-2g.conf"
|
||
DAEMON_OPTS="-d -K -f /home/<your_home>/hostapd.log"
|
||
```
|
||
|
||
Single band option for 5g: Add to bottom of file
|
||
```
|
||
DAEMON_CONF="/etc/hostapd/hostapd-5g.conf"
|
||
DAEMON_OPTS="-d -K -f /home/<your_home>/hostapd.log"
|
||
```
|
||
|
||
Single band option for 2g: Add to bottom of file
|
||
```
|
||
DAEMON_CONF="/etc/hostapd/hostapd-2g.conf"
|
||
DAEMON_OPTS="-d -K -f /home/<your_home>/hostapd.log"
|
||
```
|
||
|
||
-----
|
||
|
||
Modify hostapd.service file.
|
||
|
||
Code:
|
||
|
||
```
|
||
sudo cp /usr/lib/systemd/system/hostapd.service /etc/systemd/system/hostapd.service
|
||
```
|
||
```
|
||
sudo nano /etc/systemd/system/hostapd.service
|
||
```
|
||
|
||
Select one of the following options
|
||
|
||
Dual band option: Change the 'Environment=' line and 'ExecStart=' line to the following
|
||
|
||
```
|
||
Environment=DAEMON_CONF="/etc/hostapd/hostapd-5g.conf /etc/hostapd/hostapd-2g.conf"
|
||
ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid -B $DAEMON_OPTS $DAEMON_CONF
|
||
```
|
||
|
||
Single band option for 5g: Change the 'Environment=' line and 'ExecStart=' line to the following
|
||
|
||
```
|
||
Environment=DAEMON_CONF="/etc/hostapd/hostapd-5g.conf"
|
||
ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid -B $DAEMON_OPTS $DAEMON_CONF
|
||
```
|
||
Single band option for 2g: Change the 'Environment=' line and 'ExecStart=' line to the following
|
||
|
||
```
|
||
Environment=DAEMON_CONF="/etc/hostapd/hostapd-2g.conf"
|
||
ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid -B $DAEMON_OPTS $DAEMON_CONF
|
||
```
|
||
-----
|
||
|
||
Block the ethernet and wlan interfaces from being processed, and let dhcpcd
|
||
configure only br0 via DHCP.
|
||
|
||
```
|
||
sudo nano /etc/dhcpcd.conf
|
||
```
|
||
|
||
Add the following line above the first `interface xxx` line, if any.
|
||
|
||
```
|
||
denyinterfaces e* wl*
|
||
```
|
||
|
||
Go to the end of the file and add the following line
|
||
|
||
```
|
||
interface br0
|
||
```
|
||
|
||
-----
|
||
|
||
Enable systemd-networkd service. Website - [systemd-network](https://www.freedesktop.org/software/systemd/man/systemd.network.html).
|
||
|
||
```
|
||
sudo systemctl enable systemd-networkd
|
||
```
|
||
|
||
-----
|
||
|
||
Create bridge interface br0.
|
||
|
||
```
|
||
sudo nano /etc/systemd/network/10-create-bridge-br0.netdev
|
||
```
|
||
File contents
|
||
|
||
```
|
||
[NetDev]
|
||
Name=br0
|
||
Kind=bridge
|
||
```
|
||
|
||
-----
|
||
|
||
Bind ethernet interface.
|
||
|
||
```
|
||
sudo nano /etc/systemd/network/20-bind-ethernet-with-bridge-br0.network
|
||
```
|
||
|
||
File contents
|
||
|
||
```
|
||
[Match]
|
||
Name=e*
|
||
|
||
[Network]
|
||
Bridge=br0
|
||
```
|
||
|
||
-----
|
||
|
||
Configure bridge interface.
|
||
|
||
```
|
||
sudo nano /etc/systemd/network/30-config-bridge-br0.network
|
||
```
|
||
|
||
Note: The contents of the Network block below should reflect the needs of your network.
|
||
|
||
File contents.
|
||
|
||
```
|
||
[Match]
|
||
Name=br0
|
||
|
||
[Network]
|
||
DHCP=yes
|
||
#Address=192.168.1.100/24
|
||
#Gateway=192.168.1.1
|
||
#DNS=8.8.8.8
|
||
|
||
```
|
||
|
||
-----
|
||
|
||
Ensure WiFi radio not blocked.
|
||
|
||
```
|
||
sudo rfkill unblock wlan
|
||
```
|
||
|
||
-----
|
||
|
||
Reboot system.
|
||
|
||
```
|
||
sudo reboot
|
||
```
|
||
|
||
-----
|
||
|
||
End of installation.
|
||
|
||
-----
|
||
|
||
-----
|
||
|
||
Notes: The following sections contain good to know information.
|
||
|
||
-----
|
||
|
||
Restart systemd-networkd service.
|
||
|
||
```
|
||
sudo systemctl restart systemd-networkd
|
||
```
|
||
|
||
-----
|
||
|
||
Check status of the services.
|
||
|
||
```
|
||
systemctl status hostapd
|
||
```
|
||
```
|
||
systemctl status systemd-networkd
|
||
```
|
||
|
||
-----
|
||
|
||
Install and autostart iperf3.
|
||
|
||
```
|
||
sudo apt install iperf3
|
||
```
|
||
```
|
||
sudo nano /etc/systemd/system/iperf3.service
|
||
```
|
||
|
||
File contents
|
||
|
||
```
|
||
[Unit]
|
||
Description=iPerf3 Service
|
||
After=syslog.target network.target auditd.service
|
||
|
||
[Service]
|
||
Type=simple
|
||
ExecStart=/usr/bin/iperf3 -s
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
```
|
||
```
|
||
sudo systemctl enable iperf3
|
||
```
|
||
```
|
||
sudo reboot
|
||
```
|
||
|
||
Check iperf3 status.
|
||
```
|
||
sudo systemctl status iperf3
|
||
```
|
||
|
||
-----
|
||
|
||
Disable NetworkManager.
|
||
|
||
Note: For systems not running the Gnome desktop, purging Network Manager
|
||
is the easiest solution.
|
||
|
||
```
|
||
sudo apt purge network-manager
|
||
```
|
||
|
||
Note: For systems running the Gnome desktop, use the following.
|
||
|
||
```
|
||
sudo systemctl stop NetworkManager.service
|
||
```
|
||
```
|
||
sudo systemctl disable NetworkManager.service
|
||
```
|
||
```
|
||
sudo systemctl stop NetworkManager-wait-online.service
|
||
```
|
||
```
|
||
sudo systemctl disable NetworkManager-wait-online.service
|
||
```
|
||
```
|
||
sudo systemctl stop NetworkManager-dispatcher.service
|
||
```
|
||
```
|
||
sudo systemctl disable NetworkManager-dispatcher.service
|
||
```
|
||
```
|
||
sudo systemctl stop network-manager.service
|
||
```
|
||
```
|
||
sudo systemctl disable network-manager.service
|
||
```
|
||
```
|
||
sudo reboot
|
||
```
|
||
|
||
-----
|
||
|
||
Disable Netplan.
|
||
|
||
Note: Netplan is the default network manager on Ubuntu server.
|
||
|
||
Disable and mask networkd-dispatcher.
|
||
|
||
Note: we are activating /etc/network/interfaces
|
||
|
||
```
|
||
sudo apt-get install ifupdown
|
||
```
|
||
```
|
||
sudo systemctl stop networkd-dispatcher
|
||
```
|
||
```
|
||
sudo systemctl disable networkd-dispatcher
|
||
```
|
||
```
|
||
sudo systemctl mask networkd-dispatcher
|
||
```
|
||
|
||
Purge netplan.
|
||
|
||
```
|
||
sudo apt-get purge nplan netplan.io
|
||
```
|
||
```
|
||
sudo reboot
|
||
```
|
||
|
||
-----
|