Commit graph

66948 commits

Author SHA1 Message Date
Hauke Mehrtens
8fca489a02 OpenWrt v25.12.0-rc3: adjust config defaults
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-21 01:24:24 +01:00
Hauke Mehrtens
30527a4c34 Revert "kernel: pcs-mtk-lynxi: backport fix for in-band status capabilities"
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
This reverts commit 7390e63374.

This broke SFP handling on some Mediatek SoCs.
Some SFPs are configured for inband/2500base-x link mode and were
rejected with this change.

Fixes: https://github.com/openwrt/openwrt/issues/21436
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 8076376aca)
2026-01-21 01:20:54 +01:00
Paul Donald
cb206004ea ucode: enable ucode-mod-zlib
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
The module exists in ucode and has been present for a while
but has not been enabled. It provides the ucode zlib module
for handling gzip and zlib compression in ucode scripts.

The package is ~ 5Kb. Installed ~18Kb.

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21417
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 16ae5c23e5)
Link: https://github.com/openwrt/openwrt/pull/21608
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 11:47:57 +01:00
Felix Fietkau
d88e3573a7 ucode: add package for ucode-mod-io
It was included in the last update

Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry picked from commit ed2587c73d)
Link: https://github.com/openwrt/openwrt/pull/21608
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 11:47:57 +01:00
John Audia
df2d060dbd kernel: bump 6.12 to 6.12.66
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.66

All patches automatically rebased

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21591
(cherry picked from commit c0fb8e1f35)
Link: https://github.com/openwrt/openwrt/pull/21607
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 11:41:15 +01:00
Emre Yavuzalp
aafcf04d0d mediatek: filogic: TP-Link Archer AX80 v1 (EU) support
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Device specification

SoC Type: MediaTek MT7986B, Cortex-A53, 64-bit 1.6GHz Quad Core
RAM: ESMT M15T4G16256 (512MB)
Flash: ESMT F50L1G41LB (128 MB)
Ethernet: MediaTek MT7531AE + 2.5GbE MaxLinear GPY211C0VC (SLNW8)
Ethernet: 1x2.5Gbe (WAN/LAN 2.5Gbps), 4xGbE (WAN/LAN 1Gbps, LAN1, LAN2, LAN3)
WLAN 2g: MediaTek MT7975
WLAN 5g: MediaTek MT7975
LEDs: All White(probably)

Buttons: 4 (Reset,ledswitch,wps,wlan),
USB ports: 1 (USB 3.0)
Power: 12 VDC, 2.0 A
Connector: Barrel
Bootloader: Main U-Boot - U-Boot 2022.01-rc4. Additionally, both UBI
slots contain "seconduboot" (also U-Boot 2022.01-rc4)
Serial console (UART)

                            V
+-------+-------+-------+-------+
| +3.3V |  GND  |  TX   |  RX   |
+---+---+-------+-------+-------+
    |
    +--- Don't connect

CPU BLOCK HERE                                                         LAN PORTS HERE

Installation (UART)
Note: There might be methods without UART possible soon.
Place OpenWrt initramfs image on tftp server with IP 192.168.1.2

Attach UART, switch on the router and interrupt the boot process by pressing 'Ctrl-C'

Load and run OpenWrt initramfs image:

      tftpboot initramfs-kernel.bin
      bootm

!!Attention!! is very important! After entering OpenWrt, please set / update the environment variables:

fw_setenv bootargs "ubi.mtd=ubi0 console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 init=/etc/preinit"
fw_setenv mtdids "spi-nand0=spi-nand0"
fw_setenv mtdparts "spi-nand0:2M(boot),1M(u-boot-env),50M(ubi0),50M(ubi1),8M(userconfig),4M(tp_data),8M(mali_data)"
fw_setenv tp_boot_idx 0

Run 'sysupgrade -n' with the sysupgrade OpenWrt image from console or Luci WebUI.

Recovery

Press Reset button and power on the router
Navigate to U-Boot recovery web server (192.168.1.1) and upload the OEM firmware

Stock layout

0x000000000000-0x000000200000 : "boot"
0x000000200000-0x000000300000 : "u-boot-env"
0x000000300000-0x000003500000 : "ubi0"
0x000003500000-0x000006700000 : "ubi1"
0x000006700000-0x000006f00000 : "userconfig"
0x000006f00000-0x000007300000 : "tp_data"
0x000007300000-0x000007B00000 : "mali_data"

ubi0/ubi1 format
U-Boot at boot checks that all volumes are in place:

