• Stars
    star
    187
  • Rank 205,379 (Top 5 %)
  • Language
    C
  • Created over 8 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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...)

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