You write:
I'm a bit confused on how this setup provides both an access point to another access point via wireless, whilst still providing a client wireless access.
It isn't right this way. An access point does not connect to another access point. It is only the client wireless connection that connect to another remote access point. The access point of the RasPi does not connect to anything. It only provides the possibility that other clients can connect to the RasPi. So you have two distinct functions:
- access point - provide connections to the RasPi
- client connection of only the RasPi to another remote access point/internet router
You can make only an access point or only a client connection. They are independent.
This is possible if the wifi chip supports it. If you look at the link you have used, at the section Details - General you will find:
One problem is that we want to use the same device for a wifi client and for an access point. This must be supported by the wifi hardware. We can check this with
rpi ~$ sudo iw list | grep -A4 "valid interface combinations:"
valid interface combinations:
* #{ managed } <= 1, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1,
total <= 3, #channels <= 2
* #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
total <= 4, #channels <= 1
The important part is #{ managed } <= 1, #{ AP } <= 1
, but you can also see that this is only possible on one channel.
That it can only use one channel for both functions is respected to the fact that the RasPi has only one radio. The channel the access point uses is always the same than the channel the RasPi is connected to the internet router no matter what channel in the setup is defined for the access point.
And there are further restrictions you can read there.
iw dev wlan0 interface add ap0 type __ap
– jake Feb 15 '19 at 18:37