MediaTek MT7610U


 * MediaTek MT7610U (USB 2.0) - 802.11abgn+ac 1x1:1 (433Mbps)
 * 802.11abgn/ac 1T1R 2.4/5GHz USB chip (WIP: mt7610u)

Automatically generated tables
 total devices

USB ID
USB IDs of all MT7650 based devices within Elecom's drivers ( 5.01.05.0000, 2013-07-01 ) are...

Default (MediaTek/Ralink VID)

 * 148f:6530 (MT6370/RT6370)
 * 148f:6570 (MT6570/RT6570)
 * 148f:7601 (MT7601U) TP-LINK TL-WN727N v4
 * 148f:760a (MT7601U)
 * 148f:760b (MT7601U) 360 WiFi Dongle
 * 148f:760c (MT7601U)
 * 148f:760d (MT7601U)
 * 148f:7610 (MT7610U Ralink VID)
 * 0e8d:7610 (MT7610U MediaTek VID/Sabrent NTWLAC)
 * 0e8d:760a (MT7601U)
 * 0e8d:760b (MT7601U)
 * 0e8d:7630 (MT7630U)
 * 0e8d:7650 (MT7650U)

Vendor specific

 * 04bb:0951 - I-O DATA WN-AC433UK
 * 057c:8502 - AVM FRITZ!WLAN USB Stick AC 430
 * 0586:3425 - ZyXEL NWD6505
 * 07b8:7610 - AboCom AU7212
 * 0b05:17d1 - ASUS USB-AC51
 * 0b05:17db - ASUS USB-AC50
 * 0df6:0075 - Sitecom WLA-3100/Edimax EW-7811UTC (AC600)
 * 13b1:003e - Linksys AE6000
 * 148f:760a - TP-LINK TL-WDN5200 ?
 * 148f:761a - TP-LINK Archer T2UH
 * 2357:0105 - TP-LINK Archer T1U
 * 2357:010b - TP-LINK Archer T2UHP (AC600 rev 0.1)
 * 2001:3d02 - D-Link DWA-171 rev B1
 * 2019:ab31 - Planex GW-450D/Planex GW-450D-KATANA
 * 20f4:806b - TRENDnet TEW-806UBH (AC600)
 * 293c:5702 - Comcast Xfinity KXW02AAA
 * 7392:a711 - Edimax EW-7711ULC/Edimax EW-7711MAC
 * 7392:b711 - Elecom WDC-433SU2M (Edimax)
 * 7392:c711 - devolo Wifi Stick ac (5G only) (Edimax)

Architecture
For the purposes of writing drivers, there are a lot of similarities to the MT7601U, and the RT28xx series in general;
 * This is why the OEM drivers make so many references to the RT2860. Much work can be saved in writing a driver
 * by using existing code to communicate with related chipsets, especially when talking to the MCU and MAC.

Differences from MediaTek MT7601U
The same method (and code) that is used for an MT7601U can be shared for: The firmware uploaded MUST be firmware specifically for the MT7610U.
 * USB communication (register access / DMA etc)
 * Bootstrapping firmware upload
 * ASIC and MAC initialisation
 * Trying to upload firmware for the MT7601U will not work.

The firmware freely available with the sha1sum of [f48eb7211d9f0304198c3a5896997bbb31e6cac2] is known
 * to work for the MT7610U, so would be a good baseline to use for writing an initial driver.

Baseband Processor
(Mainly from an attempt to add support to the mainline linux kernel MT7601u driver across
 * a weekend using only GPL sources of information)

The most significant difference between the two chipsets is in the [Baseband processor] (BBP).
 * This is unsurprising with the MT7601U only being for the 2.4GHz band on 802.11n vs MT7610U adding support for 802.11ac.
 * The registers of the BBP in the MT7610U are 32 bits wide, not 8 bits wide.

This means the BBP register read and write functions need to be entirely replaced in the linux rt7601u driver
 * (which both uses an older BBP register access method, and makes assumptions that the registers are 8 bits wide,
 * meaning even the check to see if the BBP is accessible will fail as-is).

The first BBP register (0x2000 + 0x0) contains the BBP version. If you can do a USB read of 0x2000 and get
 * back the version (0xf000f200 in the chip I have available to test on) rather than 0xffffffff or 0x00000000,
 * the BBP is woken up enough to program.

MAC registers
For initial startup, the MAC registers are close enough to those of the MT7601U that they mostly will work unchanged.
 * Rather than MT beacon registers there are four. The first two are set the same on both chipsets.

The second two are immediately after the first two in register space, and set to the values below: * { MT_BCN_OFFSET(0),    0x18100800 } * { MT_BCN_OFFSET(1),    0x38302820 } * { MT_BCN_OFFSET(2),    0x58504840 } * { MT_BCN_OFFSET(3),    0x78706860 }