0

I'm trying to setup two wireless AP on a Raspberry Pi. Lets call the two APs AP0 and AP1. I use hostapd to setup the APs and dnsmasq as the dhcp server.

AP0 is setup on the built-in WiFi on the RasPi at wlan0

AP1 is setup on an external USB adapter that supports AP mode at wlan1

This is my /etc/network/interfaces file:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
        address 192.168.43.1
        netmask 255.255.255.0
        hostapd /etc/hostapd/hostapd.conf

auto wlan1 allow-hotplug wlan1 iface wlan1 inet static address 192.168.4.1 netmask 255.255.255.0 hostapd /etc/hostapd/hostapd1.conf

and this is my /etc/dnsmasq.conf file:

dhcp-range=wlan0,192.168.43.50,192.168.43.150,24h

dhcp-range=wlan1,192.168.4.50,192.168.4.150,24h

AP0 and AP1 are on channels 6 and 11 respectively.

I am able to connect multiple clients to AP1 and the clients can speak to each other. But the issue is with AP0 where the client connects for a second and then disconnects and this keeps on repeating. How to fix this issue?

Ingo
  • 42,107
  • 20
  • 85
  • 197
mottom
  • 3
  • 1
  • I never used deprecated `/etc/network/interfaces' since years. Are you open to use a solution with systemd-networkd? – Ingo Nov 05 '20 at 18:12
  • Sure. I didn't know that /etc/network/interfaces is deprecated :) – mottom Nov 05 '20 at 18:47
  • It depends on the operating system you are using. I supposed that you use a Raspberry Pi OS based on buster. That is using dhcpcd with a hint in /etc/network/interfaces. What operating system do you use? – Ingo Nov 05 '20 at 19:00
  • Yes, I'm using the Raspberry Pi OS based on buster. Does that mean I don't require a seperate dhcp server like dnsmasq? – mottom Nov 05 '20 at 19:06
  • Yes, with systemd-networkd you do not need additional helpers like dnsmasq and hostapd. Just a moment please I'm just testing the double access point setup and will give you then an answer. – Ingo Nov 05 '20 at 19:24

1 Answers1

2

As noted in a comment you are also agreed with using systemd-networkd. Here in short a configuration I have just tested, based on Setting up a Raspberry Pi as an access point - the easy way.

Switch over to systemd-networkd

Just follow to Use systemd-networkd for general networking. You can use section "♦ Quick Step". Then come back here.

Configure wpa_supplicant as access points

To configure wpa_supplicant as access point create these two files with your settings for country=, ssid=, psk= and maybe frequency=. You can just copy and paste this in one block to your command line beginning with cat and including both EOF (delimiter EOF will not get part of the file):

rpi ~$ sudo -Es   # if not already done
rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE

network={ ssid="AP0" mode=2 # access point frequency=2437 # channel 6 key_mgmt=WPA-PSK proto=RSN WPA psk="password" } EOF

rpi ~# cat > /etc/wpa_supplicant/wpa_supplicant-wlan1.conf <<EOF ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev update_config=1 country=DE

network={ ssid="AP1" mode=2 # access point frequency=2462 # channel 11 key_mgmt=WPA-PSK proto=RSN WPA psk="password" } EOF

rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf rpi ~# chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan1.conf rpi ~# systemctl disable wpa_supplicant.service rpi ~# systemctl enable wpa_supplicant@wlan0.service rpi ~# systemctl enable wpa_supplicant@wlan1.service rpi ~# rfkill unblock wlan

Configure network interfaces

Create the following two files to configure the interfaces:

rpi ~# cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
Address=192.168.43.1/24
MulticastDNS=yes
DHCPServer=yes
EOF

rpi ~# cat > /etc/systemd/network/12-wlan1.network <<EOF [Match] Name=wlan1 [Network] Address=192.168.4.1/24 MulticastDNS=yes DHCPServer=yes EOF

Reboot and it should do.

Ingo
  • 42,107
  • 20
  • 85
  • 197
  • Thank you for the solution. I'm trying it out now. I noticed the network configuration files start with a different number. Any reason for that? – mottom Nov 06 '20 at 04:32
  • @mottom The network configuration files are executed in alphabetical order so you can control it. It is good practice to prefix them with a number as already done with old style SysV init scripts. In this case it doesn't matter which access point is first started. – Ingo Nov 06 '20 at 11:34
  • This is what I did. I disabled dnsmasq.service and hostapd.service, replaced the interfaces and dnsmasq.conf files with their originals (as they would be in a fresh install) and followed the steps as per the solution. I tried to connect clients to AP0 and AP1 but the client isn't assigned an IP address so it doesn't connect to either AP. Anything I'm missing or doing wrong? – mottom Nov 06 '20 at 14:54
  • @mottom Start with a fresh flashed raspios_lite_armhf-2020-08-24 to a spare SD Card on a Raspberry Pi 4B. Don't forget Quick steps on Use systemd-networkd for general networking. – Ingo Nov 06 '20 at 17:39
  • Thanks @Ingo, the solution works as expected. However I don't seem to have access to WAN anymore. I use a wireless USB modem/stick connected to the Pi. – mottom Nov 10 '20 at 14:34
  • Ah, there is a third interface? You didn't told that. If the driver of the modem is working and you get an interface name then it shouldn't be a big issue to create an additional .network file for it. The best would be if you create a new question about it. – Ingo Nov 10 '20 at 17:58