Initial OpenWRT 23.05.0 merge (#963)

* Initial OpenWRT 23.05.0 merge

* Fix get_rfchannels for new iwinfo format

* Fix initial wlan name

* Move patches to 5.15 from 5.10

* Fix flash write problem on Ubiquiti devices

* Use new ssl patch

* Reduce binary sizes

* Have to have hostapd installed now, even on tiny builds

* Simplify device support

* Revert Mikrotik NAND sysupgrade system.
OpenWRT doesnt really support Mikrotik NAND devices after 2019 and the
new support appeared broken. So reverted to the 2022 mechanism which does
work and avoid upgrade problems.

* Fixes for tiny builds

* More tiny shrinking

* Fix newly added firewall rules

* Update permanent packages

* Update permanent packages

* Support for Nanobeam 2AC (2.4GHz) device. 20MHz channels only.

* Update support

* Add GL.iNet B1300

* Add to radios.json

* Update supported devices

* Dont force the LAN DHCP to run

* Revert CURL SSL test

* Fix radio count when there are no radios

* Switch the lan ports on the gl-b1300

* Add support for GL.iNET Beryl MT1300

* Fix visual lat/lon setting bug

* Make the setup "Save Changes" button also save the location data

* Fix location/map system with geo location fallback

* Recolor

* Fix default bandwidth selection

* Support multi-band radios

* Generic mechanism to set compat version to 1.1

* Switch ethernet ports

* 20 MHz channels only

* Update docs

* Add ham channels to Mediatek chips (20MHz only)

* Automatically update the permpkg list when we upgrade

* Fix 10MHz mode for Ubiquiti AC devices

* Fix tiny builds

* Bump the watch timeout for restarting olsrd
olsrd is reliable these days, and very occasionally this
was restarting it unnecessarily
This commit is contained in:
Tim Wilkinson 2023-12-06 10:12:11 -08:00 committed by GitHub
parent f4878471e0
commit 475f371bb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
63 changed files with 1227 additions and 20089 deletions

View File

@ -79,14 +79,22 @@ jobs:
name: Build ath79/nand name: Build ath79/nand
command: make MAINTARGET=ath79 SUBTARGET=nand command: make MAINTARGET=ath79 SUBTARGET=nand
no_output_timeout: 1h no_output_timeout: 1h
- run:
name: Build ipq40xx/generic
command: make MAINTARGET=ipq40xx SUBTARGET=generic
no_output_timeout: 2h
- run: - run:
name: Build ipq40xx/mikrotik name: Build ipq40xx/mikrotik
command: make MAINTARGET=ipq40xx SUBTARGET=mikrotik command: make MAINTARGET=ipq40xx SUBTARGET=mikrotik
no_output_timeout: 2h no_output_timeout: 1h
- run: - run:
name: Build x64/64 name: Build x64/64
command: make MAINTARGET=x86 SUBTARGET=64 command: make MAINTARGET=x86 SUBTARGET=64
no_output_timeout: 2h no_output_timeout: 2h
- run:
name: Build ramips/mt7621
command: make MAINTARGET=ipq40xx SUBTARGET=mt7621
no_output_timeout: 2h
- run: - run:
name: Compress build files name: Compress build files
command: tar -cjf ~/${CIRCLE_BRANCH}_${ARTIFACTS_FILE} -C ${MY_WORKING_DIRECTORY}/${ARTIFACTS_DIR} . command: tar -cjf ~/${CIRCLE_BRANCH}_${ARTIFACTS_FILE} -C ${MY_WORKING_DIRECTORY}/${ARTIFACTS_DIR} .
@ -126,14 +134,22 @@ jobs:
name: Build ath79/nand name: Build ath79/nand
command: make MAINTARGET=ath79 SUBTARGET=nand command: make MAINTARGET=ath79 SUBTARGET=nand
no_output_timeout: 1h no_output_timeout: 1h
- run:
name: Build ipq40xx/generic
command: make MAINTARGET=ipq40xx SUBTARGET=generic
no_output_timeout: 2h
- run: - run:
name: Build ipq40xx/mikrotik name: Build ipq40xx/mikrotik
command: make MAINTARGET=ipq40xx SUBTARGET=mikrotik command: make MAINTARGET=ipq40xx SUBTARGET=mikrotik
no_output_timeout: 2h no_output_timeout: 1h
- run: - run:
name: Build x64/64 name: Build x64/64
command: make MAINTARGET=x86 SUBTARGET=64 command: make MAINTARGET=x86 SUBTARGET=64
no_output_timeout: 2h no_output_timeout: 2h
- run:
name: Build ramips/mt7621
command: make MAINTARGET=ipq40xx SUBTARGET=mt7621
no_output_timeout: 2h
- run: - run:
name: Compress build files name: Compress build files
command: tar -cjf ~/${CIRCLE_BRANCH}_${ARTIFACTS_FILE} -C ${MY_WORKING_DIRECTORY}/${ARTIFACTS_DIR} . command: tar -cjf ~/${CIRCLE_BRANCH}_${ARTIFACTS_FILE} -C ${MY_WORKING_DIRECTORY}/${ARTIFACTS_DIR} .

View File

@ -96,7 +96,7 @@ feeds-update: stamp-clean-feeds-updated .stamp-feeds-updated
cd $(OPENWRT_DIR); ./scripts/feeds install curl cd $(OPENWRT_DIR); ./scripts/feeds install curl
cd $(OPENWRT_DIR); ./scripts/feeds install ntpclient cd $(OPENWRT_DIR); ./scripts/feeds install ntpclient
cd $(OPENWRT_DIR); ./scripts/feeds install socat cd $(OPENWRT_DIR); ./scripts/feeds install socat
cd $(OPENWRT_DIR); ./scripts/feeds install luci-base cd $(OPENWRT_DIR); ./scripts/feeds install luci-lib-base
cd $(OPENWRT_DIR); ./scripts/feeds install luci-lib-nixio cd $(OPENWRT_DIR); ./scripts/feeds install luci-lib-nixio
cd $(OPENWRT_DIR); ./scripts/feeds install luci-lib-ip cd $(OPENWRT_DIR); ./scripts/feeds install luci-lib-ip
cd $(OPENWRT_DIR); ./scripts/feeds install luci-lib-jsonc cd $(OPENWRT_DIR); ./scripts/feeds install luci-lib-jsonc

View File

@ -15,9 +15,9 @@ The 'target' and 'subtarget' identify the directory in which to find the image o
## Mikrotik ## Mikrotik
Model | SKUs | Band | Target | Subtarget | Image | RAM | Stability | Status Model | SKUs | Band | Target | Subtarget | Image | RAM | Stability | Status
:------ | :----: | :----: | :------: | :---------: | :-----: | :---: | :---------: | :------ :------ | :----: | :----: | :------: | :---------: | :-----: | :---: | :---------: | :------
hAP ac lite <br> hAP ac lite TC | RB952Ui-5ac2nD <br> RB952Ui-5ac2nD-TC | 2 | ath79 | mikrotik | mikrotik-952ui-5ac2nd | 64MB | stable | released hAP ac lite <br> hAP ac lite TC | RB952Ui-5ac2nD <br> RB952Ui-5ac2nD-TC | 2 & 5 | ath79 | mikrotik | mikrotik-952ui-5ac2nd | 64MB | stable | released
hAP ac² | RBD52G-5HacD2HnD-TC | 2 | ipq40xx | mikrotik | mikrotik_hap-ac2 | 128MB | stable | released hAP ac² | RBD52G-5HacD2HnD-TC | 2 & 5 | ipq40xx | mikrotik | mikrotik_hap-ac2 | 128MB | stable | released
hAP ac³ | RBD53iG-5HacD2HnD | 2 | ipq40xx | mikrotik | mikrotik_hap-ac3 | 256MB | stable | released hAP ac³ | RBD53iG-5HacD2HnD | 2 & 5 | ipq40xx | mikrotik | mikrotik_hap-ac3 | 256MB | stable | released
SXTsq Lite2 | RBSXTsq2nD | 2 | ath79 | mikrotik | mikrotik-sxt-2nd | 64MB | stable | released SXTsq Lite2 | RBSXTsq2nD | 2 | ath79 | mikrotik | mikrotik-sxt-2nd | 64MB | stable | released
SXTsq Lite5 | RBSXTsq5nD | 5 | ath79 | mikrotik | mikrotik-sxt-5nd | 64MB | stable | released SXTsq Lite5 | RBSXTsq5nD | 5 | ath79 | mikrotik | mikrotik-sxt-5nd | 64MB | stable | released
SXTsq 5 High Power | RBSXTsq5HPnD | 5 | ath79 | mikrotik | mikrotik-sxt-5hpnd | 64MB | stable | released SXTsq 5 High Power | RBSXTsq5HPnD | 5 | ath79 | mikrotik | mikrotik-sxt-5hpnd | 64MB | stable | released
@ -47,6 +47,7 @@ Bullet M2 XW || 2 | ath79 | generic | ubnt_bullet-m-xw | 64MB | untested | relea
LiteAP 5AC | LAP-120 <br> LAP-120-US <br> LBE-5AC-16-120 <br> LBE-5AC-16-120-US | 5 | ath79 | generic | ubnt_lap-120 | 64MB | stable | released LiteAP 5AC | LAP-120 <br> LAP-120-US <br> LBE-5AC-16-120 <br> LBE-5AC-16-120-US | 5 | ath79 | generic | ubnt_lap-120 | 64MB | stable | released
LiteBeam AC5 Gen2 | LBE-5AC <br> LBE-5AC-US | 5 | ath79 | generic | ubnt_litebeam-ac-gen2 | 64MB | stable | released LiteBeam AC5 Gen2 | LBE-5AC <br> LBE-5AC-US | 5 | ath79 | generic | ubnt_litebeam-ac-gen2 | 64MB | stable | released
LiteBeam M5 || 5 | ath79 | - | - | 64MB | untested | released LiteBeam M5 || 5 | ath79 | - | - | 64MB | untested | released
NanoBeam 2AC 13 (2WA) || 2 | ath79 | generic | ubnt_nanobeam-2ac-13 | 64MB | stable | nightly
NanoBeam AC 5 (WA) || 5 | ath79 | generic | ubnt_nanobeam-ac | 64MB | untested | released NanoBeam AC 5 (WA) || 5 | ath79 | generic | ubnt_nanobeam-ac | 64MB | untested | released
NanoBeam AC 5 (XC) || 5 | ath79 | generic | ubnt_nanobeam-ac-xc | 64MB | stable | released NanoBeam AC 5 (XC) || 5 | ath79 | generic | ubnt_nanobeam-ac-xc | 64MB | stable | released
NanoBeam AC 5 Gen 2 (WA) || 5 | ath79 | generic | ubnt_nanobeam-ac-gen2 | 128MB | stable | released NanoBeam AC 5 Gen 2 (WA) || 5 | ath79 | generic | ubnt_nanobeam-ac-gen2 | 128MB | stable | released
@ -131,6 +132,8 @@ Model | SKUs | Band | Target | Subtarget | Image | RAM | Stability | Status
Shadow (16MB NOR) | GL-AR300M16 <br> GL-AR300M16-Ext | 2 | ath79 | generic | glinet_gl-ar300m16 | 64MB | stable | released Shadow (16MB NOR) | GL-AR300M16 <br> GL-AR300M16-Ext | 2 | ath79 | generic | glinet_gl-ar300m16 | 64MB | stable | released
Shadow (128MB NAND) | GL-AR300M <br> GL-AR300M-Ext | 2 | ath79 | nand | gl-ar300m | 64MB | untested | released Shadow (128MB NAND) | GL-AR300M <br> GL-AR300M-Ext | 2 | ath79 | nand | gl-ar300m | 64MB | untested | released
Mudi | GL-E750 | 2 | ath79 | nand | gl-e750 | 128MB | untested | released Mudi | GL-E750 | 2 | ath79 | nand | gl-e750 | 128MB | untested | released
Convexa-B | GL-B1300 | 2 & 5 | ipq40xx | generic | gl-b1300 | 256MB | untested | nightly
Beryl | GL-MT1300 | 2 & 5 | ramips | mt7621 | gl-mt1300 | 256MB | untested | nightly (4)
**Sunset Devices** | | | | | | | | **Sunset Devices** | | | | | | | |
White | GL-AR150 | 2 | ath79 | generic | glinet_gl-ar150 | 64MB | stable | sunset (3) White | GL-AR150 | 2 | ath79 | generic | glinet_gl-ar150 | 64MB | stable | sunset (3)
Microuter | GL-USB150 | 2 | ath79 | generic | glinet_gl-usb150 | 64MB | stable | sunset (3) Microuter | GL-USB150 | 2 | ath79 | generic | glinet_gl-usb150 | 64MB | stable | sunset (3)
@ -146,6 +149,7 @@ Meraki MR-16 | MR16-HW | 5 | ath79 | - | - | 64MB | unsupported | **brick**
1. This device is supported for new installs. It can also be upgraded from 3.22.12.0 after first installing the [DangerousUpgrade package](https://github.com/kn6plv/DangerousUpgrade/raw/main/dangerousupgrade_0.1_all.ipk) to disable the firmware compatibility checks. Proceed carefully. 1. This device is supported for new installs. It can also be upgraded from 3.22.12.0 after first installing the [DangerousUpgrade package](https://github.com/kn6plv/DangerousUpgrade/raw/main/dangerousupgrade_0.1_all.ipk) to disable the firmware compatibility checks. Proceed carefully.
2. Tiny builds exclude support for *tunnels* and *WiFi AP* mode due to lack of resources. The relevant packages can be installed separately but this is not recommended. 2. Tiny builds exclude support for *tunnels* and *WiFi AP* mode due to lack of resources. The relevant packages can be installed separately but this is not recommended.
3. These devices are no longer being manufactured by GL-iNET. They may not reboot reliably and you may need to power cycle them (several times) during an update. 3. These devices are no longer being manufactured by GL-iNET. They may not reboot reliably and you may need to power cycle them (several times) during an update.
4. 20MHz channels only.
Latest installation instructions are found at: https://docs.arednmesh.org/en/latest/ Latest installation instructions are found at: https://docs.arednmesh.org/en/latest/

View File

@ -20,11 +20,11 @@ CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_wbs210-v1=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_wbs210-v2=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_wbs210-v2=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_wbs510-v1=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_wbs510-v1=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_wbs510-v2=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_wbs510-v2=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_bullet-m-xw=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_bullet-ac=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_bullet-ac=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_bullet-m-xw=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_bullet-m-xw=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_lap-120=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_lap-120=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_litebeam-ac-gen2=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_litebeam-ac-gen2=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_nanobeam-2ac-13=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_nanobeam-ac-gen2=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_nanobeam-ac-gen2=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_nanobeam-ac=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_nanobeam-ac=y
CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_nanobeam-ac-xc=y CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_nanobeam-ac-xc=y

View File

@ -11,9 +11,11 @@ CONFIG_TARGET_DEVICE_ath79_tiny_DEVICE_ubnt_picostation-m=y
CONFIG_KERNEL_CC_STACKPROTECTOR_NONE=y CONFIG_KERNEL_CC_STACKPROTECTOR_NONE=y
CONFIG_KERNEL_PRINTK=n CONFIG_KERNEL_PRINTK=n
CONFIG_PACKAGE_ATH_SPECTRAL=n CONFIG_PACKAGE_ATH_SPECTRAL=n
CONFIG_PACKAGE_wpad-mini=m
CONFIG_PACKAGE_vtun=m
CONFIG_PACKAGE_ethtool=m CONFIG_PACKAGE_ethtool=m
CONFIG_PACKAGE_iperf3=m CONFIG_PACKAGE_iperf3=m
CONFIG_PACKAGE_libustream-mbedtls=m
CONFIG_PACKAGE_vtun=m
CONFIG_PACKAGE_wireguard=m
CONFIG_PACKAGE_wireguard-tools=m
CONFIG_PKG_CC_STACKPROTECTOR_NONE=y CONFIG_PKG_CC_STACKPROTECTOR_NONE=y
CONFIG_PKG_FORTIFY_SOURCE_NONE=y CONFIG_PKG_FORTIFY_SOURCE_NONE=y

View File

@ -115,7 +115,6 @@ CONFIG_PACKAGE_lua-bit32=y
CONFIG_PACKAGE_luaposix=n CONFIG_PACKAGE_luaposix=n
CONFIG_PACKAGE_luasocket=y CONFIG_PACKAGE_luasocket=y
CONFIG_PACKAGE_lua=y CONFIG_PACKAGE_lua=y
CONFIG_PACKAGE_luci-base=n
CONFIG_PACKAGE_luci-lib-base=y CONFIG_PACKAGE_luci-lib-base=y
CONFIG_PACKAGE_luci-lib-ip=y CONFIG_PACKAGE_luci-lib-ip=y
CONFIG_PACKAGE_luci-lib-jsonc=y CONFIG_PACKAGE_luci-lib-jsonc=y
@ -157,6 +156,8 @@ CONFIG_PACKAGE_wpad-mini=y
CONFIG_PACKAGE_xinetd=n CONFIG_PACKAGE_xinetd=n
CONFIG_PACKAGE_zlib=m CONFIG_PACKAGE_zlib=m
CONFIG_PACKAGE_zram-swap=n CONFIG_PACKAGE_zram-swap=n
CONFIG_PKG_ASLR_PIE_NONE=y
CONFIG_PKG_RELRO_NONE=y
CONFIG_PREINITOPT=y CONFIG_PREINITOPT=y
CONFIG_SECCOMP=n CONFIG_SECCOMP=n
CONFIG_STRIP_KERNEL_EXPORTS=y CONFIG_STRIP_KERNEL_EXPORTS=y

3
configs/ipq40xx-generic.config Executable file
View File

@ -0,0 +1,3 @@
CONFIG_TARGET_ipq40xx=y
CONFIG_TARGET_ipq40xx_generic=y
CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-b1300=y

3
configs/ramips-mt7621.config Executable file
View File

@ -0,0 +1,3 @@
CONFIG_TARGET_ramips=y
CONFIG_TARGET_ramips_mt7621=y
CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_glinet_gl-mt1300=y

View File

@ -1 +1 @@
src-git arednpackages https://github.com/aredn/aredn_packages;develop src-git arednpackages https://github.com/kn6plv/aredn_packages;working

View File

@ -1,3 +1,7 @@
#### Globals
config globals 'globals'
option packet_steering '1'
#### Loopback configuration #### Loopback configuration
config interface loopback config interface loopback
option device "lo" option device "lo"

View File

@ -3,6 +3,7 @@ config dhcp
option start 5 option start 5
option limit 20 option limit 20
option leasetime 12h option leasetime 12h
option force 1
config dhcp config dhcp
option interface wan option interface wan

View File

@ -1 +1 @@
KN6PLV-lz77decompression-d708f8c KN6PLV-main-cdeb1b1d

View File

@ -4,6 +4,7 @@ ath10k-firmware-qca4019-ct
ath10k-firmware-qca9887-ct ath10k-firmware-qca9887-ct
ath10k-firmware-qca988x-ct ath10k-firmware-qca988x-ct
base-files base-files
bnx2-firmware
busybox busybox
ca-bundle ca-bundle
curl curl
@ -14,6 +15,9 @@ firewall4
fstools fstools
fwtool fwtool
getrandom getrandom
grub2
grub2-bios-setup
grub2-efi
hostapd-common hostapd-common
iperf3 iperf3
iw iw
@ -22,12 +26,17 @@ jansson4
jshn jshn
jsonfilter jsonfilter
kernel kernel
kmod-amazon-ena
kmod-amd-xgbe
kmod-ath kmod-ath
kmod-ath10k-ct kmod-ath10k-ct
kmod-ath10k-ct-smallbuffers kmod-ath10k-ct-smallbuffers
kmod-ath9k kmod-ath9k
kmod-ath9k-common kmod-ath9k-common
kmod-bnx2
kmod-button-hotplug
kmod-cfg80211 kmod-cfg80211
kmod-crypto-acompress
kmod-crypto-aead kmod-crypto-aead
kmod-crypto-ccm kmod-crypto-ccm
kmod-crypto-cmac kmod-crypto-cmac
@ -43,42 +52,72 @@ kmod-crypto-null
kmod-crypto-rng kmod-crypto-rng
kmod-crypto-seqiv kmod-crypto-seqiv
kmod-crypto-sha256 kmod-crypto-sha256
kmod-crypto-sha512
kmod-e1000
kmod-e1000e
kmod-forcedeth
kmod-fs-vfat
kmod-gpio-button-hotplug kmod-gpio-button-hotplug
kmod-hwmon-core kmod-hwmon-core
kmod-i2c-algo-bit
kmod-i2c-core
kmod-igb
kmod-igc
kmod-input-core
kmod-ipip kmod-ipip
kmod-iptunnel kmod-iptunnel
kmod-iptunnel4 kmod-iptunnel4
kmod-ixgbe
kmod-leds-gpio kmod-leds-gpio
kmod-ledtrig-gpio kmod-ledtrig-gpio
kmod-lib-crc32c kmod-lib-crc32c
kmod-lib-lzo
kmod-libphy
kmod-mac80211 kmod-mac80211
kmod-mdio
kmod-mdio-devres
kmod-mii
kmod-nf-conntrack kmod-nf-conntrack
kmod-nf-flow kmod-nf-flow
kmod-nf-log kmod-nf-log
kmod-nf-nat kmod-nf-nat
kmod-nf-reject
kmod-nfnetlink kmod-nfnetlink
kmod-nf-reject
kmod-nft-core kmod-nft-core
kmod-nft-fib kmod-nft-fib
kmod-nft-nat kmod-nft-nat
kmod-nft-offload kmod-nft-offload
kmod-nls-base kmod-nls-base
kmod-nls-cp437
kmod-nls-iso8859-1
kmod-nls-utf8
kmod-phy-realtek
kmod-pps
kmod-ptp
kmod-r8169
kmod-tg3
kmod-tun kmod-tun
kmod-usb-core kmod-usb-core
kmod-usb-dwc3 kmod-usb-dwc3
kmod-usb-dwc3-qcom kmod-usb-dwc3-qcom
libblkid1
libblobmsg-json20220515 libblobmsg-json20220515
libblobmsg-json20230523
libc libc
libcurl4 libcurl4
libf2fs6
libgcc1 libgcc1
libiperf3
libiwinfo20210430
libiwinfo20230701
libiwinfo-data libiwinfo-data
libiwinfo-lua libiwinfo-lua
libiwinfo20210430
libjson-c5 libjson-c5
libjson-script20220515 libjson-script20220515
libjson-script20230523
liblua5.1.5 liblua5.1.5
liblucihttp-lua
liblucihttp0 liblucihttp0
liblucihttp-lua
liblzo2 liblzo2
libmbedtls12 libmbedtls12
libmnl0 libmnl0
@ -86,13 +125,18 @@ libnftnl11
libnl-tiny1 libnl-tiny1
libpthread libpthread
librt librt
libsmartcols1
libubox20220515 libubox20220515
libubus-lua libubox20230523
libubus20220601 libubus20220601
libuci-lua libubus20230605
libubus-lua
libuci20130104 libuci20130104
libuci-lua
libuclient20201210 libuclient20201210
libucode20220812 libucode20220812
libustream-mbedtls20201210
libuuid1
libxtables12 libxtables12
logd logd
lua lua
@ -101,6 +145,7 @@ luci-lib-base
luci-lib-ip luci-lib-ip
luci-lib-jsonc luci-lib-jsonc
luci-lib-nixio luci-lib-nixio
mkf2fs
mtd mtd
netifd netifd
nftables-json nftables-json
@ -114,8 +159,10 @@ olsrd-mod-txtinfo
olsrd-mod-watchdog olsrd-mod-watchdog
openwrt-keyring openwrt-keyring
opkg opkg
partx-utils
procd procd
prometheus-exporter prometheus-exporter
r8169-firmware
rpcd rpcd
rpcd-mod-file rpcd-mod-file
rpcd-mod-luci rpcd-mod-luci
@ -130,8 +177,11 @@ uci
uclient-fetch uclient-fetch
ucode ucode
ucode-mod-fs ucode-mod-fs
ucode-mod-nl80211
ucode-mod-rtnl
ucode-mod-ubus ucode-mod-ubus
ucode-mod-uci ucode-mod-uci
ucode-mod-uloop
uhttpd uhttpd
urandom-seed urandom-seed
urngd urngd

View File

@ -20,6 +20,16 @@
"gl.inet gl-ar750s (nor/nand)": { "gl.inet gl-ar750s (nor/nand)": {
"maxpower": "23" "maxpower": "23"
}, },
"gl.inet gl-b1300": {
},
"gl.inet gl-mt1300": {
"wlan0": {
"bandwidths": [ 20 ]
},
"wlan1": {
"bandwidths": [ 20 ]
}
},
"tp-link cpe210 v1": { "tp-link cpe210 v1": {
"maxpower": "23", "maxpower": "23",
"chanpower": { "chanpower": {
@ -555,6 +565,14 @@
"maxpower": "22", "maxpower": "22",
"pwroffset": "4" "pwroffset": "4"
}, },
"0xe4f2": {
"name": "Ubiquiti NanoBeam 2AC 13 (2WA)",
"wlan0": {
"bandwidths": [ 10, 20 ],
"maxpower": 21,
"pwroffset": 6
}
},
"0xe4f5": { "0xe4f5": {
"name": "Ubiquiti NanoBeam AC (XC)", "name": "Ubiquiti NanoBeam AC (XC)",
"maxpower": "23", "maxpower": "23",

View File

@ -1,15 +1,8 @@
#! /bin/sh #! /bin/sh
case "$(/usr/local/bin/get_boardid)" in VER=$(jsonfilter -e '@.system.compat_version' < /etc/board.json)
MikroTik\ hAP\ ac2|\ if [ "${VER}" != "" ]; then
MikroTik\ hAP\ ac3|\ sed -i "s/^compat_version = 1.0/compat_version = ${VER}/" /etc/config.mesh/_setup
MikroTik\ SXTsq\ 5\ ac*|\ sed -i "s/^compat_version = 1.0/compat_version = ${VER}/" /etc/config.mesh/_setup.default
MikroTik\ LDF\ 5\ ac*|\ uci -q set system.@system[0].compat_version=${VER}
MikroTik\ LHG\ 5\ ac*) uci -q commit system
sed -i "s/^compat_version = 1.0/compat_version = 1.1/" /etc/config.mesh/_setup fi
sed -i "s/^compat_version = 1.0/compat_version = 1.1/" /etc/config.mesh/_setup.default
/sbin/uci -q set system.@system[0].compat_version=1.1
/sbin/uci -q commit system
;;
*)
;;
esac

View File

@ -0,0 +1,4 @@
#! /bin/sh
# Update the permanent package list so we can't uninstall any of the standard system
opkg list-installed | sed s/\ .*// > /etc/permpkg

View File

@ -71,6 +71,28 @@ function hardware.get_radio()
return radio_json return radio_json
end end
function hardware.get_radio_count()
local radio = hardware.get_radio()
if not radio then
return 0
elseif radio.wlan0 then
if radio.wlan1 then
return 2
else
return 1
end
else
local count = 0
if nixio.fs.stat("/sys/class/ieee80211") then
for file in nixio.fs.dir("/sys/class/ieee80211")
do
count = count + 1
end
end
return count
end
end
function hardware.get_radio_intf(wifiintf) function hardware.get_radio_intf(wifiintf)
local radio = hardware.get_radio() local radio = hardware.get_radio()
if radio and radio[wifiintf] then if radio and radio[wifiintf] then
@ -277,19 +299,25 @@ function hardware.get_default_channel(wifiintf)
for _, channel in ipairs(hardware.get_rfchannels(wifiintf)) for _, channel in ipairs(hardware.get_rfchannels(wifiintf))
do do
if channel.frequency == 912 then if channel.frequency == 912 then
return { channel = 5, bandwidth = 5, rfband = "900MHz" } return { channel = 5, bandwidth = 5, band = "900MHz" }
end end
local bws = {}
for _, v in ipairs(hardware.get_rfbandwidths(wifiintf))
do
bws[v] = v
end
local bw = bws[10] or bws[20] or bws[5] or 0
if channel.frequency == 2397 then if channel.frequency == 2397 then
return { channel = -2, bandwidth = 10, rfband = "2.4GHz" } return { channel = -2, bandwidth = bw, band = "2.4GHz" }
end end
if channel.frequency == 2412 then if channel.frequency == 2412 then
return { channel = 1, bandwidth = 10, rfband = "2.4GHz" } return { channel = 1, bandwidth = bw, band = "2.4GHz" }
end end
if channel.frequency == 3420 then if channel.frequency == 3420 then
return { channel = 84, bandwidth = 10, rfband = "3GHz" } return { channel = 84, bandwidth = bw, band = "3GHz" }
end end
if channel.frequency == 5745 then if channel.frequency == 5745 then
return { channel = 149, bandwidth = 10, rfband = "5GHz" } return { channel = 149, bandwidth = bw, band = "5GHz" }
end end
end end
return nil return nil
@ -320,7 +348,7 @@ function hardware.get_rfchannels(wifiintf)
end end
for line in f:lines() for line in f:lines()
do do
local freq, num = line:match("(%d+%.%d+) GHz %(Channel (%-?%d+)%)") local freq, num = line:match("(%d+%.%d+) GHz %(Band: .*, Channel (%-?%d+)%)")
if freq and not line:match("restricted") and not line:match("disabled") then if freq and not line:match("restricted") and not line:match("disabled") then
freq = tonumber("" .. freq:gsub("%.", "")) + freq_adjust freq = tonumber("" .. freq:gsub("%.", "")) + freq_adjust
if freq >= freq_min and freq <= freq_max then if freq >= freq_min and freq <= freq_max then

View File

@ -37,7 +37,7 @@
local nxo = require("nixio") local nxo = require("nixio")
local ipc = require("luci.ip") local ipc = require("luci.ip")
require("luci.http") require('luci.ohttp')
require("uci") require("uci")
function round2(num, idp) function round2(num, idp)

554
files/usr/lib/lua/luci/ohttp.lua Executable file
View File

@ -0,0 +1,554 @@
-- Copyright 2008 Steven Barth <steven@midlink.org>
-- Copyright 2010-2018 Jo-Philipp Wich <jo@mein.io>
-- Licensed to the public under the Apache License 2.0.
local util = require "luci.util"
local coroutine = require "coroutine"
local table = require "table"
local lhttp = require "lucihttp"
local nixio = require "nixio"
local ltn12 = require "luci.ltn12"
local table, ipairs, pairs, type, tostring, tonumber, error =
table, ipairs, pairs, type, tostring, tonumber, error
module "luci.http"
HTTP_MAX_CONTENT = 1024*100 -- 100 kB maximum content size
context = util.threadlocal()
Request = util.class()
function Request.__init__(self, env, sourcein, sinkerr)
self.input = sourcein
self.error = sinkerr
-- File handler nil by default to let .content() work
self.filehandler = nil
-- HTTP-Message table
self.message = {
env = env,
headers = {},
params = urldecode_params(env.QUERY_STRING or ""),
}
self.parsed_input = false
end
function Request.formvalue(self, name, noparse)
if not noparse and not self.parsed_input then
self:_parse_input()
end
if name then
return self.message.params[name]
else
return self.message.params
end
end
function Request.formvaluetable(self, prefix)
local vals = {}
prefix = prefix and prefix .. "." or "."
if not self.parsed_input then
self:_parse_input()
end
local void = self.message.params[nil]
for k, v in pairs(self.message.params) do
if k:find(prefix, 1, true) == 1 then
vals[k:sub(#prefix + 1)] = tostring(v)
end
end
return vals
end
function Request.content(self)
if not self.parsed_input then
self:_parse_input()
end
return self.message.content, self.message.content_length
end
function Request.getcookie(self, name)
return lhttp.header_attribute("cookie; " .. (self:getenv("HTTP_COOKIE") or ""), name)
end
function Request.getenv(self, name)
if name then
return self.message.env[name]
else
return self.message.env
end
end
function Request.setfilehandler(self, callback)
self.filehandler = callback
if not self.parsed_input then
return
end
-- If input has already been parsed then uploads are stored as unlinked
-- temporary files pointed to by open file handles in the parameter
-- value table. Loop all params, and invoke the file callback for any
-- param with an open file handle.
local name, value
for name, value in pairs(self.message.params) do
if type(value) == "table" then
while value.fd do
local data = value.fd:read(1024)
local eof = (not data or data == "")
callback(value, data, eof)
if eof then
value.fd:close()
value.fd = nil
end
end
end
end
end
function Request._parse_input(self)
parse_message_body(
self.input,
self.message,
self.filehandler
)
self.parsed_input = true
end
function close()
if not context.eoh then
context.eoh = true
coroutine.yield(3)
end
if not context.closed then
context.closed = true
coroutine.yield(5)
end
end
function content()
return context.request:content()
end
function formvalue(name, noparse)
return context.request:formvalue(name, noparse)
end
function formvaluetable(prefix)
return context.request:formvaluetable(prefix)
end
function getcookie(name)
return context.request:getcookie(name)
end
-- or the environment table itself.
function getenv(name)
return context.request:getenv(name)
end
function setfilehandler(callback)
return context.request:setfilehandler(callback)
end
function header(key, value)
if not context.headers then
context.headers = {}
end
context.headers[key:lower()] = value
coroutine.yield(2, key, value)
end
function prepare_content(mime)
if not context.headers or not context.headers["content-type"] then
if mime == "application/xhtml+xml" then
if not getenv("HTTP_ACCEPT") or
not getenv("HTTP_ACCEPT"):find("application/xhtml+xml", nil, true) then
mime = "text/html; charset=UTF-8"
end
header("Vary", "Accept")
end
header("Content-Type", mime)
end
end
function source()
return context.request.input
end
function status(code, message)
code = code or 200
message = message or "OK"
context.status = code
coroutine.yield(1, code, message)
end
-- This function is as a valid LTN12 sink.
-- If the content chunk is nil this function will automatically invoke close.
function write(content, src_err)
if not content then
if src_err then
error(src_err)
else
close()
end
return true
elseif #content == 0 then
return true
else
if not context.eoh then
if not context.status then
status()
end
if not context.headers or not context.headers["content-type"] then
header("Content-Type", "text/html; charset=utf-8")
end
if not context.headers["cache-control"] then
header("Cache-Control", "no-cache")
header("Expires", "0")
end
if not context.headers["x-frame-options"] then
header("X-Frame-Options", "SAMEORIGIN")
end
if not context.headers["x-xss-protection"] then
header("X-XSS-Protection", "1; mode=block")
end
if not context.headers["x-content-type-options"] then
header("X-Content-Type-Options", "nosniff")
end
context.eoh = true
coroutine.yield(3)
end
coroutine.yield(4, content)
return true
end
end
function splice(fd, size)
coroutine.yield(6, fd, size)
end
function redirect(url)
if url == "" then url = "/" end
status(302, "Found")
header("Location", url)
close()
end
function build_querystring(q)
local s, n, k, v = {}, 1, nil, nil
for k, v in pairs(q) do
s[n+0] = (n == 1) and "?" or "&"
s[n+1] = util.urlencode(k)
s[n+2] = "="
s[n+3] = util.urlencode(v)
n = n + 4
end
return table.concat(s, "")
end
urldecode = util.urldecode
urlencode = util.urlencode
function write_json(x)
util.serialize_json(x, write)
end
-- from given url or string. Returns a table with urldecoded values.
-- Simple parameters are stored as string values associated with the parameter
-- name within the table. Parameters with multiple values are stored as array
-- containing the corresponding values.
function urldecode_params(url, tbl)
local parser, name
local params = tbl or { }
parser = lhttp.urlencoded_parser(function (what, buffer, length)
if what == parser.TUPLE then
name, value = nil, nil
elseif what == parser.NAME then
name = lhttp.urldecode(buffer)
elseif what == parser.VALUE and name then
params[name] = lhttp.urldecode(buffer) or ""
end
return true
end)
if parser then
parser:parse((url or ""):match("[^?]*$"))
parser:parse(nil)
end
return params
end
-- separated by "&". Tables are encoded as parameters with multiple values by
-- repeating the parameter name with each value.
function urlencode_params(tbl)
local k, v
local n, enc = 1, {}
for k, v in pairs(tbl) do
if type(v) == "table" then
local i, v2
for i, v2 in ipairs(v) do
if enc[1] then
enc[n] = "&"
n = n + 1
end
enc[n+0] = lhttp.urlencode(k)
enc[n+1] = "="
enc[n+2] = lhttp.urlencode(v2)
n = n + 3
end
else
if enc[1] then
enc[n] = "&"
n = n + 1
end
enc[n+0] = lhttp.urlencode(k)
enc[n+1] = "="
enc[n+2] = lhttp.urlencode(v)
n = n + 3
end
end
return table.concat(enc, "")
end
-- Content-Type. Stores all extracted data associated with its parameter name
-- in the params table within the given message object. Multiple parameter
-- values are stored as tables, ordinary ones as strings.
-- If an optional file callback function is given then it is fed with the
-- file contents chunk by chunk and only the extracted file name is stored
-- within the params table. The callback function will be called subsequently
-- with three arguments:
-- o Table containing decoded (name, file) and raw (headers) mime header data
-- o String value containing a chunk of the file data
-- o Boolean which indicates whether the current chunk is the last one (eof)
function mimedecode_message_body(src, msg, file_cb)
local parser, header, field
local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil)
parser, err = lhttp.multipart_parser(msg.env.CONTENT_TYPE, function (what, buffer, length)
if what == parser.PART_INIT then
field = { }
elseif what == parser.HEADER_NAME then
header = buffer:lower()
elseif what == parser.HEADER_VALUE and header then
if header:lower() == "content-disposition" and
lhttp.header_attribute(buffer, nil) == "form-data"
then
field.name = lhttp.header_attribute(buffer, "name")
field.file = lhttp.header_attribute(buffer, "filename")
field[1] = field.file
end
if field.headers then
field.headers[header] = buffer
else
field.headers = { [header] = buffer }
end
elseif what == parser.PART_BEGIN then
return not field.file
elseif what == parser.PART_DATA and field.name and length > 0 then
if field.file then
if file_cb then
file_cb(field, buffer, false)
msg.params[field.name] = msg.params[field.name] or field
else
if not field.fd then
field.fd = nixio.mkstemp(field.name)
end
if field.fd then
field.fd:write(buffer)
msg.params[field.name] = msg.params[field.name] or field
end
end
else
field.value = buffer
end
elseif what == parser.PART_END and field.name then
if field.file and msg.params[field.name] then
if file_cb then
file_cb(field, "", true)
elseif field.fd then
field.fd:seek(0, "set")
end
else
local val = msg.params[field.name]
if type(val) == "table" then
val[#val+1] = field.value or ""
elseif val ~= nil then
msg.params[field.name] = { val, field.value or "" }
else
msg.params[field.name] = field.value or ""
end
end
field = nil
elseif what == parser.ERROR then
err = buffer
end
return true
end, HTTP_MAX_CONTENT)
return ltn12.pump.all(src, function (chunk)
len = len + (chunk and #chunk or 0)
if maxlen and len > maxlen + 2 then
return nil, "Message body size exceeds Content-Length"
end
if not parser or not parser:parse(chunk) then
return nil, err
end
return true
end)
end
-- Content-Type. Stores all extracted data associated with its parameter name
-- in the params table within the given message object. Multiple parameter
-- values are stored as tables, ordinary ones as strings.
function urldecode_message_body(src, msg)
local err, name, value, parser
local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil)
parser = lhttp.urlencoded_parser(function (what, buffer, length)
if what == parser.TUPLE then
name, value = nil, nil
elseif what == parser.NAME then
name = lhttp.urldecode(buffer, lhttp.DECODE_PLUS)
elseif what == parser.VALUE and name then
local val = msg.params[name]
if type(val) == "table" then
val[#val+1] = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or ""
elseif val ~= nil then
msg.params[name] = { val, lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or "" }
else
msg.params[name] = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or ""
end
elseif what == parser.ERROR then
err = buffer
end
return true
end, HTTP_MAX_CONTENT)
return ltn12.pump.all(src, function (chunk)
len = len + (chunk and #chunk or 0)
if maxlen and len > maxlen + 2 then
return nil, "Message body size exceeds Content-Length"
elseif len > HTTP_MAX_CONTENT then
return nil, "Message body size exceeds maximum allowed length"
end
if not parser or not parser:parse(chunk) then
return nil, err
end
return true
end)
end
-- This function will examine the Content-Type within the given message object
-- to select the appropriate content decoder.
-- Currently the application/x-www-urlencoded and application/form-data
-- mime types are supported. If the encountered content encoding can't be
-- handled then the whole message body will be stored unaltered as "content"
-- property within the given message object.
function parse_message_body(src, msg, filecb)
if msg.env.CONTENT_LENGTH or msg.env.REQUEST_METHOD == "POST" then
local ctype = lhttp.header_attribute(msg.env.CONTENT_TYPE, nil)
-- Is it multipart/mime ?
if ctype == "multipart/form-data" then
return mimedecode_message_body(src, msg, filecb)
-- Is it application/x-www-form-urlencoded ?
elseif ctype == "application/x-www-form-urlencoded" then
return urldecode_message_body(src, msg)
end
-- Unhandled encoding
-- If a file callback is given then feed it chunk by chunk, else
-- store whole buffer in message.content
local sink
-- If we have a file callback then feed it
if type(filecb) == "function" then
local meta = {
name = "raw",
encoding = msg.env.CONTENT_TYPE
}
sink = function( chunk )
if chunk then
return filecb(meta, chunk, false)
else
return filecb(meta, nil, true)
end
end
-- ... else append to .content
else
msg.content = ""
msg.content_length = 0
sink = function( chunk )
if chunk then
if ( msg.content_length + #chunk ) <= HTTP_MAX_CONTENT then
msg.content = msg.content .. chunk
msg.content_length = msg.content_length + #chunk
return true
else
return nil, "POST data exceeds maximum allowed length"
end
end
return true
end
end
-- Pump data...
while true do
local ok, err = ltn12.pump.step( src, sink )
if not ok and err then
return nil, err
elseif not ok then -- eof
return true
end
end
return true
end
return false
end

View File

@ -65,7 +65,7 @@ end
function watchdog() function watchdog()
while true while true
do do
wait_for_ticks(21) wait_for_ticks(223)
local pid = read_all(pidfile) local pid = read_all(pidfile)
if pid and nixio.fs.stat("/proc/" .. pid) then if pid and nixio.fs.stat("/proc/" .. pid) then

View File

@ -104,12 +104,6 @@ function M.reset_network(mode)
elseif mode == "scan-all" then elseif mode == "scan-all" then
os.execute(IW .. " " .. wifi .. " scan > /dev/null 2>&1") os.execute(IW .. " " .. wifi .. " scan > /dev/null 2>&1")
os.execute(IW .. " " .. wifi .. " scan passive > /dev/null 2>&1") os.execute(IW .. " " .. wifi .. " scan passive > /dev/null 2>&1")
elseif mode == "reset" then
if chipset == "ath9k" then
write_all("/sys/kernel/debug/ieee80211/" .. phy .. "/ath9k/reset", "1")
else
write_all("/sys/kernel/debug/ieee80211/" .. phy .. "/ath10k/simulate_fw_crash", "hw-restart")
end
else else
log:write("-- unknown") log:write("-- unknown")
end end

View File

@ -764,6 +764,7 @@ c:commit("dhcp")
local config = "" local config = ""
local ifacenum = 0 local ifacenum = 0
local ifacecount = 0 local ifacecount = 0
local devpaths = {}
if nixio.fs.stat(ieee80211) then if nixio.fs.stat(ieee80211) then
for devname in nixio.fs.dir(ieee80211) for devname in nixio.fs.dir(ieee80211)
do do
@ -778,6 +779,11 @@ if nixio.fs.stat(ieee80211) then
if devpath:match("^platform.*/pci.*") then if devpath:match("^platform.*/pci.*") then
devpath = devpath:match("^platform/(.*)") devpath = devpath:match("^platform/(.*)")
end end
local devpathc = devpaths[devpath] or 0
devpaths[devpath] = devpathc + 1
if devpathc > 0 then
devpath = devpath .. "+" .. devpathc
end
local is_mesh_rf = false local is_mesh_rf = false
local htmode = "HT20" local htmode = "HT20"
local disabled = "0" local disabled = "0"

View File

@ -169,7 +169,7 @@ end
local parms = {} local parms = {}
local firmfile = "" local firmfile = ""
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

View File

@ -765,7 +765,7 @@ end
-- read_postdata -- read_postdata
local parms = {} local parms = {}
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

View File

@ -300,7 +300,7 @@ local layout = layouts[get_board_type]
local configs = {} local configs = {}
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

View File

@ -90,7 +90,7 @@ end
-- post data -- post data
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

View File

@ -60,7 +60,7 @@ end
-- post_data -- post_data
local parms = {} local parms = {}
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

View File

@ -149,7 +149,7 @@ end
-- scan end -- scan end
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

View File

@ -41,7 +41,7 @@ require("aredn.http")
require("aredn.utils") require("aredn.utils")
require("aredn.hardware") require("aredn.hardware")
require("uci") require("uci")
require('luci.http') require('luci.ohttp')
local html = require("aredn.html") local html = require("aredn.html")
local aredn_info = require("aredn.info") local aredn_info = require("aredn.info")
@ -176,7 +176,7 @@ passwd1 = ""
passwd2 = "" passwd2 = ""
wifi_intf = "" wifi_intf = ""
local phycount = tonumber(capture("ls -1d /sys/class/ieee80211/* | wc -l"):chomp()) local phycount = aredn.hardware.get_radio_count()
local radio_name = (aredn.hardware.get_radio() or {}).name or "" local radio_name = (aredn.hardware.get_radio() or {}).name or ""
local M9model = radio_name:match("M9") local M9model = radio_name:match("M9")
local M3model = radio_name:match("M3") local M3model = radio_name:match("M3")
@ -428,48 +428,53 @@ if (parms.button_apply or parms.button_save) and wifi_enable == "1" then
os.execute("iw dev " .. wifi_intf .. " set txpower fixed " .. wifi_txpower .. "00 >/dev/null 2>&1") os.execute("iw dev " .. wifi_intf .. " set txpower fixed " .. wifi_txpower .. "00 >/dev/null 2>&1")
end end
if parms.button_updatelocation then if (parms.button_updatelocation or parms.button_save) then
-- process gridsquare -- process gridsquare
local cursora = uci.cursor(); local cursora = uci.cursor();
local cursorb = uci.cursor("/etc/config.mesh") local cursorb = uci.cursor("/etc/config.mesh")
if parms.gridsquare ~= "" then if (cursora:get("aredn", "@location[0]", "gridsquare") or "") ~= parms.gridsquare then
if parms.gridsquare:match("^[A-Z][A-Z]%d%d[a-z][a-z]$") then if parms.gridsquare ~= "" then
cursora:set("aredn", "@location[0]", "gridsquare", parms.gridsquare) if parms.gridsquare:match("^[A-Z][A-Z]%d%d[a-z][a-z]$") then
cursorb:set("aredn", "@location[0]", "gridsquare", parms.gridsquare) cursora:set("aredn", "@location[0]", "gridsquare", parms.gridsquare)
out("Gridsquare updated.") cursorb:set("aredn", "@location[0]", "gridsquare", parms.gridsquare)
out("Gridsquare updated.")
else
err("ERROR: Gridsquare format is: 2-uppercase letters, 2-digits, 2-lowercase letters. (AB12cd)")
end
else else
err("ERROR: Gridsquare format is: 2-uppercase letters, 2-digits, 2-lowercase letters. (AB12cd)") cursora:set("aredn", "@location[0]", "gridsquare", "")
cursorb:set("aredn", "@location[0]", "gridsquare", "")
out("Gridsquare purged.")
end end
else
cursora:set("aredn", "@location[0]", "gridsquare", "")
cursorb:set("aredn", "@location[0]", "gridsquare", "")
out("Gridsquare purged.")
end end
-- process lat/lng -- process lat/lng
if parms.latitude ~= "" and parms.longitude ~= "" then if (cursora:get("aredn", "@location[0]", "lat") or "") ~= parms.latitude or (cursora:get("aredn", "@location[0]", "lon") or "") ~= parms.longitude then
if parms.latitude:match("^[-+]?%d%d?%.%d+$") and parms.longitude:match("^[-+]?%d%d?%d?%.%d+$") then if parms.latitude ~= "" and parms.longitude ~= "" then
if tonumber(parms.latitude) >= -90 and tonumber(parms.latitude) <= 90 and tonumber(parms.longitude) >= -180 and tonumber(parms.longitude) <= 180 then if parms.latitude:match("^[-+]?%d%d?%.%d+$") and parms.longitude:match("^[-+]?%d%d?%d?%.%d+$") then
cursora:set("aredn", "@location[0]", "lat", parms.latitude) if tonumber(parms.latitude) >= -90 and tonumber(parms.latitude) <= 90 and tonumber(parms.longitude) >= -180 and tonumber(parms.longitude) <= 180 then
cursorb:set("aredn", "@location[0]", "lat", parms.latitude) cursora:set("aredn", "@location[0]", "lat", parms.latitude)
cursora:set("aredn", "@location[0]", "lon", parms.longitude) cursorb:set("aredn", "@location[0]", "lat", parms.latitude)
cursorb:set("aredn", "@location[0]", "lon", parms.longitude) cursora:set("aredn", "@location[0]", "lon", parms.longitude)
out("Lat/lon updated.") cursorb:set("aredn", "@location[0]", "lon", parms.longitude)
out("Lat/lon updated.")
else
err("ERROR: Lat/lon values must be between -90/90 and -180/180, respectively.")
end
else else
err("ERROR: Lat/lon values must be between -90/90 and -180/180, respectively.") err("ERROR: Lat/lon format is decimal: (ex. 30.121456 or -95.911154).")
end end
else else
err("ERROR: Lat/lon format is decimal: (ex. 30.121456 or -95.911154).") cursora:set("aredn", "@location[0]", "lat", "")
cursorb:set("aredn", "@location[0]", "lat", "")
cursora:set("aredn", "@location[0]", "lon", "")
cursorb:set("aredn", "@location[0]", "lon", "")
out("Lat/lon purged.")
end end
else
cursora:set("aredn", "@location[0]", "lat", "")
cursorb:set("aredn", "@location[0]", "lat", "")
cursora:set("aredn", "@location[0]", "lon", "")
cursorb:set("aredn", "@location[0]", "lon", "")
out("Lat/lon purged.")
end end
cursora:commit("aredn") cursora:commit("aredn")
cursorb:commit("aredn") cursorb:commit("aredn")
cursor = cursora
end end
-- retrieve location data -- retrieve location data
@ -909,7 +914,19 @@ function foundLocation(position) {
} }
function noLocation() { function noLocation() {
alert('Could not find location. Try pinning it on the map.'); const req = new XMLHttpRequest();
req.addEventListener("load", function() {
try {
const json = JSON.parse(this.responseText);
foundLocation({ coords: { latitude: json.lat, longitude: json.lon }})
return;
}
catch (_) {
}
alert('Could not find location. Try pinning it on the map.');
});
req.open("GET", "http://ip-api.com/json");
req.send();
} }
function updDist(x) { function updDist(x) {
@ -1441,14 +1458,11 @@ html.print("<table cellpadding=5 border=0><tr><th colspan=4>Optional Settings</t
html.print("<tr><td colspan=4><hr /></td></tr>") html.print("<tr><td colspan=4><hr /></td></tr>")
html.print("<tr><td align=left>Latitude</td><td><input type=text name=latitude size=10 value='" .. lat .."' title='Latitude value (in decimal) (ie. 30.312354)' /></td>") html.print("<tr><td align=left>Latitude</td><td><input type=text name=latitude size=10 value='" .. lat .."' title='Latitude value (in decimal) (ie. 30.312354)' /></td>")
html.print("<td align='right' colspan='2'>") html.print("<td align='right' colspan='2'>")
html.print("<button type='button' id='findlocation' value='findloc' onClick='findLocation();'>Find Me!</button>&nbsp;") local locdisabled = pingOK and "" or "disabled"
html.print("<button " .. locdisabled .. " type='button' id='findlocation' value='findloc' onClick='findLocation();'>Find Me!</button>&nbsp;")
html.print("<input type=submit name='button_updatelocation' value='Apply Location Settings' title='Immediately use these location settings'>") html.print("<input type=submit name='button_updatelocation' value='Apply Location Settings' title='Immediately use these location settings'>")
html.print("&nbsp;<button type='button' id='hideshowmap' value='show' onClick='toggleMap(this);'>Show Map</button>&nbsp;") html.print("&nbsp;<button " .. locdisabled .. " type='button' id='hideshowmap' value='show' onClick='toggleMap(this);'>Show Map</button>&nbsp;")
if pingOK then html.print("<input " .. locdisabled .. " type='submit' name='button_uploaddata' value='Upload data to AREDN Servers' />&nbsp;")
html.print("<input type='submit' name='button_uploaddata' value='Upload data to AREDN Servers' />&nbsp;")
else
html.print("<button disabled type='button' title='Only available if this node has internet access'>Upload data to AREDN Servers</button>&nbsp;")
end
html.print("</td><tr><td align=left>Longitude</td><td><input type=text name=longitude size=10 value='" .. lon .. "' title='Longitude value (in decimal) (ie. -95.334454)' /></td><td align=left>Grid Square <input type=text name=gridsquare maxlength=6 size=6 value='" .. gridsquare .. "' title='Gridsquare value (ie. AB12cd)' /></td></tr><tr><td colspan=4><div id='map' style='height: 200px; display: none;'></div></td></tr><tr><td colspan=4><hr /></td></tr>") html.print("</td><tr><td align=left>Longitude</td><td><input type=text name=longitude size=10 value='" .. lon .. "' title='Longitude value (in decimal) (ie. -95.334454)' /></td><td align=left>Grid Square <input type=text name=gridsquare maxlength=6 size=6 value='" .. gridsquare .. "' title='Gridsquare value (ie. AB12cd)' /></td></tr><tr><td colspan=4><div id='map' style='height: 200px; display: none;'></div></td></tr><tr><td colspan=4><hr /></td></tr>")
html.print("<tr><td>Timezone </td><td><select name=time_zone_name tabindex=10>") html.print("<tr><td>Timezone </td><td><select name=time_zone_name tabindex=10>")

View File

@ -52,7 +52,7 @@ local dmode = "Realtime"
-- query string -- query string
local query = os.getenv("QUERY_STRING") local query = os.getenv("QUERY_STRING")
if query then if query then
require('luci.http') require('luci.ohttp')
local params = luci.http.urldecode_params(query) local params = luci.http.urldecode_params(query)
if params.realtime then if params.realtime then
dmode = "Realtime" dmode = "Realtime"

View File

@ -218,7 +218,7 @@ end
-- post data -- post data
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

View File

@ -57,7 +57,7 @@ local VPNVER = "1.1"
-- post_data -- post_data
local parms = {} local parms = {}
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

View File

@ -61,7 +61,7 @@ local VPNVER = "1.0"
-- post_data -- post_data
local parms = {} local parms = {}
if os.getenv("REQUEST_METHOD") == "POST" then if os.getenv("REQUEST_METHOD") == "POST" then
require('luci.http') require('luci.ohttp')
local request = luci.http.Request(nixio.getenv(), local request = luci.http.Request(nixio.getenv(),
function() function()
local v = io.read(1024) local v = io.read(1024)

BIN
files/www/dot.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 B

After

Width:  |  Height:  |  Size: 788 B

View File

@ -2,5 +2,5 @@
OPENWRT_SRC=https://github.com/openwrt/openwrt.git OPENWRT_SRC=https://github.com/openwrt/openwrt.git
# what branch, tag or commit in this repo? # what branch, tag or commit in this repo?
OPENWRT_COMMIT=v22.03.5 OPENWRT_COMMIT=v23.05.0

View File

@ -1,189 +0,0 @@
From d51e261e893451f9d0958a5ac39989d10b275e86 Mon Sep 17 00:00:00 2001
From: Andrew Cameron <apcameron@softhome.net>
Date: Sun, 6 Nov 2022 14:43:37 +0000
Subject: [PATCH 1/1] ath79: add support for TP-Link CPE605-v1 TP-Link
CPE605-v1 is an outdoor wireless CPE for 5 GHz with one Ethernet port based
on Atheros AR9344
Specifications:
- 560/450/225 MHz (CPU/DDR/AHB)
- 1x 10/100 Mbps Ethernet
- 64 MB of DDR2 RAM
- 8 MB of SPI-NOR Flash
- 23dBi high-gain directional antenna and a dedicated metal reflector
- Power, LAN, WLAN5G green LEDs
- 3x green RSSI LEDs
Flashing instructions:
Flash factory image through stock firmware WEB UI or through TFTP
To get to TFTP recovery just hold reset button while powering on for
around 4-5 seconds and release.
Rename factory image to recovery.bin
Stock TFTP server IP:192.168.0.100
Stock device TFTP adress:192.168.0.254
Signed-off-by: Andrew Cameron <apcameron@softhome.net>
---
.../ath79/dts/ar9344_tplink_cpe605-v1.dts | 33 +++++++++++++++++++
.../generic/base-files/etc/board.d/01_leds | 1 +
.../generic/base-files/etc/board.d/02_network | 1 +
target/linux/ath79/image/generic-tp-link.mk | 10 ++++++
4 files changed, 45 insertions(+)
create mode 100644 target/linux/ath79/dts/ar9344_tplink_cpe605-v1.dts
diff --git a/target/linux/ath79/dts/ar9344_tplink_cpe605-v1.dts b/target/linux/ath79/dts/ar9344_tplink_cpe605-v1.dts
new file mode 100644
index 0000000000..0c6eee7ba6
--- /dev/null
+++ b/target/linux/ath79/dts/ar9344_tplink_cpe605-v1.dts
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar9344_tplink_cpe.dtsi"
+
+/ {
+ model = "TP-Link CPE605 v1";
+ compatible = "tplink,cpe605-v1", "qca,ar9344";
+
+ aliases {
+ led-boot = &led_lan;
+ led-failsafe = &led_lan;
+ led-upgrade = &led_lan;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_lan: lan {
+ label = "green:lan";
+ gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+ };
+
+ wlan5g {
+ label = "green:wlan5g";
+ gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "phy0tpt";
+ };
+ };
+};
+
+&eth1 {
+ compatible = "syscon", "simple-mfd";
+};
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
index 606a194f7e..54d764f907 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
@@ -18,6 +18,7 @@ glinet,6416|\
glinet,gl-ar300m-lite|\
glinet,gl-ar300m16|\
pcs,cap324|\
+tplink,cpe605-v1|\
tplink,cpe610-v1|\
tplink,cpe610-v2|\
tplink,tl-wa1201-v2)
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index e47f66c2f2..2fa0487981 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -76,6 +76,7 @@ ath79_setup_interfaces()
tplink,cpe210-v3|\
tplink,cpe510-v2|\
tplink,cpe510-v3|\
+ tplink,cpe605-v1|\
tplink,cpe610-v1|\
tplink,cpe610-v2|\
tplink,cpe710-v1|\
diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
index 598085e50b..314ece1e03 100644
--- a/target/linux/ath79/image/generic-tp-link.mk
+++ b/target/linux/ath79/image/generic-tp-link.mk
@@ -350,6 +350,16 @@ define Device/tplink_cpe510-v3
endef
TARGET_DEVICES += tplink_cpe510-v3
+define Device/tplink_cpe605-v1
+ $(Device/tplink-safeloader-okli)
+ SOC := ar9344
+ IMAGE_SIZE := 7680k
+ DEVICE_MODEL := CPE605
+ DEVICE_VARIANT := v1
+ TPLINK_BOARD_ID := CPE605V1
+endef
+TARGET_DEVICES += tplink_cpe605-v1
+
define Device/tplink_cpe610-v1
$(Device/tplink-safeloader-okli)
SOC := ar9344
--
2.30.2
Index: openwrt/tools/firmware-utils/patches/0001-tplink-safeloader-add-TP-Link-CPE605-v1-Support.patch
===================================================================
--- /dev/null
+++ openwrt/tools/firmware-utils/patches/0001-tplink-safeloader-add-TP-Link-CPE605-v1-Support.patch
@@ -0,0 +1,64 @@
+From 2b43d1376a6945d07b2a87e48e3645eaa4f24d5a Mon Sep 17 00:00:00 2001
+From: Andrew Cameron <apcameron@softhome.net>
+Date: Wed, 9 Nov 2022 13:07:11 +0000
+Subject: [PATCH 1/1] tplink-safeloader: add TP-Link CPE605 v1 Support
+
+Enable creating images compatible with the TP-Link CPE605 v1 Router
+
+Signed-off-by: Andrew Cameron <apcameron@softhome.net>
+---
+ src/tplink-safeloader.c | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+diff --git a/src/tplink-safeloader.c b/src/tplink-safeloader.c
+index 7f9081d..b920191 100644
+--- a/src/tplink-safeloader.c
++++ b/src/tplink-safeloader.c
+@@ -468,6 +468,44 @@ static struct device_info boards[] = {
+ .last_sysupgrade_partition = "support-list",
+ },
+
++ /** Firmware layout for the CPE605V1 */
++ {
++ .id = "CPE605V1",
++ .vendor = "CPE605(TP-LINK|UN|N150-5):1.0\r\n",
++ .support_list =
++ "SupportList:\r\n"
++ "CPE605(TP-LINK|UN|N150-5|00000000):1.0\r\n"
++ "CPE605(TP-LINK|EU|N150-5|45550000):1.0\r\n"
++ "CPE605(TP-LINK|US|N150-5|55530000):1.0\r\n"
++ "CPE605(TP-LINK|UN|N150-5):1.0\r\n"
++ "CPE605(TP-LINK|EU|N150-5):1.0\r\n"
++ "CPE605(TP-LINK|US|N150-5):1.0\r\n",
++ .part_trail = 0xff,
++ .soft_ver = SOFT_VER_DEFAULT,
++
++ .partitions = {
++ {"fs-uboot", 0x00000, 0x20000},
++ {"partition-table", 0x20000, 0x02000},
++ {"default-mac", 0x30000, 0x00020},
++ {"serial-number", 0x30100, 0x00020},
++ {"product-info", 0x31100, 0x00100},
++ {"device-info", 0x31400, 0x00400},
++ {"signature", 0x32000, 0x00400},
++ {"device-id", 0x33000, 0x00100},
++ {"firmware", 0x40000, 0x770000},
++ {"soft-version", 0x7b0000, 0x00100},
++ {"support-list", 0x7b1000, 0x01000},
++ {"user-config", 0x7c0000, 0x10000},
++ {"default-config", 0x7d0000, 0x10000},
++ {"log", 0x7e0000, 0x10000},
++ {"radio", 0x7f0000, 0x10000},
++ {NULL, 0, 0}
++ },
++
++ .first_sysupgrade_partition = "os-image",
++ .last_sysupgrade_partition = "support-list",
++ },
++
+ /** Firmware layout for the CPE610V1 */
+ {
+ .id = "CPE610V1",
+--
+2.30.2
+

View File

@ -1,10 +1,9 @@
--- a/target/linux/ath79/image/generic-tp-link.mk --- a/target/linux/ath79/image/generic-tp-link.mk
+++ b/target/linux/ath79/image/generic-tp-link.mk +++ b/target/linux/ath79/image/generic-tp-link.mk
@@ -312,6 +312,7 @@ define Device/tplink_cpe220-v3 @@ -312,6 +312,7 @@
DEVICE_PACKAGES := rssileds DEVICE_PACKAGES := rssileds
TPLINK_BOARD_ID := CPE220V3 TPLINK_BOARD_ID := CPE220V3
LOADER_TYPE := elf LOADER_TYPE := elf
+ SUPPORTED_DEVICES += cpe220-v3 + SUPPORTED_DEVICES += cpe220-v3
endef endef
TARGET_DEVICES += tplink_cpe220-v3 TARGET_DEVICES += tplink_cpe220-v3

View File

@ -3,7 +3,7 @@
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
BOARDNAME:=Generic BOARDNAME:=Generic
-DEFAULT_PACKAGES += wpad-basic-wolfssl -DEFAULT_PACKAGES += wpad-basic-mbedtls
+DEFAULT_PACKAGES += wpad-mini +DEFAULT_PACKAGES += wpad-mini
define Target/Description define Target/Description
@ -14,8 +14,8 @@
KERNELNAME := vmlinux vmlinuz KERNELNAME := vmlinux vmlinuz
IMAGES_DIR := ../../.. IMAGES_DIR := ../../..
-DEFAULT_PACKAGES += wpad-basic-wolfssl -DEFAULT_PACKAGES += wpad-basic-mbedtls yafut
+DEFAULT_PACKAGES += wpad-mini +DEFAULT_PACKAGES += wpad-mini yafut
define Target/Description define Target/Description
Build firmware images for MikroTik devices based on Qualcomm Atheros Build firmware images for MikroTik devices based on Qualcomm Atheros
@ -25,7 +25,7 @@
FEATURES += nand FEATURES += nand
-DEFAULT_PACKAGES += wpad-basic-wolfssl -DEFAULT_PACKAGES += wpad-basic-mbedtls
+DEFAULT_PACKAGES += wpad-mini +DEFAULT_PACKAGES += wpad-mini
define Target/Description define Target/Description
@ -36,7 +36,7 @@
BOARDNAME:=Devices with small flash BOARDNAME:=Devices with small flash
FEATURES += small_flash FEATURES += small_flash
-DEFAULT_PACKAGES += wpad-basic-wolfssl -DEFAULT_PACKAGES += wpad-basic-mbedtls
+DEFAULT_PACKAGES += wpad-mini +DEFAULT_PACKAGES += wpad-mini
define Target/Description define Target/Description
@ -47,8 +47,8 @@
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
DEFAULT_PACKAGES += \ DEFAULT_PACKAGES += \
kmod-usb-dwc3-qcom \ kmod-usb-dwc3-qcom \
kmod-leds-gpio kmod-gpio-button-hotplug swconfig \ kmod-leds-gpio kmod-gpio-button-hotplug \
- kmod-ath10k-ct wpad-basic-wolfssl \ - kmod-ath10k-ct wpad-basic-mbedtls \
+ kmod-ath10k-ct wpad-mini \ + kmod-ath10k-ct wpad-mini \
kmod-usb3 kmod-usb-dwc3 ath10k-firmware-qca4019-ct \ kmod-usb3 kmod-usb-dwc3 ath10k-firmware-qca4019-ct \
uboot-envtools uboot-envtools

View File

@ -0,0 +1,28 @@
--- a/target/linux/generic/config-5.15
+++ b/target/linux/generic/config-5.15
@@ -3853,8 +3853,8 @@
# CONFIG_MTD_SPINAND_MT29F is not set
# CONFIG_MTD_SPI_NAND is not set
# CONFIG_MTD_SPI_NOR is not set
-# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set
-CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y
+CONFIG_MTD_SPI_NOR_SWP_DISABLE=y
+# CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE is not set
# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
# CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE is not set
--- /dev/null
+++ b/target/linux/generic/backport-5.15/420-flash-fixes.patch
@@ -0,0 +1,11 @@
+--- a/drivers/mtd/spi-nor/spansion.c
++++ b/drivers/mtd/spi-nor/spansion.c
+@@ -254,7 +254,7 @@
+ { "s25fl016k", INFO(0xef4015, 0, 64 * 1024, 32,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "s25fl064k", INFO(0xef4017, 0, 64 * 1024, 128,
+- SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
++ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_HAS_LOCK) },
+ { "s25fl116k", INFO(0x014015, 0, 64 * 1024, 32,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "s25fl132k", INFO(0x014016, 0, 64 * 1024, 64, SECT_4K) },

View File

@ -1,15 +0,0 @@
--- /dev/null
+++ b/target/linux/generic/backport-5.10/420-spansion-flash.patch
@@ -0,0 +1,12 @@
+--- a/drivers/mtd/spi-nor/spansion.c
++++ b/drivers/mtd/spi-nor/spansion.c
+@@ -83,8 +83,7 @@
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "s25fl016k", INFO(0xef4015, 0, 64 * 1024, 32,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+- { "s25fl064k", INFO(0xef4017, 0, 64 * 1024, 128,
+- SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
++ { "s25fl064k", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_HAS_LOCK) },
+ { "s25fl116k", INFO(0x014015, 0, 64 * 1024, 32,
+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { "s25fl132k", INFO(0x014016, 0, 64 * 1024, 64, SECT_4K) },

View File

@ -106,7 +106,7 @@ new file mode 100644
index 0000000000000..8e8b7a1689c87 index 0000000000000..8e8b7a1689c87
--- /dev/null --- /dev/null
+++ b/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig_lz77.c +++ b/target/linux/generic/files/drivers/platform/mikrotik/rb_hardconfig_lz77.c
@@ -0,0 +1,437 @@ @@ -0,0 +1,438 @@
+// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-License-Identifier: GPL-2.0-or-later
+/* +/*
+ * Copyright (C) 2023 John Thomson + * Copyright (C) 2023 John Thomson
@ -461,6 +461,7 @@ index 0000000000000..8e8b7a1689c87
+ fallthrough; + fallthrough;
+ case INSTR_LONG: + case INSTR_LONG:
+ if (opcode->offset == 0) { + if (opcode->offset == 0) {
+ unsigned int i;
+ /* this is a non-matching group */ + /* this is a non-matching group */
+ pr_debug(" non-match, len: 0x%x\n", + pr_debug(" non-match, len: 0x%x\n",
+ opcode->length); + opcode->length);
@ -479,7 +480,7 @@ index 0000000000000..8e8b7a1689c87
+ } + }
+ } + }
+ +
+ unsigned int i; for (i = opcode->length; i > 0; --i) { + for (i = opcode->length; i > 0; --i) {
+ *output_ptr = lz77_mikrotik_wlan_get_byte(in, input_bit); + *output_ptr = lz77_mikrotik_wlan_get_byte(in, input_bit);
+ ++output_ptr; + ++output_ptr;
+ input_bit += 8; + input_bit += 8;

View File

@ -1,99 +0,0 @@
--- /dev/null
+++ b/package/kernel/mac80211/patches/ath/301-ath-reset.patch
@@ -0,0 +1,96 @@
+diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
+index 4c81b1d7f417..fb7a2952d0ce 100644
+--- a/drivers/net/wireless/ath/ath9k/debug.c
++++ b/drivers/net/wireless/ath/ath9k/debug.c
+@@ -749,9 +749,9 @@ static int read_file_misc(struct seq_file *file, void *data)
+
+ static int read_file_reset(struct seq_file *file, void *data)
+ {
+- struct ieee80211_hw *hw = dev_get_drvdata(file->private);
+- struct ath_softc *sc = hw->priv;
++ struct ath_softc *sc = file->private;
+ static const char * const reset_cause[__RESET_TYPE_MAX] = {
++ [RESET_TYPE_USER] = "User reset",
+ [RESET_TYPE_BB_HANG] = "Baseband Hang",
+ [RESET_TYPE_BB_WATCHDOG] = "Baseband Watchdog",
+ [RESET_TYPE_FATAL_INT] = "Fatal HW Error",
+@@ -779,6 +779,55 @@ static int read_file_reset(struct seq_file *file, void *data)
+ return 0;
+ }
+
++static int open_file_reset(struct inode *inode, struct file *f)
++{
++ return single_open(f, read_file_reset, inode->i_private);
++}
++
++static ssize_t write_file_reset(struct file *file,
++ const char __user *user_buf,
++ size_t count, loff_t *ppos)
++{
++ struct ath_softc *sc = file_inode(file)->i_private;
++ struct ath_hw *ah = sc->sc_ah;
++ struct ath_common *common = ath9k_hw_common(ah);
++ unsigned long val;
++ char buf[32];
++ ssize_t len;
++
++ len = min(count, sizeof(buf) - 1);
++ if (copy_from_user(buf, user_buf, len))
++ return -EFAULT;
++
++ buf[len] = '\0';
++ if (kstrtoul(buf, 0, &val))
++ return -EINVAL;
++
++ if (val != 1)
++ return -EINVAL;
++
++ /* avoid rearming hw_reset_work on shutdown */
++ mutex_lock(&sc->mutex);
++ if (test_bit(ATH_OP_INVALID, &common->op_flags)) {
++ mutex_unlock(&sc->mutex);
++ return -EBUSY;
++ }
++
++ ath9k_queue_reset(sc, RESET_TYPE_USER);
++ mutex_unlock(&sc->mutex);
++
++ return count;
++}
++
++static const struct file_operations fops_reset = {
++ .read = seq_read,
++ .write = write_file_reset,
++ .open = open_file_reset,
++ .owner = THIS_MODULE,
++ .llseek = seq_lseek,
++ .release = single_release,
++};
++
+ void ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf,
+ struct ath_tx_status *ts, struct ath_txq *txq,
+ unsigned int flags)
+@@ -1393,8 +1442,8 @@ int ath9k_init_debug(struct ath_hw *ah)
+ read_file_queues);
+ debugfs_create_devm_seqfile(sc->dev, "misc", sc->debug.debugfs_phy,
+ read_file_misc);
+- debugfs_create_devm_seqfile(sc->dev, "reset", sc->debug.debugfs_phy,
+- read_file_reset);
++ debugfs_create_file("reset", 0600, sc->debug.debugfs_phy,
++ sc, &fops_reset);
+
+ ath9k_cmn_debug_recv(sc->debug.debugfs_phy, &sc->debug.stats.rxstats);
+ ath9k_cmn_debug_phy_err(sc->debug.debugfs_phy, &sc->debug.stats.rxstats);
+diff --git a/drivers/net/wireless/ath/ath9k/debug.h b/drivers/net/wireless/ath/ath9k/debug.h
+index 33826aa13687..389459c04d14 100644
+--- a/drivers/net/wireless/ath/ath9k/debug.h
++++ b/drivers/net/wireless/ath/ath9k/debug.h
+@@ -39,6 +39,7 @@ struct fft_sample_tlv;
+ #endif
+
+ enum ath_reset_type {
++ RESET_TYPE_USER,
+ RESET_TYPE_BB_HANG,
+ RESET_TYPE_BB_WATCHDOG,
+ RESET_TYPE_FATAL_INT,
+

View File

@ -58,10 +58,10 @@
+=================================================================== +===================================================================
+--- a/net/wireless/util.c +--- a/net/wireless/util.c
++++ b/net/wireless/util.c ++++ b/net/wireless/util.c
+@@ -76,13 +76,16 @@ int ieee80211_channel_to_frequency(int c +@@ -81,13 +81,16 @@ int ieee80211_channel_to_frequency(int c
+ return 0; /* not supported */
+ switch (band) { + switch (band) {
+ case NL80211_BAND_2GHZ: + case NL80211_BAND_2GHZ:
+ case NL80211_BAND_LC:
++ chan = (int)(unsigned char)chan; ++ chan = (int)(unsigned char)chan;
+ if (chan == 14) + if (chan == 14)
+ return MHZ_TO_KHZ(2484); + return MHZ_TO_KHZ(2484);
@ -406,7 +406,7 @@
+ */ + */
+ if (channel >= 1 && channel <= 14) { + if (channel >= 1 && channel <= 14) {
+ status->band = NL80211_BAND_2GHZ; + status->band = NL80211_BAND_2GHZ;
++ } else if (channel >= -4 && channel <= -1) { ++ } else if ((s8)channel >= -4 && (s8)channel <= -1) {
++ status->band = NL80211_BAND_2GHZ; ++ status->band = NL80211_BAND_2GHZ;
+ } else if (channel >= 36 && channel <= ATH10K_MAX_5G_CHAN) { + } else if (channel >= 36 && channel <= ATH10K_MAX_5G_CHAN) {
+ status->band = NL80211_BAND_5GHZ; + status->band = NL80211_BAND_5GHZ;

View File

@ -13,18 +13,19 @@
uci -q batch <<-EOF uci -q batch <<-EOF
set wireless.radio${devidx}=wifi-device set wireless.radio${devidx}=wifi-device
set wireless.radio${devidx}.type=mac80211 set wireless.radio${devidx}.type=mac80211
@@ -174,13 +180,12 @@ @@ -203,13 +203,13 @@
set wireless.radio${devidx}.channel=${channel} set wireless.${name}.channel=${channel}
set wireless.radio${devidx}.band=${mode_band} set wireless.${name}.band=${mode_band}
set wireless.radio${devidx}.htmode=$htmode set wireless.${name}.htmode=$htmode
- set wireless.radio${devidx}.disabled=1 - set wireless.${name}.disabled=1
set wireless.default_radio${devidx}=wifi-iface set wireless.default_${name}=wifi-iface
set wireless.default_radio${devidx}.device=radio${devidx} set wireless.default_${name}.device=${name}
set wireless.default_radio${devidx}.network=lan set wireless.default_${name}.network=lan
set wireless.default_radio${devidx}.mode=ap set wireless.default_${name}.mode=ap
- set wireless.default_radio${devidx}.ssid=OpenWrt - set wireless.default_${name}.ssid=OpenWrt
+ set wireless.default_radio${devidx}.ssid=${arednssid} + set wireless.default_${name}.ssid=${arednssid}
set wireless.default_radio${devidx}.encryption=none + set wireless.default_${name}.ifname=$(echo ${name} | sed s/radio/wlan/)
set wireless.default_${name}.encryption=none
EOF EOF
uci -q commit wireless uci -q commit wireless

View File

@ -1,9 +1,9 @@
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -113,7 +113,9 @@ ath79_setup_interfaces() @@ -126,7 +126,9 @@ ath79_setup_interfaces()
ubnt,unifi|\ zyxel,nwa1121-ni|\
wd,mynet-wifi-rangeextender|\ zyxel,nwa1123-ac|\
winchannel,wb2000) zyxel,nwa1123-ni)
- ucidef_set_interface_lan "eth0" - ucidef_set_interface_lan "eth0"
+ ucidef_set_interfaces_lan_wan "eth0" "eth0.1" + ucidef_set_interfaces_lan_wan "eth0" "eth0.1"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static" + ucidef_set_interface "wifi" device "wlan0" protocol "static"
@ -186,9 +186,9 @@
--- a/target/linux/ath79/nand/base-files/etc/board.d/02_network --- a/target/linux/ath79/nand/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/nand/base-files/etc/board.d/02_network +++ b/target/linux/ath79/nand/base-files/etc/board.d/02_network
@@ -9,7 +9,9 @@ ath79_setup_interfaces() @@ -9,7 +9,9 @@ ath79_setup_interfaces()
case "$board" in
aerohive,hiveap-121|\ aerohive,hiveap-121|\
glinet,gl-e750) glinet,gl-e750|\
meraki,mr18)
- ucidef_set_interface_lan "eth0" - ucidef_set_interface_lan "eth0"
+ ucidef_set_interfaces_lan_wan "eth0" "eth0.1" + ucidef_set_interfaces_lan_wan "eth0" "eth0.1"
+ ucidef_set_interface "dtdlink" device "eth0.2" protocol "static" + ucidef_set_interface "dtdlink" device "eth0.2" protocol "static"
@ -223,7 +223,7 @@
--- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network --- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
@@ -22,14 +22,21 @@ @@ -23,15 +23,22 @@
mikrotik,routerboard-wap-2nd|\ mikrotik,routerboard-wap-2nd|\
mikrotik,routerboard-wap-g-5hact2hnd|\ mikrotik,routerboard-wap-g-5hact2hnd|\
mikrotik,routerboard-wapr-2nd) mikrotik,routerboard-wapr-2nd)
@ -232,6 +232,7 @@
+ ucidef_set_interface "dtdlink" device "eth0.2 eth1.2" protocol "static" + ucidef_set_interface "dtdlink" device "eth0.2 eth1.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static" + ucidef_set_interface "wifi" device "wlan0" protocol "static"
;; ;;
mikrotik,routerboard-951ui-2hnd|\
- mikrotik,routerboard-951ui-2nd|\ - mikrotik,routerboard-951ui-2nd|\
- mikrotik,routerboard-952ui-5ac2nd) - mikrotik,routerboard-952ui-5ac2nd)
+ mikrotik,routerboard-951ui-2nd) + mikrotik,routerboard-951ui-2nd)
@ -275,9 +276,9 @@
+ ucidef_set_interface "dtdlink" device "eth0.2 eth1.2" protocol "static" + ucidef_set_interface "dtdlink" device "eth0.2 eth1.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static" + ucidef_set_interface "wifi" device "wlan0" protocol "static"
+ ;; + ;;
mikrotik,routerboard-951ui-2hnd|\
mikrotik,routerboard-951ui-2nd) mikrotik,routerboard-951ui-2nd)
ucidef_set_interface_wan "eth1" ucidef_set_interface_wan "eth1"
ucidef_add_switch "switch0" \
--- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network --- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
@ -305,6 +306,19 @@
--- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network --- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network +++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network
@@ -55,7 +55,9 @@
ubnt,nanobridge-m|\
ubnt,picostation-m|\
ubnt,nanostation-loco-m)
- ucidef_set_interface_lan "eth0"
+ ucidef_set_interfaces_lan_wan "eth0" "eth0.1"
+ ucidef_set_interface "dtdlink" device "eth0.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
;;
engenius,enh202-v1)
ucidef_set_interface_lan "eth0"
--- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network
@@ -111,7 +111,10 @@ @@ -111,7 +111,10 @@
"0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
;; ;;

View File

@ -1,36 +1,41 @@
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -30,12 +30,16 @@ @@ -26,7 +26,9 @@
engenius,emd1|\ pakedge,wr-1|\
teltonika,rutx50|\
zyxel,nbg6617)
- ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
+ ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan"
+ ucidef_set_interface "dtdlink" device "lan4.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
;;
8dev,jalapeno|\
alfa-network,ap120c-ac|\
@@ -54,11 +56,15 @@
meraki,mr33|\ meraki,mr33|\
meraki,mr74|\
mikrotik,lhgg-60ad|\ mikrotik,lhgg-60ad|\
- mikrotik,sxtsq-5-ac|\ - mikrotik,sxtsq-5-ac|\
netgear,ex6100v2|\ netgear,ex6100v2|\
netgear,ex6150v2|\ netgear,ex6150v2)
zyxel,wre6606) ucidef_set_interface_lan "lan"
ucidef_set_interface_lan "eth0"
;; ;;
+ mikrotik,sxtsq-5-ac) + mikrotik,sxtsq-5-ac)
+ ucidef_set_interfaces_lan_wan "lan" "lan.1" + ucidef_set_interfaces_lan_wan "lan" "lan.1"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static" + ucidef_set_interface "wifi" device "wlan0" protocol "static"
+ ucidef_set_interface "dtdlink" device "lan.2" protocol "static" + ucidef_set_interface "dtdlink" device "lan.2" protocol "static"
+ ;; + ;;
aruba,ap-303h|\ avm,fritzbox-7530)
teltonika,rutx10) ucidef_set_interface_lan "lan1 lan2 lan3 lan4"
ucidef_set_interfaces_lan_wan "eth0" "eth1" ;;
@@ -83,7 +83,9 @@
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network glinet,gl-a1300|\
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network glinet,gl-b1300|\
@@ -61,9 +61,9 @@ mobipromo,cm520-79f)
p2w,r619ac-64m|\ - ucidef_set_interfaces_lan_wan "lan1 lan2" "wan"
p2w,r619ac-128m|\ + ucidef_set_interfaces_lan_wan "lan1" "wan"
zyxel,nbg6617) + ucidef_set_interface "dtdlink" device "lan2.2" protocol "static"
- ucidef_set_interfaces_lan_wan "eth0" "eth1"
- ucidef_add_switch "switch0" \
- "0u@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
+ ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan"
+ ucidef_set_interface "dtdlink" device "lan4.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static" + ucidef_set_interface "wifi" device "wlan0" protocol "static"
;; ;;
avm,fritzbox-4040|\ mikrotik,wap-ac|\
linksys,ea6350v3|\ mikrotik,wap-ac-lte|\

