ath79: add support for Hak5 LAN Turtle
authorPiotr Dymacz <pepe2k@gmail.com>
Wed, 19 Aug 2020 12:20:54 +0000 (14:20 +0200)
committerPiotr Dymacz <pepe2k@gmail.com>
Sun, 27 Sep 2020 23:28:37 +0000 (01:28 +0200)
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 <pepe2k@gmail.com>
target/linux/ath79/dts/ar9331_hak5_lan-turtle.dts [new file with mode: 0644]
target/linux/ath79/generic/base-files/etc/board.d/01_leds
target/linux/ath79/generic/base-files/etc/board.d/02_network
target/linux/ath79/image/generic.mk

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 (file)
index 0000000..e6f0834
--- /dev/null
@@ -0,0 +1,120 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar9331.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       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 = <KEY_RESTART>;
+                       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>;
+               };
+       };
+};
+
+&eth0 {
+       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>;
+       };
+};
+
+&eth1 {
+       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";
+};
index e208ac65f4974f291a4c787a6efda78f820322c6..9f6fd000313f4965a28f46aaf0a7beaa02f18756 100755 (executable)
@@ -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"
        ;;
index c96217071094b64686f59274ac34b609e9c646e0..3572afa5fdc2ede185701cbd9901ba2b56b8277d 100755 (executable)
@@ -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)
index b5af99971dd87b86ad2df4866e661bce588dfa94..25d0f5b8bad74dc34e6ad5be9b84da5c10d96854 100644 (file)
@@ -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