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 (03/07/2014, Ubuntu 14.04 noyau 1.13) elle n'est pas encore intégrée dans Ubuntu par défaut (idem en 2018). Nous verrons une méthode pour l'installer à partir des sources données par Mediatek.
Depuis Ubuntu 20.04, cette puce WIFI est reconnue automatiquement, cependant certains soucis peuvent persister (ex: sortie de veille, Bluetooth. Constaté sur Ubuntu 22.04).
Attention, avant toute manipulation, vérifier que le secure boot est désactivé (voir desactiver secure boot). C'est nécessaire parce que depuis Ubuntu kernel 4.4.0-20, la configuration du noyau EFI_SECURE_BOOT_SIG_ENFORCE a été activée. Cela empêche de charger des modules tiers non signés si "UEFI Secure Boot" est activé.
lspci
si vous voyez une ligne
MEDIATEK Corp. MT7630e 802.11bgn Wireless Network Adapter
c'est que vous possédez cette carte.
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.
On commence par désactiver le secure boot qui bloque le wifi et 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.
Ensuite on installe 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)
Avant d'installer le bluetooth, vous devez avoir installé le wifi avec la méthode ci-dessus
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à !
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
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
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 ..
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 !
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 !
—- Contributeurs principaux : tobiasBora, Adarien, nom ou pseudo autre