View File

@ -0,0 +1,13 @@
--- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
@@ -80,7 +80,9 @@
xiaomi,mi-router-4|\
xiaomi,mi-router-4a-gigabit|\
xiaomi,mi-router-4a-gigabit-v2)
- ucidef_set_interfaces_lan_wan "lan1 lan2" "wan"
+ ucidef_set_interfaces_lan_wan "lan2" "wan"
+ ucidef_set_interface "dtdlink" device "lan1.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
;;
bolt,arion)
ucidef_set_interfaces_lan_wan "lan" "wan"

View File

@ -1,13 +0,0 @@
--- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network
@@ -57,7 +57,9 @@
ubnt,nanostation-loco-m|\
ubnt,powerbridge-m|\
ubnt,rocket-m)
- ucidef_set_interface_lan "eth0"
+ ucidef_set_interfaces_lan_wan "eth0" "eth0.1"
+ ucidef_set_interface "dtdlink" device "eth0.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
;;
engenius,enh202-v1)
ucidef_set_interface_lan "eth0"

View File

@ -5,7 +5,7 @@ Index: openwrt/feeds/packages/net/iperf3/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=iperf PKG_NAME:=iperf
PKG_VERSION:=3.11 PKG_VERSION:=3.15
-PKG_RELEASE:=1 -PKG_RELEASE:=1
+PKG_RELEASE:=1AREDN +PKG_RELEASE:=1AREDN

