Carte Wifi et Bluetooth MT7630e

Présentation

La carte MEDIATEK MT7630e permet à la fois d'obtenir un accès Wifi et Bluetooth. Présente sur certains HP et Asus (Je possède un Asus K551LN), à l'heure où j'écris cet article (3/07/2014, Ubuntu 14.04 noyau 1.13) elle n'est pas encore intégrée dans Ubuntu par défaut. Nous verrons une méthode pour l'installer à partir des sources données par Mediatek.

Pré-requis

  • Disposer d'une connexion à Internet configurée et activée.
  • Etre sûr que l'on a bien la carte MT7630e. Pour le savoir lancer un
    lspci

    si vous voyez une ligne

    MEDIATEK Corp. MT7630e 802.11bgn Wireless Network Adapter

    c'est que vous possédez cette carte.

Installation à partir d'un script

Cette méthode est plus simple à mettre en œuvre. Si vous êtes un débutant c'est certainement cette méthode que vous devez privilégier.

Installation du Wifi

On commence par installer les outils nécessaires à l'installation :

sudo apt-get install git build-essential

On télécharge le code disponible sur github :

git clone https://github.com/neurobin/MT7630E.git
cd MT7630E/

On donne les permissions d'exécution:

chmod +x install test uninstall

Puis on lance le script d'installation qui s'occupe de tout :

sudo ./install

(il vous faudra renseigner votre mot de passe root)

Installation du Bluetooth

Avant d'installer le bluetooth, vous devez avoir installé le wifi avec la méthode ci-dessus

On commence par désactiver le secure boot qui bloque le bluetooth : redémarrer le PC, rentrer dans le mode "System setup" avant qu'ubuntu se lance, naviguer dans les onglets pour trouver le "Secure boot" et le passer en "Disabled", sauvegarder, quitter le mode "System setup" et lancer ubuntu.

On active le dépôt correspondant aux codes sources d'ubuntu à l'aide du gestionnaire de paquet (Modifier les sources)

On installe le paquet dkms :

sudo apt-get install dkms

On donne les permissions d'exécution:

cd MT7630E/
chmod +x bpatch

Puis on lance le script d'installation :

sudo ./bpatch

(il vous faudra renseigner votre mot de passe root)

Et voilà !

Réinstallation après mise à jour des paquets d'Ubuntu

Lorsque le noyau (kernel) évolue lors d'une mise à jour des paquets d'Ubuntu, le wifi et le bluetooth ne fonctionnent plus. Nous allons créer un script à lancer chaque fois que la connexion est perdue suite à une mise à jour.

Créer un fichier "wifi.sh" dans le dossier utilisateur "home/nom_d_utilisateur". Accédez aux propriétés du fichier (clic droit, propriétés), allez à l'onglet "Droits d'accès" et cochez "Est exécutable". Ouvrir le fichier "wifi.sh" avec un éditeur de texte (Gedit, kate) et copier les lignes suivantes :

cd MT7630E/
sudo ./uninstall
sudo ./bpatch -u
sudo make clean
sudo ./install
sudo ./bpatch

Pour lancer le script, lancer la commande suivante dans la console :

sudo ./wifi.sh

La réinstallation s'effectue ensuite automatiquement

Installation complète avec DKMS (moins automatisé)

Il est important de noter que cette méthode utilise DKMS et ainsi doit être renouvelée en partie à chaque changement de noyaux. Pour éviter ce problème préférez le script plus haut qui charge les modules avec insmod au démarrage.

Commencez par aller chercher les sources sur la page http://www.mediatek.com/en/downloads/mt7630-pcie/ (vous devez donner une adresse mail, mais vous pouvez mettre une adresse quelconque il n'y a aucune vérification d'email). Décompressez la et allez dans le dossier nouvellement créé en console.

Commencez par installer les paquets nécessaire à la compilation et à l'installation :

sudo apt-get install build-essential dkms

Installation du wifi

Lancez ensuite, comme spécifié dans le ReadMe :

sudo su
sudo cp firmware/Wi-FI/MT7650E234.bin /lib/firmware
cd rt2x00/
make clean
make

Pour vérifier que ça marche :

chmod +x load.sh
./load.sh

Si tout est fonctionnel vous voudrez certainement l'installer au démarrage. Pour cela la méthode la plus propre que j'ai trouvé est de passer par dkms (par contre je crois qu'il faut reproduire ces étapes quand on change de noyau… A confirmer, si c'est le cas je suis intéressé par une méthode plus propre) Commencez par revenir dans le dossier principal (celui que vous avez décompressé) :

cd ..

Puis copier rt2x00 dans un nouveau dossier portant le nom du noyau :

cp rt2x00 "rt2x00-$(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)" -r
cd "rt2x00-$(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)"

Puis créer dans ce dossier un fichier dkms.conf par exemple via

gedit dkms.conf

contenant

PACKAGE_NAME="rt2x00"
PACKAGE_VERSION="3.13"
AUTOINSTALL="yes"
OBSOLETE_BY=""
BUILD_EXCLUSIVE_KERNEL=""
POST_INSTALL=""
POST_REMOVE=""
 
BUILT_MODULE_NAME[0]="rt2x00lib"
DEST_MODULE_LOCATION[0]="/updates"
 
BUILT_MODULE_NAME[1]="rt2x00pci"
DEST_MODULE_LOCATION[1]="/updates"
 
