EcoNet EN75xx is a big endian MIPS platform used in XPON (fiber), DSL, and SIM (3g/4g) applications. Complete GPL vender SDKs exist for this platform, but are based on Linux 2.6.
The bulk of this submission has already been accepted upstream: https://patchwork.kernel.org/project/linux-mips/list/?series=960479&state=*
This platform uses a bootloader that is derived from old TrendChip code. This bootloader implements a frustratingly complex Bad Block Table which is implemented here in en75_bmt.c
This BMT is not upstreamed because it depends on mtk_bmt framework which likewise is not upstreamed.
This BMT system rewrites block indexes in flash and if the bootloader considers it to be corrupted, it will attempt to automatically rebuild on boot. So without implementing the algorithm, you can't safely use the disk at all.
The SmartFiber XP8421-B is a fiber modem which is available for $20 online and has 512MB of memory, 256MB of SPI NAND flash and 2 USB 2.0 ports in addition to ethernet, wifi and XPON.
Because EcoNet is not currently producing evaluation boards, the XP8421-B stands in as a convenient, low cost, off-the-shelf, representitive example of the capabilities of the EN751221 econet processor. This is also the example board that is included in the upstream Linux patchset.
The XP8421-B, and apparently many other devices of this platform, use a dual-image layout. I have chosen to reuse this to support dual-boot between OpenWRT and the factory firmware. Certain design decisions were made with the goal of not overwriting data that is used by the factory OS.
This commit also introduces a utility for switching between OS_A and OS_B which are used for OpenWRT and Factory OS respectively.
Flashing instructions (from bootloader):
Build and then locate the squashfs-tclinux.trx image file Get the length of that file in hex: printf '%X\n' "$(stat -c%s the-file-squashfs-tclinux.trx)" Connect to device with xmodem capability, e.g. picocom --send-cmd lsx -vv -b 115200 /dev/ttyUSB0 Switch device on and press a key within 3 seconds Enter bootloader username and password: telecomadmin nE7jA%5m Type: xmdm 80020000 <file length hex> Quickly start xmodem and send the file, in picocom that is ctrl+a ctrl+s <paste-the-file-name> enter If the transfer fails to start, wait 30 seconds to a minute for the bootloader prompt to return and then try the command again. Once the transfer has completed successfully, type the following flash 80000 80020000 <file length hex> Type go or simply restart the device to boot into OpenWRT
econet: Add new target TP-Link Archer VR1200v (v2)
The TP-Link Archer VR1200v (v2) is a low end DSL modem based on the EcoNet EN751221 processor platform.
While it does have an unlocked bootloader, the factory upgrade feature requires a cryptographic signature so flashing from the web UI is not feasible.
The Archer VR1200v (v2) uses a dual-image layout. I have chosen to reuse this to support dual-boot between OpenWRT and the factory firmware.
Flashing instructions (from bootloader):
Build and then locate the squashfs-sysupgrade.bin image file Get the length of that file in hex: printf '%X\n' "$(stat -c%s the-file-squashfs-sysupgrade.bin)" Connect to device with xmodem capability, e.g. picocom --send-cmd lsx -vv -b 115200 /dev/ttyUSB0 Switch device on and press a key within 3 seconds, you should get to a `bldr>` prompt Type: xmdm 80020000 <file length hex> Quickly start xmodem and send the file, in picocom that is ctrl+a ctrl+s <paste-the-file-name> enter If the transfer fails to start, wait 30 seconds to a minute for the bootloader prompt to return and then try the command again. Once the transfer has completed successfully, type the following flash 80000 80020000 <file length hex> Type `re` or simply restart the device to boot into OpenWRT
realtek: rtl931x: align SerDes access with other targets
While converting the RTL931x SerDes code to the new frontend access methods, the target specific workarounds where left in place. The old functions were kept and the phy/sds mapping was unchanged too. It is time to clean this up
- drop the old functions - reuse the existing read/write logic - harden the new functions
For now keep the function naming rtmdio_...__new() as is. This will be changed in a future commit.
Until now the mdio bus is a subnode of the ethernet device. This coupling is different from upstream and wrong. Ethernet and mdio are different devices. Additionally differentiate between mdio controller and mdio bus. To make it clear:
- There is one mdio controller - With up to 4 busses (on RTL93xx)
Prepare new mdio controller and bus nodes with SoC specific compatibles. These will be used later when refactoring the mdio driver probing.
Remark! For now only define the first bus for the RTL93xx targets. So the driver still relies on "rtl9300,smi-address = <x y>;". It will need much more refactoring to get totally aligned with upstream.
The mdio controller got its own dts node with a dedicated bus node. Until now it still searches the phy nodes in the ethernet node.
Change the driver so it searches the nodes at the right location. For this to work move the phy nodes in all dts/dtsi over to the new bus node. Use the following replacement rule:
The only consumers of the Realtek HSGMII (2.5G SGMII) mode were the RTL8226/RTL8221B PHYs. These have been converted to dynamic SGMII/2500base-x mode switching. Drop the leftovers of the mode implementation.
Add driver for hardware random number generator found in MT7981, MT7988 and MT7987. This gives us a fast source of high-quality random numbers on those platforms.
root@OpenWrt:~# cat /dev/hwrng | rngtest -c 10000 rngtest 6.17 Copyright (c) 2004 by Henrique de Moraes Holschuh This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
rngtest: starting FIPS tests... rngtest: bits received from input: 200000032 rngtest: FIPS 140-2 successes: 9988 rngtest: FIPS 140-2 failures: 12 rngtest: FIPS 140-2(2001-10-10) Monobit: 2 rngtest: FIPS 140-2(2001-10-10) Poker: 0 rngtest: FIPS 140-2(2001-10-10) Runs: 4 rngtest: FIPS 140-2(2001-10-10) Long run: 6 rngtest: FIPS 140-2(2001-10-10) Continuous run: 0 rngtest: input channel speed: (min=616.108; avg=11979.007; max=19531250.000)Kibits/s rngtest: FIPS tests speed: (min=1.859; avg=82.116; max=83.656)Mibits/s rngtest: Program run time: 18629928 microseconds
Signed-off-by: Daniel Golle <daniel@makrotopia.org> (commit: 9cfbd69)
Specification ------------- - SoC : MediaTek MT7986AV quad-core ARM Cortex-A53 2GHz - RAM : DDR4 512Mbytes, Nanya Technology NT5AD256M16E4 - Flash : 128Mbytes NAND Flash, ESMT F50L1G41LB - WLAN : MediaTek MT7976DAN, MediaTek MT7916AN, MediaTek MT7976AN - 2.4GHz : b/g/n/ax, Multi User MIMO - 5GHz : a/n/ac/ax, Multi User MIMO - 6GHz : ax, Multi User MIMO - Ethernet : 10/100/1000 Mbps x4, LAN (MediaTek MT7531AE) 10/100/1000/2500 Mbps x1, WAN (MaxLinear GPY211C0VC) - UART : 1x4 pin header on PCB - [J1] 3.3V, TX, RX, GND (115200, 8N1) - Buttons : WPS, Reset - Switches : Rfkill Slide Switch - USB : 1x USB 3.0 (MediaTek MT7986AV peripheral) - FAN : 1x Fan (off - slow - fast) - LEDs : 1x Power (Blue) 1x CPU (Blue) 1x Wi-Fi 6GHz (Blue) 1x Wi-Fi 5GHz (Blue) 1x Wi-Fi 2.4GHz (Blue) 4x LAN activity (Blue) 1x WAN activity (Blue) 1x USB 3.0 (Blue) - Power : 12VDC, 3.5A (Center positive polarity)
MAC address ----------- +-----------+-------------------+------------------------+ | Interface | MAC | Algorithm | +-----------+-------------------+------------------------+ | WLAN 2.4G | 58:86:94:xx:xx:xx | label1 | | WLAN 5G | 5A:86:94:xx:xx:xx | label2 with LA Bit set | | WLAN 6G | 5A:86:94:xx:xx:xx | label1 with LA Bit set | | WAN | 58:86:94:xx:xx:xx | label1 + 1 | | LAN | 58:86:94:xx:xx:xx | label1 + 3 | +-----------+-------------------+------------------------+ The WLAN 2.4G MAC address (label1) was found in 'Factory' partition, 0xA0004 The WLAN 5G MAC address (label2) was found in 'Factory' partition, 0x4
Installation ------------ 1. Download the OEM recovery software (ipTIME Firmware Wizard (11ac)) from the manufacturer's website 2. Download the *squashfs-factory.bin file from the OpenWrt website 3. Press a reset button, and power up the router (keep pressing the reset button) 4. Wait more than 10 seconds until the CPU LED stop blinking 5. Connect the router (LAN port) to the PC 6. Run the OEM recovery software and follow the instructions 7. Select the *squashfs-factory.bin file during the router recovery process 8. Wait for the router to boot from *squashfs-factory.bin
Note: The router will automatically reboot if no file is uploaded within 55 seconds.
Fan Control ------------ The fan speed is controlled by writing a value from 0 to 2 to the `fan1_target` file.
``` cd /sys/devices/platform/gpio-fan/hwmon/hwmon2
echo '0' > fan1_target // off echo '1' > fan1_target // slow echo '2' > fan1_target // fast ```
Limitation: Enabling Wi-Fi 6E ---------- Wi-Fi 6E (6GHz) does not work out of the box on LuCI. After installation, you need to configure a few settings in the `radio1` and `default_radio1` sections of the `/etc/config/wireless`. Once you have made these changes, you can enable and use Wi-Fi 6E.
In the `radio1` section, you need to add three common options: - band: must be set to `6g` - country: a valid country code for the 6GHz band - channel: a preferrend scanning channel (PSC) for 6GHz
In the `default_radio1` section, you need to add the SSID and key: - ssid: The public name of your Wi-Fi network - key: The Wi-Fi password - encryption: must be set to either `sae` for WPA3 or `owe` for OWE (open network)
Example:
``` config wifi-device 'radio1' ... option band '6g' option country 'KR' option channel '37' ...
Limitation: Maximum Transmit Power ---------- The maximum transmit power is currently broken. In the drop-down menu, you can only choose between "driver default" and "255 dBm (2147493647 mW)". There is currently no workaround for the issue. Please leave the maximum transmit power set to "driver default".
During SerDes rework the helper functions were temporarily renamed to ..._new(). Fix the leftovers by
- giving the functions a new rtsds_ prefix nad - dropping the _new appendix.
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de> Link: https://github.com/openwrt/openwrt/pull/20034 Signed-off-by: Robert Marko <robimarko@gmail.com> (commit: d4893b8)
2859741d971e dhcpv4: store reqopts as uint8_t 6d342cc03bf7 odhcpd: add DNR (RFC 9463) support c89b8b3f2ff3 odhcpd: make the IPv6 RA DNR lifetime configurable 066b3dc6ec1a netlink: fix a memory leak 171140e90b6a odhcpd: add a helper function for addr6/prefix parsing 5585b969c18f router: move pref64 calculations to the config stage 4308384748be dhcpv6: add ipv6 pxe support 6e1ad492cef5 router: replace ssize_t with size_t
Signed-off-by: David Härdeman <david@hardeman.nu> Link: https://github.com/openwrt/openwrt/pull/20022 Signed-off-by: Robert Marko <robimarko@gmail.com> (commit: a6da0e0)
bcm27xx: Add padding after writing rootfs to image.
This addresses #9113 by adding up to 1MB padding after writing the rootfs image. On boot mount_root will probe for existing filesystems after the rootfs image data. Without overwriting the initial free space left on the rootfs partition, OpenWrt might incorrectly detect an exising filesystem and fails to mount it, resulting in a bricked device as the overlayfs will not be mountend and settings will not be available.
Fixes #9113.
Signed-off-by: Orne Brocaar <info@brocaar.com> Link: https://github.com/openwrt/openwrt/pull/19997 Signed-off-by: Robert Marko <robimarko@gmail.com> (commit: 20aeef1)