Ubuntu – Drives for Ralink MT7601U Wireless Adapter

ralinkubuntu-driverswireless

The thing is, I really don't know what to do. I just installed Ubuntu. I have no internet connection now. I have a Ralink MT7601U Wireless Adapter. But it's not working.

lsusb detects it (I guess):

Bus 001 Device 060: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter

But nothing in that wifi icon. And also 'sudo lshw -C network' only shows Ethernet. Also in one of the post, I've read that Ubuntu 17.04 (which I have) contains it by default. If so why is it not working? Should I do something? By the way, the device was not plugged when installing Ubuntu. Is there a installing-driver-from-ubuntu-cd sort of thing??

Please help. I'm new to Ubuntu.

rfkill list all and sudo modprobe mt7601u returns nothing. The second one asked for password, though.

EDIT: So, I've managed to install driver from a source. Nowdmesg | grep mt76 gives 3 more lines at the beginning:

usbcore: registered new interface driver mt7601u
mt7601Usta: loading out-of-tree module taints kernel.
mt7601Usta: module verification failed: signature and/or required key missing - tainting kernel

Also iwconfig outputs:

ra0             Ralink STA

What should I do?

Best Answer

  • I've finally found a working solution for this problem. The answer is from GitHub

    • Download corresponding kernel source from kernel.org. For example: if you have 4.4.0-104-generic download version 4.4. You can check the current kernel version by running uname --kernel-release

    • From archive unpack just folder drivers/net/wireless/mediatek/mt7601u

    • Edit phy.c. Find function mt7601u_init_cal and comment out call mt7601u_mcu_calibrate(dev, MCU_CAL_RXIQ, 0); like in code 1 below

    • Find function mt7601u_phy_recalibrate_after_assoc and comment out call mt7601u_mcu_calibrate(dev, MCU_CAL_DPD, dev->curr_temp); like in code 2 below

    • Build module:

      make -C /lib/modules/$(uname -r)/build M=$(pwd) modules

    • Remove device

      sudo rmmod mt7601u sudo insmod ./mt7601u.ko

    • Insert device

    • Check there are no errors in dmesg and interface appeared in ip link, check connection stability.

    • To make change persistent till next kernel upgrade: backup original module and replace with compiled. To find out where is original module run modinfo mt7601u (view string filename: /lib/modules/_KERNEL_VERSION_/kernel/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko).

    I've tried this method on Ubuntu 16.04 with kernel 4.10. Working flawlessly...

    Code 1:

    // ret = mt7601u_mcu_calibrate(dev, MCU_CAL_RXIQ, 0); 
    // if (ret) 
    // return ret;
    // ret = mt7601u_mcu_calibrate(dev, MCU_CAL_DPD, dev->dpd_temp); 
    // if (ret) 
    // return ret;
    

    Code 2:

    void mt7601u_phy_recalibrate_after_assoc(struct mt7601u_dev *dev)
        { 
        // mt7601u_mcu_calibrate(dev, MCU_CAL_DPD, dev->curr_temp);
           mt7601u_rxdc_cal(dev); 
        }
    

    Hope it helps...

  • Related Question