Table of Contents

D-Link DIR-860L B1

The D-Link DIR-860L router is a 2.4GHz and 5 GHz router with 5 gigabit ports. It has an 880 MHz processor, with 16 MBytes of Flash and 128 MBytes of RAM, WiFi AC and one USB 3.0 port.

There are two known versions of this router, H/W rev A1 and B1.
Hardware revision A1 is based on Broadcom BCM47081A0 and is not supported.
Hardware revision B1 is however based on Mediatek MT7621AT and is supported.

You can determine version by looking at the barcode on the bottom of the box and on the router itself. Pictures attached to this page show how these labels look like.

Supported Versions

Hardware Highlights

  • Has WiFi problems with LEDE <=17.01.2 (slow on 5 GHz, some people also report buggy on 2.4 GHz). The 5GHz-WiFi problems seem fixed on snapshots > ~2017-07-20 2x2:2 MIMO both channels

Firmware & Installation

OpenWrt Factory Firmware: Use this file the first time you flash OpenWrt onto the router as it came from the “factory.”
OpenWrt Sysupgrade Firmware: Use this file to upgrade an OpenWrt “system” to a newer OpenWrt version.
OEM Stock Firmware: Use this file to restore the router to the “stock” firmware as it shipped from the manufacturer.

Hardware Details

Known Issues

Recovery Mode

Like several other D-Link devices, the bootloader of this device contains an additional tiny emergency loader that is able to boot a web GUI that allows to reflash the firmware in case the regular flash procedure has failed and in case the firmware is broken. No serial cable is needed for this recovery mode.

Screenshot of this built-in recovery mode function, called “Emergency Room” (This is a D-Link provided boot loader function that will remain available, even after OpenWrt has been flashed to the device):

Even if the device won't boot anymore due to a failed flash attempt, it is still possible, to trigger this emergency web GUI with the following boot procedure:

You can interact with the recovery mode on Linux without needing a browser; just execute the following command from where your OpenWrt firmware binary is located, and wait until the router has flashed and rebooted.

  curl -v -i -F "firmware=@openwrt-ramips-mt7621-dlink_dir-860l-b1-squashfs-factory.bin" 192.168.0.1

Notes:

Performance

Benchmark results from OpenWrt 15.05 r48717:

Software Testdetails Throughput
WiFi iperf3, Atheros AR9382 WLAN-card, 5GHz radio (11n) ~ 170.0 Mbits/s
NAT/Routing for details see below 453.0 Mbits/s
NAT/Routing with custom settings for details see below 569.0 Mbits/s
OpenVPN 2.3.10 mbedTLS, AES-192-CBC, no compression, one-way 24.8 Mbits/s
wireguard - 0.0.20170810-1 transfering 9.93 Gigabytes on 150Mbit cable connection 142.0 Mbits/s

Further details on the NAT/Routing benchmark result of OpenWrt 15.05 r48717:

Click to display ⇲

Click to hide ⇱

Some quick testing NAT/throughput performance using iperf3 (3.1), static IP and MSS-fix disabled on WAN.
The server is directly connected to WAN and both clients are using Intel NICs.
Router is running the same revision as stated below (r47187 with relevant backports up to r47238).

Firmware compiled using following settings (-mno-mips16 -mdsp being non standard):

CONFIG_DEFAULT_TARGET_OPTIMIZATION="-Os -pipe -mmt -mips32r2 -mtune=1004kc -mno-mips16 -mdsp"

Stock settings