BUILT_MODULE_NAME[2]="rt2x00mmio"
DEST_MODULE_LOCATION[2]="/updates" 
BUILT_MODULE_NAME[3]="rt2800lib"
DEST_MODULE_LOCATION[3]="/updates" 
BUILT_MODULE_NAME[4]="rt2800pci"
DEST_MODULE_LOCATION[4]="/updates"

Il ne reste plus qu'à copier le dossier dans le système et à mettre à jour le noyau :

cd ..
Cette note et les notes qui suivent pourront être supprimées après que la modification ait été testée par un autre utilisateur.— janove Le 04/01/2015, 15:16
La version initiale proposait d’enchaîner avec la ligne de code suivante: cp "rt2x00-$(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)" /usr/src/
Cette ligne a été remplacée par celle ci-dessous.
cp -r "rt2x00-$(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)" /usr/src/
cd /usr/src
sudo dkms add -m rt2x00 -v $(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)
sudo dkms build -m rt2x00 -v $(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)
sudo dkms install -m rt2x00 -v $(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1) --force

ainsi qu'à charger les modules au démarrage en rajoutant dans le fichier /etc/modules :

eeprom
eeprom_93cx6
crc-ccitt
cfg80211
mac80211
rt2x00lib
rt2x00pci
rt2x00mmio
rt2800lib

Redémarrer et c'est bon !

Installation du bluetooth

Le principe est semblable à ce que l'on a fait plus haut, il y a juste moins de modules à charger.

Lancez ensuite, comme spécifié dans le ReadMe :

sudo su
sudo cp ./firmware/BT/mt76x0.bin /lib/firmware
cd btloader/

Il y a cependant une petite modification à faire dans le code pour rendre le bluetooth fonctionnel. Il faut éditer le fichier mt76xx.c en rajoutant les lignes avec les astérisques (*, en les supprimant bien évidemment)

static struct usb_device_id mtk_bt_loader_tbl[] = {
    /* Mediatek MT7650 */
    { USB_DEVICE_AND_INTERFACE_INFO(0x0e8d, 0x7650, 0xe0, 0x01, 0x01) },
    { USB_DEVICE_AND_INTERFACE_INFO(0x0e8d, 0x7650, 0xff, 0xff, 0xff) },
    { USB_DEVICE_AND_INTERFACE_INFO(0x0e8d, 0x7630, 0xe0, 0x01, 0x01) },
    { USB_DEVICE_AND_INTERFACE_INFO(0x0e8d, 0x7630, 0xff, 0xff, 0xff) },
    { USB_DEVICE_AND_INTERFACE_INFO(0x0e8d, 0x763e, 0xe0, 0x01, 0x01) },
    { USB_DEVICE_AND_INTERFACE_INFO(0x0e8d, 0x763e, 0xff, 0xff, 0xff) },
    { USB_DEVICE_AND_INTERFACE_INFO(0x0489, 0xe069, 0xe0, 0x01, 0x01) }, ****************
    { USB_DEVICE_AND_INTERFACE_INFO(0x0489, 0xe069, 0xff, 0xff, 0xff) },  *****************
    /* Mediatek MT662 */
    { USB_DEVICE_AND_INTERFACE_INFO(0x0e8d, 0x7662, 0xe0, 0x01, 0x01) },
    { USB_DEVICE_AND_INTERFACE_INFO(0x0e8d, 0x7632, 0xe0, 0x01, 0x01) },
    { }     /* Terminating entry */
     };

Ensuite on reprend la procédure :

make clean
make

Pour vérifier que ça marche :

insmod mt76xx.ko

Si tout est fonctionnel vous voudrez certainement l'installer au démarrage. Pour cela la méthode la plus propre que j'ai trouvé est de passer par dkms (par contre je crois qu'il faut reproduire ces étapes quand on change de noyau… A confirmer, si c'est le cas je suis intéressé par une méthode plus propre) Commencez par revenir dans le dossier principal (celui que vous avez décompressé) :

cd ..

Puis copier btloader dans un nouveau dossier portant le nom du noyau :

cp btloader "btloader-$(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)" -r
cd "btloader-$(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)"

Puis créer dans ce dossier un fichier dkms.conf par exemple via

gedit dkms.conf

contenant

PACKAGE_NAME="btloader"
PACKAGE_VERSION="3.14"
CLEAN="make clean"
MAKE[0]="make all KVERSION=$kernelver"
BUILT_MODULE_NAME[0]="mt76xx"
DEST_MODULE_LOCATION[0]="/updates"
AUTOINSTALL="yes"

Il ne reste plus qu'à copier le dossier dans le système et à mettre à jour le noyau :

cd ..
cp "btloader-$(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)" /usr/src/
cd /usr/src
sudo dkms add -m btloader -v $(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)
sudo dkms build -m btloader -v $(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1)
sudo dkms install -m btloader -v $(uname -r | egrep -o "[0-9]*\.[0-9]*" | head -1) --force

ainsi qu'à charger les modules au démarrage en rajoutant dans le fichier /etc/modules :

mt76xx

Redémarrer et c'est bon, votre bluetooth est fonctionnel !

Sources

  • wifi_bt_mt7630e.txt
  • Dernière modification: Le 28/04/2018, 11:14
  • (modification externe)