View File

@ -1,5 +1,5 @@
--- /dev/null --- /dev/null
+++ b/target/linux/ath79/patches-5.10/903-phy-ar8216-no-van-ports.patch +++ b/target/linux/ath79/patches-5.15/903-phy-ar8216-no-van-ports.patch
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
+--- a/drivers/net/phy/ar8216.c +--- a/drivers/net/phy/ar8216.c
++++ b/drivers/net/phy/ar8216.c ++++ b/drivers/net/phy/ar8216.c
@ -8,9 +8,9 @@
+ continue; + continue;
+ +
+- portmask[i] = 1 << AR8216_PORT_CPU; +- portmask[i] = 1 << AR8216_PORT_CPU;
++ for (j = 0; j < dev->ports; j++) { ++ for (j = 0; j < dev->ports; j++) {
++ portmask[i] |= (1 << j); ++ portmask[i] |= (1 << j);
++ } ++ }
+ portmask[AR8216_PORT_CPU] |= (1 << i); + portmask[AR8216_PORT_CPU] |= (1 << i);
+ } + }
+ } + }

View File

@ -1,15 +1,15 @@
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -1096,7 +1096,11 @@ drv_mac80211_setup() { @@ -1102,7 +1102,11 @@
wireless_set_data phy="$phy" txantenna="$txantenna" rxantenna="$rxantenna"
iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1 iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1
iw phy "$phy" set antenna_gain $antenna_gain >/dev/null 2>&1
- iw phy "$phy" set distance "$distance" >/dev/null 2>&1 - iw phy "$phy" set distance "$distance" >/dev/null 2>&1
+ if [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ]; then + if [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ]; then
+ iw phy "$phy" set distance auto + iw phy "$phy" set distance auto
+ else + else
+ iw phy "$phy" set distance "$distance" + iw phy "$phy" set distance "$distance"
+ fi + fi
if [ -n "$txpower" ]; then if [ -n "$txpower" ]; then
iw phy "$phy" set txpower fixed "${txpower%%.*}00" iw phy "$phy" set txpower fixed "${txpower%%.*}00"

View File

@ -1,14 +1,14 @@
--- a/config/Config-build.in --- a/config/Config-build.in
+++ b/config/Config-build.in +++ b/config/Config-build.in
@@ -156,7 +156,7 @@ @@ -160,7 +160,7 @@
Packages can choose to opt-out via setting PKG_BUILD_FLAGS:=no-lto
config IPV6 config IPV6
bool - def_bool y
prompt "Enable IPv6 support in packages" + def_bool n
- default y
+ default n comment "Stripping options"
help
Enables IPv6 support in kernel (builtin) and packages.
--- a/include/netfilter.mk --- a/include/netfilter.mk
+++ b/include/netfilter.mk +++ b/include/netfilter.mk
@@ -325,7 +325,7 @@ @@ -325,7 +325,7 @@
@ -46,7 +46,7 @@
--- /dev/null --- /dev/null
+++ b/package/network/config/firewall4/patches/001-disable-ipv6.patch +++ b/package/network/config/firewall4/patches/001-disable-ipv6.patch
@@ -0,0 +1,119 @@ @@ -0,0 +1,139 @@
+--- a/root/usr/share/firewall4/main.uc +--- a/root/usr/share/firewall4/main.uc
++++ b/root/usr/share/firewall4/main.uc ++++ b/root/usr/share/firewall4/main.uc
+@@ -33,14 +33,14 @@ function reload_sets() { +@@ -33,14 +33,14 @@ function reload_sets() {
@ -166,3 +166,23 @@
+ {%+ include("zone-match.uc", { egress, rule }) -%} + {%+ include("zone-match.uc", { egress, rule }) -%}
+ {%+ if (zone.counter): -%} + {%+ if (zone.counter): -%}
+ counter {%+ endif -%} + counter {%+ endif -%}
+--- a/root/usr/share/firewall4/templates/mangle-rule.uc
+--- a/root/usr/share/firewall4/templates/mangle-rule.uc
+@@ -1,7 +1,7 @@
+ {%+ for (let src_devices in rule.src?.zone) }
+
+ {%+ if (rule.family && !rule.has_addrs): -%}
+- meta nfproto {{ fw4.nfproto(rule.family) }} {%+ endif -%}
++ {%+ endif -%}
+ {%+ if (!rule.proto.any && !rule.has_ports && !rule.icmp_types && !rule.icmp_codes): -%}
+ meta l4proto {{
+ (rule.proto.name == 'icmp' && rule.family == 6) ? 'ipv6-icmp' : rule.proto.name
+--- a/root/usr/share/firewall4/templates/zone-drop-invalid.uc
++++ a/root/usr/share/firewall4/templates/zone-drop-invalid.uc
+@@ -1,5 +1,5 @@
+ {%+ if (zone.masq ^ zone.masq6): -%}
+- meta nfproto {{ fw4.nfproto(zone.masq ? 4 : 6) }} {%+ endif -%}
++ {%+ endif -%}
+ {%+ include("zone-match.uc", { egress: true, rule }) -%}
+ ct state invalid {%+ if (zone.counter): -%}
+ counter {%+ endif -%}

File diff suppressed because it is too large Load Diff

View File

@ -1,102 +1,5 @@
diff --git a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
index 1955cd288f..0773f1a5af 100644
--- a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
+++ b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h
@@ -65,7 +65,7 @@
#define AG71XX_TX_RING_SIZE_DEFAULT 128
#define AG71XX_RX_RING_SIZE_DEFAULT 256
-#define AG71XX_TX_RING_SIZE_MAX 128
+#define AG71XX_TX_RING_SIZE_MAX 256
#define AG71XX_RX_RING_SIZE_MAX 256
#ifdef CONFIG_AG71XX_DEBUG
diff --git a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
index 2fc18d5979..d553c62401 100644
--- a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
+++ b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c
@@ -34,7 +34,7 @@ MODULE_PARM_DESC(msg_level, "Message level (-1=defaults,0=none,...,16=all)");
#define ETH_SWITCH_HEADER_LEN 2
-static int ag71xx_tx_packets(struct ag71xx *ag, bool flush);
+static int ag71xx_tx_packets(struct ag71xx *ag, bool flush, int budget);
static inline unsigned int ag71xx_max_frame_len(unsigned int mtu)
{
@@ -478,7 +478,7 @@ static void ag71xx_fast_reset(struct ag71xx *ag)
mii_reg = ag71xx_rr(ag, AG71XX_REG_MII_CFG);
rx_ds = ag71xx_rr(ag, AG71XX_REG_RX_DESC);
- ag71xx_tx_packets(ag, true);
+ ag71xx_tx_packets(ag, true, 0);
reset_control_assert(ag->mac_reset);
udelay(10);
@@ -1245,7 +1245,7 @@ static bool ag71xx_check_dma_stuck(struct ag71xx *ag)
return false;
}
-static int ag71xx_tx_packets(struct ag71xx *ag, bool flush)
+static int ag71xx_tx_packets(struct ag71xx *ag, bool flush, int budget)
{
struct ag71xx_ring *ring = &ag->tx_ring;
bool dma_stuck = false;
@@ -1278,7 +1278,7 @@ static int ag71xx_tx_packets(struct ag71xx *ag, bool flush)
if (!skb)
continue;
- dev_kfree_skb_any(skb);
+ napi_consume_skb(skb, budget);
ring->buf[i].skb = NULL;
bytes_compl += ring->buf[i].len;
@@ -1352,7 +1352,11 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit)
dev->stats.rx_packets++;
dev->stats.rx_bytes += pktlen;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,12,0)
skb = build_skb(ring->buf[i].rx_buf, ag71xx_buffer_size(ag));
+#else
+ skb = napi_build_skb(ring->buf[i].rx_buf, ag71xx_buffer_size(ag));
+#endif
if (!skb) {
skb_free_frag(ring->buf[i].rx_buf);
goto next;
@@ -1400,7 +1404,7 @@ static int ag71xx_poll(struct napi_struct *napi, int limit)
int tx_done;
int rx_done;
- tx_done = ag71xx_tx_packets(ag, false);
+ tx_done = ag71xx_tx_packets(ag, false, limit);
DBG("%s: processing RX ring\n", dev->name);
rx_done = ag71xx_rx_packets(ag, limit);
diff --git a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_mdio.c b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_mdio.c
index a58ee3346b..fd05dbd0ca 100644
--- a/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_mdio.c
+++ b/target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_mdio.c
@@ -201,10 +201,6 @@ static int ag71xx_mdio_probe(struct platform_device *pdev)
mii_bus->parent = amdev;
snprintf(mii_bus->id, MII_BUS_ID_SIZE, "%s.%d", np->name, bus_count++);
- if (!builtin_switch &&
- of_property_read_u32(np, "phy-mask", &mii_bus->phy_mask))
- mii_bus->phy_mask = 0;
-
for (i = 0; i < PHY_MAX_ADDR; i++)
mii_bus->irq[i] = PHY_POLL;
--- a/target/linux/ath79/dts/qca9558_ubnt_rocket-5ac-lite.dts --- a/target/linux/ath79/dts/qca9558_ubnt_rocket-5ac-lite.dts
+++ b/target/linux/ath79/dts/qca9558_ubnt_rocket-5ac-lite.dts +++ b/target/linux/ath79/dts/qca9558_ubnt_rocket-5ac-lite.dts
@@ -21,7 +21,6 @@
&mdio0 {
status = "okay";
- phy-mask = <4>;
phy4: ethernet-phy@4 {
phy-mode = "sgmii";
reg = <4>;
@@ -36,6 +35,14 @@ @@ -36,6 +35,14 @@
nvmem-cell-names = "mac-address"; nvmem-cell-names = "mac-address";
phy-mode = "sgmii"; phy-mode = "sgmii";

View File

@ -277,7 +277,7 @@ Index: openwrt/package/kernel/ath10k-ct/patches/999-0002-ath10k-5_10Mhz.patch
+ * OUI specified by WMI_SCAN_PROB_REQ_OUI_CMDID to the Probe Request frame. + * OUI specified by WMI_SCAN_PROB_REQ_OUI_CMDID to the Probe Request frame.
--- /dev/null --- /dev/null
+++ openwrt/package/kernel/ath10k-ct/patches/999-0004-ath10k-coverage.patch +++ openwrt/package/kernel/ath10k-ct/patches/999-0004-ath10k-coverage.patch
@@ -0,0 +1,26 @@ @@ -0,0 +1,34 @@
+--- a/ath10k-5.15/hw.c +--- a/ath10k-5.15/hw.c
++++ b/ath10k-5.15/hw.c ++++ b/ath10k-5.15/hw.c
+@@ -655,23 +655,6 @@ +@@ -655,23 +655,6 @@
@ -304,3 +304,11 @@ Index: openwrt/package/kernel/ath10k-ct/patches/999-0002-ath10k-5_10Mhz.patch
+ +
+ /* Recalculate the register values by adding the additional propagation + /* Recalculate the register values by adding the additional propagation
+ * delay (3us per coverage class). + * delay (3us per coverage class).
+@@ -719,7 +719,6 @@
+
+ ath10k_wmi_dbglog_cfg(ar, fw_dbglog_mask, fw_dbglog_level);
+
+-store_regs:
+ /* After an error we will not retry setting the coverage class. */
+ spin_lock_bh(&ar->data_lock);
+ ar->fw_coverage.coverage_class = value;

View File

@ -0,0 +1,88 @@
--- /dev/null
+++ b/package/kernel/mt76/patches/001-extend-channels.patch
@@ -0,0 +1,85 @@
+--- a/mac80211.c
++++ b/mac80211.c
+@@ -29,6 +29,10 @@
+ }
+
+ static const struct ieee80211_channel mt76_channels_2ghz[] = {
++ CHAN2G(-4, 2387),
++ CHAN2G(-3, 2392),
++ CHAN2G(-2, 2397),
++ CHAN2G(-1, 2402),
+ CHAN2G(1, 2412),
+ CHAN2G(2, 2417),
+ CHAN2G(3, 2422),
+@@ -64,19 +68,61 @@
+ CHAN5G(120, 5600),
+ CHAN5G(124, 5620),
+ CHAN5G(128, 5640),
++
++ CHAN5G(131, 5655),
+ CHAN5G(132, 5660),
++ CHAN5G(133, 5665),
++ CHAN5G(134, 5670),
++ CHAN5G(135, 5675),
+ CHAN5G(136, 5680),
++ CHAN5G(137, 5685),
++ CHAN5G(138, 5690),
++ CHAN5G(139, 5695),
+ CHAN5G(140, 5700),
++ CHAN5G(141, 5705),
++ CHAN5G(142, 5710),
++ CHAN5G(143, 5715),
+ CHAN5G(144, 5720),
+-
++ CHAN5G(145, 5725),
++ CHAN5G(146, 5730),
++ CHAN5G(147, 5735),
++ CHAN5G(148, 5740),
+ CHAN5G(149, 5745),
++ CHAN5G(150, 5750),
++ CHAN5G(151, 5755),
++ CHAN5G(152, 5760),
+ CHAN5G(153, 5765),
++ CHAN5G(154, 5770),
++ CHAN5G(155, 5775),
++ CHAN5G(156, 5780),
+ CHAN5G(157, 5785),
++ CHAN5G(158, 5790),
++ CHAN5G(159, 5795),
++ CHAN5G(160, 5800),
+ CHAN5G(161, 5805),
++ CHAN5G(162, 5810),
++ CHAN5G(163, 5815),
++ CHAN5G(164, 5820),
+ CHAN5G(165, 5825),
++ CHAN5G(166, 5830),
++ CHAN5G(167, 5835),
++ CHAN5G(168, 5840),
+ CHAN5G(169, 5845),
++ CHAN5G(170, 5850),
++ CHAN5G(171, 5855),
++ CHAN5G(172, 5860),
+ CHAN5G(173, 5865),
++ CHAN5G(174, 5870),
++ CHAN5G(175, 5875),
++ CHAN5G(176, 5880),
+ CHAN5G(177, 5885),
++ CHAN5G(178, 5890),
++ CHAN5G(179, 5895),
++ CHAN5G(180, 5900),
++ CHAN5G(181, 5905),
++ CHAN5G(182, 5910),
++ CHAN5G(183, 5915),
++ CHAN5G(184, 5920),
+ };
+
+ static const struct ieee80211_channel mt76_channels_6ghz[] = {
+@@ -175,7 +221,7 @@
+ EXPORT_SYMBOL_GPL(mt76_rates);
+
+ static const struct cfg80211_sar_freq_ranges mt76_sar_freq_ranges[] = {
+- { .start_freq = 2402, .end_freq = 2494, },
++ { .start_freq = 2382, .end_freq = 2494, },
+ { .start_freq = 5150, .end_freq = 5350, },
+ { .start_freq = 5350, .end_freq = 5470, },
+ { .start_freq = 5470, .end_freq = 5725, },

View File

@ -1,6 +1,6 @@
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -1081,7 +1081,7 @@ @@ -1086,7 +1086,7 @@
staidx=0 staidx=0
[ -n "$chanbw" ] && { [ -n "$chanbw" ] && {
@ -9,14 +9,12 @@
[ -f "$file" ] && echo "$chanbw" > "$file" [ -f "$file" ] && echo "$chanbw" > "$file"
done done
} }
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh @@ -1104,6 +1104,8 @@
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1
@@ -1098,6 +1098,8 @@ if [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ]; then
iw phy "$phy" set antenna_gain $antenna_gain >/dev/null 2>&1 iw phy "$phy" set distance auto
if [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ]; then + elif [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath10k ]; then
iw phy "$phy" set distance auto + iw phy "$phy" set distance auto
+ elif [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath10k ]; then else
+ iw phy "$phy" set distance auto iw phy "$phy" set distance "$distance"
else fi
iw phy "$phy" set distance "$distance"
fi

View File

@ -38,9 +38,10 @@
--- /dev/null --- /dev/null
+++ b/target/linux/ath79/dts/ar9344_mikrotik_routerboard-ldf-5nd.dts +++ b/target/linux/ath79/dts/ar9344_mikrotik_routerboard-ldf-5nd.dts
@@ -0,0 +1,91 @@ @@ -0,0 +1,92 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+ +
+#include "ar9344_mikrotik_routerboard.dtsi"
+#include "ar9344_mikrotik_routerboard-16m-nor.dtsi" +#include "ar9344_mikrotik_routerboard-16m-nor.dtsi"
+ +
+#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/gpio/gpio.h>
@ -132,9 +133,10 @@
+}; +};
--- /dev/null --- /dev/null
+++ b/target/linux/ath79/dts/ar9344_mikrotik_routerboard-sxt-5nd.dts +++ b/target/linux/ath79/dts/ar9344_mikrotik_routerboard-sxt-5nd.dts
@@ -0,0 +1,91 @@ @@ -0,0 +1,92 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+ +
+#include "ar9344_mikrotik_routerboard.dtsi"
+#include "ar9344_mikrotik_routerboard-16m-nor.dtsi" +#include "ar9344_mikrotik_routerboard-16m-nor.dtsi"
+ +
+#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/gpio/gpio.h>
@ -237,11 +239,10 @@
+}; +};
--- a/target/linux/ipq40xx/image/mikrotik.mk --- a/target/linux/ipq40xx/image/mikrotik.mk
+++ b/target/linux/ipq40xx/image/mikrotik.mk +++ b/target/linux/ipq40xx/image/mikrotik.mk
@@ -62,3 +62,27 @@ @@ -71,6 +71,30 @@
DEVICE_PACKAGES := rssileds
endef endef
TARGET_DEVICES += mikrotik_sxtsq-5-ac TARGET_DEVICES += mikrotik_sxtsq-5-ac
+
+define Device/mikrotik_ldf-5acd +define Device/mikrotik_ldf-5acd
+ $(call Device/mikrotik_nor) + $(call Device/mikrotik_nor)
+ DEVICE_MODEL := RouterBOARD LDF 5 AC (RBLDFG-5acD) + DEVICE_MODEL := RouterBOARD LDF 5 AC (RBLDFG-5acD)
@ -265,6 +266,11 @@
+ DEVICE_PACKAGES := rssileds + DEVICE_PACKAGES := rssileds
+endef +endef
+TARGET_DEVICES += mikrotik_lhgg-5acd-xl +TARGET_DEVICES += mikrotik_lhgg-5acd-xl
+
define Device/mikrotik_wap-ac
$(call Device/mikrotik_nor)
DEVICE_MODEL := wAP ac
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -35,6 +35,8 @@ @@ -35,6 +35,8 @@
@ -511,7 +517,7 @@
+ status = "okay"; + status = "okay";
+}; +};
+ +
+&gmac0 { +&gmac {
+ status = "okay"; + status = "okay";
+}; +};
+ +
@ -551,49 +557,44 @@
+}; +};
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -197,6 +197,8 @@ @@ -210,6 +210,8 @@
mikrotik,cap-ac |\
mikrotik,hap-ac2 |\
mikrotik,hap-ac3 |\ mikrotik,hap-ac3 |\
mikrotik,hap-ac3-lte6-kit |\
mikrotik,sxtsq-5-ac |\
+ mikrotik,lhgg-5acd* |\ + mikrotik,lhgg-5acd* |\
+ mikrotik,ldf-5acd |\ + mikrotik,ldf-5acd |\
mikrotik,sxtsq-5-ac) mikrotik,wap-ac |\
wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data" mikrotik,wap-ac-lte |\
( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x8000 0x2f20 ) || \ mikrotik,wap-r-ac)
@@ -236,6 +237,8 @@ @@ -249,6 +251,8 @@
mikrotik,cap-ac |\
mikrotik,hap-ac2 |\ mikrotik,hap-ac2 |\
mikrotik,hap-ac3 |\ mikrotik,hap-ac3 |\
mikrotik,hap-ac3-lte6-kit |\
+ mikrotik,lhgg-5acd* |\ + mikrotik,lhgg-5acd* |\
+ mikrotik,ldf-5acd |\ + mikrotik,ldf-5acd |\
mikrotik,sxtsq-5-ac) mikrotik,wap-ac |\
wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data" mikrotik,wap-ac-lte |\
( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0xaf20 0x2f20 ) || \ mikrotik,wap-r-ac)
@@ -265,6 +269,8 @@
mikrotik,hap-ac3 |\
mikrotik,hap-ac3-lte6-kit |\
mikrotik,sxtsq-5-ac |\
+ mikrotik,lhgg-5acd*|\
+ mikrotik,ldf-5acd|\
mikrotik,wap-ac |\
mikrotik,wap-ac-lte |\
mikrotik,wap-r-ac)
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh --- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -163,12 +163,14 @@ @@ -181,6 +181,8 @@
;;
mikrotik,cap-ac|\ mikrotik,cap-ac|\
mikrotik,hap-ac2|\ mikrotik,hap-ac2|\
mikrotik,hap-ac3-lte6-kit|\
+ mikrotik,lhgg-5acd*|\ + mikrotik,lhgg-5acd*|\
+ mikrotik,ldf-5acd|\ + mikrotik,ldf-5acd|\
mikrotik,lhgg-60ad|\ mikrotik,lhgg-60ad|\
mikrotik,sxtsq-5-ac) mikrotik,sxtsq-5-ac|\
[ "$(rootfs_type)" = "tmpfs" ] && mtd erase firmware mikrotik,wap-ac|\
default_do_upgrade "$1"
;;
mikrotik,hap-ac3)
platform_do_upgrade_mikrotik_nand "$1"
;;
netgear,rbr50 |\
--- a/target/linux/ath79/image/common-mikrotik.mk
+++ b/target/linux/ath79/image/common-mikrotik.mk
@@ -17,5 +17,4 @@
IMAGE/sysupgrade.bin = append-kernel | kernel2minor -s 2048 -e -c | \
sysupgrade-tar kernel=$$$$@ | append-metadata
DEVICE_PACKAGES := nand-utils
- DEFAULT := n
endef
--- a/target/linux/ath79/image/mikrotik.mk --- a/target/linux/ath79/image/mikrotik.mk
+++ b/target/linux/ath79/image/mikrotik.mk +++ b/target/linux/ath79/image/mikrotik.mk
@@ -28,6 +28,16 @@ @@ -28,6 +28,16 @@
@ -668,246 +669,14 @@
--- /dev/null --- /dev/null
+++ b/target/linux/ath79/dts/ar9342_mikrotik_routerboard-912uag-5hpnd.dts +++ b/target/linux/ath79/dts/ar9342_mikrotik_routerboard-912uag-5hpnd.dts
@@ -0,0 +1,240 @@ @@ -0,0 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-License-Identifier: GPL-2.0-only
+ +
+#include "ar9344.dtsi" +#include "ar9342_mikrotik_routerboard-912uag-2hpnd.dts"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+ +
+/ { +/ {
+ compatible = "mikrotik,routerboard-912uag-5hpnd", "qca,ar9342"; + compatible = "mikrotik,routerboard-912uag-5hpnd", "qca,ar9342";
+ model = "MikroTik RouterBOARD 912UAG-5HPnD"; + model = "MikroTik RouterBOARD 912UAG-5HPnD";
+
+ aliases {
+ led-boot = &led_power;
+ led-failsafe = &led_power;
+ led-running = &led_power;
+ led-upgrade = &led_power;
+ };
+
+ gpio_key: gpio_key {
+ compatible = "mikrotik,gpio-rb91x-key";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio = <&gpio 15 GPIO_ACTIVE_HIGH>;
+ };
+
+ gpio_latch: gpio_latch {
+ compatible = "gpio-latch";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpios = <&gpio 0 GPIO_ACTIVE_HIGH>,
+ <&gpio 1 GPIO_ACTIVE_HIGH>,
+ <&gpio 2 GPIO_ACTIVE_HIGH>,
+ <&gpio 3 GPIO_ACTIVE_HIGH>,
+ <0>, /* Not connected */
+ <&gpio 13 GPIO_ACTIVE_HIGH>,
+ <&gpio 14 GPIO_ACTIVE_HIGH>,
+ <&gpio_key 0 GPIO_ACTIVE_HIGH>,
+ <&gpio 11 GPIO_ACTIVE_LOW>; /* Latch Enable */
+ };
+
+ nand_gpio {
+ compatible = "mikrotik,rb91x-nand";
+
+ gpios = <&gpio_latch 3 GPIO_ACTIVE_HIGH>, /* Read */
+ <&gpio 4 GPIO_ACTIVE_HIGH>, /* Ready (RDY) */
+ <&gpio_latch 5 GPIO_ACTIVE_LOW>, /* Chip Enable (nCE) */
+ <&gpio_latch 6 GPIO_ACTIVE_HIGH>, /* Command Latch Enable (CLE) */
+ <&gpio_latch 7 GPIO_ACTIVE_HIGH>, /* Address Latch Enable (ALE) */
+ <&gpio 12 GPIO_ACTIVE_LOW>, /* Read/Write Enable (nRW) */
+ <&gpio_latch 8 GPIO_ACTIVE_LOW>, /* Latch Enable (nLE) */
+ <&gpio_key 2 GPIO_ACTIVE_HIGH>; /* Key poll disable */
+
+ partitions {
+ compatible = "fixed-partitions";
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "booter";
+ reg = <0x0 0x0040000>;
+ read-only;
+ };
+
+ partition@40000 {
+ label = "kernel";
+ reg = <0x0040000 0x03c0000>;
+ };
+
+ partition@400000 {
+ label = "ubi";
+ reg = <0x0400000 0x7c00000>;
+ };
+ };
+ };
+
+ keys {
+ compatible = "gpio-keys-polled";
+ poll-interval = <20>;
+
+ button@0 {
+ label = "reset";
+ linux,code = <KEY_RESTART>;
+ gpios = <&gpio_key 1 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_power: power {
+ label = "green:power";
+ gpios = <&gpio_latch 1 GPIO_ACTIVE_HIGH>;
+ default-state = "on";
+ };
+
+ user {
+ label = "green:user";
+ gpios = <&gpio_latch 2 GPIO_ACTIVE_HIGH>;
+ };
+
+ led1 {
+ label = "green:led1";
+ gpios = <&ssr 0 GPIO_ACTIVE_HIGH>;
+ };
+
+ led2 {
+ label = "green:led2";
+ gpios = <&ssr 1 GPIO_ACTIVE_HIGH>;
+ };
+
+ led3 {
+ label = "green:led3";
+ gpios = <&ssr 2 GPIO_ACTIVE_HIGH>;
+ };
+
+ led4 {
+ label = "green:led4";
+ gpios = <&ssr 3 GPIO_ACTIVE_HIGH>;
+ };
+
+ led5 {
+ label = "green:led5";
+ gpios = <&ssr 4 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ gpio-export {
+ compatible = "gpio-export";
+
+ beeper {
+ gpio-export,name = "beeper";
+ gpio-export,output = <1>; /* Must be 1 to avoid EMI induced clicking noise */
+ gpios = <&ssr 5 GPIO_ACTIVE_HIGH>;
+ };
+
+ usb_power {
+ gpio-export,name = "power-usb";
+ gpio-export,output = <1>;
+ gpios = <&ssr 6 GPIO_ACTIVE_HIGH>;
+ };
+
+ pcie_power {
+ gpio-export,name = "power-pcie";
+ gpio-export,output = <0>;
+ gpios = <&ssr 7 GPIO_ACTIVE_HIGH>;
+ };
+ };
+};
+
+&ref {
+ clock-frequency = <40000000>;
+};
+
+&spi {
+ status = "okay";
+
+ compatible = "qca,ar7100-spi";
+
+ cs-gpios = <0>, <&gpio_latch 0 GPIO_ACTIVE_LOW>;
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <50000000>;
+
+ partitions {
+ compatible = "mikrotik,routerboot-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "routerboot";
+ reg = <0x0 0x0>;
+ read-only;
+ };
+
+ hard_config: hard_config {
+ read-only;
+ };
+
+ bios {
+ size = <0x1000>;
+ read-only;
+ };
+
+ soft_config {
+ };
+ };
+ };
+
+ ssr: ssr@1 {
+ compatible = "fairchild,74hc595";
+ gpio-controller;
+ #gpio-cells = <2>;
+ registers-number = <1>;
+ reg = <1>;
+ spi-max-frequency = <50000000>;
+ };
+};
+
+&mdio0 {
+ status = "okay";
+
+ phy-mask = <0>;
+
+ phy0: ethernet-phy@0 {
+ reg = <0>;
+ };
+};
+
+&eth0 {
+ status = "okay";
+
+ phy-mode = "rgmii-id";
+ phy-handle = <&phy0>;
+ pll-data = <0x02000000 0x00000101 0x00001313>;
+
+ gmac-config {
+ device = <&gmac>;
+ rgmii-gmac0 = <1>;
+ rxd-delay = <1>;
+ txd-delay = <1>;
+ };
+};
+
+&wmac {
+ status = "okay";
+ qca,no-eeprom;
+};
+
+&pcie {
+ status = "okay";
+};
+
+&usb {
+ status = "okay";
+};
+
+&usb_phy {
+ status = "okay";
+}; +};
--- /dev/null --- /dev/null
+++ b/target/linux/ath79/dts/ar9342_mikrotik_routerboard-911g-5hpnd-qrt.dts +++ b/target/linux/ath79/dts/ar9342_mikrotik_routerboard-911g-5hpnd-qrt.dts
@ -922,19 +691,23 @@
+}; +};
--- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network --- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
@@ -15,6 +15,8 @@ @@ -14,8 +14,10 @@
ucidef_add_switch "switch1" \
"0@eth1" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3" "0@eth1" "1:lan:4" "2:lan:1" "3:lan:2" "4:lan:3"
;; ;;
+ mikrotik,routerboard-911g-5hpnd*|\ + mikrotik,routerboard-911g-5hpnd*|\
mikrotik,routerboard-911-lite|\
mikrotik,routerboard-912uag-2hpnd|\ mikrotik,routerboard-912uag-2hpnd|\
+ mikrotik,routerboard-912uag-5hpnd|\ + mikrotik,routerboard-912uag-5hpnd|\
mikrotik,routerboard-lhg-2nd|\ mikrotik,routerboard-lhg-2nd|\
mikrotik,routerboard-lhg-5nd|\ mikrotik,routerboard-lhg-5nd|\
mikrotik,routerboard-mapl-2nd|\ mikrotik,routerboard-mapl-2nd|\
@@ -69,6 +70,8 @@ @@ -73,8 +75,10 @@
local mac_base="$(cat /sys/firmware/mikrotik/hard_config/mac_base)"
case "$board" in case "$board" in
+ mikrotik,routerboard-911g-5hpnd*|\ + mikrotik,routerboard-911g-5hpnd*|\
mikrotik,routerboard-911-lite|\
mikrotik,routerboard-912uag-2hpnd|\ mikrotik,routerboard-912uag-2hpnd|\
+ mikrotik,routerboard-912uag-5hpnd|\ + mikrotik,routerboard-912uag-5hpnd|\
mikrotik,routerboard-lhg-2nd|\ mikrotik,routerboard-lhg-2nd|\
@ -942,10 +715,12 @@
mikrotik,routerboard-map-2nd|\ mikrotik,routerboard-map-2nd|\
--- a/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom --- a/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/mikrotik/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -24,6 +24,8 @@ @@ -23,8 +23,10 @@
case "$FIRMWARE" in
"ath9k-eeprom-ahb-18100000.wmac.bin") "ath9k-eeprom-ahb-18100000.wmac.bin")
case $board in case $board in
+ mikrotik,routerboard-911g-5hpnd*|\ + mikrotik,routerboard-911g-5hpnd*|\
mikrotik,routerboard-911-lite|\
mikrotik,routerboard-912uag-2hpnd|\ mikrotik,routerboard-912uag-2hpnd|\
+ mikrotik,routerboard-912uag-5hpnd|\ + mikrotik,routerboard-912uag-5hpnd|\
mikrotik,routerboard-lhg-2nd|\ mikrotik,routerboard-lhg-2nd|\
@ -953,15 +728,16 @@
mikrotik,routerboard-sxt-5nd|\ mikrotik,routerboard-sxt-5nd|\
--- a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh --- a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh +++ b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh
@@ -33,6 +33,8 @@ @@ -30,7 +30,9 @@
case "$board" in case "$board" in
mikrotik,routerboard-493g|\ mikrotik,routerboard-493g|\
+ mikrotik,routerboard-911g-5hpnd*|\ + mikrotik,routerboard-911g-5hpnd*|\
mikrotik,routerboard-912uag-2hpnd|\ mikrotik,routerboard-912uag-2hpnd|\
+ mikrotik,routerboard-912uag-5hpnd|\ + mikrotik,routerboard-912uag-5hpnd|\
mikrotik,routerboard-921gs-5hpacd-15s|\ mikrotik,routerboard-921gs-5hpacd-15s|\
mikrotik,routerboard-921gs-5hpacd-19s|\
mikrotik,routerboard-922uags-5hpacd|\ mikrotik,routerboard-922uags-5hpacd|\
mikrotik,routerboard-951g-2hnd|\
--- a/target/linux/ath79/image/mikrotik.mk --- a/target/linux/ath79/image/mikrotik.mk
+++ b/target/linux/ath79/image/mikrotik.mk +++ b/target/linux/ath79/image/mikrotik.mk
@@ -18,6 +18,24 @@ @@ -18,6 +18,24 @@