iperf3.exe -c 90.231.139.1 -n 1G
Connecting to host 90.231.139.1, port 5201
[  4] local 192.168.20.166 port 49643 connected to 90.231.139.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  52.9 MBytes   437 Mbits/sec
[  4]   1.01-2.01   sec  56.1 MBytes   472 Mbits/sec
[  4]   2.01-3.01   sec  53.1 MBytes   446 Mbits/sec
[  4]   3.01-4.01   sec  51.6 MBytes   434 Mbits/sec
[  4]   4.01-5.01   sec  52.5 MBytes   441 Mbits/sec
[  4]   5.01-6.01   sec  53.5 MBytes   450 Mbits/sec
[  4]   6.01-7.00   sec  57.8 MBytes   485 Mbits/sec
[  4]   7.00-8.00   sec  54.1 MBytes   455 Mbits/sec
[  4]   8.00-9.00   sec  53.5 MBytes   450 Mbits/sec
[  4]   9.00-10.02  sec  54.4 MBytes   450 Mbits/sec
[  4]  10.02-11.01  sec  54.0 MBytes   454 Mbits/sec
[  4]  11.01-12.01  sec  54.9 MBytes   461 Mbits/sec
[  4]  12.01-13.01  sec  54.6 MBytes   459 Mbits/sec
[  4]  13.01-14.01  sec  53.4 MBytes   448 Mbits/sec
[  4]  14.01-15.01  sec  53.4 MBytes   448 Mbits/sec
[  4]  15.01-16.01  sec  53.0 MBytes   445 Mbits/sec
[  4]  16.01-17.00  sec  54.0 MBytes   454 Mbits/sec
[  4]  17.00-18.00  sec  54.6 MBytes   459 Mbits/sec
[  4]  18.00-18.97  sec  52.6 MBytes   456 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-18.97  sec  1.00 GBytes   453 Mbits/sec                  sender
[  4]   0.00-18.97  sec  1024 MBytes   453 Mbits/sec                  receiver

iperf Done.

Modified settings (sysctl.conf)

vm.min_free_kbytes=4096
net.core.rmem_max=1048576
net.core.wmem_max=1048576
net.core.netdev_max_backlog=4096
net.ipv4.tcp_max_syn_backlog=2048
net.ipv4.tcp_rmem=4096 87380 1048576
net.ipv4.tcp_wmem=4096 65536 1048576
iperf3.exe -c 90.231.139.1 -n 1G
Connecting to host 90.231.139.1, port 5201
[  4] local 192.168.20.166 port 49582 connected to 90.231.139.1 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.01   sec  68.1 MBytes   564 Mbits/sec
[  4]   1.01-2.01   sec  68.2 MBytes   573 Mbits/sec
[  4]   2.01-3.01   sec  66.0 MBytes   555 Mbits/sec
[  4]   3.01-4.01   sec  68.4 MBytes   574 Mbits/sec
[  4]   4.01-5.01   sec  67.4 MBytes   566 Mbits/sec
[  4]   5.01-6.01   sec  68.5 MBytes   576 Mbits/sec
[  4]   6.01-7.00   sec  68.1 MBytes   572 Mbits/sec
[  4]   7.00-8.00   sec  67.1 MBytes   564 Mbits/sec
[  4]   8.00-9.00   sec  68.0 MBytes   571 Mbits/sec
[  4]   9.00-10.02  sec  69.2 MBytes   573 Mbits/sec
[  4]  10.02-11.01  sec  68.4 MBytes   574 Mbits/sec
[  4]  11.01-12.01  sec  68.5 MBytes   576 Mbits/sec
[  4]  12.01-13.01  sec  65.6 MBytes   551 Mbits/sec
[  4]  13.01-14.01  sec  68.2 MBytes   573 Mbits/sec
[  4]  14.01-15.01  sec  68.5 MBytes   576 Mbits/sec
[  4]  15.01-15.09  sec  5.62 MBytes   605 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-15.09  sec  1.00 GBytes   569 Mbits/sec                  sender
[  4]   0.00-15.09  sec  1024 MBytes   569 Mbits/sec                  receiver

iperf Done.

Note: Based on about 6-7 iterations, some bursts at ~800mbit but only for one run.

Flash Layout

OEM Flash Layout

TODO: convert this to table and hide this serial logs

...
flash manufacture id: c2, device id 20 18
MX25L12805D(c2 2018c220) (16384 Kbytes)
mtd .name = raspi, .size = 0x01000000 (16M) .erasesize = 0x00010000 (64K) .numeraseregions = 0
seama skip the header
Found PACKIMG_TAG at 230040
xxxxxxxx: squashfs filesystem found at offset 2293824, magic 73717368 
Creating 9 MTD partitions on "raspi":
0x000000230060-0x000000ad6060 : "rootfs"
0x000000050000-0x000000f60000 : "upgrade"
0x000000040000-0x000000050000 : "devconf"
0x000000030000-0x000000040000 : "devdata"
0x000000fe0000-0x000001000000 : "langpack"
0x000000000000-0x000001000000 : "flash"
0x000000000000-0x000000030000 : "u-boot"
0x000000030000-0x000000038000 : "boot env"
0x000000f60000-0x000000fe0000 : "mydlink"
rdm_major = 253
GMAC1_MAC_ADRH -- : 0x0000000c
...
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 01000000 00010000 "raspi"
mtd1: 008a6000 00010000 "rootfs"
mtd2: 00f10000 00010000 "upgrade"
mtd3: 00010000 00010000 "devconf"
mtd4: 00010000 00010000 "devdata"
mtd5: 00020000 00010000 "langpack"
mtd6: 01000000 00010000 "flash"
mtd7: 00030000 00010000 "u-boot"
mtd8: 00008000 00010000 "boot env"
mtd9: 00080000 00010000 "mydlink"

