Fixes the following warnings for Netgear DGND3700v2 and Comtrend VR-3032u:
[ 1.059540] 7 fixed-partitions partitions found on MTD device brcmnand.0
[ 1.066570] OF: Bad cell count for /ubus/nand@10000200/nandcs@0/partitions
[ 1.073766] OF: Bad cell count for /ubus/nand@10000200/nandcs@0/partitions
[ 1.081927] OF: Bad cell count for /ubus/nand@10000200/nandcs@0/partitions
[ 1.089128] OF: Bad cell count for /ubus/nand@10000200/nandcs@0/partitions
Huawei HG253s v2 is a BCM6362 with 128M RAM, internal wifi and external
BCM53124S switch.
This device is already supported in bcm63xx target, so more information can be
found in https://openwrt.org/toh/huawei/hg253s_v2.
It's a perfect example of a device with internal and external switch
coexistance since most devices only have ports on one of the switches but not
both of them.
Without this change, internal and external B53 switches couldn't coexist as
reported in https://github.com/openwrt/openwrt/issues/10313.
In order to fix this we need to force the B53 MMAP DSA switch driver to use
bcm6368-mdio-mux for accessing the PHY registers instead of its own phy_read()
and phy_write() functions.
Andre Heider [Thu, 2 Feb 2023 20:33:38 +0000 (21:33 +0100)]
treewide: add support for "lto" in PKG_BUILD_FLAGS
This reduces open coding and allows to easily add a knob to enable
it treewide, where chosen packages can still opt-out via "no-lto".
Some packages used LTO, but not the linker plugin. This unifies 'em
all to attempt to produce better code.
Quoting man gcc(1):
"This improves the quality of optimization by exposing more code to the
link-time optimizer."
Also use -flto=auto instead of -flto=jobserver, as it's not guaranteed
that every buildsystem uses +$(MAKE) correctly.
Andre Heider [Thu, 2 Feb 2023 20:16:21 +0000 (21:16 +0100)]
treewide: add support for "gc-sections" in PKG_BUILD_FLAGS
This reduces open coding and allows to easily add a knob to
enable it treewide, where chosen packages can still opt-out via
"no-gc-sections".
Note: libnl, mbedtls and opkg only used the CFLAGS part without the
LDFLAGS counterpart. That doesn't help at all if the goal is to produce
smaller binaries. I consider that an accident, and this fixes it.
Note: there are also packages using only the LDFLAGS part. I didn't
touch those, as gc might have been disabled via CFLAGS intentionally.
Andre Heider [Thu, 2 Feb 2023 18:20:42 +0000 (19:20 +0100)]
build: introduce PKG_BUILD_FLAGS and move PKG_IREMAP to it
PKG_BUILD_FLAGS is a new variable for package Makefiles similar to
PKG_FLAGS. It's a whitespace separated list of flags to control various
aspects of how a package is build.
The build system and/or .config defines the default for each, but
every package has the means to override it. Using $flagname enables
a flag, no-$flagname disables it.
Start with PKG_IREMAP as "iremap". That's easy as no package here
nor in any package feed uses it. The default is unchanged: enabled.
Packages can opt-out via:
PKG_BUILD_FLAGS:=no-iremap
(Not that any should, just to illustrate how to use it)
Robert Marko [Tue, 30 Jun 2020 16:07:50 +0000 (18:07 +0200)]
ipq40xx: add support for Wallystech DR40x9
Adds support for the Wallys DR40x9 series boards.
They come in IPQ4019 and IPQ4029 versions.
IPQ4019/4029 only differ in that that IPQ4029 is the industrial version that is rated to higher temperatures.
Specifications are:
* CPU: Qualcomm IPQ40x9 (4x ARMv7A Cortex A7) at 716 MHz
* RAM: 512 MB
* Storage: 2MB of SPI-NOR, 128 MB of parallel NAND
* USB 3.0 TypeA port for users
* MiniPCI-E with PCI-E 2.0 link
* MiniPCI-E for LTE modems with only USB2.0 link
* 2 SIM card slots that are selected via GPIO11
* MicroSD card slot
* Ethernet: 2x GBe with 24~48V passive POE
* SFP port (Does not work, I2C and GPIO's not connected on hardware)
* DC Jack
* UART header
* WLAN: In-SoC 2x2 802.11b/g/n and 2x2 802.11a/n/ac
* 4x MMCX connectors for WLAN
* Reset button
* 8x LED-s
Installation instructions:
Connect to UART, pins are like this:
-> 3.3V | TX | RX | GND
Settings are 115200 8n1
Boot initramfs from TFTP:
tftpboot 0x84000000 openwrt-ipq40xx-generic-wallys_dr40x9-initramfs-fit-uImage.itb
bootm
Then copy the sysupgrade image to the /tmp folder and execute sysupgrade -n <image_name>
The board file binary was provided from Wallystech on March 14th 2023
including full permission to use and distribute.
Signed-off-by: Robert Marko <robert.marko@sartura.hr> Signed-off-by: Koen Vandeputte <koen.vandeputte@citymesh.com>
Cases have been reported in which certain devices do not boot correctly
or have errors. After various tests by users who have such errors it has
been concluded that the SPI frequency should be reduced to 40Mhz, at
this speed it appears that all devices work correctly.
Signed-off-by: Óscar García Amor <ogarcia@connectical.com>
John Audia [Sat, 11 Mar 2023 19:03:00 +0000 (14:03 -0500)]
x86: fix deprecated CONFIG_MICROCODE_OLD_INTERACE
We use late loading[1] so need to set this option despite upstream adding a
kernel taint when this option is set. See discussion in PR#12149 for more details.
David Bauer [Mon, 20 Mar 2023 16:27:58 +0000 (17:27 +0100)]
mpc85xx: poll PHY status
Disable interrupts for the eth-PHYs, as the interrupts are either not
firing or lost within the stack. Switch to polling the PHY status in the
meantime until a proper fix is implemented.
David Bauer [Mon, 20 Mar 2023 03:50:14 +0000 (04:50 +0100)]
mpc85xx: use bootwrapper for ws-ap3825i
The boot-procedure for the Extreme WS-AP3825I is vfragile to put it
mildly. It does not relocate the FDT properly. It currently exercises
every step manually as well as coming with a pre-padded dtb.
Use the PowerPC bootwrapper code for legacy platforms with a pre-filles
DTS instead. We still need to ship a fit image to not break the fdt
resize / relocate instructions on existing boards. This does not require
adapting the U-Boot bootcommand.
Netgear WAX218 is a 802.11ax AP claiming AX3600 support. It is wall
or ceiling mountable. It can be powered via PoE, or a 12 V adapter.
The board has footprints for 2.54mm UART headers. They're difficult to
solder because the GND is connected to a large copper plane. Only try
soldering if you are very skilled. Otherwise, use pogo pins.
Specifications:
---------------
* CPU: Qualcomm IPQ8072A Quad core Cortex-A53 2.2GHz
* RAM: 366 MB of RAM available to OS, not sure of total amount
* Storage: Macronix MX30UF2G18AC 256MB NAND
* Ethernet:
* 2.5G RJ45 port (QCA8081) with PoE input
* WLAN:
* 2.4GHz/5GHz with 8 antennas
* LEDs:
* Power (Amber)
* LAN (Blue)
* 2G WLAN (Blue)
* 5G WLAN (Blue)
* Buttons:
* 1x Factory reset
* Power: 12V DC Jack
* UART: Two 4-pin unpopulated headers near the LEDs
* "J2 UART" is the CPU UART, 3.3 V level
Installation:
=============
Web UI method
-------------
Flashing OpenWRT using the vendor's Web UI is problematic on this
device. The u-boot mechanism for communicating the active rootfs is
antiquated and unreliable. Instead of setting the kernel commandline,
it relies on patching the DTS partitions of the nand node. The way
partitions are patched is incompatible with newer kernels.
Newer kernels use the SMEM partition table, which puts "rootfs" on
mtd12. The vendor's Web UI will flash to either mtd12 or mtd14. One
reliable way to boot from mtd14 and avoid boot loops is to use an
initramfs image.
1. In the factory web UI, navigate to System Manager -> Firmware.
2. In the "Local Firmware Upgrade" section, click Browse
3. Navigate and select the 'web-ui-factory.fit' image
4. Click "Upload"
5. On the following page, click on "Proceed"
The flash proceeds at this point and the system will reboot
automatically to OpenWRT.
6. Flash the 'nand-sysupgrade.bin' using Luci or the commandline
SSH method
----------
Enable SSH using the CLI or Web UI. The root account is locked out to
ssh, and the admin account defaults to Netgear's CLI application.
So we need to get creative:
First, make sure the device boots from the second firmware partition:
Now reboot the device, and it should boot into a ready-to-use OpenWRT.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Reviewed-by: Robert Marko <robimarko@gmail.com> Tested-by: Francisco G Luna <frangonlun@gmail.com>
David Bauer [Sun, 19 Mar 2023 20:33:32 +0000 (21:33 +0100)]
mpc85xx: fix incorrect kernel target
The wrapper-image for the WL-WDR4900 was used as a build-target for the
kernel. This workd fine as long as only a single wrapper is used with
the OpenWrt build-system.
If additional wrappers are used, the build becomes racy in the
wrapper-stage.
The wrapper images actually do not represent a target. They are built
based on the kernel configuration. Only copy the resulting images to
avoid race-conditions as explained.
Hauke Mehrtens [Wed, 8 Mar 2023 20:31:19 +0000 (21:31 +0100)]
kernel: Deactivate options shown with CONFIG_KERNEL_KCOV=y
This sets the CONFIG_KCOV_IRQ_AREA_SIZE kernel configuration option to its default value.
This is shown when I set CONFIG_KERNEL_KCOV=y in the OpenWrt configuration on x86/64.
Hauke Mehrtens [Wed, 8 Mar 2023 20:31:17 +0000 (21:31 +0100)]
kernel: Set some options to default shown with CONFIG_KERNEL_UBSAN=y
This sets some kernel configuration options to their default values. I saw
these as warnings when I set CONFIG_KERNEL_UBSAN=y is set in the OpenWrt
configuration on x86/64.
Mathew McBride [Thu, 23 Feb 2023 05:51:36 +0000 (16:51 +1100)]
tools: update elf.h
OpenWrt contains a 2012 copy of glibc's elf.h, which predates the
introduction of some newer architectures like Arm64 and RISC-V.
Linux 5.13 introduced the "gen-hyprel" tool into the kernel compile
(when virtualization/KVM is enabled) which requires EM_AARCH64 to be
defined.
arch/arm64/kvm/hyp/nvhe/gen-hyprel.c: In function 'init_elf':
arch/arm64/kvm/hyp/nvhe/gen-hyprel.c:289:43: error: 'EM_AARCH64'
undeclared (first use in this function); did you mean 'EM_IA_64'?
289 | assert_eq(elf16toh(elf.ehdr->e_machine), EM_AARCH64, "%u");
| ^~~~~~~~~~
Update the copy of elf.h from the latest glibc to fix this.
Compile-tested: ath79, armvirt, mpc85xx, x86
Run-tested: armvirt
Kristjan Krušič [Sat, 4 Feb 2023 16:00:57 +0000 (17:00 +0100)]
ipq806x: add support for Nokia Airscale AC400i
Hardware
--------
SoC: Qualcomm IPQ8065
RAM: 512 MB DDR3
Flash: 256 MB NAND (Macronix MX30UF2G18AC) (split into 2x128MB)
4 MB SPI-NOR (Macronix MX25U3235F)
WLAN: Qualcomm Atheros QCA9984 - 2.4Ghz
Qualcomm Atheros QCA9984 - 5Ghz
ETH: eth0 - POE (100Mbps in U-Boot, 1000Mbps in OpenWrt)
eth1 - (1000Mbps in both)
Auto-negotiation broken on both.
USB: USB 2.0
LED: 5G, 2.4G, ETH1, ETH2, CTRL, PWR (All support green and red)
BTN: Reset
Other: SD card slot (non-functional)
Serial: 115200bps, near the Ethernet transformers, labeled 9X.
Connections from the arrow to the 9X text:
[NC] - [TXD] - [GND] - [RXD] - [NC]
Installation
------------
0. Connect to the device
Plug your computer into LAN2 (1000Mbps connection required).
If you use the LAN1/POE port, set your computer to force a 100Mbps link.
Connect to the device via TTL (Serial) 115200n8.
Locate the header (or solder pads) labeled 9X,
near the Ethernet jacks/transformers.
There should be an arrow on the other side of the header marking.
The connections should go like this:
(from the arrow to the 9X text): NC - TXD - GND - RXD - NC
1. Prepare for installation
While the AP is powering up, interrupt the startup process.
MAKE SURE TO CHECK YOUR CURRENT PARTITION!
If you see: "Current Partition is : partB" or
"Need to switch partition from partA to partB",
you have to force the device into partA mode, before continuing.
This can be done by changing the PKRstCnt to 5 and resetting the device.
setenv PKRstCnt 5
saveenv
reset
After you interrupt the startup process again,
you should see: Need to switch partition from partB to partA
You can now continue to the next step.
If you see: "Current Partition is : partA",
you can continue to the next step.
2. Prevent partition switching.
To prevent the device from switching partitions,
we are going to modify the startup command.
set bootcmd "setenv PKRstCnt 0; saveenv; bootipq"
setenv
3. First boot
Now, we have to boot the OpenWrt intifs.
The easiest way to do this is by using Tiny PXE.
You can also use the normal U-Boot tftp method.
Run "bootp" this will get an IP from the DHCP server
and possibly the firmware image.
If it doesn't download the firmware image, run "tftpboot".
Now run "bootm" to run the image.
You might see:
"ERROR: new format image overwritten - must RESET the board to recover"
this means that the image you are trying to load is too big.
Use a smaller image for the initial boot.
4. Install OpenWrt from initfs
Once you are booted into OpenWrt,
transfer the OpenWrt upgrade image and
use sysupgrade to install OpenWrt to the device.
Signed-off-by: Kristjan Krušič <kristjan.krusic@krusic22.com>
lantiq: xway: add phy reset pin to AVM Fritz!Box 7320
This commit adds the PHY reset gpio for the LAN1 port to the dts.
According to the GPL sources, gpios 34 and 36 are used on the AVM
FritzBox 7320 and 7330. The second port is unsupported.
The gpio assignment has been verified on the FritzBox 7330.
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
John Audia [Mon, 13 Mar 2023 13:04:36 +0000 (09:04 -0400)]
kernel: bump 5.15 to 5.15.102
No patches needed to be rebased.
Signed-off-by: John Audia <therealgraysky@proton.me> Tested-by: Robert Marko <robimarko@gmail.com> #ipq807x/Dynalink WRX36 Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> #ipq807x/ax3600, x86_64/FW-7543B, ath79/tl-wdr3600, ipq806x/g10, ipq806x/nbg6817
Signed-off-by: John Audia <therealgraysky@proton.me> Tested-by: Robert Marko <robimarko@gmail.com> #ipq807x/Dynalink WRX36 Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> #ipq807x/ax3600, x86_64/FW-7543B, ath79/tl-wdr3600, ipq806x/g10, ipq806x/nbg6817
John Audia [Sat, 11 Mar 2023 15:28:02 +0000 (10:28 -0500)]
x86: set deprecated CONFIG_MICROCODE_OLD_INTERACE
We use late loading[1] so need to set this option despite upstream adding a
kernel taint when this option is set. See discussion in PR#12149 for more details.
This splits the code in 4 files:
- uencrypt.h
- uencrypt.c - main program
- uencrypt-openssl.c - OpenSSL/wolfSSL implementation
- uencrypt-mbedtls - mbedTLS implementation
Other changes, accounting for ~400 bytes increase in ipk size:
- more error condition checking and reporting,
- hide key and iv command line arguments
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
This commit includes some additional changes:
- better handling of iv and keys in openssl/wolfssl variants
- fix compiler warnings and whitespace
- build all 3 variants as separate packages
- adjust the new package name in targets' DEVICE_PACKAGES
- remove PKG_FLAGS:=nonshared
[Beeline SmartBox Flash - OK] Tested-by: Mikhail Zhilkin <csharper2005@gmail.com>
[after test: replaced a hardcoded IV size of 16 by cipher_info->iv_size] Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Make sure it uses updated Jalapeno BDF inherited from
Device/8dev_jalapeno-common
Fixes: 146eb4925c7f ("ipq40xx: add support for Crisis Innovation Lab MeshPoint.One") Signed-off-by: Mantas Pucka <mantas@8devices.com>
[ fix Fixes tag to correct format and fix commit title ] Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
d978830 rc: add option to get info for a single script in list method 632b4fc rc: add option to skip running check for list method 5577db9 rc: add support for scanning USE_PROCD and skip running if not supported 4de3f02 rc: fix and improve script scanning START and STOP
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Andre Heider [Sun, 5 Feb 2023 22:21:46 +0000 (23:21 +0100)]
toolchain/gcc: enable zstd support
LTO object files will now be compressed using zstd.
Compressing debug sections with zstd will have to wait for GCC 13,
which adds support for -gz=zstd.
NOTE: wiping the ccache is strongly recommended, not doing so might
yield build error later on:
"lto1: internal compiler error: original not compressed with zstd"
Hauke Mehrtens [Wed, 15 Mar 2023 23:30:26 +0000 (00:30 +0100)]
include: autotools: Add dummy GTKDOCIZE
autoreconf wants to use the gtkdocize tool now if a configure.ac file
defines GTK_DOC_CHECk(). OpenWrt does not ship the gtkdocize tool, just
use true instead. This fixes the build of some applications like guntls.
Fixes: 030447b8f4c7 ("tools/autoconf: bump to 2.71") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Jo-Philipp Wich [Wed, 15 Mar 2023 23:31:16 +0000 (00:31 +0100)]
tools/autoconf: ensure relocatability
Upstream introduced a new `trailer.m4` macro file referenced by the
absolute build path of autoconf. Make sure that this is covered by
the `000-relocatable.patch` as well.
This should fix various SDK build failures related to autoconf.
Fixes: 030447b8f4 ("tools/autoconf: bump to 2.71") Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The router supports a HTTP recovery mode by holding the reset-button
when powering on. The interface is reachable at 192.168.0.1 and supports
installation using the factory image.
Mark Mentovai [Fri, 11 Nov 2022 16:41:37 +0000 (11:41 -0500)]
odhcp6c: add "verbose" option
odhcp6c logs messages related to its activity when invoked with -v, but
there is no way to configure this from within OpenWrt. This adds a UCI
option to turn on odhcp6c logging, disabled by default. To enable, set,
for example, network.wan6.verbose = 1.
Paul Spooren [Sun, 12 Mar 2023 15:56:41 +0000 (16:56 +0100)]
imagebuilder: allow to specific ROOTFS_PARTSIZE
Setting this options modifies the rootfs size of created images. When
installing a large number of packages it may become necessary to
increase the size to have enough storage.
This option is only useful for supported devices, i.e. with an attached
SD Card or installed on a hard drive.
This updates libtool to its current release, from 2015. Current patches
were renumbered and given a description text. The fix in
160-passthrough-ssp.patch is no longer needed.
A patch to speed up build was cherry-picked, and another openwrt
specific patch was needed to not use quotes in $(SHELL), to acommodate
our "SHELL=/usr/bin/env bash" usage.
The already present call to ./bootstrap ensures that generated files are
refreshed, so the patches are applied only to their sources. Also, that
bootstrap call was adjusted to run at the appropriate time when QUILT=1.
References below are relevant commits to upstream libtool
regarding some of the changes to patches.
This commit is being reapplied after previous revertion, and after some editing.
The fix for the issue that prompted reverting is the parent of this commit.
Ref: 435cb8d71 ("libtoolize: simplify runtime by substituting pkgauxdir")
Ref: 3cf11cfe2 ("libtoolize: rewritten over funclib.sh instead of general.m4sh") Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com> Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
[refactored to simplify patch changes, expanded patches, added upstream references] Signed-off-by: Michael Pratt <mcpratt@pm.me>
Sebastian Kemper [Fri, 24 Sep 2021 12:28:20 +0000 (14:28 +0200)]
tools/libtool: fix hard-coded paths
libtoolize hardcodes some paths. This is fine when building libtool and
then using it (for example in OpenWrt's buildroot). But when using an
SDK the paths are most likely different.
For example, when building util-linux within an SDK we're greeted with
the following message:
libtoolize: error: $pkgauxdir is not a directory: '/path/to/openwrt/staging_dir/host/share/libtool/build-aux'
This is because staging_dir/host/bin/libtoolize contains the following
hard-coded paths from when the SDK was built in the first place:
This commits updates 000-relocatable.patch to correct the paths,
relative to "$STAGING_DIR_HOST".
Ref: 96e05e2e3 ("libtool: Revert "libtool: bump to 2.4.6"") Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
[adapted to older libtool version before bumping, use STAGING_DIR_HOST] Signed-off-by: Michael Pratt <mcpratt@pm.me>
Michael Pratt [Thu, 9 Mar 2023 14:35:13 +0000 (09:35 -0500)]
tools/libtool: add commit messages to patches
Add commit messages to patches as intended
by the last bump to libtool which had to be reverted.
This allows for a cleaner diff later,
removing this clutter from the complex changes to patches
that are required to bump to the latest libtool version.
Ref: c377d874b ("libtool: bump to 2.4.6") Signed-off-by: Michael Pratt <mcpratt@pm.me>
Michael Pratt [Mon, 1 Aug 2022 12:28:44 +0000 (08:28 -0400)]
tools/autoconf: bump to 2.71
Autoconf release 2.71 is a bugfix release of 2.70
Links provided are the changelog of 2.70 [1] [2]
and the announcement of 2.71 [3]
The first patch needed to be rewritten.
Some of the lines in the patch were moved
to be consistent with the same change added upstream
in other similar files.
Second and third patches are no longer needed,
Emacs can now be disabled at the configure stage,
and support for musl was added upstream.
The patch now causes help2man to be required
for installing man pages, but we don't need them.
There is no way to disable man pages build
with the configure script,
so use make to touch the files with the build target install-man1.
Michael Pratt [Fri, 2 Sep 2022 18:51:48 +0000 (14:51 -0400)]
tools/automake: use make variable to generate aclocal symlinks
Instead of having a somewhat random list of aclocal symlinks
which are named with the API versioning scheme,
install a symlink for every API version since 1.11
(the first release after Automake was moved to git)
using the API version number from the version of automake
that is currently in openwrt.
Automake API versioning does not include the patch level number.
Michael Pratt [Wed, 7 Sep 2022 14:45:43 +0000 (10:45 -0400)]
tools/automake: clean up build recipes
The configure option datarootdir
defaults to PREFIX/share.
The Host/Clean define should be Host/Uninstall
otherwise it is removing the build directory
before there is a chance to try "make uninstall"
in that directory.
Host/Clean/Default is no longer defined.
Consolidate the install stage with Host/Uninstall,
since it is essentially uninstalling before installing.