Skip to content

Trying to fix the MT7610U chipset driver by MediaTek so it's usable on modern Linux kernels and with nl80211/NetworkManager (and not completely breaking on old ones, maybe...)

xtknight/mt7610u-linksys-ae6000-wifi-fixes

Repository files navigation

mt7610u-linksys-ae6000-wifi-fixes

Trying to fix the MT7610U chipset driver by MediaTek so it's usable on modern Linux kernels and with nl80211/NetworkManager (and not completely breaking on old ones, maybe...).

Based on the driver from the HPRATH site (thank you!) http://hprath.com/2014/06/cisco-linksys-ae6000-ac580-media-tek-mt7610u-mt7630u-mt7650u-linux-x64-driver-patch/

Some of the issues, such as a WPA supplicant issue, are fixable by comparing MT7610U and MT7612U code from MediaTek.

Note

  • Regretfully I have moved and didn't bring this adapter with me, so I have not been able to handle the issues. So for now, I am only looking at pull requests as I can. The 'configless' branch contains a version that works without using the conf file but may not compile right now.
  • The good news is that 'master' branch should be working with kernel 4.7 now. Thank you for the pull request.

Features

  • Linux kernel 4.7 support
  • Works with 2.4/5GHz networks out of the box
  • Works with NetworkManager and nl80211 interface out of the box
  • Works with WPA2-Personal and WPA supplicant/NetworkManager without extra configuration
  • rmmod isn't locked while driver is running and clean-up is better (work in progress)

Building

  • sudo apt-get install build-essential linux-headers-$(uname -r)
  • make clean
  • make
  • sudo make install

Building with DKMS

$ sudo apt-get install dkms  # if you've already installed dkms, skip this step.
$ sudo cp -R . /usr/src/mt7610u_sta-1.0
$ sudo dkms add mt7610u_sta/1.0
$ sudo dkms build mt7610u_sta/1.0
$ sudo dkms install mt7610u_sta/1.0

ARMv7 platform notes (e.g. Raspberry PI)

On the latest Raspbian stretch lite you will need to install the kernel headers to get DKMS to build

sudo apt-get install raspberrypi-kernel-headers

On ARMv7 platforms, there could be a problem with loading module. You'll see something like that in your dmesg output:

raspberrypi kernel: [   11.825048] <-- ERROR in Alloc Bulk buffer for RxContext!
raspberrypi kernel: [   11.825112] ERROR mt7610u_sta:
raspberrypi kernel: [   11.825119] Failed to allocate memory - TxRxRing

Modify file /boot/boot.cmd:

Find the string setenv bootargs and add coherent_pool=4M in the end of the line.

Then run the command and reboot the device:

mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr

In dmesg output you should see an increased value of DMA atomic allocations:

[    0.439464] DMA: preallocated 4096 KiB pool for atomic coherent allocations

Devices recognized by module

  • {USB_DEVICE(0x148F,0x7610)}, /* MT7610U Ralink VID */
  • {USB_DEVICE(0x0E8D,0x7610)}, /* MT7610U MediaTek VID / Sabrent NTWLAC */
  • {USB_DEVICE(0x13B1,0x003E)}, /* Cisco Linksys AE6000 */
  • {USB_DEVICE(0x7392,0xA711)}, /* Edimax 7711ULC/7711MAC */
  • {USB_DEVICE(0x7392,0xB711)}, /* Elecom WDC-433SU2M */
  • {USB_DEVICE(0x148F,0x761A)}, /* TP-LINK Archer T2UH */
  • {USB_DEVICE(0x2357,0x010b)}, /* TP-LINK Archer T2UHP AC600 rev0.1 */
  • {USB_DEVICE(0x148F,0x760A)}, /* TP-LINK */
  • {USB_DEVICE(0x0B05,0x17D1)}, /* ASUS USB-AC51 */
  • {USB_DEVICE(0x0B05,0x17DB)}, /* ASUS USB-AC50 */
  • {USB_DEVICE(0x0DF6,0x0075)}, /* Edimax EW-7811UTC AC600 / Sitecom WLA-3100 */
  • {USB_DEVICE(0x2001,0x3D02)}, /* D-Link DWA-171 rev B1 */
  • {USB_DEVICE(0x0586,0x3425)}, /* ZyXEL NWD6505 */
  • {USB_DEVICE(0x07B8,0x7610)}, /* AboCom AU7212 */
  • {USB_DEVICE(0x04BB,0x0951)}, /* IO DATA WN-AC433UK */
  • {USB_DEVICE(0x057C,0x8502)}, /* AVM FRITZ!WLAN USB Stick AC 430 */
  • {USB_DEVICE(0x293C,0x5702)}, /* Comcast Xfinity KXW02AAA */
  • {USB_DEVICE(0x2019,0xAB31)}, /* Planex GW-450D/GW-450D-KATANA */
  • {USB_DEVICE(0x20F4,0x806B)}, /* TRENDnet TEW-806UBH AC600 */
  • {USB_DEVICE(0x7392,0xC711)}, /* Devolo Wifi Stick ac */

I have added all the devices from here, but it doesn't necessarily mean they will all work https://wikidevi.com/wiki/MediaTek_MT7610U

Major bugs fixed in original driver

If you have these issues, then this driver might fix the problem.

  • Keeps getting Disassociation with ReasonCode=1(Unspecified) while connecting to WPA2 AP
  • NetworkManager keeps asking for password even though password is correct
  • wpa_supplicant debug mode error: No wpa_ie set - cannot generate msg 2/4
  • Nothing works if /etc is on BTRFS (because DAT file could not be read)

TODO

  • Remove excessive logging
  • Allow operation without DAT file
  • Add other dev ids
  • Try to get AP mode working (huge project?)
  • Test other encryption modes like WEP, WPA2-Enterprise, etc.
  • Using -Dwext with wpa_supplicant seems to reveal a warning (WARN_ON(!bss) kernel 3.11 ~net/wireless/sme.c:658 __cfg80211_connect_result+0x24f/0x346) in the driver, which was probably there originally

Other

  • Please submit patches or let me know of anything missing or not working
  • I also don't know the code very well, but have been working on comparing MT7610U and MT7612U code to find out-of-date portions in the MT7610U driver

About

Trying to fix the MT7610U chipset driver by MediaTek so it's usable on modern Linux kernels and with nl80211/NetworkManager (and not completely breaking on old ones, maybe...)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published