siklu/siklu-user-space
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
# Path
Make sure you have /lib/firmware/ath12k/QCN9274/hw2.0/ on the target if not
create that path `sudo mkdir -p /lib/firmware/ath12k/QCN9274/hw2.0/`
# BDF
The BDF file contains a descriptor for the firmware which assigns particular
frequencies to each MAC.
For the case of 2x2 @ 6GHz we require a special BDF for this purpose.
A symlink should be created to this BDF file on both the AP and STA side.
$ tar xfj 8devices-supplied-bdf.tar.bz2
$ sudo ln -s /home/deckard/8devices-supplied-bdf/board_6_6_dual.bin /lib/firmware/ath12k/QCN9274/hw2.0/board.bin
# Firmware
The firmware used must support split-mode. Most? of the released firmwares do.
The reference MD5 sum for the used firmware is:
md5sum /lib/firmware/ath12k/QCN9274/hw2.0/firmware-2.bin
59d3e5599f7fdc4c30bfd678a3b68e03 /lib/firmware/ath12k/QCN9274/hw2.0/firmware-2.bin
# Kernel parameters
Add the following to your kernel command line
ath12k.split_phy_mode=1 ath12k.force_dualmac=1
- split_phy_mode
Tells the driver to put PHYs into split instead of MLO mode
- force_dualmac
Only required on hardware without appropriate OTP fuses to load the
split mode firmware
# PHY naming
In order to make things easy and to ensure we always present the SSID on the PHY
we want to - use a udev rule to name your PHYs.
sudo `cp 70-ath12k-wifi.rules /etc/udev/rules.d/70-ath12k-wifi.rules`
sudo `udevadm control --reload-rules`
sudo reboot
# Verification
Here we can see how the BDF file splits the 6GHz spectrum in half between the
two MACs.
deckard@armbian-security:~$ sudo iw phy phy0 info | grep -A50 "Frequencies:" | head -60
[sudo] password for deckard:
Frequencies:
* 5935.0 MHz [2] (24.0 dBm)
* 5955.0 MHz [1] (24.0 dBm)
* 5975.0 MHz [5] (24.0 dBm)
* 5995.0 MHz [9] (24.0 dBm)
* 6015.0 MHz [13] (24.0 dBm)
* 6035.0 MHz [17] (24.0 dBm)
* 6055.0 MHz [21] (24.0 dBm)
* 6075.0 MHz [25] (24.0 dBm)
* 6095.0 MHz [29] (24.0 dBm)
* 6115.0 MHz [33] (24.0 dBm)
* 6135.0 MHz [37] (24.0 dBm)
* 6155.0 MHz [41] (24.0 dBm)
* 6175.0 MHz [45] (24.0 dBm)
* 6195.0 MHz [49] (24.0 dBm)
* 6215.0 MHz [53] (24.0 dBm)
* 6235.0 MHz [57] (24.0 dBm)
* 6255.0 MHz [61] (24.0 dBm)
* 6275.0 MHz [65] (24.0 dBm)
* 6295.0 MHz [69] (24.0 dBm)
* 6315.0 MHz [73] (24.0 dBm)
* 6335.0 MHz [77] (24.0 dBm)
* 6355.0 MHz [81] (24.0 dBm)
* 6375.0 MHz [85] (24.0 dBm)
* 6395.0 MHz [89] (24.0 dBm)
* 6415.0 MHz [93] (24.0 dBm)
* 6435.0 MHz [97] (24.0 dBm)
* 6455.0 MHz [101] (24.0 dBm)
* 6475.0 MHz [105] (24.0 dBm)
* 6495.0 MHz [109] (24.0 dBm)
* 6515.0 MHz [113] (24.0 dBm)
* 6535.0 MHz [117] (disabled)
* 6555.0 MHz [121] (disabled)
* 6575.0 MHz [125] (disabled)
* 6595.0 MHz [129] (disabled)
* 6615.0 MHz [133] (disabled)
* 6635.0 MHz [137] (disabled)
* 6655.0 MHz [141] (disabled)
* 6675.0 MHz [145] (disabled)
* 6695.0 MHz [149] (disabled)
* 6715.0 MHz [153] (disabled)
* 6735.0 MHz [157] (disabled)
* 6755.0 MHz [161] (disabled)
* 6775.0 MHz [165] (disabled)
* 6795.0 MHz [169] (disabled)
* 6815.0 MHz [173] (disabled)
* 6835.0 MHz [177] (disabled)
* 6855.0 MHz [181] (disabled)
* 6875.0 MHz [185] (disabled)
* 6895.0 MHz [189] (disabled)
* 6915.0 MHz [193] (disabled)
deckard@armbian-security:~$ sudo iw phy phy1 info | grep -A50 "Frequencies:" | head -60
Frequencies:
* 5935.0 MHz [2] (disabled)
* 5955.0 MHz [1] (disabled)
* 5975.0 MHz [5] (disabled)
* 5995.0 MHz [9] (disabled)
* 6015.0 MHz [13] (disabled)
* 6035.0 MHz [17] (disabled)
* 6055.0 MHz [21] (disabled)
* 6075.0 MHz [25] (disabled)
* 6095.0 MHz [29] (disabled)
* 6115.0 MHz [33] (disabled)
* 6135.0 MHz [37] (disabled)
* 6155.0 MHz [41] (disabled)
* 6175.0 MHz [45] (disabled)
* 6195.0 MHz [49] (disabled)
* 6215.0 MHz [53] (disabled)
* 6235.0 MHz [57] (disabled)
* 6255.0 MHz [61] (disabled)
* 6275.0 MHz [65] (disabled)
* 6295.0 MHz [69] (disabled)
* 6315.0 MHz [73] (disabled)
* 6335.0 MHz [77] (disabled)
* 6355.0 MHz [81] (disabled)
* 6375.0 MHz [85] (disabled)
* 6395.0 MHz [89] (disabled)
* 6415.0 MHz [93] (disabled)
* 6435.0 MHz [97] (disabled)
* 6455.0 MHz [101] (disabled)
* 6475.0 MHz [105] (disabled)
* 6495.0 MHz [109] (disabled)
* 6515.0 MHz [113] (disabled)
* 6535.0 MHz [117] (24.0 dBm)
* 6555.0 MHz [121] (24.0 dBm)
* 6575.0 MHz [125] (24.0 dBm)
* 6595.0 MHz [129] (24.0 dBm)
* 6615.0 MHz [133] (24.0 dBm)
* 6635.0 MHz [137] (24.0 dBm)
* 6655.0 MHz [141] (24.0 dBm)
* 6675.0 MHz [145] (24.0 dBm)
* 6695.0 MHz [149] (24.0 dBm)
* 6715.0 MHz [153] (24.0 dBm)
* 6735.0 MHz [157] (24.0 dBm)
* 6755.0 MHz [161] (24.0 dBm)
* 6775.0 MHz [165] (24.0 dBm)
* 6795.0 MHz [169] (24.0 dBm)
* 6815.0 MHz [173] (24.0 dBm)
* 6835.0 MHz [177] (24.0 dBm)
* 6855.0 MHz [181] (24.0 dBm)
* 6875.0 MHz [185] (24.0 dBm)
* 6895.0 MHz [189] (24.0 dBm)
* 6915.0 MHz [193] (24.0 dBm)
# AP side
hostapd provides br0 and br1 and dnsmasq provides individual ip addresses on
each bridged network.
deckard@armbian-security:~$ sudo ./run-6ghz.sh
[sudo] password for deckard:
Stopping 'systemd-resolved.service', but its triggering units are still active:
systemd-resolved-monitor.socket, systemd-resolved-varlink.socket
wlan29g: interface state UNINITIALIZED->COUNTRY_UPDATE
wlan29g: interface state COUNTRY_UPDATE->ENABLED
wlan29g: AP-ENABLED
wlan32g: interface state UNINITIALIZED->COUNTRY_UPDATE
wlan32g: interface state COUNTRY_UPDATE->ENABLED
wlan32g: AP-ENABLED
deckard@armbian-security:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:48:54:20:8c:9d brd ff:ff:ff:ff:ff:ff
altname enx004854208c9d
inet 192.168.0.38/24 brd 192.168.0.255 scope global dynamic noprefixroute enP4p65s0
valid_lft 604742sec preferred_lft 604742sec
inet6 fdcc:4ca:6ffa:b52b:baf1:b24a:c75a:95da/64 scope global dynamic noprefixroute
valid_lft 1788sec preferred_lft 1788sec
inet6 fe80::d497:8fea:ff99:91dc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlan29g: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
link/ether c4:93:00:5d:b7:16 brd ff:ff:ff:ff:ff:ff
altname wlP1p17s0
altname wlxc493005db716
inet6 fe80::c693:ff:fe5d:b716/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
4: wlan32g: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br1 state UP group default qlen 1000
link/ether c4:93:00:5d:b7:17 brd ff:ff:ff:ff:ff:ff
altname wlxc493005db717
inet6 fe80::c693:ff:fe5d:b717/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 7e:50:5c:93:64:6a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::7c50:5cff:fe93:646a/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
6: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 0a:38:41:67:97:8a brd ff:ff:ff:ff:ff:ff
inet 192.168.192.1/24 scope global br1
valid_lft forever preferred_lft forever
inet6 fe80::838:41ff:fe67:978a/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
# STA side
deckard@armbian-security:~$ sudo ./run-client.sh
[sudo] password for deckard:
Stopping 'systemd-resolved.service', but its triggering units are still active:
systemd-resolved-varlink.socket, systemd-resolved-monitor.socket
wpa_supplicant: no process found
udhcpc: no process found
Successfully initialized wpa_supplicant
[ 191.961068] ath12k_pci 0001:11:00.0: no transmit power envelope match client power type 1
[ 192.427751] wlan29g: authenticate with c4:93:00:5d:b7:16 (local address=c4:93:00:5d:b7:14)
[ 192.428527] wlan29g: send auth to c4:93:00:5d:b7:16 (try 1/3)
[ 192.478475] wlan29g: authenticate with c4:93:00:5d:b7:16 (local address=c4:93:00:5d:b7:14)
[ 192.479218] wlan29g: send auth to c4:93:00:5d:b7:16 (try 1/3)
[ 192.482586] wlan29g: authenticated
[ 192.486241] wlan29g: associate with c4:93:00:5d:b7:16 (try 1/3)
[ 192.493435] wlan29g: RX AssocResp from c4:93:00:5d:b7:16 (capab=0x11 status=0 aid=1)
[ 192.506631] wlan29g: associated
Successfully initialized wpa_supplicant
udhcpc: started, v1.37.0
Dropped protocol specifier '.udhcpc' from 'wlan29g.udhcpc'. Using 'wlan29g' (ifindex=3).
udhcpc: broadcasting discover
udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.1.53, server 192.168.1.1
udhcpc: lease of 192.168.1.53 obtained from 192.168.1.1, lease time 86400
Dropped protocol specifier '.udhcpc' from 'wlan29g.udhcpc'. Using 'wlan29g' (ifindex=3).
No DNS servers specified, refusing operation.
[ 197.605122] ath12k_pci 0001:11:00.0: no transmit power envelope match client power type 1
[ 198.060789] wlan32g: authenticate with c4:93:00:5d:b7:17 (local address=c4:93:00:5d:b7:15)
[ 198.061595] wlan32g: send auth to c4:93:00:5d:b7:17 (try 1/3)
[ 198.087407] wlan32g: authenticate with c4:93:00:5d:b7:17 (local address=c4:93:00:5d:b7:15)
[ 198.088193] wlan32g: send auth to c4:93:00:5d:b7:17 (try 1/3)
[ 198.092101] wlan32g: authenticated
[ 198.094164] wlan32g: associate with c4:93:00:5d:b7:17 (try 1/3)
[ 198.099485] wlan32g: RX AssocResp from c4:93:00:5d:b7:17 (capab=0x11 status=0 aid=1)
[ 198.113501] wlan32g: associated
[ 198.592046] ath12k_pci 0001:11:00.0: No VIF found for vdev 0
[ 198.592581] ath12k_pci 0001:11:00.0: not found vif for vdev id 0
[ 198.593125] ath12k_pci 0001:11:00.0: failed to pull fw stats: -71
[ 199.610129] ath12k_pci 0001:11:00.0: time out while waiting for get fw stats
deckard@armbian-security:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enP4p65s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 00:48:54:20:8c:54 brd ff:ff:ff:ff:ff:ff
altname enx004854208c54
3: wlan29g: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether c4:93:00:5d:b7:14 brd ff:ff:ff:ff:ff:ff
altname wlxc493005db714
inet 192.168.1.53/24 brd 192.168.1.255 scope global wlan29g
valid_lft forever preferred_lft forever
inet6 fe80::c693:ff:fe5d:b714/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
4: wlan32g: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether c4:93:00:5d:b7:15 brd ff:ff:ff:ff:ff:ff
altname wlP1p17s0
altname wlxc493005db715
inet 192.168.192.54/24 brd 192.168.192.255 scope global wlan32g
valid_lft forever preferred_lft forever
inet6 fe80::c693:ff:fe5d:b715/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
deckard@armbian-security:~$
# iperf 4addr mode AP
deckard@armbian-security:~$ sudo iw wlan29g info
Interface wlan29g
ifindex 3
wdev 0x1
addr c4:93:00:5d:b7:16
ssid rockpi5b-29ghz
type AP
wiphy 0
channel 33 (6115 MHz), width: 160 MHz, center1: 6185 MHz
txpower 19.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0
deckard@armbian-security:~$ sudo iw wlan32g info
Interface wlan32g
ifindex 4
wdev 0x100000001
addr c4:93:00:5d:b7:17
ssid rockpi5b-32ghz
type AP
wiphy 1
channel 129 (6595 MHz), width: 160 MHz, center1: 6665 MHz
txpower 19.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0
deckard@armbian-security:~$ iperf -s
# iperf 4addr mode STA
deckard@armbian-security:~$ sudo iw wlan29g info
Interface wlan29g
ifindex 3
wdev 0x1
addr c4:93:00:5d:b7:14
ssid rockpi5b-29ghz
type managed
wiphy 0
channel 33 (6115 MHz), width: 160 MHz, center1: 6185 MHz
txpower 19.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0
4addr: on
deckard@armbian-security:~$ sudo iw wlan32g info
Interface wlan32g
ifindex 4
wdev 0x100000001
addr c4:93:00:5d:b7:15
ssid rockpi5b-32ghz
type managed
wiphy 1
channel 129 (6595 MHz), width: 160 MHz, center1: 6665 MHz
txpower 19.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets
0 0 0 0 0 0 0 0 0
4addr: on
deckard@armbian-security:~$ !465
iperf -c 192.168.1.1
------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.1.53 port 44812 connected with 192.168.1.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 1] 0.0000-10.0579 sec 625 MBytes 521 Mbits/sec
deckard@armbian-security:~$ !466
iperf -c 192.168.192.1
------------------------------------------------------------
Client connecting to 192.168.192.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.192.54 port 57854 connected with 192.168.192.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 1] 0.0000-10.0178 sec 1.02 GBytes 871 Mbits/sec