aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/base-files
diff options
context:
space:
mode:
authorAlexandru Gagniuc <mr.nuke.me@gmail.com>2022-07-19 12:01:11 -0500
committerSander Vanheule <sander@svanheule.net>2022-08-13 19:59:47 +0200
commit6d5873a162e9e03c93012a26b0004d46e6764a8e (patch)
tree8e6bba79c5101efd70a48cc3e522a8217595f28f /target/linux/realtek/base-files
parentb664646db74a7c4c541c7fa835d7689dd897dcca (diff)
downloadupstream-6d5873a162e9e03c93012a26b0004d46e6764a8e.tar.gz
upstream-6d5873a162e9e03c93012a26b0004d46e6764a8e.tar.bz2
upstream-6d5873a162e9e03c93012a26b0004d46e6764a8e.zip
realtek: add support for TP-Link SG2008P
Add support for the TP-Link SG2008P switch. This is an RTL8380 based switch with 802.3af one the first four ports. Specifications: --------------- * SoC: Realtek RTL8380M * Flash: 32 MiB SPI flash (Vendor varies) * RAM: 256 MiB (Vendor varies) * Ethernet: 8x 10/100/1000 Mbps with PoE on 4 ports * Buttons: 1x "Reset" button on front panel * Power: 53.5V DC barrel jack * UART: 1x serial header, unpopulated * PoE: 1x TI TPS23861 I2C PoE controller Works: ------ - (8) RJ-45 ethernet ports - Switch functions - System LED Not yet enabled: ---------------- - Power-over-Ethernet (driver works, but doesn't enable "auto" mode) - PoE, Link/Act, PoE max and System LEDs Install via web interface: ------------------------- Not supported at this time. Install via serial console/tftp: -------------------------------- The footprints R27 (0201) and R28 (0402) are not populated. To enable serial console, 50 ohm resistors should be soldered -- any value from 0 ohm to 50 ohm will work. R27 can be replaced by a solder bridge. The u-boot firmware drops to a TP-Link specific "BOOTUTIL" shell at 38400 baud. There is no known way to exit out of this shell, and no way to do anything useful. Ideally, one would trick the bootloader into flashing the sysupgrade image first. However, if the image exceeds 6MiB in size, it will not work. The sysupgrade image can also be flashed. To install OpenWRT: Prepare a tftp server with: 1. server address: 192.168.0.146 2. the image as: "uImage.img" Power on device, and stop boot by pressing any key. Once the shell is active: 1. Ground out the CLK (pin 16) of the ROM (U7) 2. Select option "3. Start" 3. Bootloader notes that "The kernel has been damaged!" 4. Release CLK as sson as bootloader thinks image is corrupted. 5. Bootloader enters automatic recovery -- details printed on console 6. Watch as the bootloader flashes and boots OpenWRT. Blind install via tftp: ----------------------- This method works when it's not feasible to install a serial header. Prepare a tftp server with: 1. server address: 192.168.0.146 2. the image as: "uImage.img" 3. Watch network traffic (tcpdump or wireshark works) 4. Power on the device. 5. Wait 1-2 seconds then ground out the CLK (pin 16) of the ROM (U7) 6. When 192.168.0.30 makes tftp requests, release pin 16 7. Wait 2-3 minutes for device to auto-flash and boot OpenWRT Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Diffstat (limited to 'target/linux/realtek/base-files')
-rw-r--r--target/linux/realtek/base-files/etc/board.d/02_network4
-rw-r--r--target/linux/realtek/base-files/lib/upgrade/platform.sh19
2 files changed, 23 insertions, 0 deletions
diff --git a/target/linux/realtek/base-files/etc/board.d/02_network b/target/linux/realtek/base-files/etc/board.d/02_network
index 87d772cf84..d797960faf 100644
--- a/target/linux/realtek/base-files/etc/board.d/02_network
+++ b/target/linux/realtek/base-files/etc/board.d/02_network
@@ -39,6 +39,10 @@ hpe,1920-24g)
lan_mac_start=$(macaddr_add $lan_mac 2)
lan_mac_end=$(macaddr_add $lan_mac $((mac_count2-mac_count1)))
;;
+tplink,sg2008p-v1)
+ label_mac=$(mtd_get_mac_binary para 0xfdff4)
+ lan_mac="$label_mac"
+ ;;
*)
lan_mac=$(mtd_get_mac_ascii u-boot-env2 mac_start)
lan_mac_end=$(mtd_get_mac_ascii u-boot-env2 mac_end)
diff --git a/target/linux/realtek/base-files/lib/upgrade/platform.sh b/target/linux/realtek/base-files/lib/upgrade/platform.sh
index 927aadbe31..b39b332063 100644
--- a/target/linux/realtek/base-files/lib/upgrade/platform.sh
+++ b/target/linux/realtek/base-files/lib/upgrade/platform.sh
@@ -4,6 +4,21 @@ REQUIRE_IMAGE_METADATA=1
RAMFS_COPY_BIN='fw_printenv fw_setenv'
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
+# The TP-Link bootloader gets its flash layout from "bootargs".
+# Use this to our advantage, and:
+# 1. Disable the second rootfs (usrimg2)
+# 2. Extend the first rootfs (usrimg1) to include more space
+# 3. Increase the baudrate to the expected 115200
+tplink_sg2xxx_fix_mtdparts() {
+ local args
+ args="bootargs mtdparts=spi_flash:896K(boot),128K(env),6144K(sys)"
+ args="$args,20480K(usrimg1@main),0K(usrimg2)"
+ args="$args,4096K(usrappfs),1024K(para)\n"
+ args="$args baudrate 115200"
+
+ echo -e "$args" | fw_setenv --script -
+}
+
platform_check_image() {
return 0
}
@@ -12,6 +27,10 @@ platform_do_upgrade() {
local board=$(board_name)
case "$board" in
+ tplink,sg2008p-v1)
+ tplink_sg2xxx_fix_mtdparts
+ default_do_upgrade "$1"
+ ;;
*)
default_do_upgrade "$1"
;;