mirror of https://github.com/aredn/aredn.git
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:
parent
f4878471e0
commit
475f371bb8
|
@ -79,14 +79,22 @@ jobs:
|
|||
name: Build ath79/nand
|
||||
command: make MAINTARGET=ath79 SUBTARGET=nand
|
||||
no_output_timeout: 1h
|
||||
- run:
|
||||
name: Build ipq40xx/generic
|
||||
command: make MAINTARGET=ipq40xx SUBTARGET=generic
|
||||
no_output_timeout: 2h
|
||||
- run:
|
||||
name: Build ipq40xx/mikrotik
|
||||
command: make MAINTARGET=ipq40xx SUBTARGET=mikrotik
|
||||
no_output_timeout: 2h
|
||||
no_output_timeout: 1h
|
||||
- run:
|
||||
name: Build x64/64
|
||||
command: make MAINTARGET=x86 SUBTARGET=64
|
||||
no_output_timeout: 2h
|
||||
- run:
|
||||
name: Build ramips/mt7621
|
||||
command: make MAINTARGET=ipq40xx SUBTARGET=mt7621
|
||||
no_output_timeout: 2h
|
||||
- run:
|
||||
name: Compress build files
|
||||
command: tar -cjf ~/${CIRCLE_BRANCH}_${ARTIFACTS_FILE} -C ${MY_WORKING_DIRECTORY}/${ARTIFACTS_DIR} .
|
||||
|
@ -126,14 +134,22 @@ jobs:
|
|||
name: Build ath79/nand
|
||||
command: make MAINTARGET=ath79 SUBTARGET=nand
|
||||
no_output_timeout: 1h
|
||||
- run:
|
||||
name: Build ipq40xx/generic
|
||||
command: make MAINTARGET=ipq40xx SUBTARGET=generic
|
||||
no_output_timeout: 2h
|
||||
- run:
|
||||
name: Build ipq40xx/mikrotik
|
||||
command: make MAINTARGET=ipq40xx SUBTARGET=mikrotik
|
||||
no_output_timeout: 2h
|
||||
no_output_timeout: 1h
|
||||
- run:
|
||||
name: Build x64/64
|
||||
command: make MAINTARGET=x86 SUBTARGET=64
|
||||
no_output_timeout: 2h
|
||||
- run:
|
||||
name: Build ramips/mt7621
|
||||
command: make MAINTARGET=ipq40xx SUBTARGET=mt7621
|
||||
no_output_timeout: 2h
|
||||
- run:
|
||||
name: Compress build files
|
||||
command: tar -cjf ~/${CIRCLE_BRANCH}_${ARTIFACTS_FILE} -C ${MY_WORKING_DIRECTORY}/${ARTIFACTS_DIR} .
|
||||
|
|
2
Makefile
2
Makefile
|
@ -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 ntpclient
|
||||
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-ip
|
||||
cd $(OPENWRT_DIR); ./scripts/feeds install luci-lib-jsonc
|
||||
|
|
|
@ -15,9 +15,9 @@ The 'target' and 'subtarget' identify the directory in which to find the image o
|
|||
## Mikrotik
|
||||
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² | RBD52G-5HacD2HnD-TC | 2 | ipq40xx | mikrotik | mikrotik_hap-ac2 | 128MB | stable | released
|
||||
hAP ac³ | RBD53iG-5HacD2HnD | 2 | ipq40xx | mikrotik | mikrotik_hap-ac3 | 256MB | 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 & 5 | ipq40xx | mikrotik | mikrotik_hap-ac2 | 128MB | 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 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
|
||||
|
@ -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
|
||||
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
|
||||
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 (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
|
||||
|
@ -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 (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
|
||||
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** | | | | | | | |
|
||||
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)
|
||||
|
@ -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.
|
||||
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.
|
||||
4. 20MHz channels only.
|
||||
|
||||
|
||||
Latest installation instructions are found at: https://docs.arednmesh.org/en/latest/
|
||||
|
|
|
@ -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_wbs510-v1=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-m-xw=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_nanobeam-2ac-13=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-xc=y
|
||||
|
|
|
@ -11,9 +11,11 @@ CONFIG_TARGET_DEVICE_ath79_tiny_DEVICE_ubnt_picostation-m=y
|
|||
CONFIG_KERNEL_CC_STACKPROTECTOR_NONE=y
|
||||
CONFIG_KERNEL_PRINTK=n
|
||||
CONFIG_PACKAGE_ATH_SPECTRAL=n
|
||||
CONFIG_PACKAGE_wpad-mini=m
|
||||
CONFIG_PACKAGE_vtun=m
|
||||
CONFIG_PACKAGE_ethtool=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_FORTIFY_SOURCE_NONE=y
|
||||
|
|
|
@ -115,7 +115,6 @@ CONFIG_PACKAGE_lua-bit32=y
|
|||
CONFIG_PACKAGE_luaposix=n
|
||||
CONFIG_PACKAGE_luasocket=y
|
||||
CONFIG_PACKAGE_lua=y
|
||||
CONFIG_PACKAGE_luci-base=n
|
||||
CONFIG_PACKAGE_luci-lib-base=y
|
||||
CONFIG_PACKAGE_luci-lib-ip=y
|
||||
CONFIG_PACKAGE_luci-lib-jsonc=y
|
||||
|
@ -157,6 +156,8 @@ CONFIG_PACKAGE_wpad-mini=y
|
|||
CONFIG_PACKAGE_xinetd=n
|
||||
CONFIG_PACKAGE_zlib=m
|
||||
CONFIG_PACKAGE_zram-swap=n
|
||||
CONFIG_PKG_ASLR_PIE_NONE=y
|
||||
CONFIG_PKG_RELRO_NONE=y
|
||||
CONFIG_PREINITOPT=y
|
||||
CONFIG_SECCOMP=n
|
||||
CONFIG_STRIP_KERNEL_EXPORTS=y
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
CONFIG_TARGET_ipq40xx=y
|
||||
CONFIG_TARGET_ipq40xx_generic=y
|
||||
CONFIG_TARGET_DEVICE_ipq40xx_generic_DEVICE_glinet_gl-b1300=y
|
|
@ -0,0 +1,3 @@
|
|||
CONFIG_TARGET_ramips=y
|
||||
CONFIG_TARGET_ramips_mt7621=y
|
||||
CONFIG_TARGET_DEVICE_ramips_mt7621_DEVICE_glinet_gl-mt1300=y
|
|
@ -1 +1 @@
|
|||
src-git arednpackages https://github.com/aredn/aredn_packages;develop
|
||||
src-git arednpackages https://github.com/kn6plv/aredn_packages;working
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
#### Globals
|
||||
config globals 'globals'
|
||||
option packet_steering '1'
|
||||
|
||||
#### Loopback configuration
|
||||
config interface loopback
|
||||
option device "lo"
|
||||
|
|
|
@ -3,6 +3,7 @@ config dhcp
|
|||
option start 5
|
||||
option limit 20
|
||||
option leasetime 12h
|
||||
option force 1
|
||||
|
||||
config dhcp
|
||||
option interface wan
|
||||
|
|
|
@ -1 +1 @@
|
|||
KN6PLV-lz77decompression-d708f8c
|
||||
KN6PLV-main-cdeb1b1d
|
||||
|
|
|
@ -4,6 +4,7 @@ ath10k-firmware-qca4019-ct
|
|||
ath10k-firmware-qca9887-ct
|
||||
ath10k-firmware-qca988x-ct
|
||||
base-files
|
||||
bnx2-firmware
|
||||
busybox
|
||||
ca-bundle
|
||||
curl
|
||||
|
@ -14,6 +15,9 @@ firewall4
|
|||
fstools
|
||||
fwtool
|
||||
getrandom
|
||||
grub2
|
||||
grub2-bios-setup
|
||||
grub2-efi
|
||||
hostapd-common
|
||||
iperf3
|
||||
iw
|
||||
|
@ -22,12 +26,17 @@ jansson4
|
|||
jshn
|
||||
jsonfilter
|
||||
kernel
|
||||
kmod-amazon-ena
|
||||
kmod-amd-xgbe
|
||||
kmod-ath
|
||||
kmod-ath10k-ct
|
||||
kmod-ath10k-ct-smallbuffers
|
||||
kmod-ath9k
|
||||
kmod-ath9k-common
|
||||
kmod-bnx2
|
||||
kmod-button-hotplug
|
||||
kmod-cfg80211
|
||||
kmod-crypto-acompress
|
||||
kmod-crypto-aead
|
||||
kmod-crypto-ccm
|
||||
kmod-crypto-cmac
|
||||
|
@ -43,42 +52,72 @@ kmod-crypto-null
|
|||
kmod-crypto-rng
|
||||
kmod-crypto-seqiv
|
||||
kmod-crypto-sha256
|
||||
kmod-crypto-sha512
|
||||
kmod-e1000
|
||||
kmod-e1000e
|
||||
kmod-forcedeth
|
||||
kmod-fs-vfat
|
||||
kmod-gpio-button-hotplug
|
||||
kmod-hwmon-core
|
||||
kmod-i2c-algo-bit
|
||||
kmod-i2c-core
|
||||
kmod-igb
|
||||
kmod-igc
|
||||
kmod-input-core
|
||||
kmod-ipip
|
||||
kmod-iptunnel
|
||||
kmod-iptunnel4
|
||||
kmod-ixgbe
|
||||
kmod-leds-gpio
|
||||
kmod-ledtrig-gpio
|
||||
kmod-lib-crc32c
|
||||
kmod-lib-lzo
|
||||
kmod-libphy
|
||||
kmod-mac80211
|
||||
kmod-mdio
|
||||
kmod-mdio-devres
|
||||
kmod-mii
|
||||
kmod-nf-conntrack
|
||||
kmod-nf-flow
|
||||
kmod-nf-log
|
||||
kmod-nf-nat
|
||||
kmod-nf-reject
|
||||
kmod-nfnetlink
|
||||
kmod-nf-reject
|
||||
kmod-nft-core
|
||||
kmod-nft-fib
|
||||
kmod-nft-nat
|
||||
kmod-nft-offload
|
||||
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-usb-core
|
||||
kmod-usb-dwc3
|
||||
kmod-usb-dwc3-qcom
|
||||
libblkid1
|
||||
libblobmsg-json20220515
|
||||
libblobmsg-json20230523
|
||||
libc
|
||||
libcurl4
|
||||
libf2fs6
|
||||
libgcc1
|
||||
libiperf3
|
||||
libiwinfo20210430
|
||||
libiwinfo20230701
|
||||
libiwinfo-data
|
||||
libiwinfo-lua
|
||||
libiwinfo20210430
|
||||
libjson-c5
|
||||
libjson-script20220515
|
||||
libjson-script20230523
|
||||
liblua5.1.5
|
||||
liblucihttp-lua
|
||||
liblucihttp0
|
||||
liblucihttp-lua
|
||||
liblzo2
|
||||
libmbedtls12
|
||||
libmnl0
|
||||
|
@ -86,13 +125,18 @@ libnftnl11
|
|||
libnl-tiny1
|
||||
libpthread
|
||||
librt
|
||||
libsmartcols1
|
||||
libubox20220515
|
||||
libubus-lua
|
||||
libubox20230523
|
||||
libubus20220601
|
||||
libuci-lua
|
||||
libubus20230605
|
||||
libubus-lua
|
||||
libuci20130104
|
||||
libuci-lua
|
||||
libuclient20201210
|
||||
libucode20220812
|
||||
libustream-mbedtls20201210
|
||||
libuuid1
|
||||
libxtables12
|
||||
logd
|
||||
lua
|
||||
|
@ -101,6 +145,7 @@ luci-lib-base
|
|||
luci-lib-ip
|
||||
luci-lib-jsonc
|
||||
luci-lib-nixio
|
||||
mkf2fs
|
||||
mtd
|
||||
netifd
|
||||
nftables-json
|
||||
|
@ -114,8 +159,10 @@ olsrd-mod-txtinfo
|
|||
olsrd-mod-watchdog
|
||||
openwrt-keyring
|
||||
opkg
|
||||
partx-utils
|
||||
procd
|
||||
prometheus-exporter
|
||||
r8169-firmware
|
||||
rpcd
|
||||
rpcd-mod-file
|
||||
rpcd-mod-luci
|
||||
|
@ -130,8 +177,11 @@ uci
|
|||
uclient-fetch
|
||||
ucode
|
||||
ucode-mod-fs
|
||||
ucode-mod-nl80211
|
||||
ucode-mod-rtnl
|
||||
ucode-mod-ubus
|
||||
ucode-mod-uci
|
||||
ucode-mod-uloop
|
||||
uhttpd
|
||||
urandom-seed
|
||||
urngd
|
||||
|
|
|
@ -20,6 +20,16 @@
|
|||
"gl.inet gl-ar750s (nor/nand)": {
|
||||
"maxpower": "23"
|
||||
},
|
||||
"gl.inet gl-b1300": {
|
||||
},
|
||||
"gl.inet gl-mt1300": {
|
||||
"wlan0": {
|
||||
"bandwidths": [ 20 ]
|
||||
},
|
||||
"wlan1": {
|
||||
"bandwidths": [ 20 ]
|
||||
}
|
||||
},
|
||||
"tp-link cpe210 v1": {
|
||||
"maxpower": "23",
|
||||
"chanpower": {
|
||||
|
@ -555,6 +565,14 @@
|
|||
"maxpower": "22",
|
||||
"pwroffset": "4"
|
||||
},
|
||||
"0xe4f2": {
|
||||
"name": "Ubiquiti NanoBeam 2AC 13 (2WA)",
|
||||
"wlan0": {
|
||||
"bandwidths": [ 10, 20 ],
|
||||
"maxpower": 21,
|
||||
"pwroffset": 6
|
||||
}
|
||||
},
|
||||
"0xe4f5": {
|
||||
"name": "Ubiquiti NanoBeam AC (XC)",
|
||||
"maxpower": "23",
|
||||
|
|
|
@ -1,15 +1,8 @@
|
|||
#! /bin/sh
|
||||
case "$(/usr/local/bin/get_boardid)" in
|
||||
MikroTik\ hAP\ ac2|\
|
||||
MikroTik\ hAP\ ac3|\
|
||||
MikroTik\ SXTsq\ 5\ ac*|\
|
||||
MikroTik\ LDF\ 5\ ac*|\
|
||||
MikroTik\ LHG\ 5\ ac*)
|
||||
sed -i "s/^compat_version = 1.0/compat_version = 1.1/" /etc/config.mesh/_setup
|
||||
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
|
||||
VER=$(jsonfilter -e '@.system.compat_version' < /etc/board.json)
|
||||
if [ "${VER}" != "" ]; then
|
||||
sed -i "s/^compat_version = 1.0/compat_version = ${VER}/" /etc/config.mesh/_setup
|
||||
sed -i "s/^compat_version = 1.0/compat_version = ${VER}/" /etc/config.mesh/_setup.default
|
||||
uci -q set system.@system[0].compat_version=${VER}
|
||||
uci -q commit system
|
||||
fi
|
||||
|
|
|
@ -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
|
|
@ -71,6 +71,28 @@ function hardware.get_radio()
|
|||
return radio_json
|
||||
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)
|
||||
local radio = hardware.get_radio()
|
||||
if radio and radio[wifiintf] then
|
||||
|
@ -277,19 +299,25 @@ function hardware.get_default_channel(wifiintf)
|
|||
for _, channel in ipairs(hardware.get_rfchannels(wifiintf))
|
||||
do
|
||||
if channel.frequency == 912 then
|
||||
return { channel = 5, bandwidth = 5, rfband = "900MHz" }
|
||||
return { channel = 5, bandwidth = 5, band = "900MHz" }
|
||||
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
|
||||
return { channel = -2, bandwidth = 10, rfband = "2.4GHz" }
|
||||
return { channel = -2, bandwidth = bw, band = "2.4GHz" }
|
||||
end
|
||||
if channel.frequency == 2412 then
|
||||
return { channel = 1, bandwidth = 10, rfband = "2.4GHz" }
|
||||
return { channel = 1, bandwidth = bw, band = "2.4GHz" }
|
||||
end
|
||||
if channel.frequency == 3420 then
|
||||
return { channel = 84, bandwidth = 10, rfband = "3GHz" }
|
||||
return { channel = 84, bandwidth = bw, band = "3GHz" }
|
||||
end
|
||||
if channel.frequency == 5745 then
|
||||
return { channel = 149, bandwidth = 10, rfband = "5GHz" }
|
||||
return { channel = 149, bandwidth = bw, band = "5GHz" }
|
||||
end
|
||||
end
|
||||
return nil
|
||||
|
@ -320,7 +348,7 @@ function hardware.get_rfchannels(wifiintf)
|
|||
end
|
||||
for line in f:lines()
|
||||
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
|
||||
freq = tonumber("" .. freq:gsub("%.", "")) + freq_adjust
|
||||
if freq >= freq_min and freq <= freq_max then
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
local nxo = require("nixio")
|
||||
local ipc = require("luci.ip")
|
||||
require("luci.http")
|
||||
require('luci.ohttp')
|
||||
require("uci")
|
||||
|
||||
function round2(num, idp)
|
||||
|
|
|
@ -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
|
|
@ -65,7 +65,7 @@ end
|
|||
function watchdog()
|
||||
while true
|
||||
do
|
||||
wait_for_ticks(21)
|
||||
wait_for_ticks(223)
|
||||
|
||||
local pid = read_all(pidfile)
|
||||
if pid and nixio.fs.stat("/proc/" .. pid) then
|
||||
|
|
|
@ -104,12 +104,6 @@ function M.reset_network(mode)
|
|||
elseif mode == "scan-all" then
|
||||
os.execute(IW .. " " .. wifi .. " scan > /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
|
||||
log:write("-- unknown")
|
||||
end
|
||||
|
|
|
@ -764,6 +764,7 @@ c:commit("dhcp")
|
|||
local config = ""
|
||||
local ifacenum = 0
|
||||
local ifacecount = 0
|
||||
local devpaths = {}
|
||||
if nixio.fs.stat(ieee80211) then
|
||||
for devname in nixio.fs.dir(ieee80211)
|
||||
do
|
||||
|
@ -778,6 +779,11 @@ if nixio.fs.stat(ieee80211) then
|
|||
if devpath:match("^platform.*/pci.*") then
|
||||
devpath = devpath:match("^platform/(.*)")
|
||||
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 htmode = "HT20"
|
||||
local disabled = "0"
|
||||
|
|
|
@ -169,7 +169,7 @@ end
|
|||
local parms = {}
|
||||
local firmfile = ""
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
|
@ -765,7 +765,7 @@ end
|
|||
-- read_postdata
|
||||
local parms = {}
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
|
@ -300,7 +300,7 @@ local layout = layouts[get_board_type]
|
|||
local configs = {}
|
||||
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
|
@ -90,7 +90,7 @@ end
|
|||
-- post data
|
||||
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
|
@ -60,7 +60,7 @@ end
|
|||
-- post_data
|
||||
local parms = {}
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
|
@ -149,7 +149,7 @@ end
|
|||
-- scan end
|
||||
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
|
@ -41,7 +41,7 @@ require("aredn.http")
|
|||
require("aredn.utils")
|
||||
require("aredn.hardware")
|
||||
require("uci")
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local html = require("aredn.html")
|
||||
local aredn_info = require("aredn.info")
|
||||
|
||||
|
@ -176,7 +176,7 @@ passwd1 = ""
|
|||
passwd2 = ""
|
||||
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 M9model = radio_name:match("M9")
|
||||
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")
|
||||
end
|
||||
|
||||
if parms.button_updatelocation then
|
||||
if (parms.button_updatelocation or parms.button_save) then
|
||||
-- process gridsquare
|
||||
local cursora = uci.cursor();
|
||||
local cursorb = uci.cursor("/etc/config.mesh")
|
||||
if parms.gridsquare ~= "" then
|
||||
if parms.gridsquare:match("^[A-Z][A-Z]%d%d[a-z][a-z]$") then
|
||||
cursora:set("aredn", "@location[0]", "gridsquare", parms.gridsquare)
|
||||
cursorb:set("aredn", "@location[0]", "gridsquare", parms.gridsquare)
|
||||
out("Gridsquare updated.")
|
||||
if (cursora:get("aredn", "@location[0]", "gridsquare") or "") ~= parms.gridsquare then
|
||||
if parms.gridsquare ~= "" then
|
||||
if parms.gridsquare:match("^[A-Z][A-Z]%d%d[a-z][a-z]$") then
|
||||
cursora:set("aredn", "@location[0]", "gridsquare", parms.gridsquare)
|
||||
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
|
||||
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
|
||||
else
|
||||
cursora:set("aredn", "@location[0]", "gridsquare", "")
|
||||
cursorb:set("aredn", "@location[0]", "gridsquare", "")
|
||||
out("Gridsquare purged.")
|
||||
end
|
||||
|
||||
-- process lat/lng
|
||||
if parms.latitude ~= "" and parms.longitude ~= "" then
|
||||
if parms.latitude:match("^[-+]?%d%d?%.%d+$") and parms.longitude:match("^[-+]?%d%d?%d?%.%d+$") then
|
||||
if tonumber(parms.latitude) >= -90 and tonumber(parms.latitude) <= 90 and tonumber(parms.longitude) >= -180 and tonumber(parms.longitude) <= 180 then
|
||||
cursora:set("aredn", "@location[0]", "lat", parms.latitude)
|
||||
cursorb:set("aredn", "@location[0]", "lat", parms.latitude)
|
||||
cursora:set("aredn", "@location[0]", "lon", parms.longitude)
|
||||
cursorb:set("aredn", "@location[0]", "lon", parms.longitude)
|
||||
out("Lat/lon updated.")
|
||||
if (cursora:get("aredn", "@location[0]", "lat") or "") ~= parms.latitude or (cursora:get("aredn", "@location[0]", "lon") or "") ~= parms.longitude then
|
||||
if parms.latitude ~= "" and parms.longitude ~= "" then
|
||||
if parms.latitude:match("^[-+]?%d%d?%.%d+$") and parms.longitude:match("^[-+]?%d%d?%d?%.%d+$") then
|
||||
if tonumber(parms.latitude) >= -90 and tonumber(parms.latitude) <= 90 and tonumber(parms.longitude) >= -180 and tonumber(parms.longitude) <= 180 then
|
||||
cursora:set("aredn", "@location[0]", "lat", parms.latitude)
|
||||
cursorb:set("aredn", "@location[0]", "lat", parms.latitude)
|
||||
cursora:set("aredn", "@location[0]", "lon", parms.longitude)
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
cursora:commit("aredn")
|
||||
cursorb:commit("aredn")
|
||||
cursor = cursora
|
||||
end
|
||||
|
||||
-- retrieve location data
|
||||
|
@ -909,7 +914,19 @@ function foundLocation(position) {
|
|||
}
|
||||
|
||||
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) {
|
||||
|
@ -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 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("<button type='button' id='findlocation' value='findloc' onClick='findLocation();'>Find Me!</button> ")
|
||||
local locdisabled = pingOK and "" or "disabled"
|
||||
html.print("<button " .. locdisabled .. " type='button' id='findlocation' value='findloc' onClick='findLocation();'>Find Me!</button> ")
|
||||
html.print("<input type=submit name='button_updatelocation' value='Apply Location Settings' title='Immediately use these location settings'>")
|
||||
html.print(" <button type='button' id='hideshowmap' value='show' onClick='toggleMap(this);'>Show Map</button> ")
|
||||
if pingOK then
|
||||
html.print("<input type='submit' name='button_uploaddata' value='Upload data to AREDN Servers' /> ")
|
||||
else
|
||||
html.print("<button disabled type='button' title='Only available if this node has internet access'>Upload data to AREDN Servers</button> ")
|
||||
end
|
||||
html.print(" <button " .. locdisabled .. " type='button' id='hideshowmap' value='show' onClick='toggleMap(this);'>Show Map</button> ")
|
||||
html.print("<input " .. locdisabled .. " type='submit' name='button_uploaddata' value='Upload data to AREDN Servers' /> ")
|
||||
|
||||
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>")
|
||||
|
|
|
@ -52,7 +52,7 @@ local dmode = "Realtime"
|
|||
-- query string
|
||||
local query = os.getenv("QUERY_STRING")
|
||||
if query then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local params = luci.http.urldecode_params(query)
|
||||
if params.realtime then
|
||||
dmode = "Realtime"
|
||||
|
|
|
@ -218,7 +218,7 @@ end
|
|||
-- post data
|
||||
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
|
@ -57,7 +57,7 @@ local VPNVER = "1.1"
|
|||
-- post_data
|
||||
local parms = {}
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
|
@ -61,7 +61,7 @@ local VPNVER = "1.0"
|
|||
-- post_data
|
||||
local parms = {}
|
||||
if os.getenv("REQUEST_METHOD") == "POST" then
|
||||
require('luci.http')
|
||||
require('luci.ohttp')
|
||||
local request = luci.http.Request(nixio.getenv(),
|
||||
function()
|
||||
local v = io.read(1024)
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 262 B After Width: | Height: | Size: 788 B |
|
@ -2,5 +2,5 @@
|
|||
OPENWRT_SRC=https://github.com/openwrt/openwrt.git
|
||||
|
||||
# what branch, tag or commit in this repo?
|
||||
OPENWRT_COMMIT=v22.03.5
|
||||
OPENWRT_COMMIT=v23.05.0
|
||||
|
||||
|
|
|
@ -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";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð1 {
|
||||
+ 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
|
||||
+
|
|
@ -1,10 +1,9 @@
|
|||
--- a/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
|
||||
TPLINK_BOARD_ID := CPE220V3
|
||||
LOADER_TYPE := elf
|
||||
+ SUPPORTED_DEVICES += cpe220-v3
|
||||
endef
|
||||
TARGET_DEVICES += tplink_cpe220-v3
|
||||
|
||||
|
|
14
patches/001-ath79-reverse-wpad-basic-wolfssl.patch → patches/001-ath79-reverse-wpad-basic-mbedtls.patch
Normal file → Executable file
14
patches/001-ath79-reverse-wpad-basic-wolfssl.patch → patches/001-ath79-reverse-wpad-basic-mbedtls.patch
Normal file → Executable file
|
@ -3,7 +3,7 @@
|
|||
@@ -1,6 +1,6 @@
|
||||
BOARDNAME:=Generic
|
||||
|
||||
-DEFAULT_PACKAGES += wpad-basic-wolfssl
|
||||
-DEFAULT_PACKAGES += wpad-basic-mbedtls
|
||||
+DEFAULT_PACKAGES += wpad-mini
|
||||
|
||||
define Target/Description
|
||||
|
@ -14,8 +14,8 @@
|
|||
KERNELNAME := vmlinux vmlinuz
|
||||
IMAGES_DIR := ../../..
|
||||
|
||||
-DEFAULT_PACKAGES += wpad-basic-wolfssl
|
||||
+DEFAULT_PACKAGES += wpad-mini
|
||||
-DEFAULT_PACKAGES += wpad-basic-mbedtls yafut
|
||||
+DEFAULT_PACKAGES += wpad-mini yafut
|
||||
|
||||
define Target/Description
|
||||
Build firmware images for MikroTik devices based on Qualcomm Atheros
|
||||
|
@ -25,7 +25,7 @@
|
|||
|
||||
FEATURES += nand
|
||||
|
||||
-DEFAULT_PACKAGES += wpad-basic-wolfssl
|
||||
-DEFAULT_PACKAGES += wpad-basic-mbedtls
|
||||
+DEFAULT_PACKAGES += wpad-mini
|
||||
|
||||
define Target/Description
|
||||
|
@ -36,7 +36,7 @@
|
|||
BOARDNAME:=Devices with small flash
|
||||
FEATURES += small_flash
|
||||
|
||||
-DEFAULT_PACKAGES += wpad-basic-wolfssl
|
||||
-DEFAULT_PACKAGES += wpad-basic-mbedtls
|
||||
+DEFAULT_PACKAGES += wpad-mini
|
||||
|
||||
define Target/Description
|
||||
|
@ -47,8 +47,8 @@
|
|||
@@ -17,7 +17,7 @@
|
||||
DEFAULT_PACKAGES += \
|
||||
kmod-usb-dwc3-qcom \
|
||||
kmod-leds-gpio kmod-gpio-button-hotplug swconfig \
|
||||
- kmod-ath10k-ct wpad-basic-wolfssl \
|
||||
kmod-leds-gpio kmod-gpio-button-hotplug \
|
||||
- kmod-ath10k-ct wpad-basic-mbedtls \
|
||||
+ kmod-ath10k-ct wpad-mini \
|
||||
kmod-usb3 kmod-usb-dwc3 ath10k-firmware-qca4019-ct \
|
||||
uboot-envtools
|
|
@ -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) },
|
|
@ -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) },
|
|
@ -106,7 +106,7 @@ new file mode 100644
|
|||
index 0000000000000..8e8b7a1689c87
|
||||
--- /dev/null
|
||||
+++ 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
|
||||
+/*
|
||||
+ * Copyright (C) 2023 John Thomson
|
||||
|
@ -461,6 +461,7 @@ index 0000000000000..8e8b7a1689c87
|
|||
+ fallthrough;
|
||||
+ case INSTR_LONG:
|
||||
+ if (opcode->offset == 0) {
|
||||
+ unsigned int i;
|
||||
+ /* this is a non-matching group */
|
||||
+ pr_debug(" non-match, len: 0x%x\n",
|
||||
+ 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;
|
||||
+ input_bit += 8;
|
||||
|
|
|
@ -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,
|
||||
+
|
|
@ -58,10 +58,10 @@
|
|||
+===================================================================
|
||||
+--- a/net/wireless/util.c
|
||||
++++ b/net/wireless/util.c
|
||||
+@@ -76,13 +76,16 @@ int ieee80211_channel_to_frequency(int c
|
||||
+ return 0; /* not supported */
|
||||
+@@ -81,13 +81,16 @@ int ieee80211_channel_to_frequency(int c
|
||||
+ switch (band) {
|
||||
+ case NL80211_BAND_2GHZ:
|
||||
+ case NL80211_BAND_LC:
|
||||
++ chan = (int)(unsigned char)chan;
|
||||
+ if (chan == 14)
|
||||
+ return MHZ_TO_KHZ(2484);
|
||||
|
@ -406,7 +406,7 @@
|
|||
+ */
|
||||
+ if (channel >= 1 && channel <= 14) {
|
||||
+ status->band = NL80211_BAND_2GHZ;
|
||||
++ } else if (channel >= -4 && channel <= -1) {
|
||||
++ } else if ((s8)channel >= -4 && (s8)channel <= -1) {
|
||||
++ status->band = NL80211_BAND_2GHZ;
|
||||
+ } else if (channel >= 36 && channel <= ATH10K_MAX_5G_CHAN) {
|
||||
+ status->band = NL80211_BAND_5GHZ;
|
||||
|
|
|
@ -13,18 +13,19 @@
|
|||
uci -q batch <<-EOF
|
||||
set wireless.radio${devidx}=wifi-device
|
||||
set wireless.radio${devidx}.type=mac80211
|
||||
@@ -174,13 +180,12 @@
|
||||
set wireless.radio${devidx}.channel=${channel}
|
||||
set wireless.radio${devidx}.band=${mode_band}
|
||||
set wireless.radio${devidx}.htmode=$htmode
|
||||
- set wireless.radio${devidx}.disabled=1
|
||||
@@ -203,13 +203,13 @@
|
||||
set wireless.${name}.channel=${channel}
|
||||
set wireless.${name}.band=${mode_band}
|
||||
set wireless.${name}.htmode=$htmode
|
||||
- set wireless.${name}.disabled=1
|
||||
|
||||
set wireless.default_radio${devidx}=wifi-iface
|
||||
set wireless.default_radio${devidx}.device=radio${devidx}
|
||||
set wireless.default_radio${devidx}.network=lan
|
||||
set wireless.default_radio${devidx}.mode=ap
|
||||
- set wireless.default_radio${devidx}.ssid=OpenWrt
|
||||
+ set wireless.default_radio${devidx}.ssid=${arednssid}
|
||||
set wireless.default_radio${devidx}.encryption=none
|
||||
set wireless.default_${name}=wifi-iface
|
||||
set wireless.default_${name}.device=${name}
|
||||
set wireless.default_${name}.network=lan
|
||||
set wireless.default_${name}.mode=ap
|
||||
- set wireless.default_${name}.ssid=OpenWrt
|
||||
+ set wireless.default_${name}.ssid=${arednssid}
|
||||
+ set wireless.default_${name}.ifname=$(echo ${name} | sed s/radio/wlan/)
|
||||
set wireless.default_${name}.encryption=none
|
||||
EOF
|
||||
uci -q commit wireless
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
--- a/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()
|
||||
ubnt,unifi|\
|
||||
wd,mynet-wifi-rangeextender|\
|
||||
winchannel,wb2000)
|
||||
@@ -126,7 +126,9 @@ ath79_setup_interfaces()
|
||||
zyxel,nwa1121-ni|\
|
||||
zyxel,nwa1123-ac|\
|
||||
zyxel,nwa1123-ni)
|
||||
- ucidef_set_interface_lan "eth0"
|
||||
+ ucidef_set_interfaces_lan_wan "eth0" "eth0.1"
|
||||
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
|
||||
|
@ -186,9 +186,9 @@
|
|||
--- a/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()
|
||||
case "$board" in
|
||||
aerohive,hiveap-121|\
|
||||
glinet,gl-e750)
|
||||
glinet,gl-e750|\
|
||||
meraki,mr18)
|
||||
- ucidef_set_interface_lan "eth0"
|
||||
+ ucidef_set_interfaces_lan_wan "eth0" "eth0.1"
|
||||
+ 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
|
||||
+++ 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-g-5hact2hnd|\
|
||||
mikrotik,routerboard-wapr-2nd)
|
||||
|
@ -232,6 +232,7 @@
|
|||
+ ucidef_set_interface "dtdlink" device "eth0.2 eth1.2" protocol "static"
|
||||
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
|
||||
;;
|
||||
mikrotik,routerboard-951ui-2hnd|\
|
||||
- mikrotik,routerboard-951ui-2nd|\
|
||||
- mikrotik,routerboard-952ui-5ac2nd)
|
||||
+ mikrotik,routerboard-951ui-2nd)
|
||||
|
@ -275,9 +276,9 @@
|
|||
+ ucidef_set_interface "dtdlink" device "eth0.2 eth1.2" protocol "static"
|
||||
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
|
||||
+ ;;
|
||||
mikrotik,routerboard-951ui-2hnd|\
|
||||
mikrotik,routerboard-951ui-2nd)
|
||||
ucidef_set_interface_wan "eth1"
|
||||
ucidef_add_switch "switch0" \
|
||||
|
||||
--- a/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
|
||||
+++ 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 @@
|
||||
"0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
|
||||
;;
|
||||
|
|
|
@ -1,36 +1,41 @@
|
|||
--- a/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 @@
|
||||
engenius,emd1|\
|
||||
@@ -26,7 +26,9 @@
|
||||
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,mr74|\
|
||||
mikrotik,lhgg-60ad|\
|
||||
- mikrotik,sxtsq-5-ac|\
|
||||
netgear,ex6100v2|\
|
||||
netgear,ex6150v2|\
|
||||
zyxel,wre6606)
|
||||
ucidef_set_interface_lan "eth0"
|
||||
netgear,ex6150v2)
|
||||
ucidef_set_interface_lan "lan"
|
||||
;;
|
||||
+ mikrotik,sxtsq-5-ac)
|
||||
+ ucidef_set_interfaces_lan_wan "lan" "lan.1"
|
||||
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
|
||||
+ ucidef_set_interface "dtdlink" device "lan.2" protocol "static"
|
||||
+ ;;
|
||||
aruba,ap-303h|\
|
||||
teltonika,rutx10)
|
||||
ucidef_set_interfaces_lan_wan "eth0" "eth1"
|
||||
|
||||
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
@@ -61,9 +61,9 @@
|
||||
p2w,r619ac-64m|\
|
||||
p2w,r619ac-128m|\
|
||||
zyxel,nbg6617)
|
||||
- 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"
|
||||
avm,fritzbox-7530)
|
||||
ucidef_set_interface_lan "lan1 lan2 lan3 lan4"
|
||||
;;
|
||||
@@ -83,7 +83,9 @@
|
||||
glinet,gl-a1300|\
|
||||
glinet,gl-b1300|\
|
||||
mobipromo,cm520-79f)
|
||||
- ucidef_set_interfaces_lan_wan "lan1 lan2" "wan"
|
||||
+ ucidef_set_interfaces_lan_wan "lan1" "wan"
|
||||
+ ucidef_set_interface "dtdlink" device "lan2.2" protocol "static"
|
||||
+ ucidef_set_interface "wifi" device "wlan0" protocol "static"
|
||||
;;
|
||||
avm,fritzbox-4040|\
|
||||
linksys,ea6350v3|\
|
||||
mikrotik,wap-ac|\
|
||||
mikrotik,wap-ac-lte|\
|
||||
|
|
|
@ -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"
|
|
@ -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"
|
|
@ -5,7 +5,7 @@ Index: openwrt/feeds/packages/net/iperf3/Makefile
|
|||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=iperf
|
||||
PKG_VERSION:=3.11
|
||||
PKG_VERSION:=3.15
|
||||
-PKG_RELEASE:=1
|
||||
+PKG_RELEASE:=1AREDN
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- /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 @@
|
||||
+--- a/drivers/net/phy/ar8216.c
|
||||
++++ b/drivers/net/phy/ar8216.c
|
||||
|
@ -8,9 +8,9 @@
|
|||
+ continue;
|
||||
+
|
||||
+- portmask[i] = 1 << AR8216_PORT_CPU;
|
||||
++ for (j = 0; j < dev->ports; j++) {
|
||||
++ portmask[i] |= (1 << j);
|
||||
++ }
|
||||
++ for (j = 0; j < dev->ports; j++) {
|
||||
++ portmask[i] |= (1 << j);
|
||||
++ }
|
||||
+ portmask[AR8216_PORT_CPU] |= (1 << i);
|
||||
+ }
|
||||
+ }
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
--- a/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_gain $antenna_gain >/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
|
||||
+ iw phy "$phy" set distance auto
|
||||
+ else
|
||||
+ iw phy "$phy" set distance "$distance"
|
||||
+ fi
|
||||
+ if [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ]; then
|
||||
+ iw phy "$phy" set distance auto
|
||||
+ else
|
||||
+ iw phy "$phy" set distance "$distance"
|
||||
+ fi
|
||||
|
||||
if [ -n "$txpower" ]; then
|
||||
iw phy "$phy" set txpower fixed "${txpower%%.*}00"
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
--- a/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
|
||||
bool
|
||||
prompt "Enable IPv6 support in packages"
|
||||
- default y
|
||||
+ default n
|
||||
help
|
||||
Enables IPv6 support in kernel (builtin) and packages.
|
||||
|
||||
- def_bool y
|
||||
+ def_bool n
|
||||
|
||||
comment "Stripping options"
|
||||
|
||||
--- a/include/netfilter.mk
|
||||
+++ b/include/netfilter.mk
|
||||
@@ -325,7 +325,7 @@
|
||||
|
@ -46,7 +46,7 @@
|
|||
|
||||
--- /dev/null
|
||||
+++ 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
|
||||
++++ b/root/usr/share/firewall4/main.uc
|
||||
+@@ -33,14 +33,14 @@ function reload_sets() {
|
||||
|
@ -166,3 +166,23 @@
|
|||
+ {%+ include("zone-match.uc", { egress, rule }) -%}
|
||||
+ {%+ if (zone.counter): -%}
|
||||
+ 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
|
@ -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
|
||||
+++ 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 @@
|
||||
nvmem-cell-names = "mac-address";
|
||||
phy-mode = "sgmii";
|
||||
|
|
|
@ -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.
|
||||
--- /dev/null
|
||||
+++ 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
|
||||
++++ b/ath10k-5.15/hw.c
|
||||
+@@ -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
|
||||
+ * 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;
|
||||
|
|
|
@ -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, },
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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
|
||||
|
||||
[ -n "$chanbw" ] && {
|
||||
|
@ -9,14 +9,12 @@
|
|||
[ -f "$file" ] && echo "$chanbw" > "$file"
|
||||
done
|
||||
}
|
||||
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
||||
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
||||
@@ -1098,6 +1098,8 @@
|
||||
iw phy "$phy" set antenna_gain $antenna_gain >/dev/null 2>&1
|
||||
if [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ]; then
|
||||
iw phy "$phy" set distance auto
|
||||
+ elif [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath10k ]; then
|
||||
+ iw phy "$phy" set distance auto
|
||||
else
|
||||
iw phy "$phy" set distance "$distance"
|
||||
fi
|
||||
@@ -1104,6 +1104,8 @@
|
||||
iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1
|
||||
if [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ]; then
|
||||
iw phy "$phy" set distance auto
|
||||
+ elif [ $distance -eq 0 -a -d /sys/kernel/debug/ieee80211/$phy/ath10k ]; then
|
||||
+ iw phy "$phy" set distance auto
|
||||
else
|
||||
iw phy "$phy" set distance "$distance"
|
||||
fi
|
||||
|
|
|
@ -38,9 +38,10 @@
|
|||
|
||||
--- /dev/null
|
||||
+++ 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
|
||||
+
|
||||
+#include "ar9344_mikrotik_routerboard.dtsi"
|
||||
+#include "ar9344_mikrotik_routerboard-16m-nor.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
|
@ -132,9 +133,10 @@
|
|||
+};
|
||||
--- /dev/null
|
||||
+++ 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
|
||||
+
|
||||
+#include "ar9344_mikrotik_routerboard.dtsi"
|
||||
+#include "ar9344_mikrotik_routerboard-16m-nor.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
|
@ -237,11 +239,10 @@
|
|||
+};
|
||||
--- a/target/linux/ipq40xx/image/mikrotik.mk
|
||||
+++ b/target/linux/ipq40xx/image/mikrotik.mk
|
||||
@@ -62,3 +62,27 @@
|
||||
DEVICE_PACKAGES := rssileds
|
||||
@@ -71,6 +71,30 @@
|
||||
endef
|
||||
TARGET_DEVICES += mikrotik_sxtsq-5-ac
|
||||
+
|
||||
|
||||
+define Device/mikrotik_ldf-5acd
|
||||
+ $(call Device/mikrotik_nor)
|
||||
+ DEVICE_MODEL := RouterBOARD LDF 5 AC (RBLDFG-5acD)
|
||||
|
@ -265,6 +266,11 @@
|
|||
+ DEVICE_PACKAGES := rssileds
|
||||
+endef
|
||||
+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
|
||||
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
@@ -35,6 +35,8 @@
|
||||
|
@ -511,7 +517,7 @@
|
|||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gmac0 {
|
||||
+&gmac {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
|
@ -551,49 +557,44 @@
|
|||
+};
|
||||
--- 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
|
||||
@@ -197,6 +197,8 @@
|
||||
mikrotik,cap-ac |\
|
||||
mikrotik,hap-ac2 |\
|
||||
@@ -210,6 +210,8 @@
|
||||
mikrotik,hap-ac3 |\
|
||||
mikrotik,hap-ac3-lte6-kit |\
|
||||
mikrotik,sxtsq-5-ac |\
|
||||
+ mikrotik,lhgg-5acd* |\
|
||||
+ mikrotik,ldf-5acd |\
|
||||
mikrotik,sxtsq-5-ac)
|
||||
wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data"
|
||||
( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x8000 0x2f20 ) || \
|
||||
@@ -236,6 +237,8 @@
|
||||
mikrotik,cap-ac |\
|
||||
mikrotik,wap-ac |\
|
||||
mikrotik,wap-ac-lte |\
|
||||
mikrotik,wap-r-ac)
|
||||
@@ -249,6 +251,8 @@
|
||||
mikrotik,hap-ac2 |\
|
||||
mikrotik,hap-ac3 |\
|
||||
mikrotik,hap-ac3-lte6-kit |\
|
||||
+ mikrotik,lhgg-5acd* |\
|
||||
+ mikrotik,ldf-5acd |\
|
||||
mikrotik,sxtsq-5-ac)
|
||||
wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data"
|
||||
( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0xaf20 0x2f20 ) || \
|
||||
mikrotik,wap-ac |\
|
||||
mikrotik,wap-ac-lte |\
|
||||
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
|
||||
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
|
||||
@@ -163,12 +163,14 @@
|
||||
;;
|
||||
@@ -181,6 +181,8 @@
|
||||
mikrotik,cap-ac|\
|
||||
mikrotik,hap-ac2|\
|
||||
mikrotik,hap-ac3-lte6-kit|\
|
||||
+ mikrotik,lhgg-5acd*|\
|
||||
+ mikrotik,ldf-5acd|\
|
||||
mikrotik,lhgg-60ad|\
|
||||
mikrotik,sxtsq-5-ac)
|
||||
[ "$(rootfs_type)" = "tmpfs" ] && mtd erase firmware
|
||||
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
|
||||
mikrotik,sxtsq-5-ac|\
|
||||
mikrotik,wap-ac|\
|
||||
--- a/target/linux/ath79/image/mikrotik.mk
|
||||
+++ b/target/linux/ath79/image/mikrotik.mk
|
||||
@@ -28,6 +28,16 @@
|
||||
|
@ -668,246 +669,14 @@
|
|||
|
||||
--- /dev/null
|
||||
+++ b/target/linux/ath79/dts/ar9342_mikrotik_routerboard-912uag-5hpnd.dts
|
||||
@@ -0,0 +1,240 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
@@ -0,0 +1,8 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-only
|
||||
+
|
||||
+#include "ar9344.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include "ar9342_mikrotik_routerboard-912uag-2hpnd.dts"
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "mikrotik,routerboard-912uag-5hpnd", "qca,ar9342";
|
||||
+ 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>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð0 {
|
||||
+ 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
|
||||
+++ 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
|
||||
+++ 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"
|
||||
;;
|
||||
+ mikrotik,routerboard-911g-5hpnd*|\
|
||||
mikrotik,routerboard-911-lite|\
|
||||
mikrotik,routerboard-912uag-2hpnd|\
|
||||
+ mikrotik,routerboard-912uag-5hpnd|\
|
||||
mikrotik,routerboard-lhg-2nd|\
|
||||
mikrotik,routerboard-lhg-5nd|\
|
||||
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
|
||||
+ mikrotik,routerboard-911g-5hpnd*|\
|
||||
mikrotik,routerboard-911-lite|\
|
||||
mikrotik,routerboard-912uag-2hpnd|\
|
||||
+ mikrotik,routerboard-912uag-5hpnd|\
|
||||
mikrotik,routerboard-lhg-2nd|\
|
||||
|
@ -942,10 +715,12 @@
|
|||
mikrotik,routerboard-map-2nd|\
|
||||
--- 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
|
||||
@@ -24,6 +24,8 @@
|
||||
@@ -23,8 +23,10 @@
|
||||
case "$FIRMWARE" in
|
||||
"ath9k-eeprom-ahb-18100000.wmac.bin")
|
||||
case $board in
|
||||
+ mikrotik,routerboard-911g-5hpnd*|\
|
||||
mikrotik,routerboard-911-lite|\
|
||||
mikrotik,routerboard-912uag-2hpnd|\
|
||||
+ mikrotik,routerboard-912uag-5hpnd|\
|
||||
mikrotik,routerboard-lhg-2nd|\
|
||||
|
@ -953,15 +728,16 @@
|
|||
mikrotik,routerboard-sxt-5nd|\
|
||||
--- a/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
|
||||
mikrotik,routerboard-493g|\
|
||||
+ mikrotik,routerboard-911g-5hpnd*|\
|
||||
mikrotik,routerboard-912uag-2hpnd|\
|
||||
+ mikrotik,routerboard-912uag-5hpnd|\
|
||||
mikrotik,routerboard-921gs-5hpacd-15s|\
|
||||
mikrotik,routerboard-921gs-5hpacd-19s|\
|
||||
mikrotik,routerboard-922uags-5hpacd|\
|
||||
mikrotik,routerboard-951g-2hnd|\
|
||||
--- a/target/linux/ath79/image/mikrotik.mk
|
||||
+++ b/target/linux/ath79/image/mikrotik.mk
|
||||
@@ -18,6 +18,24 @@
|
||||
|
|
|
@ -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"
|
||||
;;
|
|
@ -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
|
|
@ -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|\
|
|
@ -62,15 +62,15 @@
|
|||
DEVICE_MODEL := AirRouter
|
||||
- SUPPORTED_DEVICES += airrouter
|
||||
+ SUPPORTED_DEVICES += airrouter ubnt,airrouter
|
||||
DEFAULT := n
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_airrouter
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
@@ -14,7 +14,7 @@
|
||||
SOC := ar7241
|
||||
DEVICE_MODEL := NanoBridge M
|
||||
DEVICE_PACKAGES += rssileds
|
||||
- SUPPORTED_DEVICES += bullet-m
|
||||
+ SUPPORTED_DEVICES += bullet-m ubnt,bullet-m
|
||||
DEFAULT := n
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_nanobridge-m
|
||||
|
|
@ -1,10 +1,8 @@
|
|||
0001-ath79-add-support-for-TP-Link-CPE605-v1.patch
|
||||
001-ath79-cpe220v3-sysupgrade-supported.patch
|
||||
001-ath79-reverse-wpad-basic-wolfssl.patch
|
||||
006-rocket-m-flash-fix.patch
|
||||
001-ath79-reverse-wpad-basic-mbedtls.patch
|
||||
006-flash-fixes.patch
|
||||
010-lz77-decompression-support.patch
|
||||
100-remove-rcbutton-reset.patch
|
||||
701-ath9k-reset.patch
|
||||
701-extended-spectrum.patch
|
||||
702-enable-country-hx.patch
|
||||
703-fix-dnsmasq.patch
|
||||
|
@ -13,8 +11,8 @@
|
|||
705-aredn-banner.patch
|
||||
706-MeshNode-SSID.patch
|
||||
708-define-aredn-ath79-networks.patch
|
||||
708-define-aredn-rocket-m-networks.patch
|
||||
708-define-aredn-ipq40xx-networks.patch
|
||||
708-define-aredn-ramips-networks.patch
|
||||
709-iperf-fw-restart.patch
|
||||
710-no-ping6-traceroute6.patch
|
||||
711-aredn-ports-dumbswitch-ar8216.patch
|
||||
|
@ -25,20 +23,21 @@
|
|||
717-fix-olsrd-oparse-error.patch
|
||||
718-temp-remove-olsrd-pud.patch
|
||||
719-disable-ipv6.patch
|
||||
730-ipq40xx-dsa.patch
|
||||
731-ag71xx-updates-and-fixes.patch
|
||||
742-5-and-10mhz-ath10k-ct-support.patch
|
||||
742-radio-extend-mediatek-support.patch
|
||||
743-mac80211-ath10k.patch
|
||||
744-dd-wrt-firmware.patch
|
||||
745-ath10k-more-scan-channels.patch
|
||||
746-rocket-m-xw-support.patch
|
||||
747-mikrotik-extra-support.patch
|
||||
748-powerbeam-m5-300-support.patch
|
||||
749-copy-tiny-nodes-to-generic.patch
|
||||
749-fix-tiny.patch
|
||||
749-ubiquiti-extra-support.patch
|
||||
749-ubiquiti-firmware-version.patch
|
||||
750-ibss-2g-fix.patch
|
||||
751-x86.patch
|
||||
752-mikrotik-nand-revert.patch
|
||||
753-ubiquiti-2ac.patch
|
||||
800-upgrade-compatibility.patch
|
||||
801-mikrotik-lhg-variants.patch
|
||||
|
|
Loading…
Reference in New Issue