So far, we were using a sort operation on the generated .config to
implement precedence of =y packages over =m, and =m over unset.
Unfortunately, this sort not only used for packages, but for all config
lines. This made it impossible to override settings from targets/generic
in a target config when the new setting was sorted before the generic
setting.
To fix this, track configurations by their keys, so we can properly
override config keys that were set before. Value-based precedence is
only preserved for package configuration.
The config() and try_config() calls always take key and value as
separate arguments now. Strings are quoted automatically; the values
true, nil and false map to y, m and unset for tristate options. config()
can take an optional third argument to override the error message to
display when the setting fails to apply.
All existing target configs generate the same .config with the old and the
new code. The new code is also a bit faster on targets with many devices.
In OpenWrt 19.07, the block size was increased to 1024KiB for "tiny"
devices by default to save flash. Unfortunately, this also significantly
increases the cache memory required by squashfs.
In my test, the increased block size reduced the image size by ~64KiB,
but increased the RAM usage by ~2.6MiB. As most tiny devices have only
32MiB of RAM, this is not a reasonable tradeoff.
The ar71xx-generic target already defines an even lower block size of
64KiB.
As x86-generic is compiled to pentium4 (and newer) there is a need for
a subtarget for older devices. The x86-legacy subtarget is set to
compile to pentium (and newer) and should support even very old devics.
x86-legacy includes the packages from x86.inc to only maintain one
package list. The three excludes are because the packages do not exist
for x86-legacy.
The precedence of different package lists was broken since #1876,
disallowing removal of GLUON_FEATURES packages via GLUON_SITE_PACKAGES.
Including all package selections, both implicit defaults and explicit
handling in Gluon, the order of precedence is now the following:
1. OpenWrt defaults (including target-specific defaults)
2. Device-specific packages from OpenWrt
3. Generic default packages (from target/generic)
4. Target default packages (target/$(GLUON_TARGET))
5. Removal of opkg for tiny targets
6. Packages derived from GLUON_FEATURES + GLUON_FEATURES_$(class)
7. GLUON_SITE_PACKAGES
8. GLUON_SITE_PACKAGES_$(class)
9. Device-specific packages from target/$(GLUON_TARGET)
10. Device-specific packages from GLUON_$(device)_SITE_PACKAGES
This also contains various pieces of cleanup:
- No hardcoded order of device classes for target_config.lua arguments
anymore (in fact, the Makefile doesn't know anything about device
classes now)
- target_conifg_lib.lua only hardcodes the fallback class for x86, no
other occurences of specific class names
- Feature -> package list mapping is moved from Makefile to the Lua code
as well (still implemented in Shell though)
This device has broken Ethernet on both ports.
Remove support for those devices. for now, as there was no feedback from
the original author.
Closes#1943
x86-geode does not include the common x86 target-settings. Thus we need
to specify the device class in order to build images with all necessary
packages included.
When adding device classes, targets without devices such as x86 were not
handled. As site and feature packages are included on such a per-device
decision, x86 images ended up without most packages.
Include a class setting for a target and include the class-packages
target-wide when this setting is configured.
Fixes 9c52365077 ("build: introduce device classes")
This commit assigns class-flags to devices. The following scheme is
used:
- ath9k & ath10k: tiny if RAM <128M
- ath10k & ath10k: tiny if RAM <256M
- all: tiny if RAM <64M
- all: tiny if flash <8M
All other devices automatically have the default device-class selected.
The Aruba Instant On AP11 is the Aruba AP-303 with a stripped-down
firmware. Add an alias for the device to remove confusion about the
different naming.
The devolo WiFi pro 1200i lost it's ath10k package definitions while
rebasing, thus selecting the wrong package set.
Fix it by adding the correct firmware and driver.
This changes the ath10k firmware and driver selection, as
ath10k-ct is now the default in upstream OpenWrt.
However, for 802.11s operation we need the QCA firmware and driver.
This adds previously absent ath10k packages definitions. This way,
devices correctly select CandelaTech firmware correctly, when
GLUON_WLAN_MESH is set to IBSS.
This is also necessary for all devices, when OpenWrt is switched to
19.07.
The kernel partition on these devices is too small for the
OpenWrt 19.07 kernel. It is also located after the rootfs, so
we cannot grow it further.
Therefore mark these devices as deprecated now.
This reverts commit fb08e10494.
Devices featuring ath10k radios should at least 128 MB of memory
as their driver is quite memory hungry.
Devices with a configuration (1x ath10k, 64M memory) like this have
often been seen as running out of memory.
The profile for GL.iNet AR750 currently selects ATH10K_PACKAGES, but this device actually has a QCA9887 which needs another driver.
This commit fixes the issue by setting ATH10K_PACKAGES_QCA9887 instead.
By passing the package name through merge_packages, it becomes possible to
override the package choice in GLUON_SITE_PACKAGES again, for example:
GLUON_SITE_PACKAGES += -hostapd-mini hostapd
The device is broken until the next release. The LEDs are currently not
working (fixed in current OpenWRT master).
Also give a brief explanation about the BROKEN status being dependent on
the WiFi chip used and not the SoC family in general.
This backports the TP-Link Archer C50 v4.
We are dropping the following upstream commits. They add support for the
TP-Link recovery-flag which enabled the web-recovery. As they are not
needed for the router to work, we drop them for now.
28cd2ca base-files: sysupgrade: support additional mtd options
1e06482 mtd: add logic for TP-Link ramips recovery magic
This allows for smaller firmware images and makes it possible to reset a
device via firstboot command.
Signed-off-by: Matthias Fritzsche <matthias@chemnitz.freifunk.net>
This commit removes the broken flag from all devices in the mt76x8
subtarget.
The stability of the mt76 driver for the mt7628 and mt7612 has greatly
improved in the last half-year. It might be still behind ath9k and
ath10k but it is suitable for daily use.
This affects the following devices:
- GL.iNet MT300N v2
- TP-Link Archer C50 v3
- TP-Link TL-WR841 v13
This adds support for the TP-Link TL-WR902Ac v1 travel router.
The device is marked as broken due to 64MB which might be insufficient
in certain environments.
The MT76x8 is currently not stable enough for worry-free use with Gluon.
It suffers from reboots in intervals as little as 12 hours or WiFi
freezes for several hours.
It may be unflagged as soon the situation with mt76 got better.
This device is a dual 5GHz device. It is recommended to manually change the
radio of the first device to the lower 5GHz channels and the second radio
to the upper 5GHz channels.
Add support for IBSS meshing. Leave target marked as BROKEN for IBSS
as stability is unknown and WiFi LEDs are not working.
Functionality was tested in the network of Freifunk Frankfurt with other
ipq40xx and ar71xx devices.
Support is marked as broken because this device is sold in two variants,
one with 64M RAM and another with 128M. As of now 64M is not enough
for ath10k with 5GHz enabled.
As there is no indication known which variant one will get better mark
it as broken.
Signed-off-by: Christoph Krapp <achterin@googlemail.com>