Support for devolo dLAN® 1200+ WiFi ac (non pro version)

Hi,

could someone please tell me if my assumptions are correct?

I have finally managed to get a root login onto my devolo dLAN® 1200+ WiFi ac (the white version, not the pro version.

If I see this correctly, the device is almost identical to the pro version, with a slightly different layout of the mtd (the ART parition is at a different location). I have root access and the mtd tool available.

Assumption 1: OpenWRT/Lede support should be easy.

Assumption 2: I take the old pro patch [1]. I apply the same changes to the current lede, removing the pro from the name, and adjusting the mtd layout. This should allow me to build the firmware.

Assumption 3: If write that firmware to "Firmware1" using mtd it will just magically work and I will have lede

Assumption 4: This will not permanently brick my device.

Could someone confirm if these assumptions seem correct? I know there is a risk that 4 isn't, but how high is the risk?

Thanks

Max

[1] changeset for 1200 pro support: https://dev.openwrt.org/changeset/46342
Pro wiki page: https://wiki.openwrt.org/toh/devolo/devolo_dlan_pro_1200_wifi_ac
More information on a similar router: https://wiki.openwrt.org/toh/devolo/devolo_dlan_pro_wireless_500_plus and https://wiki.openwrt.org/toh/devolo/dlan-pro-wireless-500-plus

# cat /proc/cmdline
roc/cpuiboard=dvlAC console=ttyS0,115200 mtdparts=spi0.0:256k(Bootloader),64k(BootConfig),64k(Config1),64k(Config2),1088k(Kernel),14784k(Filesystem),64k(ART),15872k@0x70000(Firmware1),16384k@0x0(FullFlash) rootfstype=squashfs init=/sbin/init noinitrd
# cat /proc/cpuinfo
/mesystem type          : Atheros AR9344 rev 3
machine                 : "devolo WiFi AC design"
processor               : 0
cpu model               : MIPS 74Kc V4.12
BogoMIPS                : 85.91
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: [0x0000, 0x0ff8, 0x0ff8, 0x0ff8]
ASEs implemented        : mips16 dsp
shadow register sets    : 1
kscratch registers      : 0
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available

# cat /proc/meminfo
dMemTotal:         126368 kB
MemFree:           58544 kB
Buffers:            6964 kB
Cached:            24868 kB
SwapCached:            0 kB
Active:            16200 kB
Inactive:          22320 kB
Active(anon):       6688 kB
Inactive(anon):       32 kB
Active(file):       9512 kB
Inactive(file):    22288 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:          6696 kB
Mapped:             6056 kB
Shmem:                32 kB
Slab:              21152 kB
SReclaimable:        868 kB
SUnreclaim:        20284 kB
KernelStack:         552 kB
PageTables:          480 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:       63184 kB
Committed_AS:      11720 kB
VmallocTotal:    1048372 kB
VmallocUsed:         156 kB
VmallocChunk:    1038216 kB
# cat /proc/devices
devices/platfCharacter devices:
  1 mem
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
 10 misc
 13 input
 90 mtd
128 ptm
136 pts
244 dvlheartbeat
245 dvlbutton

Block devices:
259 blkext
 31 mtdblock
# ls /sys/devices/platform
cat /proc/mtd
caag71xx-mdio.0  ag71xx-mdio.1  ag71xx.0       alarmtimer     ar724x-pci     ar934x_wmac    ath79-spi      ath79-wdt      devolo-LED     serial8250     serial8250.0   uevent
# cat /proc/mtd
t /sys/class/mtdev:    size   erasesize  name
mtd0: 00040000 00010000 "Bootloader"
mtd1: 00010000 00010000 "BootConfig"
mtd2: 00010000 00010000 "Config1"
mtd3: 00010000 00010000 "Config2"
mtd4: 00110000 00010000 "Kernel"
mtd5: 00e70000 00010000 "Filesystem"
mtd6: 00010000 00010000 "ART"
mtd7: 00f80000 00010000 "Firmware1"
mtd8: 01000000 00010000 "FullFlash"
# cat /sys/class/mtd/mtd*/offset # Linux 4.1 and newer, see note 2.
ifconfig -a
ls cat: can't open '/sys/class/mtd/mtd*/offset': No such file or directory
/sys/class/net
b# ifconfig -a
rctl showath00     Link encap:Ethernet  HWaddr F4:06:8D:BA:BE:BD
          inet6 addr: fe80::XXXX
          UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:2457 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:4671 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:502369 (490.5 KiB)  TX bytes:0 (0.0 B)

ath10     Link encap:Ethernet  HWaddr F4:06:8D:BA:BE:BE
          inet6 addr: fe80::XXXX
          UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

br0       Link encap:Ethernet  HWaddr F4:06:8D:BA:BE:BF
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fda8:XXXX
          inet6 addr: 2002:XXXX
          inet6 addr: fe80:XXXX
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:32457 errors:0 dropped:14738 overruns:0 frame:0
          TX packets:5073 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:6252139 (5.9 MiB)  TX bytes:1584823 (1.5 MiB)

br0:666   Link encap:Ethernet  HWaddr F4:06:8D:BA:BE:BF
          inet addr:169.254.115.147  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1

eth0      Link encap:Ethernet  HWaddr F4:06:8D:BA:BE:BF
          inet6 addr: fe80::XXXX
          UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:39436 errors:0 dropped:5 overruns:0 frame:0
          TX packets:21084 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8505917 (8.1 MiB)  TX bytes:4901855 (4.6 MiB)
          Interrupt:4

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:36155 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2729631 (2.6 MiB)  TX bytes:2729631 (2.6 MiB)

sit0      Link encap:IPv6-in-IPv4
          NOARP  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wifi0     Link encap:UNSPEC  HWaddr F4-06-8D-BA-BE-BD-00-00-00-00-00-00-00-00-00-00
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9246 errors:0 dropped:0 overruns:0 frame:0
          TX packets:101776 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:539
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:47 Memory:b8100000-b8120000

wifi1     Link encap:UNSPEC  HWaddr F4-06-8D-BA-BE-BE-00-00-00-00-00-00-00-00-00-00
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:539
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:40 Memory:b0000000-b0200000

# ls /sys/class/net
ath00  ath10  br0    eth0   lo     sit0   wifi0  wifi1
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.f4068dbaXXXX       no              ath10
                                                        ath00
                                                        eth0
#

Update: I did what I proposed above and adapted the patches for the pro version, the changeset is here:
https://github.com/maxberger/openwrt/commits/master

I tried applying the new sysupgrade.bin to the device ( first: mtd erase, then dd to "Firmware1" partition) and I was able to boot into openwrt!

What works right now is just the lan ports, no wireless yet, and no dlan yet. Both are supposed to work, I am still playing with it.

Does anyone have an idea what to do if you get TCP stallings / timeouts?

Does anyone know what part of the Devolo firmware contains the actual stock firmware update?

Update:

What works / does not work

  • I was unable to get DLAN to work. I have played with the PLC utils but without success yet
  • I was able to get LAN / WLAN working BUT
  • I keep getting strange timeout issues in my tcp connections (looks like the tcp window is running full, the connections get stalled). This happens both on LAN and on WLAN, and makes copying any files to the device close-to-impossible, which makes the tests with DLAN also more difficult.

I have rebased my patch to the lastest version, this one installs nicely but has the same issues:

I was able to update the firmware to the newest rebased patch version, but that did not fix the TCP issue. I was able to load the .bin file both through mtd and through TFTP.

I have also tried to go back to stock firmware, and I was unable to create a proper tftp or bin file for mtd based on the .dvl original firmware. (tried with 1.1, 1.2.1 and 2.0). Therefore I am now stuck with a semi-working openwrt.

Max

How did you get a root login? Was that over SSH?

Does anyone here know if there are any hardware differences between the pro and non-pro version? I am running OpenWrt on the non-pro version (everything works perfectly besides the GPIO LED trigger... hardly a dealbreaker) and am thinking about buying more - would I get more performance (on either Wi-Fi or the power line interface) on a pro model vs a non-pro?

Have you tested the PLC communication? If so, how fast is it, and how much CPU does it use?

What ist the price, and place, where you are planning to get them?

PLC works fine and I'm averaging 300 mbps both ways via Ethernet. The PLC is a separate chip attached to the switch so there shouldn't be any impact on the CPU.

I got mine (non-pro) on eBuyer for around 90£ if I remember right.

Thanks for the answers :slight_smile:
Could you please answer some more questions?

  • Are you running 18.06, or a snapshot?
  • Can you try temporarily (1 sec) upping the MTU to
    • 1516 : ifconfig eth0 mtu 1516; ifconfig eth0 mtu 1500
    • 1536 : ifconfig eth0 mtu 1536; ifconfig eth0 mtu 1500
    • 1595
    • 2308
    • 4070
    • The question is, whether you get an Error, and which error.
  • Does PLC still require the external feed, firmware extraction with binwalk, etc?
  • Have you opened the device, pictures?

Thanks :slight_smile:

I am running a custom build of 18.06.4.

The PLC still requires the external feed and firmware extraction. I've made a script that will automatically fetch the firmware from Devolo and extract the necessary files (you might need to adjust a variable as per the README to match your hardware).

I'll do the MTU test later. As it's creating a bridge between the ethernet and wireless interfaces, any attempts to change the MTU result in a ip: SIOCSIFMTU: Resource busy error, and I don't want to tear down the bridge right now as I've only got a wireless interface on this laptop.

Haven't opened it but I believe there are some pictures on the OpenWrt wiki page for this model. Beware, there are security screws so keep that in mind if you plan on opening it. I haven't needed it though, as you can reinstall the firmware via TFTP even in case of a failed flash (as long as the boot loader partition is intact).

Thanks you, This is among the data-points i wanted. It sounds logical, I thought so too. For the Heck of it, i tried it on a live ArcherC7v5 (same GigE&Switch as you, i think) running several networks on serveral VLANs, and can modify the MTU of the parent interface and VLANs while the device is up. On all Linux devices in my home running >4.14 I can do this.

Oh, last question, are you running ar71xx, or ath79?

This case is different though as there are wireless interfaces involved, on which you can't set the MTU bigger than 2500 if I remember right, so it would make sense that at least in some cases the bridge would interfere. I'm SSH'd into another one of those and am gonna try to remove the bridge (without loosing my remote access) and then redo the MTU test on the ethernet interface.

Edit: tried it without any wireless interfaces. Results below.

root@OpenWrt:~# brctl show
bridge name	bridge id		STP enabled	interfaces
br-lan		7fff.30d32dc24add	no		eth0
root@OpenWrt:~# ip link set mtu 1501 dev eth0
ip: SIOCSIFMTU: Resource busy
root@OpenWrt:~# ip link set mtu 1501 dev br-lan
ip: SIOCSIFMTU: Invalid argument

Oh, last question, are you running ar71xx, or ath79?

How would I check that?

This is on a an Archer C7 v5 (Ethernet driver ag71xx) running a 4.19 snapshot. All interfaces mentioned below are pushing traffic while I'm doing this.

# ip link set mtu 1508 eth0.1
# ip link set mtu 1500 eth0.1
# ip link set mtu 1508 eth0.4
# ip link set mtu 1500 eth0.4 
# ip link set mtu 1512 eth0
# ip link set mtu 1520 eth0
ip: SIOCSIFMTU: Invalid argument
# ip link set mtu 1516 eth0
# ifconfig ibss5g mtu 2302   # This is an ath10k wifi on 6Ghz Ad-Hoc
# ifconfig ibss5g mtu 2304

On all my ath79 the ath10k driver throws warnings with the compilation target in the message filename:

# dmesg | grep ath79
[   44.267946] WARNING: CPU: 0 PID: 2244 at /builder/shared-workdir/build/build_dir/target-mips_24kc_musl/linux-ath79_generic/ath10k-
[17249.654918] WARNING: CPU: 0 PID: 9268 at /builder/shared-workdir/build/build_dir/target-mips_24kc_musl/linux-ath79_generic/ath10k-

Hi!

I am pretty new here in this forum. Altough I am a pretty happy openwrt user since many years I am looking forward for new hardware needs and found exactly this piece of hardware desscribed here.

My question is now, how is the current support for this device? Is it anyhow supported with a working dlan? I definitely need dlan/powerline/PLC support and try to find out if I can run it with openwrt..

I've had openwrt running on two of these devices for around 6 months without issue. This should hopefully get you started https://github.com/garyttirn/dlan-openwrt
The trick is to ensure you've got the right PLC firmware on the device, luckily the instructions have been updated since I initially set mine up, so it should be a fairly straight forward task now