+-------------------------------+
| Volume Name: uboot Vol ID: 0|
| Volume Name: kernel Vol ID: 1|
| Volume Name: rootfs Vol ID: 2|
+-------------------------------+
MAC addresses
+---------+-------------------+-----------+
| label | 00:eb:xx:xx:xx:be | label |
| LAN | 00:eb:xx:xx:xx:be | label |
| WAN | 00:eb:xx:xx:xx:bf | label+1 |
| WLAN 2g | 00:eb:xx:xx:xx:be | label |
| WLAN 5g | 00:eb:xx:xx:xx:bd | label-1 |
+---------+-------------------+-----------+
label MAC address was found in UBI partition "tp_data", file "default-mac".
OEM wireless eeprom is also there (file "MT7986_EEPROM.bin").

Signed-off-by: Emre Yavuzalp <emreyavuzalp2@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20630
(cherry picked from commit 6bfb305394)
Link: https://github.com/openwrt/openwrt/pull/21594
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 01:54:03 +01:00
Fil Dunsky
db694b40c9 mediatek: add support for Airpi AP3000M
This adds support for the Airpi AP3000M 5G CPE based on MediaTek MT7981B.

Specifications:

SoC: MediaTek MT7981B (dual-core ARM Cortex-A53)
RAM: 1GB DDR4
Storage: 8GB or 16GB eMMC
Ethernet: 1x 2.5GbE LAN, 1x 1GbE WAN
Wireless: 2.4GHz/5GHz 802.11ax
Buttons: Reset, WPS
LEDs: System, 2.4GHz WiFi, 5GHz WiFi
Cooling: PWM-controlled fan
Expansion: M.2 slot for 5G modem

The factory partition (mmcblk0p2) is empty in stock firmware.
Execute via SSH before flashing OpenWrt:
```
dd if=/lib/firmware/MT7981_iPAiLNA_EEPROM.bin of=/dev/mmcblk0p2 bs=4k count=1
MAC addresses
```
Fixed MAC addresses are derived by macaddr_generate_from_mmc_cid.

Installation via U-Boot web page

Set static IP 192.168.88.2/255.255.255.0 on your computer.
Connect to the 1GbE port (WAN) and hold the reset button while booting the device. Wait for about 6 seconds, and release the reset button.
Open U-boot web page on your browser at http://192.168.88.1
Select the OpenWRT sysupgrade image, upload it, and start the upgrade.
Wait for automatic reboot.
Installation via sysupgrade

Flash the sysupgrade file via LuCI upgrade page without saving the settings.

Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21397
(cherry picked from commit: 6ff4557317)
Link: https://github.com/openwrt/openwrt/pull/21601
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-20 01:49:24 +01:00
Pierre-Emmanuel Frot
067178b7fd x86: cs5535audio: add support for subtarget legacy
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build kernel module for cs5535 internal audio for target x86 "legacy" also
(so far only for target x86 "geode")

Signed-off-by: Pierre-Emmanuel Frot <piemfrot@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21596
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit e45ba0ef6e)
2026-01-19 12:51:45 +01:00
Maximilian Baumgartner
b590b79a77 mediatek: fix gmac definition for cudy m3000
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
The gmac definition has an offset of 1 compared to the label MAC.
Fixes: a55ab9e134 ("mediatek: filogic: prevent faulty mac address assignment")

Signed-off-by: Maximilian Baumgartner <aufhaxer@googlemail.com>
Link: https://github.com/openwrt/openwrt/pull/21560
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 687a2535d5)
2026-01-18 11:37:02 +01:00
Robert Marko
528bee9e39
microchipsw: drop source-only
Now that there is a consumer board available, lets drop source-only so that
buildbots provide official images.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2026-01-18 11:33:44 +01:00
Robert Marko
2210c6e632 boot: arm-trusted-firmware-microchipsw: depend on host Ruby
Microchip ATF depends on Ruby scripts to generate the FWU monitor HTML
and more, so make sure that host Ruby is available.

We also need to call the scripts directly via Ruby executable as shebang
wont work due to lack of Ruby in the Buildbot container.

Fixes: 5205c0c426 ("microchipsw: lan969x: add Microchip EV23X71A")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 082fe669f7)
2026-01-18 11:21:27 +01:00
Robert Marko
111151379d boot: arm-trusted-firmware-microchipsw: fix compilation against LibreSSL
LibreSSL 3.9+ has dropped support for X509V3 extension API so cert_create
tool does not compile against it at all.

This was hidden by the fact that it was compiling against OpenSSL on my
host which still has that API, however we do not ship libssl-dev in the
Buildbot containers so compiling against distro OpenSSL is not possible.

So, after a long time trying to find any docs on that API I resorted to
LLM(Gemini 3 Pro) to get it to compile.

Our libcrypto is linked against pthread so we must pass -lpthread as well
for cert_tool.

