How to install OpenWRT on Dlink DAP-1610

Hello, I'm new to OpenWRT and I'm having a lot of trouble setting it up on a Dlink DAP-1610 (rev A2) AcessPoint. I've checked the forums and finally found a good "solution", although it was directed for another pretty much identical device (DAP-1325). the post in question is this "this post"
Anyway I've been through all the steps listed in the OpenWRT webpages all day with no success on installing it. That post was the only thing that got me somewhat closer to installing it since the user who provided a "solution" for that post managed to install OpenWRT in his device, but didn't provide a proper guide/docs on how to do it.
EDIT1: i also tried many steps i found on the forum about the subject and nothing worked, not even flashing the DAP-1325 image to my DAP-1610
Any help/directions would be appreciated.

edit2: the current firmware in my dap-1610 is the most current one: "v1.08b01" downloaded form the official dlink website in 2022.

Your model is not officially supported. The referenced post seems to indicate that the person who got it working on a DAP-1610 had built the image themselves by creating a dts file specifically for that device and then compiling from source. You may have to do the same.

With any luck, that poster (@theman) can provide specific guidance and/or the DTS files necessary to build the firmware for that model.

1 Like

Thank you for responding, it would be wonderful if he could provide us with a guide on how to do these steps for future reference.

I think it was already posted but this what I have:
Someone should merge it with the DAP-1325-1 dts and make a new base dts for both routers and submit a PR (Sorry, I can't be bothered to read up on this atm) This patch also has a fix for same mac address for 2.4ghz/ethernet for the DAP-1325 and subsequently DAP-1610. (+ mac-address-increment = <(1)>;)
This patch should work for for both 23.05 and 24.10.
Anyways, I didn't find DAP-1610 to be quite stable enough. Kept rebooting on heavy load. Never had that problem with TP-Link RE-450v2 which also has 64MB ram but YMMV.

diff --git a/target/linux/ramips/dts/mt7628an_dlink_dap-1610-a2.dts b/target/linux/ramips/dts/mt7628an_dlink_dap-1610-a2.dts
new file mode 100644
index 0000000000..26033ae11b
--- /dev/null
+++ b/target/linux/ramips/dts/mt7628an_dlink_dap-1610-a2.dts
@@ -0,0 +1,154 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "dlink,dap-1610-a2", "mediatek,mt7628an-soc";
+	model = "D-Link DAP-1610 A2";
+
+	aliases {
+		led-boot = &led_status_green;
+		led-failsafe = &led_status_green;
+		led-running = &led_status_green;
+		led-upgrade = &led_status_red;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_status_red: status_red {
+			label = "red:status";
+			gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
+		};
+
+		led_status_green: status_green {
+			label = "green:status";
+			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi-high {
+			label = "green:wifi-high";
+			gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi-mid {
+			label = "green:wifi-mid";
+			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi-low {
+			label = "green:wifi-low";
+			gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+		};
+
+		wifi-verylow {
+			label = "red:wifi-verylow";
+			gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		wps {
+			label = "wps";
+			gpios = <&gpio 45 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+
+		reset {
+			label = "reset";
+			gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "refclk", "gpio", "wled_an", "i2s", "uart1", "wdt";
+		function = "gpio";
+	};
+};
+
+&ethernet {
+	nvmem-cells = <&macaddr_factory_28>;
+	nvmem-cell-names = "mac-address";
+	mac-address-increment = <(1)>;
+};
+
+&wmac {
+	status = "okay";
+
+	mediatek,mtd-eeprom = <&factory 0x0>;
+
+	nvmem-cells = <&macaddr_factory_28>;
+	nvmem-cell-names = "mac-address";
+};
+
+&spi0 {
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <50000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition@30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+				read-only;
+			};
+
+			factory: partition@40000 {
+				label = "factory";
+				reg = <0x40000 0x10000>;
+				read-only;
+			};
+
+			partition@50000 {
+				compatible = "denx,uimage";
+				label = "firmware";
+				reg = <0x50000 0x7b0000>;
+			};
+		};
+	};
+};
+
+&factory {
+	compatible = "nvmem-cells";
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	macaddr_factory_28: macaddr@28 {
+		reg = <0x28 0x6>;
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie0 {
+		wifi@0,0 {
+			compatible = "mediatek,mt76";
+			reg = <0x0000 0 0 0 0>;
+			mediatek,mtd-eeprom = <&factory 0x8000>;
+			ieee80211-freq-limit = <5000000 6000000>;
+		};
+};
+
diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk
index 296b80d03f..a3f8bc788e 100644
--- a/target/linux/ramips/image/mt76x8.mk
+++ b/target/linux/ramips/image/mt76x8.mk
@@ -174,6 +174,14 @@ define Device/dlink_dap-1325-a1
 endef
 TARGET_DEVICES += dlink_dap-1325-a1
 
+define Device/dlink_dap-1610-a2
+  IMAGE_SIZE := 7872k
+  DEVICE_VENDOR := D-Link
+  DEVICE_MODEL := DAP-1610 A2
+  DEVICE_PACKAGES := kmod-mt76x2
+endef
+TARGET_DEVICES += dlink_dap-1610-a2
+
 define Device/duzun_dm06
   IMAGE_SIZE := 7872k
   DEVICE_VENDOR := DuZun
diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
index d972762dad..ad3fe4ead8 100644
--- a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
@@ -24,7 +24,8 @@ cudy,wr1000)
 	ucidef_set_led_switch "lan1" "lan1" "blue:lan1" "switch0" "0x08"
 	ucidef_set_led_switch "lan2" "lan2" "blue:lan2" "switch0" "0x04"
 	;;
-dlink,dap-1325-a1)
+dlink,dap-1325-a1|\
+dlink,dap-1610-a2)
 	ucidef_set_rssimon "wlan0" "200000" "1"
 	ucidef_set_led_rssi "wifi-verylow" "wifi-verylow" "red:wifi-verylow" "wlan0" "1" "24"
 	ucidef_set_led_rssi "wifi-low" "wifi-low" "green:wifi-low" "wlan0" "25" "100"
diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
index bfd11fda2e..dfc1ea6b68 100644
--- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
@@ -11,6 +11,7 @@ ramips_setup_interfaces()
 	alfa-network,awusfree1|\
 	d-team,pbr-d1|\
 	dlink,dap-1325-a1|\
+	dlink,dap-1610-a2|\
 	glinet,microuter-n300|\
 	glinet,vixmini|\
 	hak5,wifi-pineapple-mk7|\

If I understand it right, we’ve to copy this mt7628an_dlink_dap-1610-a2.dts file to our cloned repo and then run make right?

I’ve tried compiling myself for this device before but always got some or the other thing wrong.

Just put the patch in the root openwrt directory and apply it with (git apply whatever_you_name_the_patch, or patch -p1 < whatever_you_name_the_patch ). It will create the needed files. Then do the usual (./scripts/feeds update -a && ./scripts/feeds install -a) and "make menuconfig" and it should show up there.

1 Like

Thanks will try it and build an image for 23.05.5. Have you tried the latest 24.10.0 builds on these devices, since 8/64 devices are not recommended on that version now.

No I haven't. I lost/left my DAP-1610 at an Airbnb last summer. It was not stable at all in my case as mentioned before, so it won't be missed lol.

I think I tried some pre 24.10 builds, and I think you should have enough room for a full (but basic) build with 24.10, espescially if you build it yourself.

Hi @theMan , thanks for your reply.
(I'm having a lot of connectivity problems with my ISP right now so I'm sorry for not being able to engage as much as i wanted)
Compared to most users in this place, I'm pretty dumb as on how to use this information. I'm trying to learn more as I go through the process. I know the basics of computers and coding but I'm no developer or software/electronics engineer.

But...could you answer these questions please?:

  1. What exactly are the steps to go through with this installation?
    I ask because i can't seem to understand how to properly do this. even after downloading the files for the DAP1325 from the firmware selector.

  2. What does this ".dts" file do and how do I build/upload the files necessary for install?

  3. And what exactly is this code you provided? how do i use it?

Thanks in advance.

You have to build it from source yourself. Until someone makes a PR to the Openwrt source, and it gets accepted, it won't appear in the firmware selector.

yes, i got that part, but what files do i need? do i have to decompile something?
do i have to use the text/code you provided in the "Code box"? is there a tutorial on how to do this? ( I couldnt find instructions in the github repo)

Try following this guide:

https://openwrt.org/docs/guide-developer/toolchain/beginners-build-guide

Apply the patch:

thank you, i'll try it later when i'm home.
Don't know if I'll be able to make it work but thank you.

Welp.. i couldnt get through it, everytime i try to install a Debian VM according to the guide but i get the same error.
Same error goes for installing the OS with the ISO and not the VDI.

Try this build created by a member of this forum for DAP-1610,

It’s on a slightly older openwrt v23.05.2 though that won’t matter much. I’m using this and it’s quite stable.

1 Like

Thank you, but I still can't install it.
When i get to the web interface i try to upload the file but it says "update failed"

Am I doing something wrong?

Yeah for first time installation you have to use the recovery mode

Follow this guide to go into recovery mode
https://openwrt.org/docs/guide-user/installation/recovery_methods/d-link_recovery_gui

The recovery mode for DAP-1610 is on 192.168.0.50

Then on the recovery mode page flash the openwrt firmware.

1 Like


I uploaded the build. now... what do i do? i cant even access the device bc it doesn't show up.
I'm trying to connect to 192.168.0.1 (and 192.168.0.50) and nothing happens. It's inaccessible.

If you installed OpenWrt, the default IP address of the router will be 192.168.1.1.

Be sure that your computer gets a new DHCP lease... you might need to force a lease renewal, or simply unplug and then reconnect the ethernet cable from your computer. Of course, double check that you have the computer set to get an address via DHCP.

1 Like

I made an image based on the latest 23.05.5 for you.
block_size 512

block_size 1024 (64kb smaller)

You probably need to check for force upgrade because of slightly different model name (a1 vs a2).

Pretty basic build but with all things I consider necessary for a travel router like travelmate and relayd.
I also added sqm for qos and support for batman mesh so it has the full version of wpad + batman-adv, usteer, sqm and their associated libraries/files. Also the WPS button toggles wifi on/off, which is great to have on a travel router, espescially if you need to reset it and you don't have ethernet on your laptop/phone and/or ethernet cable.

1 Like