aboutsummaryrefslogtreecommitdiffstats
path: root/package
Commit message (Collapse)AuthorAgeFilesLines
* kernel: fix kmod-usb3 on platforms without PCIDaniel Golle2021-03-061-3/+6
| | | | | | | | | | | | | Partially restore the wild-card matching for kmod-usb3 modules to fix build on platforms without PCI which otherwise file, as seen on buildbot: ERROR: module '[...]/linux-5.4.102/drivers/usb/host/xhci-pci.ko' is missing. modules/usb.mk:1675: recipe for target '[...]/kmod-usb3_5.4.102-1_mips_mips32.ipk' failed Fixes: 7bda2e9aba ("kernel: fix kmod-usb3 dependencies") Fixes: be23f9818a ("apm821xx: add support for kernel 5.10") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* arm-trusted-firmware-mediatek: prune now uneeded declarationsDaniel Golle2021-03-061-7/+0
| | | | | | | Remove unneeded delcarations form package Makefile now that everything comes from github.com/mtk-openwrt upstream. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: fix kmod-usb3 dependenciesIlya Lipnitskiy2021-03-061-20/+62
| | | | | | | | | | | | | | | | | | Adding CONFIG_USB_XHCI_PCI_RENESAS to KCONFIG made it so it was set for all targets that included kmod-usb3, not just the intended apm821xx/nand. xhci-pci has a dependency on xhci-pci-renesas if CONFIG_USB_XHCI_PCI_RENESAS is set, breaking kmod-usb3 builds on Linux 5.10 on all other targets. Rework the dependencies by breaking out xhci-hcd, xhci-mtk, and xhci-pci-renesas into new hidden kernel modules and setting kmod-usb3 dependencies properly. Tested by building mt7621 and apm821xx/nand with kmod-usb3 on Linux 5.10 Fixes: be23f981 ("apm821xx: add support for kernel 5.10") Cc: Christian Lamparter <chunkeey@gmail.com> Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
* arm-trusted-firmware-mediatek: don't select DDR3_FLYBY for 1ddrDaniel Golle2021-03-051-10/+6
| | | | | | | DDR3_FLYBY has accidentally been set also for the 1-chip variant which lead to broken, unbootable images. Fix that. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* apm821xx: add support for kernel 5.10 for testingChristian Lamparter2021-03-051-0/+6
| | | | | | | | | | | | This patch copies over refreshed patches from 5.4. - dropped crypto patches (they got upstreamed) - dropped renesas USB 3 firmware loader (they got upstreamed) - NAND now needs extra device-properties for ECC settings. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* uboot-mediatek: improve BPi-R64 supportDaniel Golle2021-03-052-6/+14
| | | | | | | | * allow MAC address from U-Boot env to be inhertied * allow eMMC installation to succeed also without recovery present on the SD Card. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* arm-trusted-firmware-mediatek: update to ATF 2.4 (2021-02-25)Daniel Golle2021-03-053-61/+30
| | | | | | | | | | | | | | | | | | | | All necessary blobs are now contained in the upstream repository, no more wild replacing of blobs needed. This new version also contains new storage drivers for (SPI-)NAND which already comes with support for FM35Q1GA, so that patch can be dropped as well. Tested on: * Bananapi BPi-R64 - sdmmc-2ddr - emmc-2ddr * Linksys E8450 - snand-1ddr All works fine (booting Bananapi BPi-R64 from SD Card does NOT require a signed image, so patch arm-trusted-firmware-mediatek to allow doing that). Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* bcm63xx-cfe: update to the latest masterRafał Miłecki2021-03-051-3/+3
| | | | | | d035016 tp-link: rename to tplink to match DT vendor prefix Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* kernel/modules: fix CDC NCM dependenciesRui Salvaterra2021-03-051-1/+1
| | | | | | CDC NCM support only depends on CDC Ethernet with Linux 5.10. Fix thusly. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
* rssileds: use new application led trigger backendFlorian Eckert2021-03-052-0/+5
| | | | | | | | | | | | | | | | | This will use the new application led trigger backend. For now this is the only package that uses leds trigger in user space to configure the kernel led triggers. The callback script only emmits a message for now, so that this LED is now managed by the rssileds service. Until now a generic warning was emitted that this LED trigger is not supported. But that is not true. -> Skipping trigger 'rssileds' for led '<name>' due to missing kernel module I think this callback should be changed in the future to restart the service. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* base-files: add new application led trigger backendFlorian Eckert2021-03-051-4/+5
| | | | | | | | | | | | | | | | | For now we have only kernel LED trigger support. With this change it is now possible to use application triggers. If we configure a LED with a non kernel trigger, then we check on every restart and boot of the LED service if we have this trigger as an application in "/usr/libexec/led-trigger". If this file with the name is found, then we execute this to init the LED. Possible use cases are: - Start/Stop/Restart an application led trigger service for this led - Init a LED that is configured by a hotplug script (VPN tunnel established) Signed-off-by: Florian Eckert <fe@dev.tdt.de>
* bcm63xx-cfe: update to the latest masterRafał Miłecki2021-03-051-3/+3
| | | | | | | 3fb6f1c tp-link: c2300-v1: add cferam file 79f9578 sercomm: vox-2.5: add cferam file Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* fstools: fix build with glibcDaniel Golle2021-03-051-3/+3
| | | | | | | | stropts.h is unavailable under glibc (and unneeded when building against glibc). Include it only if not building against glibc. Reported-by: @DazzyWalkman Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* arm-trusted-firmware-mediatek: don't try to install absent filesDaniel Golle2021-03-041-6/+0
| | | | | | | | Don't try to install files which no longer exist Since {e,sd}mmc are now produced by ptgen they have been removed. Fixes: 5a3562cd1d ("arm-trusted-firmware-mediatek: remove {e,sd}mmc headers") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* arm-trusted-firmware-mediatek: remove {e,sd}mmc headersDaniel Golle2021-03-031-20/+0
| | | | | | | | Turned out those are simply MBR with active boot partition. And not needed at all on emmc. Remove them as ptgen can now generate hybrid MBR sufficient to boot MT7622 from SD Card. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* fstools: update to git HEADDaniel Golle2021-03-021-3/+3
| | | | | | 19d7d93 libfstools: partname: several fixes Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* procd: update to git HEADDaniel Golle2021-03-021-3/+3
| | | | | | 64e9f3a procd: fix compilation with newer musl Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* libubox: update to git HEADDaniel Golle2021-03-021-3/+3
| | | | | | 2e52c7e libubox: fix BLOBMSG_CAST_INT64 (do not override BLOBMSG_TYPE_DOUBLE) Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-mediatek: bpi-r64: make sure eMMC installation runs only onceDaniel Golle2021-03-021-3/+3
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-mediatek: bpi-r64: fix eMMC installation menu labelDaniel Golle2021-03-011-1/+1
| | | | | | Change boot menu label for eMMC installation to tell what it does now. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: bpi-r64: simplify eMMC install procedureDaniel Golle2021-03-011-6/+10
| | | | | | | | Write everything needed for eMMC install into the gaps between partitions on SD card. In that way, installation to eMMC only needs the SD card, no additional files need to be loaded via TFTP any more. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* treewide: fix spelling 'seperate' -> 'separate'Daniel Golle2021-02-283-4/+4
| | | | | | | This popular spelling mistake was also introduced by myself lately. Fix it everywhere. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* hostapd: P2P: Fix a corner case in peer addition based on PD RequestStefan Lippers-Hollmann2021-03-011-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | p2p_add_device() may remove the oldest entry if there is no room in the peer table for a new peer. This would result in any pointer to that removed entry becoming stale. A corner case with an invalid PD Request frame could result in such a case ending up using (read+write) freed memory. This could only by triggered when the peer table has reached its maximum size and the PD Request frame is received from the P2P Device Address of the oldest remaining entry and the frame has incorrect P2P Device Address in the payload. Fix this by fetching the dev pointer again after having called p2p_add_device() so that the stale pointer cannot be used. This fixes the following security vulnerabilities/bugs: - CVE-2021-27803 - A vulnerability was discovered in how p2p/p2p_pd.c in wpa_supplicant before 2.10 processes P2P (Wi-Fi Direct) provision discovery requests. It could result in denial of service or other impact (potentially execution of arbitrary code), for an attacker within radio range. Fixes: 17bef1e97a50 ("P2P: Add peer entry based on Provision Discovery Request") Signed-off-by: Jouni Malinen <jouni@codeaurora.org> Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
* igmpproxy: update to version 0.3Jan Pavlinec2021-03-011-11/+3
| | | | | | | | | Changes: - Remove custom Build/Compile because it's no longer needed - Remove std=gnu99 which is added automaticaly by igmpproxy if needed - Remove -Dlog from CFLAGS because igmpproxy doesn't have log function Signed-off-by: Jan Pavlinec <jan.pavlinec@nic.cz>
* libunwind: Add MIPS64 dep checkDonald Hoskins2021-03-011-1/+1
| | | | | | | | | | | libunwind dependency check does not allow for MIPS64 arch. Add MIPS64 awareness. libunwind seems to support MIPS64 without issues, it was limited by the dep arch check in the Makefile. Used to compile Suricata6/Rust locally without issue. Signed-off-by: Donald Hoskins <grommish@gmail.com>
* uboot-sunxi: add missing type __u64Georgi Valkov2021-03-011-0/+10
| | | | | | | | | | | | | | | Non Linux systems e.g. macOS lack the __u64 type and produce build errors: In file included from tools/aisimage.c:9: In file included from include/image.h:19: In file included from ./arch/arm/include/asm/byteorder.h:29: In file included from include/linux/byteorder/little_endian.h:13: include/linux/types.h:146:9: error: unknown type name '__u64'; did you mean '__s64'? typedef __u64 __bitwise __le64; Resolved by declaring __u64 in include/linux/types.h Build tested on macOS and Ubuntu. Signed-off-by: Georgi Valkov <gvalkov@abv.bg>
* bpftools: update to latest stable 5.11.2Tony Ambardar2021-03-012-7/+2
| | | | | | | Compile and run-tested on malta/mip32be, using bpftool directly and also libbpf (linked with tc) to inspect and load simple eBPF programs. Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
* iproute2: update to 5.11.0Tony Ambardar2021-03-0111-29/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The latest iproute2 version brings various improvements and fixes: https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/log/?qt=range&q=v5.10.0..v5.11.0 In particular, ip and tc now use libbpf as the standard way to load BPF programs, rather than the old, limited custom loader. This allows more consistent and featureful BPF program handling e.g. support for global initialized variables. Also fix a longstanding problem with iproute2 builds where unneeded DSO dependencies are added to most utilities, bloating their installation footprint. From research and testing, explicitly using a "--as-needed" linker flag avoids the issue. Update accordingly and drop extra package dependencies from Makefile. Additional build and packaging updates include: - install missing development header to iproute2/bpf_elf.h - propagate OpenWrt verbose flag during build - update and refresh patches Compile and run tested: QEMU/malta-mips32be on kernels 5.4 & 5.10. All iproute2 packages were built and installed to the test image. Some regression testing using ip-full and tc was successfully performed to exercise several kmods, tc modules, and simple BPF programs. Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
* libpcap: update to 1.10.0Rosen Penev2021-03-017-109/+73
| | | | | | | | | | | | | | | | | | | | | Simplify cmake option handling by putting everything in blocks. Add openssl patch as there's no easy way to disable. Rebase the skip manpages patch. Remove the monitor mode patch as it no longer applies. Remove flex patch as normal Makefile is no longer used. Remove USB path patch. While it is deprecated, the codepath is never taken. /sys/bus/usb/devices is checked before hand. If it exists, the function does stuff and returns. Additionally, this path is used elsewhere in the code. Refresh other patches. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* kernel/zram: remove obsolete symbolRui Salvaterra2021-03-011-1/+0
| | | | | | | | | Zsmalloc page table mappings are dead and gone [1]. Drop the respective kconfig symbol. [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.4.y&id=69dc72f058c9b98f9b66bed184cfab7c2e9f49b0 Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
* busybox: sysntpd: option to bind server to ifaceAlexey Dobrovolsky2021-03-011-2/+10
| | | | | | | | | | | NTPD in busybox has option -I to bind server to IFACE. However, capabilities of the busybox are limited, the -I option cannot be repeated and only one interface can be effectively specified in it. This option is currently not configurable via UCI. The patch adds an interface option to the system config, ntp section. Also sort options for uci_load_validate alphabetically. Signed-off-by: Alexey Dobrovolsky <dobrovolskiy.alexey@gmail.com>
* uboot-envtools: adjust compile patch to version v2021.01Ronny Kotzschmar2021-03-011-2/+2
| | | | | | | with u-boot v2020.07 some variables have been renamed so this patch needs to be adjusted otherwise at least with macOS as build system there are build errors Signed-off-by: Ronny Kotzschmar <ro.ok@me.com>
* lantiq: ltq-tapi: disable KPI and QOSMathias Kresin2021-03-011-2/+2
| | | | | | | | | | The QOS feature depends on KPI2UDP which was removed from the tree with commit a95775e4b2a9 ("drop unmaintained packages") in 2012. Since QOS was the last user of the KPI, the feature can be disabled by default. Signed-off-by: Mathias Kresin <dev@kresin.me>
* ltq-vdsl-app: fix -Wundef warningsMathias Kresin2021-03-012-3/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | The following warnings are shown during build: /usr/include/vdsl/cmv_message_format.h:33:6: warning: "MEI_SUPPORT_DEBUG_STREAMS" is not defined, evaluates to 0 [-Wundef] #if (MEI_SUPPORT_DEBUG_STREAMS == 1) ^~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/vdsl/drv_mei_cpe_interface.h:2256:6: warning: "MEI_SUPPORT_OPTIMIZED_FW_DL" is not defined, evaluates to 0 [-Wundef] #if (MEI_SUPPORT_OPTIMIZED_FW_DL == 1) ^~~~~~~~~~~~~~~~~~~~~~~~~~~ The headers are provided by the MEI driver, but the defines are never set by the vdsl app. While the struct with the MEI_SUPPORT_OPTIMIZED_FW_DL conditional isn't used by the vdsl app, however CMV_USED_PAYLOAD_8BIT_SIZE which value depends on MEI_SUPPORT_DEBUG_STREAMS is. Since the MEI driver doesn't provide an autogenerated header with compile flags, the flags are hardcoded for the vdsl app. Set them for the MEI driver as well, to indicate a relation to the values used for the vdsl app and to be not surprised by a changed default in case the MEI driver gets updated. Use the current default values defined in the MEI driver. Signed-off-by: Mathias Kresin <dev@kresin.me>
* selinux-policy: update to version 0.7Daniel Golle2021-02-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a857b45 resolv/locale: eventually this should be more efficient 11ed281 some more optimization 764a475 add redundant calls to file.search_conffile_dirs() 7d4558e fs: treat devtmpfs that same as tmpfs 81b677e adds irqbalance skeleton 5506244 irqbalance rules cc96cd8 adds usbutil and gtpfdisk skels 01e2a55 some fsck, gptfdisk, mkfs and usbutil rules d6d1e7d usbutil: output to terminal da576fa fsck, gptfdisk and usbutil rules 09b39e9 unbound 241a029 hotplugcall: allow dac_read_search (is a subset of dac_override) af0fe90 adds label for tcsh 160f79e adds tcpdump 6d02b96 adds coreutil execfile for busybox alternatives ac54884 coreutilexecfile: these are known to require privileges, so exclude 8cb3b66 adds chrootexecfile 6d329d3 this saves 9KiB and its a bit more robust 88e2425 move addpart/delpart/partx to gptfdisk.cil 261012d ntphotplug: reads ubox data files 0473ace various 740e820 work through to genfs_seclabel_symlinks loose ends (Linux 5.10) bef21f5 TODO adds a note about how I dont need to upgrade to polver 33 from 31 cb2e5a3 ubus uses ntpdhotplug fd, and some genfs_seclabel_symlink changes 07df9b9 luci, rpcd and wpad (mainly genfs_selabel related but not all) 8d86cab genfs_seclabel loose ends for blockmount, hotplugcall, irqbalance, zram-swap b8156cd adds a note about how i forgot to target blockd 6e82ab8 adds blockd and related 254ff43 Makefile: exclude blockd from mintesttgt 4dc6bc2 pppd update related and unbound-odhcp rules Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-envtools: add defaults for Bananapi BPi-R64Daniel Golle2021-02-281-0/+7
| | | | Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mt7623n-preloader: remove mt7622-preloaderDaniel Golle2021-02-281-14/+0
| | | | | | mt7622-preloader has been superseeded by arm-trusted-firmware-mediatek. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-mediatek: rework support for Bananapi BPi-R64 boardDaniel Golle2021-02-284-3/+608
| | | | | | | | | | | | | | Provide U-Boot variants for SD-card as well as eMMC boot, so we can generate whole-disk images for the device. While at it, rename 'mt7622' to 'mt7622-rfb1' to make it less confusing now that more boards are being added. Thanks to Frank Wunderlich (@frank-w) for making that nice SVG image explaining the MMC boot process[1] and for providing the necessary binary header blobs. [1]: https://github.com/frank-w/BPI-R64-ATF Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-envtools: add defaults for linksys-e8450-ubiDaniel Golle2021-02-281-0/+25
| | | | | | | | Add U-Boot environment configuration for the Linksys E8450 (UBI) to allow access to the bootloader environment from OpenWrt via 'fw_printenv' and 'fw_setenv'. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-mediatek: add support for Linksys E8450Daniel Golle2021-02-2813-160/+713
| | | | | | | | | | | | | | | | | | | | | Build U-Boot for the Linksys E8450 in order to have support for UBI. The loader has a default environment with scripts handling the reset button as well as fall-back to recovery firmware. If the loader comes up without a valid environment found in UBI, it will automatically make sure UBI is formatted and create a new environment and proceed to load recovery firmware (either from UBI or via TFTP if recovery is corrupted or unavailable). If the button is held down during power-on, the yellow status LED turns on and the bootloader environment is reset to factory defaults. If the button is released at this point, the recovery firmware (if existing) is loaded from UBI and booted. If the button is continously held down even beyond the point that the yellow LED turned on, the loader will try to load the recovery firmware via TFTP from server 192.168.1.254, write it to UBI and boot. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* arm-trusted-firmware-mediatek: add patch for Fidelix SPI NANDDaniel Golle2021-02-281-0/+24
| | | | | | | | The Linksys E8450 aka. Belkin RT3200 comes with a rather fresh brand of SPI NAND storage. Add support for it to the nandx driver in arm-trusted-firmware-mediatek, so we can boot from that chip. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* base-files: add support for restoring config from tmpfsDaniel Golle2021-02-281-2/+3
| | | | | | | | Instead of only relying in /sysupgrade.tgz being present in rootfs to restore configuration, also grab /tmp/sysupgrade.tar which may have magically gotten there during preinit... Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* fstools: update to git HEADDaniel Golle2021-02-281-4/+4
| | | | | | bad1835 fstools: add partname volume driver Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: no chacha-mips.ko on mips32 r1 targetsIlya Lipnitskiy2021-02-271-2/+5
| | | | | | | | | | | | | CHACHA_MIPS depends on CPU_MIPS32_R2. Therefore, kmod-crypto-lib-chacha20 should not contain chacha-mips.ko on MIPS32 R1 targets. Enforce that in the target-specific definition. Fixes bcm47xx, bcm63xx, lantiq/ase, ath25 builds. Fixes: 06351f1 ("kernel: migrate wireguard into the kernel tree") Cc: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
* wireguard-tools: depend on kmod-wireguardIlya Lipnitskiy2021-02-261-1/+4
| | | | | | | | | | | | | | | To the vast majority of the users, wireguard-tools are not useful without the underlying kernel module. The cornercase of only generating keys and not using the secure tunnel is something that won't be done on an embedded OpenWrt system often. On the other hand, maintaining a separate meta-package only for this use case introduces extra complexity. WireGuard changes for Linux 5.10 remove the meta-package. So let's make wireguard-tools depend on kmod-wireguard to make WireGuard easier to use without having to install multiple packages. Fixes: ea980fb9 ("wireguard: bump to 20191226") Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
* kernel: fix kmod-wireguard package fieldsIlya Lipnitskiy2021-02-261-4/+2
| | | | | | | | | Use NETWORK_SUPPORT_MENU like all other modules in netsupport.mk. Drop SECTION and CATEGORY fields as they are set by default and to match other packages in netsupport.mk. Use better TITLE for kmod-wireguard (taken from upstream drivers/net/Kconfig). Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
* wireguard-tools: bump to 1.0.20210223Jason A. Donenfeld2021-02-261-2/+2
| | | | | | Simple version bump with accumulated fixes. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* kernel: migrate wireguard into the kernel treeIlya Lipnitskiy2021-02-263-89/+181
| | | | | | | | | | On Linux 5.4, build WireGuard from backports. Linux 5.10 contains wireguard in-tree. Add in-kernel crypto libraries required by WireGuard along with arch-specific optimizations. Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
* download: add mirror alias for DebianDavid Bauer2021-02-263-3/+3
| | | | | | | Add an alias for Debian packages and download them from the Debian mirror redirector. Signed-off-by: David Bauer <mail@david-bauer.net>
* ramips: add support for ZTE MF283+Lech Perczak2021-02-261-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ZTE MF283+ is a dual-antenna LTE category 4 router, based on Ralink RT3352 SoC, and built-in ZTE P685M PCIe MiniCard LTE modem. Hardware highlighs: - CPU: MIPS24KEc at 400MHz, - RAM: 64MB DDR2, - Flash: 16MB SPI, - Ethernet: 4 10/100M port switch with VLAN support, - Wireless: Dual-stream 802.11n (RT2860), with two internal antennas, - WWAN: Built-in ZTE P685M modem, with two internal antennas and two switching SMA connectors for external antennas, - FXS: Single ATA, with two connectors marked PHONE1 and PHONE2, internally wired in parallel by 0-Ohm resistors, handled entirely by internal WWAN modem. - USB: internal miniPCIe slot for modem, unpopulated USB A connector on PCB. - SIM slot for the WWAN modem. - UART connector for the console (unpopulated) at 3.3V, pinout: 1: VCC, 2: TXD, 3: RXD, 4: GND, settings: 57600-8-N-1. - LEDs: Power (fixed), WLAN, WWAN (RGB), phone (bicolor, controlled by modem), Signal, 4 link/act LEDs for LAN1-4. - Buttons: WPS, reset. Installation: As the modem is, for most of the time, provided by carriers, there is no possibility to flash through web interface, only built-in FOTA update and TFTP recovery are supported. There are two installation methods: (1) Using serial console and initramfs-kernel - recommended, as it allows you to back up original firmware, or (2) Using TFTP recovery - does not require disassembly. (1) Using serial console: To install OpenWrt, one needs to disassemble the router and flash it via TFTP by using serial console: - Locate unpopulated 4-pin header on the top of the board, near buttons. - Connect UART adapter to the connector. Use 3.3V voltage level only, omit VCC connection. Pin 1 (VCC) is marked by square pad. - Put your initramfs-kernel image in TFTP server directory. - Power-up the device. - Press "1" to load initramfs image to RAM. - Enter IP address chosen for the device (defaults to 192.168.0.1). - Enter TFTP server IP address (defaults to 192.168.0.22). - Enter image filename as put inside TFTP server - something short, like firmware.bin is recommended. - Hit enter to load the image. U-boot will store above values in persistent environment for next installation. - If you ever might want to return to vendor firmware, BACK UP CONTENTS OF YOUR FLASH NOW. For this router, commonly used by mobile networks, plain vendor images are not officially available. To do so, copy contents of each /dev/mtd[0-3], "firmware" - mtd3 being the most important, and copy them over network to your PC. But in case anything goes wrong, PLEASE do back up ALL OF THEM. - From under OpenWrt just booted, load the sysupgrade image to tmpfs, and execute sysupgrade. (2) Using TFTP recovery - Set your host IP to 192.168.0.22 - for example using: sudo ip addr add 192.168.0.22/24 dev <interface> - Set up a TFTP server on your machine - Put the sysupgrade image in TFTP server root named as 'root_uImage' (no quotes), for example using tftpd: cp openwrt-ramips-rt305x-zte_mf283plus-squashfs-sysupgrade.bin /srv/tftp/root_uImage - Power on the router holding BOTH Reset and WPS buttons held for around 5 seconds, until after WWAN and Signal LEDs blink. - Wait for OpenWrt to start booting up, this should take around a minute. Return to original firmware: Here, again there are two possibilities are possible, just like for installation: (1) Using initramfs-kernel image and serial console (2) Using TFTP recovery (1) Using initramfs-kernel image and serial console - Boot OpenWrt initramfs-kernel image via TFTP the same as for installation. - Copy over the backed up "firmware.bin" image of "mtd3" to /tmp/ - Use "mtd write /tmp/firmware.bin /dev/mtd3", where firmware.bin is your backup taken before OpenWrt installation, and /dev/mtd3 is the "firmware" partition. (2) Using TFTP recovery - Follow the same steps as for installation, but replacing 'root_uImage' with firmware backup you took during installation, or by vendor firmware obtained elsewhere. A few quirks of the device, noted from my instance: - Wired and wireless MAC addresses written in flash are the same, despite being in separate locations. - Power LED is hardwired to 3.3V, so there is no status LED per se, and WLAN LED is controlled by WLAN driver, so I had to hijack 3G/4G LED for status - original firmware also does this in bootup. - FXS subsystem and its LED is controlled by the modem, so it work independently of OpenWrt. Tested to work even before OpenWrt booted. I managed to open up modem's shell via ADB, and found from its kernel logs, that FXS and its LED is indeed controlled by modem. - While finding LEDs, I had no GPL source drop from ZTE, so I had to probe for each and every one of them manually, so this might not be complete - it looks like bicolor LED is used for FXS, possibly to support dual-ported variant in other device sharing the PCB. - Flash performance is very low, despite enabling 50MHz clock and fast read command, due to using 4k sectors throughout the target. I decided to keep it at the moment, to avoid breaking existing devices - I identified one potentially affected, should this be limited to under 4MB of Flash. The difference between sysupgrade durations is whopping 3min vs 8min, so this is worth pursuing. In vendor firmware, WWAN LED behaviour is as follows, citing the manual: - red - no registration, - green - 3G, - blue - 4G. Blinking indicates activity, so netdev trigger mapped from wwan0 to blue:wwan looks reasonable at the moment, for full replacement, a script similar to "rssileds" would need to be developed. Behaviour of "Signal LED" in vendor firmware is as follows: - Off - no signal, - Blinking - poor coverage - Solid - good coverage. A few more details on the built-in LTE modem: Modem is not fully supported upstream in Linux - only two CDC ports (DIAG and one for QMI) probe. I sent patches upstream to add required device IDs for full support. The mapping of USB functions is as follows: - CDC (QCDM) - dedicated to comunicating with proprietary Qualcomm tools. - CDC (PCUI) - not supported by upstream 'option' driver yet. Patch submitted upstream. - CDC (Modem) - Exactly the same as above - QMI - A patch is sent upstream to add device ID, with that in place, uqmi did connect successfully, once I selected correct PDP context type for my SIM (IPv4-only, not default IPv4v6). - ADB - self-explanatory, one can access the ADB shell with a device ID added to 51-android.rules like so: SUBSYSTEM!="usb", GOTO="android_usb_rules_end" LABEL="android_usb_rules_begin" SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", ATTR{idProduct}=="1275", ENV{adb_user}="yes" ENV{adb_user}=="yes", MODE="0660", GROUP="plugdev", TAG+="uaccess" LABEL="android_usb_rules_end" While not really needed in OpenWrt, it might come useful if one decides to move the modem to their PC to hack it further, insides seem to be pretty interesting. ADB also works well from within OpenWrt without that. O course it isn't needed for normal operation, so I left it out of DEVICE_PACKAGES. Signed-off-by: Lech Perczak <lech.perczak@gmail.com> [remove kmod-usb-ledtrig-usbport, take merged upstream patches] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>