Fixes: 5205c0c426 ("microchipsw: lan969x: add Microchip EV23X71A")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 410277ca12)
2026-01-18 11:21:27 +01:00
George Sapkin
43057c5c16 imagebuilder: add ABI suffix to packages when using apk
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
If an apk package with an ABI version doesn't have priority set, it
can't be selected by its base name:

$ make manifest PACKAGES='libustream-openssl libsqlite3'
ERROR: unable to select packages:
  libsqlite3 (virtual):
    note: please select one of the 'provided by'
          packages explicitly
    provided by: libsqlite3-0
    required by: world[libsqlite3]
  libustream-openssl (virtual):
    note: please select one of the 'provided by'
          packages explicitly
    provided by: libustream-openssl20201210
    required by: world[libustream-openssl]

Look up the ABI version in apk index and if present, add an ABI suffix
to all requested packages.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21449
(cherry picked from commit 31cdd13d22)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
d943ebf5b3 build: add default priority to ABI-versioned packages
If a package has an ABI version defined, set priority to 10. The enables
packages with an ABI version to be installed by their base name instead
of a name and an ABI version, e.g.:

libfoo3, where 3 is the ABI version can be installed by just libfoo.

This affects manual installation only, as the dependency resolution
takes care of ABI versions.

Refactor apk priority logic into a helper define.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 470e030a5e)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
f74790057f build: remove redundant shebang from apk lifecycle scripts
Due to the way apk lifecycle scripts are defined, they might end up with
multiple shebangs. Remove them.

Before:

  post-upgrade: |
    #!/bin/sh
    export PKG_UPGRADE=1
    #!/bin/sh
    [ "${IPKG_NO_SCRIPT}" = "1" ] && exit 0
    [ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
    . ${IPKG_INSTROOT}/lib/functions.sh
    export root="${IPKG_INSTROOT}"
    export pkgname="adblock-fast"
    add_group_and_user
    default_postinst
    #!/bin/sh
    # check if we are on real system
    if [ -z "${IPKG_INSTROOT}" ]; then
    	/etc/init.d/adblock-fast enable
    fi
    exit 0

After:

  post-upgrade: |
    #!/bin/sh
    export PKG_UPGRADE=1
    [ "${IPKG_NO_SCRIPT}" = "1" ] && exit 0
    [ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
    . ${IPKG_INSTROOT}/lib/functions.sh
    export root="${IPKG_INSTROOT}"
    export pkgname="adblock-fast"
    add_group_and_user
    default_postinst
    # check if we are on real system
    if [ -z "${IPKG_INSTROOT}" ]; then
    	/etc/init.d/adblock-fast enable
    fi
    exit 0

Fixes: b52e897 ("include/package-pack: remove leading whitespace from install scripts")
Fixes: 03880e2 ("include/package-pack: add missing apk package lifecycle events")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 1dec4683f6)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
46244b6b0b build: fix implicit self-provides
Fix setting implicit self-provides for packages when they don't have any
PROVIDES specified.

Remove redundant self-provide for kmods, since kmods are packages and
will have a self-provide added already.

Fixes: 5ed650a ("build: add support for virtual provides")
Fixes: 9b37b71 ("build: provide virtual self in kmods")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 2d844a0770)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
2f644e7cad elfutils: drop libelf1 provide
ABI version is added to a package name during packaging, so there's no
need to specify it manually. And nothing explicitly depends on libelf1.

Fixes: d7bf089 ("elfutils: rename libelf1 to libelf")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 8cc2743c48)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:13:00 +01:00
George Sapkin
6543c6800b uclient: provide virtual wget-any
Packages shouldn't provide a package that another package, in this case
wget from packages provides. Explicitly provide a virtual @wget-any
instead to match the implicit wget provide and switch the only consumer
to use the new provider.

Set uclient-fetch as the default variant for wget-any.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit af1fa176c3)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
George Sapkin
953ef12689 build: fix provides logic when ABI version is set
Same as for the base package name, when a package has an ABI version,
provide both unversioned provider in addition to one with ABI version
and version.

So for each provide instead of providing only:

$provide$ABI_version=$package_version

now provide:

$provide $provide$ABI_version=$package_version

When a provide ends in a number, the ABI version will be prefixed with
a - sign, e.g.: provide1-0

Fixes: 18029977 ("build: fix apk packaging and ABI-versioning")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 952c918028)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
George Sapkin
b4e537e9cd build: refactor dependency formatting
Refactor dependencies and extra dependencies logic into a helper define
and document it.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 779fa7ff6c)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
George Sapkin
5976c47b9f build: don't auto mark all provides as virtual
Don't mark all provides as virtual when ALTERNATIVES is set.
Automatically marking all provides as virtual prevents variants from
conflicting between each other. Alternatives have nothing to do with
packaging and packages are expected to manage their own provides.

Updated internal provides explanation.