View File

@ -1,130 +0,0 @@
#
# Migration our hardware from the ath79-tiny build as upgrades dont work in that mode :-(
#
--- a/target/linux/ath79/image/generic-ubnt.mk
+++ b/target/linux/ath79/image/generic-ubnt.mk
@@ -295,3 +295,85 @@
SUPPORTED_DEVICES += uap-pro
endef
TARGET_DEVICES += ubnt_unifi-ap-pro
+
+define Device/ubnt_airrouter
+ $(Device/ubnt-xm)
+ SOC := ar7241
+ DEVICE_MODEL := AirRouter
+ SUPPORTED_DEVICES += airrouter
+endef
+TARGET_DEVICES += ubnt_airrouter
+
+define Device/ubnt_nanobridge-m
+ $(Device/ubnt-xm)
+ SOC := ar7241
+ DEVICE_MODEL := NanoBridge M
+ DEVICE_PACKAGES += rssileds
+ SUPPORTED_DEVICES += bullet-m
+endef
+TARGET_DEVICES += ubnt_nanobridge-m
+
+define Device/ubnt_bullet-m-ar7240
+ $(Device/ubnt-xm)
+ SOC := ar7240
+ DEVICE_MODEL := Bullet M
+ DEVICE_VARIANT := XM (AR7240)
+ DEVICE_PACKAGES += rssileds
+ SUPPORTED_DEVICES += bullet-m
+endef
+TARGET_DEVICES += ubnt_bullet-m-ar7240
+
+define Device/ubnt_bullet-m-ar7241
+ $(Device/ubnt-xm)
+ SOC := ar7241
+ DEVICE_MODEL := Bullet M
+ DEVICE_VARIANT := XM (AR7241)
+ DEVICE_PACKAGES += rssileds
+ SUPPORTED_DEVICES += bullet-m ubnt,bullet-m
+endef
+TARGET_DEVICES += ubnt_bullet-m-ar7241
+
+define Device/ubnt_picostation-m
+ $(Device/ubnt-xm)
+ SOC := ar7241
+ DEVICE_MODEL := Picostation M
+ DEVICE_PACKAGES += rssileds
+ SUPPORTED_DEVICES += bullet-m
+endef
+TARGET_DEVICES += ubnt_picostation-m
+
+define Device/ubnt_nanostation-m
+ $(Device/ubnt-xm)
+ SOC := ar7241
+ DEVICE_MODEL := Nanostation M
+ DEVICE_PACKAGES += rssileds
+ SUPPORTED_DEVICES += nanostation-m
+endef
+TARGET_DEVICES += ubnt_nanostation-m
+
+define Device/ubnt_nanostation-loco-m
+ $(Device/ubnt-xm)
+ SOC := ar7241
+ DEVICE_MODEL := Nanostation Loco M
+ DEVICE_PACKAGES += rssileds
+ SUPPORTED_DEVICES += bullet-m
+endef
+TARGET_DEVICES += ubnt_nanostation-loco-m
+
+define Device/ubnt_powerbridge-m
+ $(Device/ubnt-xm)
+ SOC := ar7241
+ DEVICE_MODEL := PowerBridge M
+ DEVICE_PACKAGES += rssileds
+ SUPPORTED_DEVICES += bullet-m
+endef
+TARGET_DEVICES += ubnt_powerbridge-m
+
+define Device/ubnt_rocket-m
+ $(Device/ubnt-xm)
+ SOC := ar7241
+ DEVICE_MODEL := Rocket M
+ DEVICE_PACKAGES += rssileds
+ SUPPORTED_DEVICES += rocket-m
+endef
+TARGET_DEVICES += ubnt_rocket-m
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -536,6 +536,20 @@
ucidef_set_interface "dtdlink" device "eth0.2 eth1.2" protocol "static"
ucidef_set_interface "wifi" device "wlan0" protocol "static"
;;
+ ubnt,nanostation-m)
+ ucidef_set_interfaces_lan_wan "eth0 eth1" "eth0.1 eth1.1"
+ ucidef_set_interface "dtdlink" device "eth0.2 eth1.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
+ ;;
+ ubnt,bullet-m-ar7241|\
+ ubnt,nanobridge-m|\
+ ubnt,powerbridge-m|\
+ ubnt,rocket-m)
+ ucidef_set_interfaces_lan_wan "eth0" "eth0.1"
+ ucidef_set_interface "dtdlink" device "eth0.2" protocol "static"
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
+ ;;
+
*)
ucidef_set_interfaces_lan_wan "eth0" "eth0.1"
ucidef_set_interface "dtdlink" device "eth0.2" protocol "static"
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -139,6 +139,13 @@
caldata_extract "art" 0x1000 0x1000
ath9k_patch_mac $(nvram get wl0_hwaddr)
;;
+ ubnt,nanostation-m|\
+ ubnt,bullet-m-ar7241|\
+ ubnt,nanobridge-m|\
+ ubnt,powerbridge-m|\
+ ubnt,rocket-m)
+ caldata_extract "art" 0x1000 0x1000
+ ;;
*)
caldata_die "board $board is not supported yet"
;;

