diff --git a/target/linux/lantiq/base-files/etc/board.d/02_network b/target/linux/lantiq/base-files/etc/board.d/02_network
index ca974b071e..defdc1a94d 100755
--- a/target/linux/lantiq/base-files/etc/board.d/02_network
+++ b/target/linux/lantiq/base-files/etc/board.d/02_network
@@ -154,6 +154,14 @@ avm,fritz7360sl)
 		"0:lan:3" "1:lan:4" "2:lan:2" "4:lan:1" "6t@eth0"
 	;;
 
+avm,fritz7412)
+	tffsdev=$(find_mtd_chardev "nand-tffs")
+	annex="b"
+	lan_mac=$(/usr/bin/fritz_tffs_nand -d $tffsdev -n maca)
+	wan_mac=$(/usr/bin/fritz_tffs_nand -d $tffsdev -n macdsl)
+	ucidef_set_interface_lan 'eth0'
+	;;
+
 siemens,gigaset-sx76x)
 	annex="b"
 	ucidef_add_switch "switch0" \
diff --git a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
index 498a509012..68181c7b87 100644
--- a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
+++ b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
@@ -141,6 +141,9 @@ case "$FIRMWARE" in
 			avm,fritz3370|avm,fritz7320|avm,fritz7360sl)
 				ath9k_eeprom_extract "urlader" 2437 0
 				;;
+			avm,fritz7412)
+				/usr/bin/fritz_cal_extract -i 1 -s 0x1e000 -e 0x207 -l 4096 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader")
+				;;
 			tplink,tdw8970|tplink,tdw8980)
 				ath9k_eeprom_extract "boardconfig" 135168 0
 				;;
diff --git a/target/linux/lantiq/base-files/lib/upgrade/platform.sh b/target/linux/lantiq/base-files/lib/upgrade/platform.sh
index 2e58cb799a..7a43e7e12e 100755
--- a/target/linux/lantiq/base-files/lib/upgrade/platform.sh
+++ b/target/linux/lantiq/base-files/lib/upgrade/platform.sh
@@ -9,7 +9,7 @@ platform_do_upgrade() {
 	local board=$(board_name)
 
 	case "$board" in
-	bt,homehub-v2b|bt,homehub-v3a|bt,homehub-v5a|zyxel,p-2812hnu-f1|zyxel,p-2812hnu-f3)
+	avm,fritz7412|bt,homehub-v2b|bt,homehub-v3a|bt,homehub-v5a|zyxel,p-2812hnu-f1|zyxel,p-2812hnu-f3)
 		nand_do_upgrade $1
 		;;
 	*)
