Skip to content
Snippets Groups Projects
  1. Feb 10, 2022
  2. Feb 09, 2022
  3. Feb 08, 2022
  4. Feb 07, 2022
    • David Bauer's avatar
      hostapd: refresh patches · 04ed2245
      David Bauer authored
      
      Refresh patches after updating to hostapd v2.10.
      
      Signed-off-by: default avatarDavid Bauer <mail@david-bauer.net>
      04ed2245
    • David Bauer's avatar
      hostapd: update to v2.10 · adb8c09a
      David Bauer authored
      
      Upstreamed patches:
      020-mesh-make-forwarding-configurable.patch
      e6db1bc5da3fd7d5f4dba24aa102543b4749912f
      550-WNM-allow-specifying-dialog-token.patch
      979f19716539362f8ce60a77bf1b88fdcf5ba8e5
      720-ACS-fix-channel-100-frequency.patch
      2341585c349231af00cdef8d51458df01bc6965f
      741-proxyarp-fix-compilation-with-Hotspot-2.0-disabled.patch
      08bdf4f90de61a84ed8f4dd918272dd9d36e2e1f
      
      Compile-tested: wpad-wolfssl hostapd-openssl
      Run-tested: ath79-generic
      
      Signed-off-by: default avatarDavid Bauer <mail@david-bauer.net>
      Tested-by: default avatarStijn Tintel <stijn@linux-ipv6.be>
      adb8c09a
    • Jo-Philipp Wich's avatar
      firewall4: update to latest Git HEAD · ae755415
      Jo-Philipp Wich authored
      
      a0518b6 fw4: gracefully handle unsupported hardware offloading
      ac99eba init: fix boot action in init script
      
      Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
      ae755415
    • Felix Fietkau's avatar
      hostapd: automatically calculate channel center freq on chan_switch · 46e0eeb7
      Felix Fietkau authored
      
      Simplifies switching to different channels when on >= VHT80
      
      Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
      46e0eeb7
    • Jo-Philipp Wich's avatar
      rpcd: update to latest Git HEAD · 07eccc29
      Jo-Philipp Wich authored
      
      909f2a0 ucode: adjust to latest ucode api
      4c532bf ucode: add ucode interpreter plugin
      9c6ba38 treewide: adjust ubus object type names
      75a96dc build: honour CMake install prefix in hardcoded paths
      
      Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
      07eccc29
    • Jo-Philipp Wich's avatar
      uhttpd: update to latest Git HEAD · 881a0599
      Jo-Philipp Wich authored
      
      2f8b136 main: fix leaking -p/-s argument values
      881fd3b ucode: adjust to latest ucode api
      8b2868e file: specify UTF-8 as charset for dirlists, add option to override
      3a5bd84 main: add ucode options to help text
      16aa142 examples: add ucode handler example
      3ceccd0 ucode: add ucode plugin support
      f0f1406 examples: add example Lua handler script
      9e87095 listen: avoid invalid memory access
      
      Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
      881a0599
    • Jo-Philipp Wich's avatar
      firewall4: update to latest Git HEAD · 2dd6777f
      Jo-Philipp Wich authored
      
      b54f462 fw4: parse traffic rules before forwarding rules
      4d5af8b fw4: consolidate helper code
      300c737 fw4: fix applying zone family restrictions to forwardings
      eb9c25a tests: implement fs.opendir() mock interface
      d30ff48 tests: fix mocked fs.popen() trace log
      52831a0 fw4: improve flowtable handling
      7cb10c8 fw4: disable "flow_offloading_hw" option for now
      b2241a1 fw4: fix enabling NAT reflection rules for DNATs without explicit family
      
      Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
      2dd6777f
    • Jo-Philipp Wich's avatar
      ucode: update to latest Git HEAD · 134c88c6
      Jo-Philipp Wich authored
      
      11adf0c source: convert source objects into proper uc_value_t type
      3a49192 treewide: rework function memory model
      7edad5c tests: add functional tests for builtin functions
      d5003fd lib: fix leaking tokener in uc_json() on parse exception
      5d0ecd9 lib: fix infinite loop on empty regexp matches in uc_replace()
      3ad57f1 lib: fix infinite loop on empty regexp matches in uc_match()
      32d596d lib: fix infinite loop on empty regexp matches in uc_split()
      3e3f38d vm: ensure consistent trace output between gcc and clang compiled ucode
      3600ded vm: fix leaking function value on call exception
      3059295 vm: NULL-initialize pointer to make cppcheck happy
      98e59bf source: zero-initialize conversion union to make cppcheck happy
      7a65c14 run_tests.sh: change workdir to testcase directory during execution
      afec8d7 run_tests.sh: support placing supplemental testcase files
      3ada6e0 run_tests.sh: always treat outputs as text data
      2cb627f program: rename bytecode load/write functions, track path of executed file
      1094ffa lib: fix memory leak in uc_require_ucode()
      
      Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
      134c88c6
    • Jo-Philipp Wich's avatar
      netifd: update to latest Git HEAD · 3b1692c4
      Jo-Philipp Wich authored
      
      fd4c9e1 system-linux: expose hw-tc-offload ethtool feature in device status dump
      3d76f2e system-linux: add wrapper function for creating link config messages
      88af2f1 system-linux: delete bridge devices using netlink
      85c3548 system-linux: create bridge devices using netlink
      
      Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
      3b1692c4
    • Jo-Philipp Wich's avatar
      Revert "tools/zstd: update to 1.5.2" · af79853c
      Jo-Philipp Wich authored
      
      This reverts commit 8de901cc.
      
      Apparently this update breaks tools building.
      
      Signed-off-by: default avatarJo-Philipp Wich <jo@mein.io>
      af79853c
  5. Feb 06, 2022
    • Raymond Wang's avatar
      ramips: add support for Xiaomi Mi Router CR660x series · 3343ca7e
      Raymond Wang authored
      Xiaomi Mi Router CR6606 is a Wi-Fi6 AX1800 Router with 4 GbE Ports.
      Alongside the general model, it has three carrier customized models:
      CR6606 (China Unicom), CR6608 (China Mobile), CR6609 (China Telecom)
      
      Specifications:
      - SoC: MediaTek MT7621AT
      - RAM: 256MB DDR3 (ESMT M15T2G16128A)
      - Flash: 128MB NAND (ESMT F59L1G81MB)
      - Ethernet: 1000Base-T x4 (MT7530 SoC)
      - WLAN: 2x2 2.4GHz 574Mbps + 2x2 5GHz 1201Mbps (MT7905DAN + MT7975DN)
      - LEDs: System (Blue, Yellow), Internet (Blue, Yellow)
      - Buttons: Reset, WPS
      - UART: through-hole on PCB ([VCC 3.3v](RX)(GND)(TX) 115200, 8n1)
      - Power: 12VDC, 1A
      
      Jailbreak Notes:
      1. Get shell access.
         1.1. Get yourself a wireless router that runs OpenWrt already.
         1.2. On the OpenWrt router:
            1.2.1. Access its console.
            1.2.2. Create and edit
                   /usr/lib/lua/luci/controller/admin/xqsystem.lua
                   with the following code (exclude backquotes and line no.):
      ```
           1  module("luci.controller.admin.xqsystem", package.seeall)
           2
           3  function index()
           4      local page   = node("api")
           5      page.target  = firstchild()
           6      page.title   = ("")
           7      page.order   = 100
           8      page.index = true
           9      page   = node("api","xqsystem")
          10      page.target  = firstchild()
          11      page.title   = ("")
          12      page.order   = 100
          13      page.index = true
          14      entry({"api", "xqsystem", "token"}, call("getToken"), (""),
      103, 0x08)
          15  end
          16
          17  local LuciHttp = require("luci.http")
          18
          19  function getToken()
          20      local result = {}
          21      result["code"] = 0
          22      result["token"] = "; nvram set ssh_en=1; nvram commit; sed -i
      's/channel=.*/channel=\"debug\"/g' /etc/init.d/dropbear; /etc/init.d/drop
      bear start;"
          23      LuciHttp.write_json(result)
          24  end
      ```
            1.2.3. Browse http://{OWRT_ADDR}/cgi-bin/luci/api/xqsystem/token
                   It should give you a respond like this:
                   {"code":0,"token":"; nvram set ssh_en=1; nvram commit; ..."}
                   If so, continue; Otherwise, check the file, reboot the rout-
                   er, try again.
            1.2.4. Set wireless network interface's IP to 169.254.31.1, turn
                   off DHCP of wireless interface's zone.
            1.2.5. Connect to the router wirelessly, manually set your access
                   device's IP to 169.254.31.3, make sure
                   http://169.254.31.1/cgi-bin/luci/api/xqsystem/token
                   still have a similar result as 1.2.3 shows.
         1.3. On the Xiaomi CR660x:
              1.3.1. Login to the web interface. Your would be directed to a
                     page with URL like this:
                     http://{ROUTER_ADDR}/cgi-bin/luci/;stok={STOK}/web/home#r-
                     outer
              1.3.2. Browse this URL with {STOK} from 1.3.1, {WIFI_NAME}
                     {PASSWORD} be your OpenWrt router's SSID and password:
                     http://{MIROUTER_ADDR}/cgi-bin/luci/;stok={STOK}/api/misy-
                     stem/extendwifi_connect?ssid={WIFI_NAME}&password={PASSWO-
                     RD}
                     It should return 0.
              1.3.3. Browse this URL with {STOK} from 1.3.1:
                     http://{MIROUTER_ADDR}/cgi-bin/luci/;stok={STOK}/api/xqsy-
                     stem/oneclick_get_remote_token?username=xxx&password=xxx&-
                     nonce=xxx
         1.4. Before rebooting, you can now access your CR660x via SSH.
              For CR6606, you can calculate your root password by this project:
              https://github.com/wfjsw/xiaoqiang-root-password, or at
              https://www.oxygen7.cn/miwifi
      
      .
              The root password for carrier-specific models should be the admi-
              nistration password or the default login password on the label.
              It is also feasible to change the root password at the same time
              by modifying the script from step 1.2.2.
              You can treat OpenWrt Router however you like from this point as
              long as you don't mind go through this again if you have to expl-
              oit it again. If you do have to and left your OpenWrt router unt-
              ouched, start from 1.3.
      2. There's no official binary firmware available, and if you lose the
         content of your flash, no one except Xiaomi can help you.
         Dump these partitions in case you need them:
         "Bootloader" "Nvram" "Bdata" "crash" "crash_log"
         "firmware" "firmware1" "overlay" "obr"
         Find the corespond block device from /proc/mtd
         Read from read-only block device to avoid misoperation.
         It's recommended to use /tmp/syslogbackup/ as destination, since files
         would be available at http://{ROUTER_ADDR}/backup/log/YOUR_DUMP
         Keep an eye on memory usage though.
      3. Since UART access is locked ootb, you should get UART access by modify
         uboot env. Otherwise, your router may become bricked.
         Excute these in stock firmware shell:
          a. nvram set boot_wait=on
          b. nvram set bootdelay=3
          c. nvram commit
         Or in OpenWrt:
          a. opkg update && opkg install kmod-mtd-rw
          b. insmod mtd-rw i_want_a_brick=1
          c. fw_setenv boot_wait on
          d. fw_setenv bootdelay 3
          e. rmmod mtd-rw
      
      Migrate to OpenWrt:
       1. Transfer squashfs-firmware.bin to the router.
       2. nvram set flag_try_sys1_failed=0
       3. nvram set flag_try_sys2_failed=1
       4. nvram commit
       5. mtd -r write /path/to/image/squashfs-firmware.bin firmware
      
      Additional Info:
       1. CR660x series routers has a different nand layout compared to other
          Xiaomi nand devices.
       2. This router has a relatively fresh uboot (2018.09) compared to other
          Xiaomi devices, and it is capable of booting fit image firmware.
          Unfortunately, no successful attempt of booting OpenWrt fit image
          were made so far. The cause is still yet to be known. For now, we use
          legacy image instead.
      
      Signed-off-by: default avatarRaymond Wang <infiwang@pm.me>
      3343ca7e
    • Jakob Riepler's avatar
      ath79: add support for Mikrotik LHG 5 · e0683839
      Jakob Riepler authored
      The MikroTik LHG 5 series (product codes RBLHG-5nD, RBLHG-5HPnD and
      RBLHG-5HPnD-XL) devices are an outdoor 5GHz CPE with a 24.5dBi or 27dBi
      integrated antenna built around the Atheros AR9344 SoC.
      It is very similar to the SXT Lite5 series which this patch is based
      upon.
      
      Specifications:
       - SoC: Atheros AR9344
       - RAM: 64 MB
       - Storage: 16 MB SPI NOR
       - Wireless: Atheros AR9340 (SoC) 802.11a/n 2x2:2
       - Ethernet: Atheros AR8229 switch (SoC), 1x 10/100 port,
          8-32 Vdc PoE in
       - 8 user-controllable LEDs:
        - 1x power (blue)
        - 1x user (white)
        - 1x ethernet (green)
        - 5x rssi (green)
      
       See https://mikrotik.com/product/RBLHG-5nD for more details.
      
      Notes:
       The device was already supported in the ar71xx target.
      
      Flashing:
       TFTP boot initramfs image and then perform a sysupgrade. Follow common
       MikroTik procedure as in https://openwrt.org/toh/mikrotik/common
      
      .
      
      Signed-off-by: default avatarJakob Riepler <jakob+openwrt@chaosfield.at>
      e0683839
    • Wenli Looi's avatar
      ath79: add partial support for Netgear EX7300v2 · c32008a3
      Wenli Looi authored
      
      Hardware
      --------
      SoC: QCN5502
      Flash: 16 MiB
      RAM: 128 MiB
      Ethernet: 1 gigabit port
      Wireless No1: QCN5502 on-chip 2.4GHz 4x4
      Wireless No2: QCA9984 pcie 5GHz 4x4
      USB: none
      
      Installation
      ------------
      Flash the factory image using the stock web interface or TFTP the
      factory image to the bootloader.
      
      What works
      ----------
      - LEDs
      - Ethernet port
      - 5GHz wifi (QCA9984 pcie)
      
      What doesn't work
      -----------------
      - 2.4GHz wifi (QCN5502 on-chip)
        (I was not able to make this work, probably because ath9k requires
        some changes to support QCN5502.)
      
      Signed-off-by: default avatarWenli Looi <wlooi@ucalgary.ca>
      c32008a3
    • Wenli Looi's avatar
      ath79: add support for booting QCN5502 SoC · 6ede6452
      Wenli Looi authored
      
      Based on wikidevi, QCN5502 is a "Dragonfly" like QCA9561 and QCA9563.
      Treating it as QCA956x seems to work.
      
      Signed-off-by: default avatarWenli Looi <wlooi@ucalgary.ca>
      6ede6452
    • Saiful Islam's avatar
      ath79: add support for TP-Link TL-WR841HP v2 · 43ec6d64
      Saiful Islam authored
      Specifications:
      - AR9344 SoC, 8 MB nor flash, 64 MB DDR2 RAM
      - 2x2 9dBi antenna, wifi 2.4Ghz 300Mbps
      - 4x Ethernet LAN 10/100, 1x Ethernet WAN 10/100
      - 1x WAN, 4x LAN, Wifi, PWR, WPS, SYSTEM Leds
      - Reset/WPS button
      - Serial UART at J4 onboard: 3.3v GND RX TX, 1152008N1
      
      MAC addresses as verified by OEM firmware:
      
      vendor   OpenWrt   address
      LAN      eth0      label
      WAN      eth1      label + 1
      WLAN     phy0      label
      
      The label MAC address was found in u-boot 0x1fc00.
      
      Installation:
      To install openwrt,
      - set the device's SSID to each of the following lines,
        making sure to include the backticks.
      - set the ssid and click save between each line.
      
      `echo "httpd -k"> /tmp/s`
      `echo "sleep 10">> /tmp/s`
      `echo "httpd -r&">> /tmp/s`
      `echo "sleep 10">> /tmp/s`
      `echo "httpd -k">> /tmp/s`
      `echo "sleep 10">> /tmp/s`
      `echo "httpd -f">> /tmp/s`
      `sh /tmp/s`
      
      - Now, wait 60 sec.
      - After the reboot sequence, the router may have fallen back to
        its default IP address with the default credentials (admin:admin).
      - Log in to the web interface and go the the firmware upload page.
        Select "openwrt-ath79-generic-tplink_tl-wr841hp-v2-squashfs-factory.bin"
        and you're done : the system now accepts the openwrt.
      
      Forum support topic:
      https://forum.openwrt.org/t/support-for-tplink-tl-wr841hp-v2/69445/
      
      
      
      Signed-off-by: default avatarSaiful Islam <si87868@gmail.com>
      43ec6d64
    • Rosen Penev's avatar
      tools/zstd: update to 1.5.2 · 8de901cc
      Rosen Penev authored
      
      Switched to building with meson as it's faster and does not need a
      dependency on cmake, which takes a long time to build.
      
      Signed-off-by: default avatarRosen Penev <rosenp@gmail.com>
      8de901cc
    • Rosen Penev's avatar
      include/meson: fix host build directory · 4c42e2d9
      Rosen Penev authored
      
      When using a non default MESON_HOST_BUILD_DIR, HOST_BUILD_DIR is not
      appropriate to use. This change matches the target configure section.
      
      Signed-off-by: default avatarRosen Penev <rosenp@gmail.com>
      4c42e2d9
    • Rosen Penev's avatar
      target/linux: replace egrep with grep -E · 8cfce165
      Rosen Penev authored
      
      egrep is deprecated and replaced by grep -E. The latter is used
      throughout the tree.
      
      Signed-off-by: default avatarRosen Penev <rosenp@gmail.com>
      8cfce165
    • Rosen Penev's avatar
      base-files: replace fgrep with grep -F · 7994461a
      Rosen Penev authored
      
      fgrep is deprecated and replaced by grep -F. The latter is used
      throughout the tree whereas this is the only usage of the former.
      
      Signed-off-by: default avatarRosen Penev <rosenp@gmail.com>
      7994461a
    • Christian Lamparter's avatar
      ipq806x: convert TP-Link Archer VR2600v to denx,uimage · f6a01d7f
      Christian Lamparter authored
      
      The recent device-tree modification that added pre-cal
      nvmem-cells pushed the device's kernel+dtb over the
      allotted 3072k KERNEL_SIZE.
      
      > WARNING: Image file tplink_vr2600v-uImage is too big: 3147214 > 3145728
      
      There was a previous kernel partition size upgrade:
      commit 0c967d92 ("ipq806x: increase kernel partition size for the TP-Link Archer VR2600v")
      It has been seemingly upgraded from a 2048k KERNEL_SIZE in the past.
      The commit talks about using the MTD_SPLIT_TPLINK_FW. But looking at
      the image make recipe, there is no code that adds a TPLINK header.
      So instead the board will use "denx,umimage". This requires
      MTD_SPLIT_UIMAGE_FW, but this is present thanks to some NEC devices.
      
      (Maybe the MTD_CONFIG_ARGS can be removed as well? But it could be
      there because of the padding at the beginning. This needs testing.)
      
      Signed-off-by: default avatarChristian Lamparter <chunkeey@gmail.com>
      f6a01d7f
    • Ansuel Smith's avatar
      kernel: bpf-headers: fix build error when testing kernel is used · 4d904524
      Ansuel Smith authored
      
      Now that we have separate files for each kernel version,
      only the version/hash for the target kernel are available.
      This cause a missing hash error (and wrong kernel version) for
      bpf-headers when a testing kernel version is used for the current target.
      
      Fix this error by manually including the kernel version/hash file for the
      specific kernel version requested.
      
      Signed-off-by: default avatarAnsuel Smith <ansuelsmth@gmail.com>
      4d904524
  6. Feb 05, 2022
    • Hauke Mehrtens's avatar
      Revert "kernel: backport MediaTek Ethernet PHY driver" · 1b311aab
      Hauke Mehrtens authored
      
      This reverts commit 8b4cba53.
      
      This broke the mt7530 on Linksys e8450 (mt7622) for me.
      [    1.312943] mt7530 mdio-bus:00 lan1 (uninitialized): failed to connect to PHY: -EINVAL
      [    1.320890] mt7530 mdio-bus:00 lan1 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 0
      [    1.331163] mt7530 mdio-bus:00 lan2 (uninitialized): failed to connect to PHY: -EINVAL
      [    1.339085] mt7530 mdio-bus:00 lan2 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 1
      [    1.349321] mt7530 mdio-bus:00 lan3 (uninitialized): failed to connect to PHY: -EINVAL
      [    1.357241] mt7530 mdio-bus:00 lan3 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 2
      [    1.367452] mt7530 mdio-bus:00 lan4 (uninitialized): failed to connect to PHY: -EINVAL
      [    1.375367] mt7530 mdio-bus:00 lan4 (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 3
      [    1.385750] mt7530 mdio-bus:00 wan (uninitialized): failed to connect to PHY: -EINVAL
      [    1.393575] mt7530 mdio-bus:00 wan (uninitialized): error -22 setting up PHY for tree 0, switch 0, port 4
      
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      1b311aab
    • Hauke Mehrtens's avatar
      Revert "kernel: backport MT7530 IRQ support" · 781f2f73
      Hauke Mehrtens authored
      
      This reverts commit 3f4301e1.
      
      This broke the mt7530 on Linksys e8450 (mt7622) for me.
      [    1.300554] mt7530 mdio-bus:00: no interrupt support
      
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      781f2f73
    • Stijn Tintel's avatar
      util-linux: package ipcs command · 2c929f81
      Stijn Tintel authored
      
      Add a package for util-linux' ipcs command, to show information about
      System V inter-process communication facilities.
      
      Signed-off-by: default avatarStijn Tintel <stijn@linux-ipv6.be>
      2c929f81
    • DENG Qingfang's avatar
      kernel: backport MT7530 IRQ support · 3f4301e1
      DENG Qingfang authored
      
      Support MT7530 PHY link change interrupts, and enable for MT7621.
      
      Signed-off-by: default avatarDENG Qingfang <dqfext@gmail.com>
      Tested-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
      Tested-by: default avatarStijn Tintel <stijn@linux-ipv6.be>
      3f4301e1
    • DENG Qingfang's avatar
      kernel: backport MediaTek Ethernet PHY driver · 8b4cba53
      DENG Qingfang authored
      
      Add support for MediaTek Gigabit Ethernet PHYs found in MT7530.
      Fix some link up/down issues.
      
      Signed-off-by: default avatarDENG Qingfang <dqfext@gmail.com>
      Tested-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
      Tested-by: default avatarStijn Tintel <stijn@linux-ipv6.be>
      8b4cba53
    • DENG Qingfang's avatar
      kernel: backport MT7530 MDB operations · d5f44725
      DENG Qingfang authored
      
      Use hardware to forward multicast traffic instead of trapping to the
      host.
      
      Signed-off-by: default avatarDENG Qingfang <dqfext@gmail.com>
      Tested-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
      Tested-by: default avatarStijn Tintel <stijn@linux-ipv6.be>
      d5f44725
    • DENG Qingfang's avatar
      kernel: backport MT7530 VLAN fix · ee6ba216
      DENG Qingfang authored
      
      Fix FDB learning bugs when VLAN filtering is enabled.
      
      Signed-off-by: default avatarDENG Qingfang <dqfext@gmail.com>
      Tested-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
      Tested-by: default avatarStijn Tintel <stijn@linux-ipv6.be>
      ee6ba216
    • DENG Qingfang's avatar
      kernel: backport MT7530 ageing time support · 4834565b
      DENG Qingfang authored
      
      Allow setting ageing time from 1 to 1,048,576 seconds.
      
      Signed-off-by: default avatarDENG Qingfang <dqfext@gmail.com>
      Tested-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
      Tested-by: default avatarStijn Tintel <stijn@linux-ipv6.be>
      4834565b
    • DENG Qingfang's avatar
      kernel: backport MediaTek jumbo frame support · 637a3aaa
      DENG Qingfang authored
      
      Allow MTU up to 2026 on mediatek, ramips/mt7621 targets.
      
      Signed-off-by: default avatarDENG Qingfang <dqfext@gmail.com>
      Tested-by: default avatarArınç ÜNAL <arinc.unal@arinc9.com>
      Tested-by: default avatarStijn Tintel <stijn@linux-ipv6.be>
      637a3aaa
    • Paul Spooren's avatar
      octeontx: switch to 5.10 Kernel · 7a1ce08b
      Paul Spooren authored
      
      Tested by multiple users and seems to work fine.
      
      Acked-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      Tested-by: default avatarDaniel Danzberger <daniel@dd-wrt.com>
      Signed-off-by: default avatarPaul Spooren <mail@aparcar.org>
      7a1ce08b
    • Lech Perczak's avatar
      ath79: support ZTE MF286 · 8c78a13b
      Lech Perczak authored
      ZTE MF286 is an indoor LTE category 6 CPE router with simultaneous
      dual-band 802.11ac plus 802.11n Wi-Fi radios and quad-port gigabit
      Ethernet switch, FXS and external USB 2.0 port.
      
      Hardware highlights:
      - CPU: QCA9563 SoC at 775MHz,
      - RAM: 128MB DDR2,
      - NOR Flash: MX25L1606E 2MB SPI Flash, for U-boot only,
      - NAND Flash: GD5F1G04UBYIG 128MB SPI NAND-Flash, for all other data,
      - Wi-Fi 5GHz: QCA9882 2x2 MIMO 802.11ac radio,
      - WI-Fi 2.4GHz: QCA9563 3x3 MIMO 802.11n radio,
      - Switch: QCA8337v2 4-port gigabit Ethernet, with single SGMII CPU port,
      - WWAN: MDM9230-based category 6 internal LTE modem in extended
        mini-PCIE form factor, with 3 internal antennas and 2 external antenna
        connections, single mini-SIM slot. Modem model identified as MF270,
      - FXS: one external ATA port (handled entirely by modem part) with two
        physical connections in parallel,
      - USB: Single external USB 2.0 port,
      - Switches: power switch, WPS, Wi-Fi and reset buttons,
      - LEDs: Wi-Fi, Test (internal). Rest of LEDs (Phone, WWAN, Battery,
        Signal state) handled entirely by modem. 4 link status LEDs handled by
        the switch on the backside.
      - Battery: 3Ah 1-cell Li-Ion replaceable battery, with charging and
        monitoring handled by modem.
      - Label MAC device: eth0
      
      Console connection: connector X2 is the console port, with the following
      pinout, starting from pin 1, which is the topmost pin when the board is
      upright:
      - VCC (3.3V). Do not use unless you need to source power for the
        converer from it.
      - TX
      - RX
      - GND
      Default port configuration in U-boot as well as in stock firmware is
      115200-8-N-1.
      
      Installation:
      Due to different flash layout from stock firmware, sysupgrade from
      within stock firmware is impossible, despite it's based on QSDK which
      itself is based on OpenWrt.
      
      STEP 0: Stock firmware update:
      As installing OpenWrt cuts you off from official firmware updates for
      the modem part, it is recommended to update the stock firmware to latest
      version before installation, to have built-in modem at the latest firmware
      version.
      
      STEP 1: gaining root shell:
      
      Method 1:
      This works if busybox has telnetd compiled in the binary.
      If this does not work, try method 2.
      
      Using well-known exploit to start telnetd on your router - works
      only if Busybox on stock firmware has telnetd included:
      - Open stock firmware web interface
      - Navigate to "URL filtering" section by going to "Advanced settings",
        then "Firewall" and finally "URL filter".
      - Add an entry ending with "&&telnetd&&", for example
        "http://hostname/&&telnetd&&".
      - telnetd will immediately listen on port 4719.
      - After connecting to telnetd use "admin/admin" as credentials.
      
      Method 2:
      This works if busybox does not have telnetd compiled in. Notably, this
      is the case in DNA.fi firmware.
      If this does not work, try method 3.
      
      - Set IP of your computer to 192.168.1.22.
      - Have a TFTP server running at that address
      - Download MIPS build of busybox including telnetd, for example from:
        https://busybox.net/downloads/binaries/1.21.1/busybox-mips
        and put it in it's root directory. Rename it as "telnetd".
      - As previously, login to router's web UI and navigate to "URL
        filtering"
      - Using "Inspect" feature, extend "maxlength" property of the input
        field named "addURLFilter", so it looks like this:
        <input type="text" name="addURLFilter" id="addURLFilter" maxlength="332"
          class="required form-control">
      - Stay on the page - do not navigate anywhere
      - Enter "http://aa&zte_debug.sh
      
       192.168.1.22 telnetd" as a filter.
      - Save the settings. This will download the telnetd binary over tftp and
        execute it. You should be able to log in at port 23, using
        "admin/admin" as credentials.
      
      Method 3:
      If the above doesn't work, use the serial console - it exposes root shell
      directly without need for login. Some stock firmwares, notably one from
      finnish DNA operator lack telnetd in their builds.
      
      STEP 2: Backing up original software:
      As the stock firmware may be customized by the carrier and is not
      officially available in the Internet, IT IS IMPERATIVE to back up the
      stock firmware, if you ever plan to returning to stock firmware.
      
      Method 1: after booting OpenWrt initramfs image via TFTP:
      PLEASE NOTE: YOU CANNOT DO THIS IF USING INTERMEDIATE FIRMWARE FOR INSTALLATION.
      - Dump stock firmware located on stock kernel and ubi partitions:
      
        ssh root@192.168.1.1: cat /dev/mtd4 > mtd4_kernel.bin
        ssh root@192.168.1.1: cat /dev/mtd8 > mtd8_ubi.bin
      
      And keep them in a safe place, should a restore be needed in future.
      
      Method 2: using stock firmware:
      - Connect an external USB drive formatted with FAT or ext4 to the USB
        port.
      - The drive will be auto-mounted to /var/usb_disk
      - Check the flash layout of the device:
      
        cat /proc/mtd
      
        It should show the following:
        mtd0: 00080000 00010000 "uboot"
        mtd1: 00020000 00010000 "uboot-env"
        mtd2: 00140000 00020000 "fota-flag"
        mtd3: 00140000 00020000 "caldata"
        mtd4: 00140000 00020000 "mac"
        mtd5: 00600000 00020000 "cfg-param"
        mtd6: 00140000 00020000 "oops"
        mtd7: 00800000 00020000 "web"
        mtd8: 00300000 00020000 "kernel"
        mtd9: 01f00000 00020000 "rootfs"
        mtd10: 01900000 00020000 "data"
        mtd11: 03200000 00020000 "fota"
      
        Differences might indicate that this is NOT a vanilla MF286 device but
        one of its later derivatives.
      - Copy over all MTD partitions, for example by executing the following:
      
        for i in 0 1 2 3 4 5 6 7 8 9 10 11; do cat /dev/mtd$i > \
        /var/usb_disk/mtd$i; done
      
      - If the count of MTD partitions is different, this might indicate that
        this is not a standard MF286 device, but one of its later derivatives.
      - (optionally) rename the files according to MTD partition names from
        /proc/mtd
      - Unmount the filesystem:
      
        umount /var/usb_disk; sync
      
        and then remove the drive.
      - Store the files in safe place if you ever plan to return to stock
        firmware. This is especially important, because stock firmware for
        this device is not available officially, and is usually customized by
        the mobile providers.
      
      STEP 3: Booting initramfs image:
      
      Method 1: using serial console (RECOMMENDED):
      - Have TFTP server running, exposing the OpenWrt initramfs image, and
        set your computer's IP address as 192.168.1.22. This is the default
        expected by U-boot. You may wish to change that, and alter later
        commands accordingly.
      - Connect the serial console if you haven't done so already,
      - Interrupt boot sequence by pressing any key in U-boot when prompted
      - Use the following commands to boot OpenWrt initramfs through TFTP:
      
        setenv serverip 192.168.1.22
        setenv ipaddr 192.168.1.1
        tftpboot 0x81000000 openwrt-ath79-nand-zte_mf286-initramfs-kernel.bin
        bootm 0x81000000
      
        (Replace server IP and router IP as needed). There is no  emergency
        TFTP boot sequence triggered by buttons, contrary to MF283+.
      - When OpenWrt initramfs finishes booting, proceed to actual
        installation.
      
      Method 2: using initramfs image as temporary boot kernel
      This exploits the fact, that kernel and rootfs MTD devices are
      consecutive on NAND flash, so from within stock image, an initramfs can
      be written to this area and booted by U-boot on next reboot, because it
      uses "nboot" command which isn't limited by kernel partition size.
      - Download the initramfs-kernel.bin image
      - Split the image into two parts on 3MB partition size boundary, which
        is the size of kernel partition. Pad the output of second file to
        eraseblock size:
      
        dd if=openwrt-ath79-nand-zte_mf286-initramfs-kernel.bin \
        bs=128k count=24 \
        of=openwrt-ath79-zte_mf286-intermediate-kernel.bin
      
        dd if=openwrt-ath79-nand-zte_mf286-initramfs-kernel.bin \
        bs=128k skip=24 conv=sync \
        of=openwrt-ath79-zte_mf286-intermediate-rootfs.bin
      
      - Copy over /usr/bin/flash_eraseall and /usr/bin/nandwrite utilities to
        /tmp. This is CRITICAL for installation, as erasing rootfs will cut
        you off from those tools on flash!
      
      - After backing up the previous MTD contents, write the images to the
        respective MTD devices:
      
        /tmp/flash_eraseall /dev/<kernel-mtd>
      
        /tmp/nandwrite /dev/<kernel-mtd> \
        /var/usb_disk/openwrt-ath79-zte_mf286-intermediate-kernel.bin
      
        /tmp/flash_eraseall /dev/<kernel-mtd>
      
        /tmp/nandwrite /dev/<rootfs-mtd> \
        /var/usb_disk/openwrt-ath79-zte_mf286-intermediate-rootfs.bin
      
      - Ensure that no bad blocks were present on the devices while writing.
        If they were present, you may need to vary the split  between
        kernel and rootfs parts, so U-boot reads a valid uImage after skipping
        the bad blocks. If it fails, you will be left with method 3 (below).
      - If write is OK, reboot the device, it will reboot to OpenWrt
        initramfs:
      
        reboot -f
      
      - After rebooting, SSH into the device and use sysupgrade to perform
        proper installation.
      
      Method 3: using built-in TFTP recovery (LAST RESORT):
      - With that method, ensure you have complete backup of system's NAND
        flash first. It involves deliberately erasing the kernel.
      - Download "-initramfs-kernel.bin" image for the device.
      - Prepare the recovery image by prepending 8MB of zeroes to the image,
        and name it root_uImage:
      
        dd if=/dev/zero of=padding.bin bs=8M count=1
      
        cat padding.bin openwrt-ath79-nand-zte_mf286-initramfs-kernel.bin >
        root_uImage
      
      - Set up a TFTP server at 192.0.0.1/8. Router will use random address
        from that range.
      - Put the previously generated "root_uImage" into TFTP server root
        directory.
      - Deliberately erase "kernel" partition" using stock firmware after
        taking backup. THIS IS POINT OF NO RETURN.
      - Restart the device. U-boot will attempt flashing the recovery
        initramfs image, which will let you perform actual installation using
        sysupgrade. This might take a considerable time, sometimes the router
        doesn't establish Ethernet link properly right after booting. Be
        patient.
      - After U-boot finishes flashing, the LEDs of switch ports will all
        light up. At this moment, perform power-on reset, and wait for OpenWrt
        initramfs to finish booting. Then proceed to actual installation.
      
      STEP 4: Actual installation:
      - scp the sysupgrade image to the device:
      
        scp openwrt-ath79-nand-zte_mf286-squashfs-sysupgrade.bin \
        root@192.168.1.1:/tmp/
      
      - ssh into the device and execute sysupgrade:
      
        sysupgrade -n /tmp/openwrt-ath79-nand-zte_mf286-squashfs-sysupgrade.bin
      
      - Wait for router to reboot to full OpenWrt.
      
      STEP 5: WAN connection establishment
      Since the router is equipped with LTE modem as its main WAN interface, it
      might be useful to connect to the Internet right away after
      installation. To do so, please put the following entries in
      /etc/config/network, replacing the specific configuration entries with
      one needed for your ISP:
      
      config interface 'wan'
              option proto 'qmi'
              option device '/dev/cdc-wdm0'
              option auth '<auth>' # As required, usually 'none'
              option pincode '<pin>' # If required by SIM
              option apn '<apn>' # As required by ISP
              option pdptype '<pdp>' # Typically 'ipv4', or 'ipv4v6' or 'ipv6'
      
      For example, the following works for most polish ISPs
      config interface 'wan'
              option proto 'qmi'
              option device '/dev/cdc-wdm0'
              option auth 'none'
              option apn 'internet'
              option pdptype 'ipv4'
      
      If you have build with LuCI, installing luci-proto-qmi helps with this
      task.
      
      Restoring the stock firmware:
      
      Preparation:
      If you took your backup using stock firmware, you will need to
      reassemble the partitions into images to be restored onto the flash. The
      layout might differ from ISP to ISP, this example is based on generic stock
      firmware.
      The only partitions you really care about are "web", "kernel", and
      "rootfs". For easy padding and possibly restoring configuration, you can
      concatenate most of them into images written into "ubi" meta-partition
      in OpenWrt. To do so, execute something like:
      
      cat mtd5_cfg-param.bin mtd6-oops.bin mtd7-web.bin mtd9-rootfs.bin > \
      mtd8-ubi_restore.bin
      
      You can skip the "fota" partition altogether,
      it is used only for stock firmware update purposes and can be overwritten
      safely anyway. The same is true for "data" partition which on my device
      was found to be unused at all. Restoring mtd5_cfg-param.bin will restore
      the stock firmware configuration you had before.
      
      Method 1: Using initramfs:
      - Boot to initramfs as in step 3:
      - Completely detach ubi0 partition using ubidetach /dev/ubi0_0
      - Look up the kernel and ubi partitions in /proc/mtd
      - Copy over the stock kernel image using scp to /tmp
      - Erase kernel and restore stock kernel:
        (scp mtd4_kernel.bin root@192.168.1.1:/tmp/)
        mtd write <kernel_mtd> mtd4_kernel.bin
        rm mtd4_kernel.bin
      - Copy over the stock partition backups one-by-one using scp to /tmp, and
        restore them individually. Otherwise you might run out of space in
        tmpfs:
      
        (scp mtd3_ubiconcat0.bin root@192.168.1.1:/tmp/)
      
        mtd write <ubiconcat0_mtd> mtd3_ubiconcat0.bin
        rm mtd3_ubiconcat0.bin
      
        (scp mtd5_ubiconcat1.bin root@192.168.1.1:/tmp/)
      
        mtd write <ubiconcat1_mtd> mtd5_ubiconcat1.bin
        rm mtd5_ubiconcat1.bin
      
      - If the write was correct, force a device reboot with
      
        reboot -f
      
      Method 2: Using live OpenWrt system (NOT RECOMMENDED):
      - Prepare a USB flash drive contatining MTD backup files
      - Ensure you have kmod-usb-storage and filesystem driver installed for
        your drive
      - Mount your flash drive
      
        mkdir /tmp/usb
      
        mount /dev/sda1 /tmp/usb
      
      - Remount your UBI volume at /overlay to R/O
      
        mount -o remount,ro /overlay
      
      - Write back the kernel and ubi partitions from USB drive
      
        cd /tmp/usb
        mtd write mtd4_kernel.bin /dev/<kernel_mtd>
      
        mtd write mtd8_ubi.bin /dev/<kernel_ubi>
      
      - If everything went well, force a device reboot with
        reboot -f
      
      Last image may be truncated a bit due to lack of space in RAM, but this will happen over "fota"
      MTD partition which may be safely erased after reboot anyway.
      
      Method 3: using built-in TFTP recovery (LAST RESORT):
      - Assemble a recovery rootfs image from backup of stock partitions by
        concatenating "web", "kernel", "rootfs" images dumped from the device,
        as "root_uImage"
      - Use it in place of "root_uImage" recovery initramfs image as in the
        TFTP pre-installation method.
      
      Quirks and known issues
      - Kernel partition size is increased to 4MB compared to stock 3MB, to
        accomodate future kernel updates - at this moment OpenWrt 5.10 kernel
        image is at 2.5MB which is dangerously close to the limit. This has no
        effect on booting the system - but keep that in mind when reassembling
        an image to restore stock firmware.
      - uqmi seems to be unable to change APN manually, so please use the one
        you used before in stock firmware first. If you need to change it,
        please use protocok '3g' to establish connection once, or use the
        following command to change APN (and optionally IP type) manually:
        echo -ne 'AT+CGDCONT=1,"IP","<apn>' > /dev/ttyUSB0
      - The only usable LED as a "system LED" is the green debug LED hidden
        inside the case. All other LEDs are controlled by modem, on which the
        router part has some influence only on Wi-Fi LED.
      - Wi-Fi LED currently doesn't work while under OpenWrt, despite having
        correct GPIO mapping. All other LEDs are controlled by modem,
        including this one in stock firmware. GPIO19, mapped there only acts
        as a gate, while the actual signal source seems to be 5GHz Wi-Fi
        radio, however it seems it is not the LED exposed by ath10k as
        ath10k-phy0.
      - GPIO5 used for modem reset is a suicide switch, causing a hardware
        reset of whole board, not only the modem. It is attached to
        gpio-restart driver, to restart the modem on reboot as well, to ensure
        QMI connectivity after reboot, which tends to fail otherwise.
      - Modem, as in MF283+, exposes root shell over ADB - while not needed
        for OpenWrt operation at all - have fun lurking around.
      - MAC address shift for 5GHz Wi-Fi used in stock firmware is
        0x320000000000, which is impossible to encode in the device tree, so I
        took the liberty of using MAC address increment of 1 for it, to ensure
        different BSSID for both Wi-Fi interfaces.
      
      Signed-off-by: default avatarLech Perczak <lech.perczak@gmail.com>
      8c78a13b
Loading