Remove unnecessary back slashes from FormatProvides.

Fixes: 18029977 ("build: fix apk packaging and ABI-versioning")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 2a1977a4b8)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
George Sapkin
9a0045bbbf build: remove default provider priority
Remove default provider priority since packages are expected to
explicitly declare virtual provides and set default variants. With
default priority some package variants without PROVIDES and not marked
as default end up with priority 0 and are not picked for installation.

Before the change dnsmasq-dhcpv6 is selected for dnsmasq, because the
former has higher priority:

name <dnsmasq> selected from selectable list
select_package: dnsmasq (requirers=1, autosel=1, iif=0, order_id=0x4000005f)
  consider dnsmasq-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=0, installed=0
   prefer existing package
    choose as new provider
  consider dnsmasq-dhcpv6-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=1, installed=0
    prefer highest declared provider priority
    choose as new provider
  consider dnsmasq-full-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=1, installed=0
    prefer lowest available repository
selecting: dnsmasq-dhcpv6-2.91-r2, available: 1
assign dnsmasq-dhcpv6 to dnsmasq-dhcpv6-2.91-r2
assign dnsmasq to dnsmasq-dhcpv6-2.91-r2
disqualify_package: dnsmasq-2.91-r2 (conflicting provides)
disqualify_package: dnsmasq-full-2.91-r2 (conflicting provides)
    apply_constraint: libc
    apply_constraint: provider: libc-1.2.5-r5: 1

After the change dnsmasq is selected for dnsmasq based on
lexicographical order:

name <dnsmasq> selected from selectable list
select_package: dnsmasq (requirers=1, autosel=1, iif=0, order_id=0x4000005f)
  consider dnsmasq-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=0, installed=0
   prefer existing package
    choose as new provider
  consider dnsmasq-dhcpv6-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=0, installed=0
    prefer lowest available repository
  consider dnsmasq-full-2.91-r2 iif_triggered=0, tag_ok=1, selectable=1, available=1, flags=0x0, provider_priority=0, installed=0
    prefer lowest available repository
selecting: dnsmasq-2.91-r2, available: 1
assign dnsmasq to dnsmasq-2.91-r2
disqualify_package: dnsmasq-dhcpv6-2.91-r2 (conflicting provides)
disqualify_package: dnsmasq-full-2.91-r2 (conflicting provides)
    apply_constraint: libc
    apply_constraint: provider: libc-1.2.5-r5: 1

Fixes: dea8397 ("include/package-pack: add default 'provider_priority' for APK packages")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 49fc319033)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-16 17:12:59 +01:00
Steffen Förster
e753ed9cec ramips: fix gmac definition for cudy ap1300 outdoor
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
The gmac definition has an offset of 1 at the moment. This leads to an
off by one error in downstream projects that rely on the package label mac.

Signed-off-by: Steffen Förster <nemesis@chemnitz.freifunk.net>
Link: https://github.com/openwrt/openwrt/pull/21543
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 66b6791abe)
2026-01-15 23:11:00 +01:00
Jörg Seitz
8bf63c2289 mediatek: add support for device zbt-z8103ax-c
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
- adopted MTD partition size increase from 64M to 128M
  -> this allows boot to complete
- moved MAC addressing stuff out of partition definitions
- all MAC addressing stuff is in .dtsi

Specifications:

SoC: MediaTek MT7981B
RAM: 256MiB
Flash: Winbond SPI-NAND 128 MiB
Switch: 1 WAN, 3 LAN (Gigabit) MediaTek MT7531
Buttons: Reset, Mesh
Power: DC 12V 1A
WiFi: MT7981B 2.4Ghz & 5.8Ghz

Led Layout from bottom to top:

    Power
    Mesh (RGB Led, user controllable, default set to OpenWrt Status)
    WLAN 2 GHz (user controllable)
    WAN (user controllable)
    LAN3
    LAN2
    LAN1
    WLAN 5 GHz (Not on front panel but blinks through enclosure,
               user controllable)

Buttons:

    Reset
    Mesh (user controllable, no default function)

Installation:

A. Through U-Boot menu:

 -  Prepare your connecting computer to use a static IP in
	network 192.168.1.0/24
 -  Power down the router and hold in the Reset button.
 -  While holding in the button power up the router again.
 -  Hold the button in for 10 seconds and then release.
 -  Use your browser to go to 192.168.1.1
 -  If you see a GUI allowing for flashing firmware then
	you got the right model.
 -  Upload the sysupgrade file.

Note: Recovery GUI can be used to recover from an incorrect
      firmware flash.

B. Through OpenWrt Dashboard:

    If your router comes with OpenWrt preinstalled
	(modified by the seller), you can easily upgrade
	by going to the dashboard (192.168.1.1) and then
	navigate to System -> Backup/Flash firmware,
	then flash the firmware

