From c63258e93d15d9ef88c9f1096e50ca118270fd18 Mon Sep 17 00:00:00 2001 From: Piotr Dymacz Date: Wed, 19 Aug 2020 14:20:54 +0200 Subject: [PATCH] ath79: add support for Hak5 LAN Turtle Hak5 LAN Turtle is an "USB Ethernet Adapter" shaped device dedicated for sysadmins and pentesters. This device is based on Atheros AR9331 but it lacks WiFi. Support for it was first introduced in 950b278c81 (ar71xx). Two different versions of this device exist and it's up to the user to install required drivers (generic image supports only common features): - LAN Turtle 3G with Quectel UG96 3G modem - LAN Turtle SD with microSD card reader (Alcorlink AU6435R) Specifications: - Atheros AR9331 - 400/400/200 MHz (CPU/DDR/AHB) - 64 MB of RAM (DDR2) - 16 MB of flash (SPI NOR) - 1x RJ45 10/100 Mbps Ethernet (AR9331) - 1x USB 2.0 to 10/100 Ethernet bridge (Realtek RTL8152B) - 2x LED (power, system), 1x button (inside, on the PCB) - USB 2.0 Type-A plug for power and RTL8152B Flash instruction: You can use sysupgrade image directly in vendor firmware which is based on OpenWrt/LEDE. Signed-off-by: Piotr Dymacz Signed-off-by: maurerr --- .../ath79/dts/ar9331_hak5_lan-turtle.dts | 120 ++++++++++++++++++ .../generic/base-files/etc/board.d/01_leds | 3 + .../generic/base-files/etc/board.d/02_network | 3 + target/linux/ath79/image/generic.mk | 13 ++ 4 files changed, 139 insertions(+) create mode 100644 target/linux/ath79/dts/ar9331_hak5_lan-turtle.dts diff --git a/target/linux/ath79/dts/ar9331_hak5_lan-turtle.dts b/target/linux/ath79/dts/ar9331_hak5_lan-turtle.dts new file mode 100644 index 00000000000..e6f083482f2 --- /dev/null +++ b/target/linux/ath79/dts/ar9331_hak5_lan-turtle.dts @@ -0,0 +1,120 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "ar9331.dtsi" + +#include +#include + +/ { + model = "Hak5 LAN Turtle"; + compatible = "hak5,lan-turtle", "qca,ar9331"; + + aliases { + led-boot = &led_system; + led-failsafe = &led_system; + led-upgrade = &led_system; + serial0 = &uart; + }; + + keys { + compatible = "gpio-keys"; + + pinctrl-names = "default"; + pinctrl-0 = <&enable_gpio11>; + + reset { + label = "reset"; + linux,code = ; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + + pinctrl-names = "default"; + pinctrl-0 = <&switch_led_disable_pins>; + + led_system: system { + label = "lan-turtle:orange:system"; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + }; + }; +}; + +ð0 { + status = "okay"; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <(-1)>; + + gmac-config { + device = <&gmac>; + + switch-phy-addr-swap = <1>; + switch-phy-swap = <1>; + }; +}; + +ð1 { + status = "okay"; + + mtd-mac-address = <&uboot 0x1fc00>; + mtd-mac-address-increment = <1>; +}; + +&pinmux { + enable_gpio11: pinmux_enable_gpio11 { + pinctrl-single,bits = <0x0 0x0 0x4>; + }; +}; + +&spi { + status = "okay"; + + num-cs = <1>; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <50000000>; + m25p,fast-read; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + uboot: partition@0 { + label = "u-boot"; + reg = <0x000000 0x020000>; + read-only; + }; + + partition@20000 { + label = "firmware"; + reg = <0x020000 0xfd0000>; + compatible = "tplink,firmware"; + }; + + partition@ff0000 { + label = "art"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; + +&uart { + status = "okay"; +}; + +&usb { + status = "okay"; +}; + +&usb_phy { + status = "okay"; +}; diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds index e208ac65f49..9f6fd000313 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds @@ -205,6 +205,9 @@ glinet,gl-mifi) glinet,gl-x750) ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth1" ;; +hak5,lan-turtle) + ucidef_set_led_netdev "wan" "WAN" "$boardname:orange:system" "eth1" + ;; meraki,mr16) ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth0" ;; diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network index c9621707109..3572afa5fdc 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network @@ -503,6 +503,9 @@ ath79_setup_macs() enterasys,ws-ap3705i) label_mac=$(mtd_get_mac_ascii u-boot-env0 ethaddr) ;; + hak5,lan-turtle) + label_mac=$(mtd_get_mac_binary u-boot 0x1fc00) + ;; iodata,etg3-r) lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr) wan_mac=$(macaddr_add "$lan_mac" -1) diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index b5af99971dd..25d0f5b8bad 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -1019,6 +1019,19 @@ define Device/glinet_gl-x750 endef TARGET_DEVICES += glinet_gl-x750 +define Device/hak5_lan-turtle + $(Device/tplink-16mlzma) + SOC := ar9331 + DEVICE_VENDOR := Hak5 + DEVICE_MODEL := LAN Turtle + TPLINK_HWID := 0x5348334c + IMAGES := sysupgrade.bin + DEVICE_PACKAGES := kmod-usb-chipidea2 -iwinfo -kmod-ath9k -swconfig \ + -uboot-envtools -wpad-basic-wolfssl + SUPPORTED_DEVICES += lan-turtle +endef +TARGET_DEVICES += hak5_lan-turtle + define Device/iodata_etg3-r SOC := ar9342 DEVICE_VENDOR := I-O DATA