diff --git a/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ7412.dts b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ7412.dts
new file mode 100644
index 0000000000..5bcd140520
--- /dev/null
+++ b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/FRITZ7412.dts
@@ -0,0 +1,241 @@
+/dts-v1/;
+
+#include "vr9.dtsi"
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/mips/lantiq_rcu_gphy.h>
+
+/ {
+	compatible = "avm,fritz7412", "lantiq,xway", "lantiq,vr9";
+	model = "1&1 DSL-Modem / 1&1 WLAN-Router";
+
+	chosen {
+		bootargs = "console=ttyLTQ0,115200 mem=126M vpe1_load_addr=0x87e00000 vpe1_mem=2M maxvpes=1 maxtcs=1 nosmp";
+	};
+
+	aliases {
+		led-boot = &power_green;
+		led-failsafe = &power_red;
+		led-running = &power_green;
+
+		led-dsl = &info;
+		led-wifi = &wifi;
+	};
+
+	memory@0 {
+		reg = <0x0 0x8000000>;
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <100>;
+		wps {
+			label = "wps";
+			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+		dect {
+			label = "dect";
+			gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
+			linux,code = <KEY_PHONE>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		power_green: power_green {
+			label = "fritz7412:green:power";
+			gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
+			default-state = "keep";
+		};
+		power_red: power_red {
+			label = "fritz7412:red:power";
+			gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
+		};
+		fon {
+			label = "fritz7412:green:fon";
+			gpios = <&gpio 34 GPIO_ACTIVE_LOW>;
+		};
+		dect {
+			label = "fritz7412:green:dect";
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+		};
+		wifi: wifi {
+			label = "fritz7412:green:wifi";
+			gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+		};
+		info: info {
+			label = "fritz7412:green:info";
+			gpios = <&gpio 35 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&localbus {
+	nand-parts@0 {
+		compatible = "lantiq,nand-xway";
+		bank-width = <2>;
+		reg = <1 0x0 0x2000000>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		lantiq,cs = <1>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "urlader";
+				reg = <0x0 0x40000>;
+				read-only;
+			};
+
+			partition@40000 {
+				label = "nand-tffs";
+				reg = <0x40000 0x400000>;
+				read-only;
+			};
+
+			partition@440000 {
+				label = "kernel";
+				reg = <0x440000 0x400000>;
+			};
+
+			partition@840000 {
+				label = "ubi";
+				reg = <0x840000 0x3000000>;
+			};
+
+			partition@3840000 {
+				label = "reserved-kernel";
+				reg = <0x3840000 0x400000>;
+				read-only;
+			};
+
+			partition@3c40000 {
+				label = "reserved-filesystem";
+				reg = <0x3c40000 0x3000000>;
+				read-only;
+			};
+
+			partition@6c40000 {
+				label = "config";
+				reg = <0x6c40000 0x400000>;
+				read-only;
+			};
+
+			partition@6e40000 {
+				label = "nand-filesystem";
+				reg = <0x6e40000 0x400000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&pcie0 {
+	status = "okay";
+	gpio-reset = <&gpio 11 GPIO_ACTIVE_HIGH>;
+
+	pcie@0 {
+		reg = <0 0 0 0 0>;
+		#interrupt-cells = <1>;
+		#size-cells = <2>;
+		#address-cells = <3>;
+		device_type = "pci";
+
+		wifi@168c,002e {
+			compatible = "pci168c,002e";
+			reg = <0 0 0 0 0>;
+			qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:01:00.0.bin */
+		};
+	};
+};
+
+&gpio {
+	pinctrl-names = "default";
+	pinctrl-0 = <&state_default>;
+
+	state_default: pinmux {
+		mdio {
+			lantiq,groups = "mdio";
+			lantiq,function = "mdio";
+		};
+		pcie-rst {
+			lantiq,pins = "io11";
+			lantiq,open-drain = <1>;
+			lantiq,output = <1>;
+		};
+		nand-mux {
+			lantiq,groups = "nand cle", "nand ale",
+			"nand rd", "nand cs1",
+			"nand rdy";
+			lantiq,function = "ebu";
+		};
+		nand-pins {
+			lantiq,pins = "io13", "io24", "io49";
+			lantiq,pull = <1>;
+		};
+
+		/*
+		other gpios:
+
+		dect reset: 33 output open drain
+		dect rd: 8 active low push pull
+
+		tdm fsc: 9 input + pull-up
+		tdm/spi do: 16 output
+		tdm/spi di: 17 input + pull-up
+		tdm dcl/spi clk: 18 output active low
+		tdm clk enable: 7 output active high
+		tdm/spi cs: 10 output active low/high
+		spi wp: 12 output active low
+
+		boot sel2: 23 active high
+		boot sel3: 38 active high
+		boot sel4: 49 active high (also nand rd)
+		*/
+	};
+};
+
+&gphy0 {
+       lantiq,gphy-mode = <GPHY_MODE_FE>;
+};
+
+&eth0 {
+	lantiq,phys = <&gphy0>;
+
+	interface@0 {
+		compatible = "lantiq,xrx200-pdi";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0>;
+		mac-address = [ 00 11 22 33 44 55 ];
+		lantiq,switch;
+
+		ethernet@2 {
+			compatible = "lantiq,xrx200-pdi-port";
+			reg = <2>;
+			phy-mode = "gmii";
+			phy-handle = <&phy11>;
+		};
+	};
+
+	mdio@0 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "lantiq,xrx200-mdio";
+		phy11: ethernet-phy@11 {
+			reg = <0x11>;
+			compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+		};
+	};
+};
+
+&vmmc {
+	status = "okay";
+};
diff --git a/target/linux/lantiq/files-4.9/arch/mips/boot/dts/FRITZ7412.dts b/target/linux/lantiq/files-4.9/arch/mips/boot/dts/FRITZ7412.dts
new file mode 100644
index 0000000000..23f80db121
--- /dev/null
+++ b/target/linux/lantiq/files-4.9/arch/mips/boot/dts/FRITZ7412.dts
@@ -0,0 +1,242 @@
+/dts-v1/;
+
+#include "vr9.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "avm,fritz7412", "lantiq,xway", "lantiq,vr9";
+	model = "1&1 DSL-Modem / 1&1 WLAN-Router";
+
+	chosen {
+		bootargs = "console=ttyLTQ0,115200 mem=126M vpe1_load_addr=0x87e00000 vpe1_mem=2M maxvpes=1 maxtcs=1 nosmp";
+	};
+
+	aliases {
+		led-boot = &power_green;
+		led-failsafe = &power_red;
+		led-running = &power_green;
+
+		led-dsl = &info;
+		led-wifi = &wifi;
+	};
+
+	memory@0 {
+		reg = <0x0 0x8000000>;
+	};
+
+	fpi@10000000 {
+		localbus@0 {
+			nand-parts@0 {
+				compatible = "lantiq,nand-xway";
+				bank-width = <2>;
+				reg = <1 0x0 0x2000000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				lantiq,cs = <1>;
+
+				partitions {
+					compatible = "fixed-partitions";
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					partition@0 {
+						label = "urlader";
+						reg = <0x0 0x40000>;
+						read-only;
+					};
+
+					partition@40000 {
+						label = "nand-tffs";
+						reg = <0x40000 0x400000>;
+						read-only;
+					};
+
+					partition@440000 {
+						label = "kernel";
+						reg = <0x440000 0x400000>;
+					};
+
+					partition@840000 {
+						label = "ubi";
+						reg = <0x840000 0x3000000>;
+					};
+
+					partition@3840000 {
+						label = "reserved-kernel";
+						reg = <0x3840000 0x400000>;
+						read-only;
+					};
+
+					partition@3c40000 {
+						label = "reserved-filesystem";
+						reg = <0x3c40000 0x3000000>;
+						read-only;
+					};
+
+					partition@6c40000 {
+						label = "config";
+						reg = <0x6c40000 0x400000>;
+						read-only;
+					};
+
+					partition@6e40000 {
+						label = "nand-filesystem";
+						reg = <0x6e40000 0x400000>;
+						read-only;
+					};
+				};
+			};
+		};
+	};
+
+	gphy-xrx200 {
+		compatible = "lantiq,phy-xrx200";
+		firmware = "lantiq/xrx200_phy11g_a22.bin";
+		phys = [ 00 ];
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <100>;
+		wps {
+			label = "wps";
+			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+		dect {
+			label = "dect";
+			gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
+			linux,code = <KEY_PHONE>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		power_green: power_green {
+			label = "fritz7412:green:power";
+			gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
+			default-state = "keep";
+		};
+		power_red: power_red {
+			label = "fritz7412:red:power";
+			gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
+		};
+		fon {
+			label = "fritz7412:green:fon";
+			gpios = <&gpio 34 GPIO_ACTIVE_LOW>;
+		};
+		dect {
+			label = "fritz7412:green:dect";
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+		};
+		wifi: wifi {
+			label = "fritz7412:green:wifi";
+			gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+		};
+		info: info {
+			label = "fritz7412:green:info";
+			gpios = <&gpio 35 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&pcie0 {
+	status = "okay";
+	gpio-reset = <&gpio 11 GPIO_ACTIVE_HIGH>;
+
+	pcie@0 {
+		reg = <0 0 0 0 0>;
+		#interrupt-cells = <1>;
+		#size-cells = <2>;
+		#address-cells = <3>;
+		device_type = "pci";
+
+		wifi@168c,002e {
+			compatible = "pci168c,002e";
+			reg = <0 0 0 0 0>;
+			qca,no-eeprom; /* load from ath9k-eeprom-pci-0000:01:00.0.bin */
+		};
+	};
+};
+
+&gpio {
+	pinctrl-names = "default";
+	pinctrl-0 = <&state_default>;
+
+	state_default: pinmux {
+		mdio {
+			lantiq,groups = "mdio";
+			lantiq,function = "mdio";
+		};
+		pcie-rst {
+			lantiq,pins = "io11";
+			lantiq,open-drain = <1>;
+			lantiq,output = <1>;
+		};
+		nand-mux {
+			lantiq,groups = "nand cle", "nand ale",
+			"nand rd", "nand cs1",
+			"nand rdy";
+			lantiq,function = "ebu";
+		};
+		nand-pins {
+			lantiq,pins = "io13", "io24", "io49";
+			lantiq,pull = <1>;
+		};
+
+		/*
+		other gpios:
+
+		dect reset: 33 output open drain
+		dect rd: 8 active low push pull
+
+		tdm fsc: 9 input + pull-up
+		tdm/spi do: 16 output
+		tdm/spi di: 17 input + pull-up
+		tdm dcl/spi clk: 18 output active low
+		tdm clk enable: 7 output active high
+		tdm/spi cs: 10 output active low/high
+		spi wp: 12 output active low
+
+		boot sel2: 23 active high
+		boot sel3: 38 active high
+		boot sel4: 49 active high (also nand rd)
+		*/
+	};
+};
+
+&eth0 {
+	interface@0 {
+		compatible = "lantiq,xrx200-pdi";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0>;
+		mac-address = [ 00 11 22 33 44 55 ];
+		lantiq,switch;
+
+		ethernet@2 {
+			compatible = "lantiq,xrx200-pdi-port";
+			reg = <2>;
+			phy-mode = "gmii";
+			phy-handle = <&phy11>;
+		};
+	};
+
+	mdio@0 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "lantiq,xrx200-mdio";
+		phy11: ethernet-phy@11 {
+			reg = <0x11>;
+			compatible = "lantiq,phy11g", "ethernet-phy-ieee802.3-c22";
+		};
+	};
+};
+
+&vmmc {
+	status = "okay";
+};
diff --git a/target/linux/lantiq/files-4.9/arch/mips/boot/dts/vr9.dtsi b/target/linux/lantiq/files-4.9/arch/mips/boot/dts/vr9.dtsi
index dbcbb3dcec..f787ad7e4d 100644
--- a/target/linux/lantiq/files-4.9/arch/mips/boot/dts/vr9.dtsi
+++ b/target/linux/lantiq/files-4.9/arch/mips/boot/dts/vr9.dtsi
@@ -82,7 +82,7 @@
 			reg = <0x106a00 0x200>;
 		};
 
-		vmmc@107000 {
+		vmmc: vmmc@103000 {
 			status = "disabled";
 			compatible = "lantiq,vmmc-xway";
 			reg = <0x103000 0x400>;
diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile
index e52e43c6e5..6a3c8aef0f 100644
--- a/target/linux/lantiq/image/Makefile
+++ b/target/linux/lantiq/image/Makefile
@@ -103,6 +103,7 @@ define Device/AVM
   KERNEL := kernel-bin | append-dtb | lzma | eva-image
   IMAGE/sysupgrade.bin := append-kernel | pad-to 64k | append-avm-fakeroot | \
 	append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
+  KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | eva-image
 endef
 
 ifeq ($(SUBTARGET),ase)
@@ -630,6 +631,18 @@ define Device/avm_fritz7360sl
 endef
 TARGET_DEVICES += avm_fritz7360sl
 
+define Device/avm_fritz7412
+  $(Device/AVM)
+  $(Device/NAND)
+  BOARD_NAME := FRITZ7412
+  DEVICE_DTS := FRITZ7412
+  KERNEL_SIZE := 4096k
+  IMAGE_SIZE := 49152k
+  DEVICE_TITLE := 1&1 DSL-Modem / WLAN-Router - FRITZ7412
+  DEVICE_PACKAGES := kmod-ath9k kmod-owl-loader wpad-mini kmod-ltq-tapi kmod-ltq-vmmc fritz-tffs-nand fritz-caldata
+endef
+TARGET_DEVICES += avm_fritz7412
+
 define Device/arcadyan_vg3503j
   IMAGE_SIZE := 8000k
   DEVICE_DTS := VG3503J