OpenWrt Flash Layout

From dmesg (note that rootfs_data start address will vary with squashfs size):

0x000000000000-0x000000030000 : "u-boot"
0x000000030000-0x000000034000 : "u-boot-env"
0x000000034000-0x000000038000 : "radio"
0x000000038000-0x000000040000 : "factory"
0x000000040000-0x000000050000 : "defaults"
0x000000050000-0x000001000000 : "firmware"
0x000000000040-0x0000002a0000 : "kernel"
0x0000002a0000-0x000000fb0000 : "rootfs"
0x000000990000-0x000000fb0000 : "rootfs_data"

Access with Serial Cable

See the picture paragraph below for how to disassemble.

Modifying Device LED Behavior on OpenWrt Releases before OpenWrt/LEDE 17.01.2

Older OpenWrt kernels before 17.01.2 do not operate the LEDs, so the power LED remains orange after successful boot; there are 2 dual-colour LEDs controlled by setting GPIO pins to 0:

Example script for controlling GPIO pins

Click to display ⇲

Click to hide ⇱

(save as /usr/bin/set_gpio, make executable):

#!/bin/sh

PIN=$1
VALUE=$2

PIN_FILE=/sys/class/gpio/gpio$PIN

if [ -z "$PIN" -o -z "$VALUE" ]; then
    echo "Usage: $0 pin value"
    exit 1
fi

echo $PIN >/sys/class/gpio/export

if [ $(cat $PIN_FILE/direction) = "out" ]; then
    echo $VALUE >$PIN_FILE/value
else
    echo "Can't set the value of an input pin!"
fi

echo $PIN >/sys/class/gpio/unexport

Then you can add to /etc/rc.local something along the lines of

# turn power led green
set_gpio 13 1
set_gpio 15 0

# signal that we are waiting for internets
set_gpio 14 0

To turn the WAN LED green, an example hotplug script might be (save as /etc/hotplug.d/iface/99-led, make executable):

#!/bin/sh  

[ "$INTERFACE" != wan ] && exit 0 
                                 
if [ "$ACTION" = ifup ]; then    
    set_gpio 14 1            
    set_gpio 16 0            
fi               
                 
if [ "$ACTION" = ifdown ]; then
    set_gpio 14 0              
    set_gpio 16 1              
fi               

dmesg Output

dmesg Output of OpenWrt V15.05 (with relevant backports up to r47238):

Click to display ⇲

Click to hide ⇱