MAC Addresses were found in Factory partition:

offset 0x4 F8:5E:3C:xx:xx:aa --> Router Label -2
offset 0xa F8:5E:3C:xx:xx:bb --> Router Label -1
offset 0x24 F8:5E:3C:xx:xx:cc --> Router Label +1
offset 0x2a F8:5E:3C:xx:xx:yy --> printed on Router Label

Signed-off-by: Jörg Seitz <github.joeterminal@xoxy.net>
Link: https://github.com/openwrt/openwrt/pull/19823
(cherry picked from commit 479f1403f2)
Link: https://github.com/openwrt/openwrt/pull/21464
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 21:28:46 +01:00
Jörg Seitz
5067807ba8 mediatek: extract DTS include for zbt z8103ax
- Use .dtsi for old z8103ax featuring a 64M Nand
- Prepare .dtsi for model C of z8103ax featuring a 128M Nand

This .dtsi is supposed to match boards labeled as hardware
revision Z8103AX_V01. Model variant D of zbt-z8103ax appears
to use very same board.

DTS include does also

- set wifi mac addresses in &wifi section
- set eth mac addresses in &eth section
- set LAN switch mac addresses in &switch section

All of the above allows to get rid of 11_fix_wifi_mac script

Signed-off-by: Jörg Seitz <github.joeterminal@xoxy.net>
Link: https://github.com/openwrt/openwrt/pull/19823
(cherry picked from commit b21b019af4)
Link: https://github.com/openwrt/openwrt/pull/21464
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 21:28:31 +01:00
Val Kulkov
f138ad9112 wifi-scripts: fix wifi failure on specifying value of DAE client
The code to be replaced is a glorious no-op. A default value for
config.radius_das_client does not need to be assigned. This parameter
already has non-empty value: see the enclosing 'if' block.

As a result, the value of config.radius_das_client never gets modified
to contain both dae_client and dae_secret. This breaks hostapd.add_iface()
that expects config.radius_das_client to contain both dae_client and
dae_secret separated by a whitespace.

Fixes: #21519
Signed-off-by: Val Kulkov <val.kulkov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21522
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit c7f585bfc3)
2026-01-15 21:11:02 +01:00
John Audia
e4264e0a22 kernel: bump 6.12 to 6.12.65
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.65

Manually rebased:
  generic/hack-6.12/904-debloat_dma_buf.patch
  econet/patches-6.12/010-v6.16-MAINTAINERS-Add-entry-for-newly-added-EcoNet-platfor.patch

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000
Run-tested: flogic/glinet_gl-mt6000

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21431
(cherry picked from commit 226981d49c)
Link: https://github.com/openwrt/openwrt/pull/21546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 20:55:54 +01:00
John Audia
31b1c6541e kernel: bump 6.12 to 6.12.64
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.64

Manually rebased:
  bcm27xx/patches-6.12/950-0019-BCM2708-Add-core-Device-Tree-support.patch
  bcm27xx/patches-6.12/950-0446-i2c-designware-Add-support-for-bus-clear-feature.patch
  bcm27xx/patches-6.12/950-0875-PCI-brcmstb-Add-bcm2712-support.patch
  ipq40xx/patches-6.12/401-mmc-sdhci-msm-comment-unused-sdhci_msm_set_clock.patch

Removed upstreamed:
  generic-backport/403-v6.19-mtd-mtdpart-ignore-error-ENOENT-from-parsers-on-subp.patch[1]
  bcm27xx/patches-6.12/950-0873-PCI-brcmstb-Reuse-config-structure.patch[2]
  bcm27xx/patches-6.12/950-0888-PCI-brcmstb-don-t-use-ASPM-state-defines-for-registe.patch[3]
  bcm27xx/patches-6.12/950-0951-media-i2c-imx219-Restore-the-1920x1080-to-using-a-1-.patch[4]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=846ceb1a94460f7331e879c02ff2dd505435b51b
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=8d185636a6299ff9d2e9eec3a4a25026c13d2351
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=38aa6ca6285ff76a7570e5b9acd1151f5cea783a
4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.64&id=620f9d7bcf771b532bce67ffecf2d97759a4747f

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3
Run-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3

Signed-off-by: John Audia <therealgraysky@proton.me>
Co-Authored-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21431
[Fixed: 950-0019-BCM2708-Add-core-Device-Tree-support.patch]
[remove 950-0888-PCI-brcmstb-don-t-use-ASPM-state-defines-for-registe.patch]
(cherry picked from commit ba6b07a4ab)
Link: https://github.com/openwrt/openwrt/pull/21546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 20:55:54 +01:00
Hauke Mehrtens
6656ce2f47 bcm27xx: refresh kernel patches
The patch 950-0019-BCM2708-Add-core-Device-Tree-support.patch creates a
symbolic link. It looks like quilt does not support this and never
refreshed it.