View File

@ -0,0 +1,37 @@
--- a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh
@@ -7,7 +7,8 @@
return 0
}
-RAMFS_COPY_BIN='yafut'
+RAMFS_COPY_BIN='fw_printenv fw_setenv nandwrite'
+RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
platform_do_upgrade_mikrotik_nand() {
CI_KERNPART=none
@@ -20,7 +21,8 @@
board_dir=${board_dir%/}
[ -n "$board_dir" ] || return
- tar xf "$1" ${board_dir}/kernel -O | yafut -d "$fw_mtd" -w -i - -o kernel -m 0755 || return
+ mtd erase kernel
+ tar xf "$1" ${board_dir}/kernel -O | nandwrite -o "$fw_mtd" -
nand_do_upgrade "$1"
}
--- a/target/linux/ath79/image/common-mikrotik.mk
+++ b/target/linux/ath79/image/common-mikrotik.mk
@@ -17,9 +17,7 @@
define Device/mikrotik_nand
$(Device/mikrotik)
- IMAGE/sysupgrade.bin = append-kernel | sysupgrade-tar | append-metadata
- DEVICE_COMPAT_MESSAGE := \
- NAND images switched to yafut. If running older image, reinstall from initramfs.
- DEVICE_COMPAT_VERSION := 1.1
-
+ IMAGE/sysupgrade.bin = append-kernel | kernel2minor -s 2048 -e -c | \
+ sysupgrade-tar kernel=$$$$@ | append-metadata
+ DEVICE_PACKAGES := nand-utils
endef