[ 0.000000] Linux version 3.18.21 (diizzy@buildbox-v2) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r47187) ) #1 SMP Thu Oct 15 04:00:11 CEST 2015 [ 0.000000] SoC Type: MediaTek MT7621 ver:1 eco:3 [ 0.000000] bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 0001992f (MIPS 1004Kc) [ 0.000000] MIPS: machine is D-Link DIR-860L B1 [ 0.000000] Determined physical RAM map: [ 0.000000] memory: 08000000 @ 00000000 (usable) [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x00000000-0x07ffffff] [ 0.000000] HighMem empty [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x00000000-0x07ffffff] [ 0.000000] Initmem setup node 0 [mem 0x00000000-0x07ffffff] [ 0.000000] On node 0 totalpages: 32768 [ 0.000000] free_area_init_node: node 0, pgdat 80390240, node_mem_map 81000000 [ 0.000000] Normal zone: 256 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 32768 pages, LIFO batch:7 [ 0.000000] Detected 3 available secondary CPU(s) [ 0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes. [ 0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes [ 0.000000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes. [ 0.000000] PERCPU: Embedded 9 pages/cpu @8110a000 s5824 r8192 d22848 u36864 [ 0.000000] pcpu-alloc: s5824 r8192 d22848 u36864 alloc=9*4096 [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512 [ 0.000000] Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2 [ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes) [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) [ 0.000000] Writing ErrCtl register=0001e18d [ 0.000000] Readback ErrCtl register=0001e18d [ 0.000000] Memory: 125572K/131072K available (3004K kernel code, 150K rwdata, 556K rodata, 180K init, 239K bss, 5500K reserved, 0K highmem) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:256 [ 0.000000] gic: revision 3.0 [ 0.000000] CPU Clock: 880MHz [ 0.036000] Calibrating delay loop... 577.53 BogoMIPS (lpj=1155072) [ 0.040000] pid_max: default: 32768 minimum: 301 [ 0.044000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.048000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.052000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes. [ 0.052000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes [ 0.052000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes. [ 0.052000] CPU1 revision is: 0001992f (MIPS 1004Kc) [ 0.104000] Synchronize counters for CPU 1: done. [ 0.108000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes. [ 0.108000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes [ 0.108000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes. [ 0.108000] CPU2 revision is: 0001992f (MIPS 1004Kc) [ 0.156000] Synchronize counters for CPU 2: done. [ 0.164000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes. [ 0.164000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes [ 0.164000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes. [ 0.164000] CPU3 revision is: 0001992f (MIPS 1004Kc) [ 0.212000] Synchronize counters for CPU 3: done. [ 0.216000] Brought up 4 CPUs [ 0.220000] pinctrl core: initialized pinctrl subsystem [ 0.224000] NET: Registered protocol family 16 [ 0.228000] rt2880-pinmux pinctrl: try to register 61 pins ... [ 0.228000] pinctrl core: registered pin 0 (io0) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 1 (io1) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 2 (io2) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 3 (io3) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 4 (io4) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 5 (io5) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 6 (io6) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 7 (io7) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 8 (io8) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 9 (io9) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 10 (io10) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 11 (io11) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 12 (io12) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 13 (io13) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 14 (io14) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 15 (io15) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 16 (io16) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 17 (io17) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 18 (io18) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 19 (io19) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 20 (io20) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 21 (io21) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 22 (io22) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 23 (io23) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 24 (io24) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 25 (io25) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 26 (io26) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 27 (io27) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 28 (io28) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 29 (io29) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 30 (io30) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 31 (io31) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 32 (io32) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 33 (io33) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 34 (io34) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 35 (io35) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 36 (io36) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 37 (io37) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 38 (io38) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 39 (io39) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 40 (io40) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 41 (io41) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 42 (io42) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 43 (io43) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 44 (io44) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 45 (io45) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 46 (io46) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 47 (io47) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 48 (io48) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 49 (io49) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 50 (io50) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 51 (io51) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 52 (io52) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 53 (io53) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 54 (io54) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 55 (io55) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 56 (io56) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 57 (io57) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 58 (io58) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 59 (io59) on rt2880-pinmux [ 0.228000] pinctrl core: registered pin 60 (io60) on rt2880-pinmux [ 0.228000] pinctrl core: add 5 pinmux maps [ 0.228000] rt2880-pinmux pinctrl: found group selector 1 for i2c [ 0.228000] rt2880-pinmux pinctrl: found group selector 3 for uart2 [ 0.228000] rt2880-pinmux pinctrl: found group selector 2 for uart3 [ 0.228000] rt2880-pinmux pinctrl: found group selector 8 for rgmii2 [ 0.228000] rt2880-pinmux pinctrl: found group selector 10 for sdhci [ 0.228000] rt2880-pinmux pinctrl: request pin 3 (io3) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 4 (io4) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 9 (io9) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 10 (io10) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 11 (io11) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 12 (io12) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 5 (io5) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 6 (io6) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 7 (io7) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 8 (io8) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 22 (io22) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 23 (io23) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 24 (io24) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 25 (io25) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 26 (io26) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 27 (io27) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 28 (io28) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 29 (io29) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 30 (io30) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 31 (io31) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 32 (io32) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 33 (io33) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 41 (io41) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 42 (io42) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 43 (io43) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 44 (io44) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 45 (io45) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 46 (io46) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 47 (io47) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: request pin 48 (io48) for pinctrl [ 0.228000] rt2880-pinmux pinctrl: failed to lookup the sleep state [ 0.232000] FPU Affinity set after 4688 emulations [ 0.232000] pinctrl core: add 1 pinmux maps [ 0.232000] rt2880-pinmux pinctrl: found group selector 6 for pcie [ 0.232000] rt2880-pinmux pinctrl: request pin 19 (io19) for 1e140000.pcie [ 0.232000] pull PCIe RST: RALINK_RSTCTRL = 0 [ 0.528000] release PCIe RST: RALINK_RSTCTRL = 7000000 [ 0.532000] ***** Xtal 40MHz ***** [ 0.536000] release PCIe RST: RALINK_RSTCTRL = 7000000 [ 0.540000] Port 0 N_FTS = 1b102800 [ 0.544000] Port 1 N_FTS = 1b102800 [ 0.548000] Port 2 N_FTS = 1b102800 [ 1.684000] PCIE2 no card, disable it(RST&CLK) [ 1.688000] -> 21007f2 [ 1.692000] PCIE0 enabled [ 1.696000] PCIE1 enabled [ 1.700000] PCI host bridge /pcie@1e140000 ranges: [ 1.704000] MEM 0x0000000060000000..0x000000006fffffff [ 1.708000] IO 0x000000001e160000..0x000000001e16ffff [ 1.728000] mt7621_gpio 1e000600.gpio: registering 32 gpios [ 1.732000] mt7621_gpio 1e000600.gpio: registering 32 gpios [ 1.736000] mt7621_gpio 1e000600.gpio: registering 32 gpios [ 1.740000] PCI host bridge to bus 0000:00 [ 1.744000] pci_bus 0000:00: root bus resource [mem 0x60000000-0x6fffffff] [ 1.748000] pci_bus 0000:00: root bus resource [io 0xffffffff] [ 1.752000] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff] [ 1.756000] pci 0000:00:00.0: [0e8d:0801] type 01 class 0x060400 [ 1.756000] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x7fffffff] [ 1.756000] pci 0000:00:00.0: reg 0x14: [mem 0x00000000-0x0000ffff] [ 1.756000] pci 0000:00:00.0: supports D1 [ 1.756000] pci 0000:00:00.0: PME# supported from D0 D1 D3hot [ 1.756000] pci 0000:00:01.0: [0e8d:0801] type 01 class 0x060400 [ 1.756000] pci 0000:00:01.0: reg 0x10: [mem 0x00000000-0x7fffffff] [ 1.756000] pci 0000:00:01.0: reg 0x14: [mem 0x00000000-0x0000ffff] [ 1.756000] pci 0000:00:01.0: supports D1 [ 1.756000] pci 0000:00:01.0: PME# supported from D0 D1 D3hot [ 1.756000] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 1.760000] pci 0000:00:01.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 1.764000] pci 0000:01:00.0: [14c3:7662] type 00 class 0x028000 [ 1.764000] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit] [ 1.764000] pci 0000:01:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref] [ 1.764000] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold [ 1.764000] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01 [ 1.764000] pci 0000:02:00.0: [14c3:7662] type 00 class 0x028000 [ 1.764000] pci 0000:02:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit] [ 1.764000] pci 0000:02:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref] [ 1.764000] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold [ 1.764000] pci_bus 0000:02: busn_res: [bus 02-ff] end is updated to 02 [ 1.764000] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 02 [ 1.764000] pci 0000:00:00.0: BAR 0: no space for [mem size 0x80000000] [ 1.768000] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x80000000] [ 1.772000] pci 0000:00:01.0: BAR 0: no space for [mem size 0x80000000] [ 1.776000] pci 0000:00:01.0: BAR 0: failed to assign [mem size 0x80000000] [ 1.780000] pci 0000:00:00.0: BAR 8: assigned [mem 0x60000000-0x600fffff] [ 1.784000] pci 0000:00:00.0: BAR 9: assigned [mem 0x60100000-0x601fffff pref] [ 1.788000] pci 0000:00:01.0: BAR 8: assigned [mem 0x60200000-0x602fffff] [ 1.792000] pci 0000:00:01.0: BAR 9: assigned [mem 0x60300000-0x603fffff pref] [ 1.796000] pci 0000:00:00.0: BAR 1: assigned [mem 0x60400000-0x6040ffff] [ 1.800000] pci 0000:00:01.0: BAR 1: assigned [mem 0x60410000-0x6041ffff] [ 1.804000] pci 0000:01:00.0: BAR 0: assigned [mem 0x60000000-0x600fffff 64bit] [ 1.808000] pci 0000:01:00.0: BAR 6: assigned [mem 0x60100000-0x6010ffff pref] [ 1.812000] pci 0000:00:00.0: PCI bridge to [bus 01] [ 1.816000] pci 0000:00:00.0: bridge window [mem 0x60000000-0x600fffff] [ 1.820000] pci 0000:00:00.0: bridge window [mem 0x60100000-0x601fffff pref] [ 1.824000] pci 0000:02:00.0: BAR 0: assigned [mem 0x60200000-0x602fffff 64bit] [ 1.828000] pci 0000:02:00.0: BAR 6: assigned [mem 0x60300000-0x6030ffff pref] [ 1.832000] pci 0000:00:01.0: PCI bridge to [bus 02] [ 1.836000] pci 0000:00:01.0: bridge window [mem 0x60200000-0x602fffff] [ 1.840000] pci 0000:00:01.0: bridge window [mem 0x60300000-0x603fffff pref] [ 1.844000] BAR0 at slot 0 = 0 [ 1.848000] bus=0x0, slot = 0x0 [ 1.852000] BAR0 at slot 1 = 0 [ 1.856000] bus=0x0, slot = 0x1 [ 1.860000] bus=0x1, slot = 0x0, irq=0xff [ 1.864000] bus=0x2, slot = 0x1, irq=0xff [ 1.868000] Switched to clocksource MIPS [ 1.876000] NET: Registered protocol family 2 [ 1.884000] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 1.900000] TCP bind hash table entries: 1024 (order: 1, 8192 bytes) [ 1.912000] TCP: Hash tables configured (established 1024 bind 1024) [ 1.924000] TCP: reno registered [ 1.928000] UDP hash table entries: 256 (order: 1, 8192 bytes) [ 1.940000] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) [ 1.952000] NET: Registered protocol family 1 [ 1.964000] PCI: CLS 80 bytes, default 32 [ 1.964000] alarmtimer alarmtimer: no of_node; not parsing pinctrl DT [ 1.964000] futex hash table entries: 1024 (order: 4, 65536 bytes) [ 1.984000] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.996000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 2.016000] msgmni has been set to 245 [ 2.024000] io scheduler noop registered [ 2.032000] io scheduler deadline registered (default) [ 2.040000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled [ 2.052000] serial8250 serial8250: no of_node; not parsing pinctrl DT [ 2.056000] console [ttyS0] disabled [ 2.060000] 1e000c00.uartlite: ttyS0 at MMIO 0x1e000c00 (irq = 34, base_baud = 3125000) is a 16550A [ 2.080000] console [ttyS0] enabled [ 2.092000] bootconsole [early0] disabled [ 2.112000] pinctrl core: add 1 pinmux maps [ 2.112000] rt2880-pinmux pinctrl: found group selector 9 for spi [ 2.112000] rt2880-pinmux pinctrl: request pin 34 (io34) for 1e000b00.spi [ 2.112000] rt2880-pinmux pinctrl: request pin 35 (io35) for 1e000b00.spi [ 2.112000] rt2880-pinmux pinctrl: request pin 36 (io36) for 1e000b00.spi [ 2.112000] rt2880-pinmux pinctrl: request pin 37 (io37) for 1e000b00.spi [ 2.112000] rt2880-pinmux pinctrl: request pin 38 (io38) for 1e000b00.spi [ 2.112000] rt2880-pinmux pinctrl: request pin 39 (io39) for 1e000b00.spi [ 2.112000] rt2880-pinmux pinctrl: request pin 40 (io40) for 1e000b00.spi [ 2.112000] spi-mt7621 1e000b00.spi: sys_freq: 50000000 [ 2.120000] m25p80 spi32766.0: mx25l12805d (16384 Kbytes) [ 2.132000] m25p80 spi32766.0: using chunked io [ 2.140000] 6 ofpart partitions found on MTD device spi32766.0 [ 2.152000] Creating 6 MTD partitions on "spi32766.0": [ 2.164000] 0x000000000000-0x000000030000 : "u-boot" [ 2.172000] 0x000000030000-0x000000034000 : "u-boot-env" [ 2.184000] 0x000000034000-0x000000038000 : "radio" [ 2.196000] 0x000000038000-0x000000040000 : "factory" [ 2.208000] 0x000000040000-0x000000050000 : "defaults" [ 2.216000] 0x000000050000-0x000001000000 : "firmware" [ 2.268000] 2 seama-fw partitions found on MTD device firmware [ 2.280000] 0x000000050000-0x000000190000 : "kernel" [ 2.292000] 0x000000190000-0x000001000000 : "rootfs" [ 2.300000] mtd: device 7 (rootfs) set to be root filesystem [ 2.312000] 1 squashfs-split partitions found on MTD device rootfs [ 2.324000] 0x000000720000-0x000001000000 : "rootfs_data" [ 2.336000] netif_napi_add() called with weight 128 on device eth%d [ 2.360000] change HW-TRAP to 0x17ccf [ 2.368000] ralink_soc_eth 1e100000.ethernet: generated random MAC address 92:45:23:fd:e3:3b [ 2.388000] libphy: mdio: probed [ 2.404000] ralink_soc_eth 1e100000.ethernet: loaded mt7530 driver [ 2.416000] ralink_soc_eth 1e100000.ethernet eth0: ralink at 0xbe100000, irq 11 [ 2.432000] mt7621_wdt 1e000100.wdt: Initialized [ 2.444000] TCP: cubic registered [ 2.448000] NET: Registered protocol family 10 [ 2.460000] NET: Registered protocol family 17 [ 2.468000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this. [ 2.492000] 8021q: 802.1Q VLAN Support v1.8 [ 2.504000] drivers/rtc/hctosys.c: unable to open rtc device (rtc0) [ 2.520000] VFS: Mounted root (squashfs filesystem) readonly on device 31:7. [ 2.536000] Freeing unused kernel memory: 180K (803a3000 - 803d0000) [ 2.580000] random: nonblocking pool is initialized [ 3.624000] init: Console is alive [ 3.628000] init: - watchdog - [ 3.988000] ralink_soc_eth 1e100000.ethernet eth0: port 0 link up [ 4.812000] ralink_soc_eth 1e100000.ethernet eth0: port 4 link up [ 5.024000] usbcore: registered new interface driver usbfs [ 5.036000] usbcore: registered new interface driver hub [ 5.048000] usbcore: registered new device driver usb [ 5.060000] exFAT: Version 1.2.9 [ 5.088000] gpio-keys-polled gpio-keys-polled: missing platform data [ 5.100000] gpio-keys-polled: probe of gpio-keys-polled failed with error -22 [ 5.120000] SCSI subsystem initialized [ 5.144000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.160000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.176000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.192000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.208000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.224000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.240000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.256000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.272000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.288000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.320000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.336000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.348000] ralink_soc_eth 1e100000.ethernet eth0: port 3 link up [ 5.364000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.380000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.396000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.412000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.428000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.444000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.460000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.476000] FM_OUT value: u4FmOut = 0(0x00000000) [ 5.604000] xhci-hcd xhci-hcd: no of_node; not parsing pinctrl DT [ 5.604000] xhci-hcd xhci-hcd: xHCI Host Controller [ 5.612000] xhci-hcd xhci-hcd: new USB bus registered, assigned bus number 1 [ 5.628000] xhci-hcd xhci-hcd: irq 30, io mem 0x1e1c0000 [ 5.640000] usb usb1: no of_node; not parsing pinctrl DT [ 5.640000] hub 1-0:1.0: no of_node; not parsing pinctrl DT [ 5.640000] hub 1-0:1.0: USB hub found [ 5.648000] hub 1-0:1.0: 2 ports detected [ 5.656000] xhci-hcd xhci-hcd: xHCI Host Controller [ 5.668000] xhci-hcd xhci-hcd: new USB bus registered, assigned bus number 2 [ 5.680000] usb usb2: no of_node; not parsing pinctrl DT [ 5.680000] hub 2-0:1.0: no of_node; not parsing pinctrl DT [ 5.680000] hub 2-0:1.0: USB hub found [ 5.688000] hub 2-0:1.0: 1 port detected [ 5.700000] usbcore: registered new interface driver usb-storage [ 6.640000] init: - preinit - [ 10.220000] mount_root: loading kmods from internal overlay [ 10.592000] jffs2: notice: (389) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found. [ 10.624000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab [ 10.644000] block: extroot: not configured [ 10.728000] jffs2: notice: (386) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found. [ 10.956000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab [ 10.976000] block: extroot: not configured [ 10.996000] mount_root: switching to jffs2 overlay [ 11.040000] procd: - early - [ 11.044000] procd: - watchdog - [ 11.752000] procd: - ubus - [ 11.812000] ralink_soc_eth 1e100000.ethernet eth0: port 2 link up [ 12.764000] procd: - init - [ 13.728000] RPC: Registered named UNIX socket transport module. [ 13.740000] RPC: Registered udp transport module. [ 13.748000] RPC: Registered tcp transport module. [ 13.760000] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 13.780000] tun: Universal TUN/TAP device driver, 1.6 [ 13.792000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> [ 13.820000] Installing knfsd (copyright (C) 1996 okir@monad.swb.de). [ 13.840000] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 13.860000] Loading modules backported from Linux version master-2015-07-21-0-g47cd203 [ 13.876000] Backport generated by backports.git backports-20150626-0-gc1a4168 [ 13.920000] cfg80211: World regulatory domain updated: [ 13.928000] cfg80211: DFS Master region: unset [ 13.936000] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time) [ 13.956000] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 13.972000] cfg80211: (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [ 13.988000] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A) [ 14.004000] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A) [ 14.024000] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s) [ 14.044000] cfg80211: (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s) [ 14.060000] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A) [ 14.076000] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A) [ 14.092000] mt76pci 0000:01:00.0: ASIC revision: 76120044 [ 14.172000] ROM patch build: 20141115060606a [ 14.184000] Firmware Version: 0.0.00 [ 14.188000] Build: 1 [ 14.196000] Build Time: 201410061140____ [ 14.220000] Firmware running! [ 14.224000] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 14.228000] mt76pci 0000:02:00.0: ASIC revision: 76020044 [ 14.252000] ROM patch already applied [ 14.260000] Firmware Version: 0.0.00 [ 14.268000] Build: 1 [ 14.272000] Build Time: 201410061140____ [ 14.300000] Firmware running! [ 14.304000] ieee80211 phy1: Selected rate control algorithm 'minstrel_ht' [ 14.380000] u32 classifier [ 14.384000] input device check on [ 14.392000] Actions configured [ 14.400000] Mirror/redirect action on [ 14.416000] nf_conntrack version 0.5.0 (1964 buckets, 7856 max) [ 14.432000] usbcore: registered new interface driver cdc_wdm [ 14.444000] ip_tables: (C) 2000-2006 Netfilter Core Team [ 14.496000] usbcore: registered new interface driver usblp [ 14.512000] usbcore: registered new interface driver usbserial [ 14.524000] usbcore: registered new interface driver usbserial_generic [ 14.536000] usbserial: USB Serial support registered for generic [ 14.568000] xt_time: kernel timezone is -0000 [ 14.580000] usbcore: registered new interface driver cdc_eem [ 14.592000] usbcore: registered new interface driver cdc_ether [ 14.608000] usbcore: registered new interface driver cdc_ncm [ 14.620000] usbcore: registered new interface driver cdc_subset [ 14.632000] usbcore: registered new interface driver huawei_cdc_ncm [ 14.652000] PPP generic driver version 2.4.2 [ 14.664000] NET: Registered protocol family 24 [ 14.672000] usbcore: registered new interface driver qmi_wwan [ 14.688000] usbcore: registered new interface driver rndis_host [ 14.700000] usbcore: registered new interface driver sierra [ 14.712000] usbserial: USB Serial support registered for Sierra USB modem [ 14.728000] usbcore: registered new interface driver sierra_net [ 14.744000] usbcore: registered new interface driver cdc_mbim [ 14.756000] usbcore: registered new interface driver option [ 14.768000] usbserial: USB Serial support registered for GSM modem (1-port) [ 19.124000] device eth0.1 entered promiscuous mode [ 19.136000] device eth0 entered promiscuous mode [ 19.148000] br-lan: port 1(eth0.1) entered forwarding state [ 19.160000] br-lan: port 1(eth0.1) entered forwarding state [ 21.164000] br-lan: port 1(eth0.1) entered forwarding state [ 66.772000] ralink_soc_eth 1e100000.ethernet eth0: port 3 link down [ 69.700000] ralink_soc_eth 1e100000.ethernet eth0: port 3 link up [ 88.476000] ralink_soc_eth 1e100000.ethernet eth0: port 3 link down [ 91.464000] ralink_soc_eth 1e100000.ethernet eth0: port 3 link up

Pictures

dir-860l_back.jpg dir-860l_bottomlabel.jpg dir-860l_packagingboxlabel.jpg

Disassembly can be a bit finicky. The bottom screws are easy (they're under the rubber pads); the top screws are hidden under a sturdy sticker you need to pry off. See pictures below.

Prying off the sticker:

dir-860l_b1_sturdy_sticker_partially_lifted.jpg

Screws laid bare:

dir-860l_b1_top_screws_visible.jpg

Tags

How to add tags