I removed the symbolic link, refreshed the patch and then added it
back again.

Link: https://github.com/openwrt/openwrt/pull/21431
(cherry picked from commit 39700aeaa1)
Link: https://github.com/openwrt/openwrt/pull/21546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 20:55:54 +01:00
John Audia
c8eacec725 mac80211: fix build for 6.12.64 bump
Disable the backport shim on 6.12.64 and newer where the function
is provided by the kernel.

References:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/include/linux/hrtimer.h?h=v6.12.64&id=12493e7e888d266453d1c3898dc160178749afb3
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/include/linux/hrtimer.h?h=v6.12.64&id=d579cc549298a02ba90b7a6d20a2ba8e160f3f31

Co-Authored-by: Pascal Ernster <git@hardfalcon.net>
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21431
(cherry picked from commit 5b887135ba)
Link: https://github.com/openwrt/openwrt/pull/21546
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 20:55:54 +01:00
Álvaro Fernández Rojas
88f97a9649 netifd: use stable IAID for DHCPv4
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
Commit 9151c7015e introduced support for the global DHCP DUID to
generate a RFC4361-style client identifier.
However, the IAID introduced in those changes is based on ifindex, which
is subject to changes and causes issues on environments requiring a stable
IAID.

This commit switches the IAID to a stable one based on MD5.

(cherry picked from commit e1c125c167)
Fixes: 9151c7015e ("netifd: use the global DHCP DUID for DHCPv4")
Link: https://github.com/openwrt/openwrt/pull/21489
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2026-01-15 11:06:32 +01:00
Álvaro Fernández Rojas
b5d0946351 base-files: introduce a function to generate IAID
Add new function "network_generate_iface_iaid()" to generate a stable IAID
from an interface name.

(cherry picked from commit e1f2b666ff)
Link: https://github.com/openwrt/openwrt/pull/21489
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2026-01-15 11:06:32 +01:00
Hauke Mehrtens
073a8d07e9 libiwinfo: update to Git HEAD (2026-01-14)
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
f5dd57a84cc3 nl80211: fix 5Ghz frequency calculations

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit f6429413d9)
2026-01-15 01:31:18 +01:00
Pawel Dembicki
7f6d739fd7 mpc85xx: fix failsafe iface selection for mpc85xx boards
Some mpc85xx boards still boot with failsafe configured on a non-LAN
interface. Align the preinit interface with the first DSA port or the
interface that LAN is connected to.

This makes failsafe reachable on devices where the default selection does
not map to the primary LAN port.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21516
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit a73db6d0a0)
2026-01-15 01:31:17 +01:00
Pawel Dembicki
85a4358432 mpc85xx: p2020: add support for WatchGuard XTM330 (NC5AE7)
Hardware specifications:
  - CPU: Freescale/NXP P2020, dual-core PowerPC @ 1 GHz
  - RAM: 1 GB DDR3
  - Flash: 2 MB NOR, 512 MB NAND
  - Networking: 7x Gigabit Ethernet ports (via two Marvell 88E6171
    switches,  each attached to a different MAC)
  - USB: 2x USB 2.0 ports (front panel)
  - mini-PCIe slot
  - RTC: Ricoh RS5C372A
  - 4 buttons (via external MCU)
  - 3 LEDs (via external MCU)
  - LCD display (via external MCU)

Installation procedure:

1. Obtain the original MAC address table from the stock bootlog, for
   example:

     setting device eth0 to 00:90:7f:00:00:01
     setting device eth1 to 00:90:7f:00:00:02
     setting device eth2 to 00:90:7f:00:00:03
     setting device eth3 to 00:90:7f:00:00:04
     setting device eth4 to 00:90:7f:00:00:05
     setting device eth5 to 00:90:7f:00:00:06
     setting device eth6 to 00:90:7f:00:00:07

2. Open the case and move jumper JP1 from 2-3 to 1-2 to enter FAILSAFE
   mode.
3. Power on the device and interrupt the boot process to access the U-Boot
   shell.
4. Program the MAC base address into the EEPROM (text after '#' is a
   comment):

     mac ports 3
     mac 2 00:90:7f:00:00:01   # first MAC address from bootlog
     mac save

5. Reset the device and enter the U-Boot console again.
6. Connect a TFTP server to port 6 and boot the initramfs image:

     setenv ipaddr 192.168.1.3
     setenv serverip 192.168.1.2
     setenv loadaddr 1000000
     tftpboot $loadaddr openwrt-mpc85xx-p2020-watchguard_xtm330-initramfs-kernel.bin
     bootm $loadaddr

