D-Link DIR-860L rev. B1
The DIR-860L rev. B1 is a Mediatek-based first generation 802.11ac router. Unlike other 802.11ac hardware from more established players, Mediatek's MT7612EN radio does not require a large firmware to operate. This makes it a great candidate if good FOSS support is a requirement for you (the mt76 driver is actually written and maintained by one of the leading LEDE developers). The other obvious choice - Qualcomm/Atheros (QCA) - choose to capitalise on the reputation of the open 802.11an ath9k driver, which was largely developed by the same developer, by naming their 802.11ac driver ath10k; however, at the same time QCA happily closed things up and moved a lot of driver functionality into the binary firmware with its 802.11ac driver. Much like Broadcom and Marvell, they offer a Linux 'driver' which is mostly just a wrapper around those binary firmware blobs. This way, they can claim Linux or FOSS support, while you're still buying a black box. If you want more info on the state of wireless drivers on Linux, this video might interest you.
By now, it's probably clear I picked this router because it has the most open 802.11ac driver available. If you're interested, keep in mind Mediatek so far does not offer anything more than two-stream solutions - if you need more than two spatial streams, you'll need to look elsewhere. I just have two AC capable devices (laptop and smartphone), so two-stream is fine for me. Another thing is the 2,4 GHz radio seems to perform badly in noisy environments (ie with lots of other 2,4 GHz radios). Mediatek has put a newer radio on the market that should perform better (MT7603), but this won't make its way into the DIR-860L anymore. I rely on 5 GHz only myself, so this does not affect me.
The DIR-860L B1 is very cheap at the moment (prices around 75 EUR or less), which makes it a very affordable upgrade from 802.11an. LEDE (and OpenWrt) fully support it - so it was a no-brainer to upgrade from my trusty Netgear WNDR3700.
At this time, the router is running a LEDE 17.01+ build. I have enabled a Cake SQM instance to fight the dreaded bufferbloat - the SoC has no issues handling my 50 Mbit down (25% load maximum on a single core). However, shortly after the network started going down, and the LEDE logs revealed kernel oopses, and sudden reboots. After talking to one of the bufferbloat guys, I disabled some of the offloading; this seems to cause problems frequently. For this, you need ethtool
, but it's a bit quirky as querying the actual settings prints the full names, and disabling the specific setting requires you use the abbreviation:
Querying the offloads:
# ethtool -k eth0|grep offload
tcp-segmentation-offload: on
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: on
l2-fwd-offload: off [fixed]
You want to disable tcp-segmentation-offload
, generic-segmentation-offload
and generic-receive-offload
:
# ethtool -K eth0 tso off gso off gro off
After that, SQM shouldn't cause any more system instability.
Hardware specifications
- MediaTek MT7621AT SoC dual-core MIPS 1004Kc V2.15 880 MHz (with SMT)
- 16 MiB flash
- 128 MiB RAM
- MediaTek MT7621AT 5 port Gigabit Ethernet switch
- MediaTek MT7602E 802.11bgn 2x2:2
- MediaTek MT7612E 802.11an+ac 2x2:2
- USB 3.0 port
- Serial port
/proc/cpuinfo output
system type : MediaTek MT7621 ver:1 eco:3
machine : D-Link DIR-860L B1
processor : 0
cpu model : MIPS 1004Kc V2.15
BogoMIPS : 586.13
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
VPE : 0
(This is the first of four cores the kernel sees.)
LEDE prompt
Always nice to see...
BusyBox v1.25.1 () built-in shell (ash)
_________
/ /\ _ ___ ___ ___
/ LE / \ | | | __| \| __|
/ DE / \ | |__| _|| |) | _|
/________/ LE \ |____|___|___/|___| lede-project.org
\ \ DE /
\ LE \ / -----------------------------------------------------------
\ DE \ / Reboot (17.01-SNAPSHOT, r3107+7-f81eec11fa)
\________\/ -----------------------------------------------------------
root@lede:~#