[OpenWrt-Devel] [PATCH 3/3] ath79: add support for WD My Net Wi-Fi Range Extender
Christian Lamparter
chunkeey at gmail.com
Tue Sep 4 17:27:02 EDT 2018
This patch ports over support for the device from ar71xx.
SOC: AR7370 (Wasp - AR9344 rev2 0001974c)
RAM: Winbond W9725G6KB-25 32MiB
FLASH: Winbond 25Q64FVSIG 8MiB
WLAN: AR9380 Dual-Band 802.11abgn 3x3:3
INPUT: WPS, RESET button (hardware on/off toggle button)
LED: Power, LAN, WiFi, 3 RSSI-Leds (low, medium, high)
Serial: Header Next to the winbond flash chip (labeld JP1)
Pinout is GND - NC - RX - TX - 3V3 (JP1)
The Serial setting is 115200-8-N-1.
- Installation via uboot's upgrade command
0. attach serial cable
1. interrupt uboot and enter "upgrade code.bin" into
the u-boot prompt
ar7240> upgrade code.bin
2. rename openwrt...sysupgrade.bin to code.bin on PC
3. run a tftp-client on the PC
(shell)$ tftp 192.168.1.230
binary
put code.bin
4. wait for the device to finish
[...]
Copy buff to Flash from 0x9f040000 length 0x79f000
Copy to Flash... write addr: 9f040000
done
5. enter "go" in the u-boot prompt
ar7240> go
- TFTP ramdisk image boot from the uboot prompt
(tftp server defaults to serverip 192.168.1.254)
=> tftpboot 81000000 initramfs.bin
=> bootm
Tested and working:
- LEDs
- Buttons
- Ethernet
- Wi-Fi
- OpenWRT sysupgrade
For flashing and debricking information see:
<https://openwrt.org/toh/wd/rext>
Users coming from ar71xx can use sysupgrade too. But I highly
advise to no save the old configuration and start from a clean
state.
Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
.../ath79/base-files/etc/board.d/01_leds | 8 +
.../ath79/base-files/etc/board.d/02_network | 6 +-
.../etc/hotplug.d/firmware/10-ath9k-eeprom | 4 +
.../ar9344_wd_mynet-wifi-rangeextender.dts | 174 ++++++++++++++++++
target/linux/ath79/image/generic.mk | 30 +++
5 files changed, 221 insertions(+), 1 deletion(-)
create mode 100644 target/linux/ath79/dts/ar9344_wd_mynet-wifi-rangeextender.dts
diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds b/target/linux/ath79/base-files/etc/board.d/01_leds
index db0d12cce0..c6a2a6dcc1 100755
--- a/target/linux/ath79/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -99,6 +99,14 @@ ubnt,rocket-m)
ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "ubnt:orange:link2" "wlan0" "26" "100"
ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "ubnt:green:link3" "wlan0" "51" "100"
ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "ubnt:green:link4" "wlan0" "76" "100"
+ ;;
+wd,mynet-wifi-rangeextender)
+ ucidef_set_led_netdev "lan" "LAN" "$boardname:green:lan" "eth0"
+ ucidef_set_rssimon "wlan0" "200000" "1"
+ ucidef_set_led_rssi "rssilow" "RSSILOW" "$boardname:rssi-low" "wlan0" "1" "100"
+ ucidef_set_led_rssi "rssimedium" "RSSIMED" "$boardname:blue:rssi-med" "wlan0" "33" "100"
+ ucidef_set_led_rssi "rssihigh" "RSSIMAX" "$boardname:blue:rssi-max" "wlan0" "66" "100"
+ ;;
esac
board_config_flush
diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network
index 14f6c59822..3a3c5974bd 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -23,7 +23,8 @@ ath79_setup_interfaces()
ubnt,rocket-m|\
ubnt,unifiac-lite|\
ubnt,unifiac-mesh|\
- ubnt,unifi)
+ ubnt,unifi|\
+ wd,mynet-wifi-rangeextender)
ucidef_set_interface_lan "eth0"
;;
buffalo,wzr-hp-g450h)
@@ -207,6 +208,9 @@ ath79_setup_macs()
wan_mac=$(fconfig -s -r -d $(find_mtd_part "RedBoot config") -n ar7100_esa)
lan_mac=$(macaddr_add "$wan_mac" 1)
;;
+ wd,mynet-wifi-rangeextender)
+ lan_mac=$(nvram get et0macaddr)
+ ;;
esac
[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 1af6f96be0..8c10cb8979 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -145,6 +145,10 @@ case "$FIRMWARE" in
ubnt,unifi)
ath9k_eeprom_extract "art" 4096 2048
;;
+ wd,mynet-wifi-rangeextender)
+ ath9k_eeprom_extract "art" 4096 4096
+ ath9k_patch_fw_mac_crc $(nvram get wl0_hwaddr) "$mac" 2
+ ;;
*)
ath9k_eeprom_die "board $board is not supported yet"
;;
diff --git a/target/linux/ath79/dts/ar9344_wd_mynet-wifi-rangeextender.dts b/target/linux/ath79/dts/ar9344_wd_mynet-wifi-rangeextender.dts
new file mode 100644
index 0000000000..1877cea3d9
--- /dev/null
+++ b/target/linux/ath79/dts/ar9344_wd_mynet-wifi-rangeextender.dts
@@ -0,0 +1,174 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "ar9344.dtsi"
+
+/ {
+ model = "Western Digital My Net Wi-Fi Range Extender";
+ compatible = "wd,mynet-wifi-rangeextender", "qca,ar9344";
+
+ chosen {
+ bootargs = "console=ttyS0,115200n8";
+ };
+
+ aliases {
+ led-boot = &power;
+ led-failsafe = &power;
+ led-running = &power;
+ led-upgrade = &power;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ power: power {
+ label = "mynet-wifi-rangeextender:blue:power";
+ gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+ /* LED has no off state. It's either on or it blinks */
+ };
+
+ lan {
+ label = "mynet-wifi-rangeextender:green:lan";
+ gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+ };
+
+ wifi {
+ label = "mynet-wifi-rangeextender:blue:wifi";
+ gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "phy0tpt";
+ };
+
+ wifi-rssi-low {
+ label = "mynet-wifi-rangeextender:blue:rssi-low";
+ gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
+ };
+
+ wifi-rssi-med {
+ label = "mynet-wifi-rangeextender:blue:rssi-med";
+ gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
+ };
+
+ wifi-rssi-max {
+ label = "mynet-wifi-rangeextender:blue:rssi-max";
+ gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ keys {
+ compatible = "gpio-keys-polled";
+ poll-interval = <50>;
+
+ reset {
+ linux,code = <KEY_RESTART>;
+ gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+ debounce-interval = <60>;
+ };
+
+ band-switch {
+ linux,code = <BTN_1>;
+ gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
+ linux,input-type = <EV_SW>;
+ debounce-interval = <60>;
+ };
+
+ wps {
+ linux,code = <KEY_WPS_BUTTON>;
+ gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+ debounce-interval = <60>;
+ };
+ };
+};
+
+&ref {
+ clock-frequency = <25000000>;
+};
+
+&uart {
+ status = "okay";
+};
+
+&spi {
+ num-cs = <1>;
+
+ status = "okay";
+
+ flash at 0 {
+ compatible = /* "s25fl064k", */ "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <25000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ uboot: partition at 0 {
+ label = "u-boot";
+ reg = <0x0 0x040000>;
+ read-only;
+ };
+
+ partition at 40000 {
+ label = "firmware";
+ reg = <0x40000 0x7a0000>;
+ compatible = "cybertan,trx";
+ };
+
+ nvram: partition at 7e0000 {
+ label = "nvram";
+ reg = <0x7e0000 0x10000>;
+ };
+
+ art: partition at 7f0000 {
+ label = "art";
+ reg = <0x7f0000 0x10000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&pcie {
+ status = "okay";
+
+ ath9k: wifi at 0,0 {
+ compatible = "pci168c,0030";
+ reg = <0x0000 0 0 0 0>;
+ qca,no-eeprom;
+ /* wifi MAC is stored in nvram */
+ };
+};
+
+&mdio0 {
+ status = "okay";
+
+ phy-mask = <0x10>;
+
+ phy4: ethernet-phy at 4 {
+ reg = <4>;
+ };
+};
+
+ð0 {
+ status = "okay";
+
+ pll-data = <0x0e000000 0x3c000101 0x3c001313>;
+
+ /* ethernet MAC is stored in nvram */
+ phy-mode = "rgmii";
+ phy-handle = <&phy4>;
+
+ gmac-config {
+ device = <&gmac>;
+ rgmii-gmac0 = <1>;
+ rxd-delay = <3>;
+ rxdv-delay = <3>;
+ };
+};
+
+&mdio1 {
+ status = "disabled";
+};
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 3bf40cd268..96284e0b98 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1,5 +1,22 @@
include ./common-netgear.mk
+DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION
+
+define Build/cybertan-trx
+ @echo -n '' > $@-empty.bin
+ -$(STAGING_DIR_HOST)/bin/trx -o $@.new \
+ -f $(IMAGE_KERNEL) -F $@-empty.bin \
+ -x 32 -a 0x10000 -x -32 -f $@
+ -mv "$@.new" "$@"
+ -rm $@-empty.bin
+endef
+
+define Build/addpattern
+ -$(STAGING_DIR_HOST)/bin/addpattern -B $(ADDPATTERN_ID) \
+ -v v$(ADDPATTERN_VERSION) -i $@ -o $@.new
+ -mv "$@.new" "$@"
+endef
+
define Device/avm_fritz300e
ATH_SOC := ar7242
DEVICE_TITLE := AVM FRITZ!WLAN Repeater 300E
@@ -232,3 +249,16 @@ define Device/phicomm_k2t
DEVICE_PACKAGES := kmod-leds-reset kmod-ath10k ath10k-firmware-qca9888
endef
TARGET_DEVICES += phicomm_k2t
+
+define Device/wd_mynet-wifi-rangeextender
+ ATH_SOC := ar9344
+ DEVICE_TITLE := Western Digital My Net Wi-Fi Range Extender
+ DEVICE_PACKAGES := rssileds nvram -swconfig
+ IMAGE_SIZE := 7808k
+ ADDPATTERN_ID := mynet-rext
+ ADDPATTERN_VERSION := 1.00.01
+ IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | cybertan-trx | \
+ addpattern | append-metadata
+ SUPPORTED_DEVICES += mynet-rext
+endef
+TARGET_DEVICES += wd_mynet-wifi-rangeextender
--
2.19.0.rc1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list