7. (Optional) Backup all MTD partitions if you want the ability to restore
   stock firmware.
8. Perform a normal sysupgrade from the initramfs environment.
9. Power off the device and move jumper JP1 back to 2-3.
10. The device will now boot OpenWrt.

Known issues:
  - LCD, buttons and LEDs are controlled by an external MCU; the protocol is
    currently unknown.
  - The internal connection between the two Marvell switches is unused by
    OpenWrt.
  - The stock firmware uses an empty U-Boot environment; saving variables
    modifies the environment and prevents a normal boot. FAILSAFE U-Boot
    remains functional.
  - WatchGuard configuration is encrypted; DSA MAC addresses are stored in
    this configuration.
  - Failsafe Ethernet works on port1.

Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21020
(cherry picked from commit 6150f9ceab)
Link: https://github.com/openwrt/openwrt/pull/21517
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-01-15 01:30:29 +01:00
FUKAUMI Naoki
c9e2d8191b rockchip: add "compat_version": "1.1" for Radxa E52C
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
This is something I missed in https://github.com/openwrt/openwrt/pull/20608

Fixes: 1f1db75432 ("rockchip: make NIC name predictable for Radxa E52C/ROCK 5 ITX/ROCK 5T")
Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://github.com/openwrt/openwrt/pull/21533
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 43039157ba)
2026-01-14 11:21:15 +01:00
Carl-Daniel Hailfinger
d01aa41d40 realtek: ethernet: avoid using unitialized memory
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
The mac_addr variable was not zero-initialized, causing weird side effects
when the memory contents were a valid MAC address.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Link: https://github.com/openwrt/openwrt/pull/21504
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit 19b8d391a9)
2026-01-13 00:23:38 +01:00
Til Kaiser
4542656411 kernel: modules: add kmod-pmbus-sensors package
Introduce the kmod-pmbus-sensors package to provide the
generic PMBus hwmon driver (CONFIG_SENSORS_PMBUS).

This enables support for a wide range of PMBus-based devices
including ADP4000, BMR310, BMR480, MAX20796, TPS544B25, and others.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/21444
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 9653fd423b)
2026-01-13 00:23:38 +01:00
Anari Jalakas
33ef80f2c6 readline: add $(FPIC) to LDFLAGS
Ensure -fPIC is passed during the linking stage to fix LTO build
failures (relocation errors) on MIPS and other architectures.

Fixes: #20436
Signed-off-by: Anari Jalakas <anari.jalakas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21455
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 4ff0f496a4)
2026-01-13 00:23:38 +01:00
Jakub Vaněk
b413363b47 mediatek: fix PHY autodetection on Cudy WR3000H
Newer Cudy WR3000H units have a Motorcomm YT8821 PHY instead of a
Realtek PHY on the WAN port. Before this commit, the Motorcomm PHY
could not be autodetected by the kernel -- the PHY would show up as
just a generic clause 45 PHY and the proper driver would not be loaded.

The cause of the detection failure likely was that the YT8821 PHY was
held in reset during PHY detection. To fix this, move the reset GPIO
definition to the MDIO bus level. This reset line is deasserted before
the autodetection process, see also [1]. With this change, both Realtek
and Motorcomm PHYs can be supported with a single device tree.

[1]: https://lore.kernel.org/all/20251119134750.394655-1-horatiu.vultur@microchip.com/

Signed-off-by: Jakub Vaněk <linuxtardis@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21399
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 02f0efd60b)
2026-01-13 00:19:55 +01:00
Andrew MacIntyre
7dbacdaa80 mediatek: add Motorcomm PHY driver to Cudy WR3000H
Recent Cudy WR3000H v1 units have a Motorcomm YT8821 2.5G PHY for
the WAN interface instead of the RTL8221B PHY used in earlier units,
so add kmod-phy-motorcomm to be able to use it.

Signed-off-by: Andrew MacIntyre <andymac@pcug.org.au>
[linuxtardis@gmail.com: slightly reworded the commit description]
Signed-off-by: Jakub Vaněk <linuxtardis@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21399
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit dbafbab876)
2026-01-13 00:19:54 +01:00
Andrew MacIntyre
8d407de491 kernel: add kmod-phy-motorcomm
The Motorcomm YT8821 2.5G PHY is being used in some devices as an
alternative to devices like the RTL8221B.  Package it as a kmod
so it can be used as a device package rather than requiring changes
to the target kernel config.