77
patches/753-ubiquiti-2ac.patch Executable file
View File

@ -0,0 +1,77 @@
--- a/target/linux/ath79/image/generic-ubnt.mk
+++ b/target/linux/ath79/image/generic-ubnt.mk
@@ -79,6 +79,13 @@
endef
TARGET_DEVICES += ubnt_nanobeam-ac-gen2
+define Device/ubnt_nanobeam-2ac-13
+ $(Device/ubnt-2wa)
+ DEVICE_MODEL := NanoBeam 2AC 13
+ DEVICE_PACKAGES += kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct rssileds
+endef
+TARGET_DEVICES += ubnt_nanobeam-2ac-13
+
define Device/ubnt_nanobeam-ac-xc
$(Device/ubnt-xc)
SOC := qca9558
--- /dev/null
+++ b/target/linux/ath79/dts/ar9342_ubnt_nanobeam-2ac-13.dts
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "ar9342_ubnt_wa_1port.dtsi"
+
+/ {
+ compatible = "ubnt,nanobeam-2ac-13", "ubnt,wa", "qca,ar9342";
+ model = "Ubiquiti NanoBeam 2AC 13 (2WA)";
+
+ aliases {
+ led-boot = &led_rssi3;
+ led-failsafe = &led_rssi3;
+ led-upgrade = &led_rssi3;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ rssi0 {
+ label = "blue:rssi0";
+ gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+ };
+
+ rssi1 {
+ label = "blue:rssi1";
+ gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+ };
+
+ rssi2 {
+ label = "blue:rssi2";
+ gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+ };
+
+ led_rssi3: rssi3 {
+ label = "blue:rssi3";
+ gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -103,6 +103,7 @@
ubnt,lap-120|\
ubnt,litebeam-ac-gen2|\
ubnt,nanobeam-ac|\
+ ubnt,nanobeam-2ac-13|\
ubnt,nanobeam-ac-xc|\
ubnt,nanobeam-ac-gen2-xc|\
ubnt,nanobeam-m5-1[69]|\
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -43,6 +43,7 @@
ubnt,lap-120|\
ubnt,litebeam-ac-gen2|\
ubnt,nanobeam-ac|\
+ ubnt,nanobeam-2ac-13|\
ubnt,nanobeam-ac-gen2|\
ubnt,nanobeam-ac-gen2-xc|\
ubnt,nanobeam-ac-xc|\

View File

@ -62,15 +62,15 @@
DEVICE_MODEL := AirRouter DEVICE_MODEL := AirRouter
- SUPPORTED_DEVICES += airrouter - SUPPORTED_DEVICES += airrouter
+ SUPPORTED_DEVICES += airrouter ubnt,airrouter + SUPPORTED_DEVICES += airrouter ubnt,airrouter
DEFAULT := n
endef endef
TARGET_DEVICES += ubnt_airrouter TARGET_DEVICES += ubnt_airrouter
@@ -14,7 +14,7 @@
@@ -13,7 +13,7 @@
SOC := ar7241 SOC := ar7241
DEVICE_MODEL := NanoBridge M DEVICE_MODEL := NanoBridge M
DEVICE_PACKAGES += rssileds DEVICE_PACKAGES += rssileds
- SUPPORTED_DEVICES += bullet-m - SUPPORTED_DEVICES += bullet-m
+ SUPPORTED_DEVICES += bullet-m ubnt,bullet-m + SUPPORTED_DEVICES += bullet-m ubnt,bullet-m
DEFAULT := n
endef endef
TARGET_DEVICES += ubnt_nanobridge-m TARGET_DEVICES += ubnt_nanobridge-m

View File

@ -1,10 +1,8 @@
0001-ath79-add-support-for-TP-Link-CPE605-v1.patch
001-ath79-cpe220v3-sysupgrade-supported.patch 001-ath79-cpe220v3-sysupgrade-supported.patch
001-ath79-reverse-wpad-basic-wolfssl.patch 001-ath79-reverse-wpad-basic-mbedtls.patch
006-rocket-m-flash-fix.patch 006-flash-fixes.patch
010-lz77-decompression-support.patch 010-lz77-decompression-support.patch
100-remove-rcbutton-reset.patch 100-remove-rcbutton-reset.patch
701-ath9k-reset.patch
701-extended-spectrum.patch 701-extended-spectrum.patch
702-enable-country-hx.patch 702-enable-country-hx.patch
703-fix-dnsmasq.patch 703-fix-dnsmasq.patch
@ -13,8 +11,8 @@
705-aredn-banner.patch 705-aredn-banner.patch
706-MeshNode-SSID.patch 706-MeshNode-SSID.patch
708-define-aredn-ath79-networks.patch 708-define-aredn-ath79-networks.patch
708-define-aredn-rocket-m-networks.patch
708-define-aredn-ipq40xx-networks.patch 708-define-aredn-ipq40xx-networks.patch
708-define-aredn-ramips-networks.patch
709-iperf-fw-restart.patch 709-iperf-fw-restart.patch
710-no-ping6-traceroute6.patch 710-no-ping6-traceroute6.patch
711-aredn-ports-dumbswitch-ar8216.patch 711-aredn-ports-dumbswitch-ar8216.patch
@ -25,20 +23,21 @@
717-fix-olsrd-oparse-error.patch 717-fix-olsrd-oparse-error.patch
718-temp-remove-olsrd-pud.patch 718-temp-remove-olsrd-pud.patch
719-disable-ipv6.patch 719-disable-ipv6.patch
730-ipq40xx-dsa.patch
731-ag71xx-updates-and-fixes.patch 731-ag71xx-updates-and-fixes.patch
742-5-and-10mhz-ath10k-ct-support.patch 742-5-and-10mhz-ath10k-ct-support.patch
742-radio-extend-mediatek-support.patch
743-mac80211-ath10k.patch 743-mac80211-ath10k.patch
744-dd-wrt-firmware.patch 744-dd-wrt-firmware.patch
745-ath10k-more-scan-channels.patch 745-ath10k-more-scan-channels.patch
746-rocket-m-xw-support.patch 746-rocket-m-xw-support.patch
747-mikrotik-extra-support.patch 747-mikrotik-extra-support.patch
748-powerbeam-m5-300-support.patch 748-powerbeam-m5-300-support.patch
749-copy-tiny-nodes-to-generic.patch
749-fix-tiny.patch 749-fix-tiny.patch
749-ubiquiti-extra-support.patch 749-ubiquiti-extra-support.patch
749-ubiquiti-firmware-version.patch 749-ubiquiti-firmware-version.patch
750-ibss-2g-fix.patch 750-ibss-2g-fix.patch
751-x86.patch 751-x86.patch
752-mikrotik-nand-revert.patch
753-ubiquiti-2ac.patch
800-upgrade-compatibility.patch 800-upgrade-compatibility.patch
801-mikrotik-lhg-variants.patch 801-mikrotik-lhg-variants.patch