Signed-off-by: Andrew MacIntyre <andymac@pcug.org.au>
Link: https://github.com/openwrt/openwrt/pull/21399
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 96a1337374)
2026-01-13 00:19:52 +01:00
Rany Hany
31daacadd4 wifi-scripts: move no_probe_resp_if_max_sta to wifi-iface
Some checks failed
Build all core packages / Build all core packages for selected target (push) Has been cancelled
It is a BSS-level option and not radio-level. As such,
move it to wifi-iface and ap.uc.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/21412
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 9b1b5a6aec)
2026-01-11 20:22:36 +01:00
Eric Fahlgren
2c7bce7202 base-files: uci-defaults: migrate time zonename on upgrade
Some checks failed
Build all core packages / Build all core packages for selected target (push) Waiting to run
Build Kernel / Build all affected Kernels (push) Has been cancelled
Timezone names no longer allow spaces, so older installations
upgrading to new will have their timezone reset to UTC.

For example, on 24.10:
  $ uci get system.@system[0].zonename
  America/Los Angeles

After upgrade to 25.12:
  $ uci get system.@system[0].zonename
  UTC

Add a migration script to edit zonename on first boot.

Fixes: https://github.com/openwrt/luci/commit/d9a087e4
Link: https://github.com/openwrt/luci/issues/8203
Link: https://forum.openwrt.org/t/openwrt-25-12-0-rc1-release-candidate/244364/98
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21482
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 54c7ad8d8a)
2026-01-11 19:13:32 +01:00
Leo Barsky
09bdb71acc econet: refresh patches 6.12
Manually rebased:
econet/patches-6.12/901-nand-enable-en75-bbt.patch

Fixes: 5230157a16 ("kernel: QCOM SPI NAND: backport multiple fixes")
Signed-off-by: Leo Barsky <leobrsky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21500
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit cffc2a9102)
2026-01-11 19:10:38 +01:00
Rany Hany
49f9248ec9 wifi-scripts: ucode: fix RRM defaults
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
They are being default enabled unconditionally when they should
depend on 802.11k. 802.11k should not be enabled by default
either as it can cause issues with certain older drivers and
is useless without a userspace program like usteer or DAWN.

If users want to enable 802.11k they will enable it when they
set such programs up.

Another inconsistency with rnr was dealt with so that it is not
default enabled. This is also not done with old wifi-scripts
and is generally unexpected and surprising behavior.

Moreoever, this introduces an inconsistency between old shell
wifi-scripts and ucode version. Old wifi-scripts does not do this.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/21425
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit ee60b65643)
2026-01-11 17:28:40 +01:00
Thomas Perale
51fab879a7 ppp: update deprecated cpe
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
The CPE 'samba:ppp' added in OpenWrt commit [1], has been deprecated in
favour of 'point-to-point_protocol_project:point-to-point_protocol'
(see [2]).

[1] c61a239514 add PKG_CPE_ID ids to package and tools
[2] https://nvd.nist.gov/products/cpe/detail/1224B76D-6BB3-4088-9F42-23AC04A764F2

Signed-off-by: Thomas Perale <thomas.perale@mind.be>
Link: https://github.com/openwrt/openwrt/pull/21441
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit dd519f6c05)
2026-01-11 16:48:41 +01:00
Tianling Shen
f9e60e980c rockchip: fix kernel tag for backported patches
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
These patches were actually merged in kernel 6.19 instead of 6.18,
fix them to avoid confusing when moving to new kernel version.

While at it, refresh the RK3528 PCIE L1ss patch since it was
accepted in 6.19 as well.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/21419
(cherry picked from commit c79fa27cbf)
Link: https://github.com/openwrt/openwrt/pull/21448
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-01-11 13:13:21 +01:00
Robert Marko
1bff8d0210 linux: crypto: fix dependencies for curve25519 and poly1305
Some checks are pending
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Currently, kmod-crypto-kpp is only implied for curve25519 and thus it
can get unselected and then building will fail due to missing kpp.ko.

Same issue happens with kmod-crypto-hash for poly1305.

So, lets drop the whole implies logic and make sure to always select
them as dependencies.

Fixes: #21386
Link: https://github.com/openwrt/openwrt/pull/21483
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 93665d0aa3)
2026-01-11 11:12:04 +01:00
JINLIANG GU
46e4aa3283 netifd: dhcp: suppress udhcpc default vendor class if specified in sendopts
Some checks are pending
Build all core packages / Build all core packages for selected target (push) Waiting to run
When DHCP Option 60 is specified via sendopts (hex, decimal, or named
formats), udhcpc sends its default "udhcp <version>" string alongside
the custom value, which causes authentication failures with some ISPs.

This fix detects Option 60 in sendopts and automatically passes -V ""
to udhcpc to suppress the default version string while allowing
multiple user-defined vendor classes.

Supported formats:
- Hexadecimal: 0x3c
- Decimal: 60
- Named: vendor

(cherry picked from commit 89d982d723)
Fixes: #21242
Signed-off-by: JINLIANG GU <ihipop@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21450
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2026-01-10 20:38:54 +01:00