Wifi n et centrino advanced

Pas de wifi

Impossible ou difficile de se connecter.

Matériel

Dell XPS, wifi centrino advanced, pas de désactivation possible dans le BIOS, pas de commutateur matériel sur le PC. La combinaison de touches Fn+F2 permet d'activer ou de désactiver Wifi et Bluetooth.

Système

Dual boot Seven et Ubuntu 12.04. Sous Seven, le wifi est fonctionnel y compris en n. La clé wifi est de type WPA2, parmi les plus sécurisées du moment.

Symptômes

Impossible ou difficile de se connecter

Voir ci-dessous…

La connexion à côté de la box se fait sans soucis, y compris en wifi n; mais dès que l' on éloigne le PC de la box, le signal disparaît et la connexion avec.

Mot de passe non mémorisé

Network manager voit bien les réseaux wifi présents. Mais le mot de passe n'est pas mémorisé, le système le demande toutes les 5 secondes.

Hypothèses

Niveau de cryptage

Avec un mot de passe faible et un mode de connexion moins rapide que le wifi n, la connexion est possible et réalisée par exemple avec freewifi.

La connexion en haute vitesse à une box ou mieux à un routeur wifi non sécurisé (ou avec clé faible) se fait sans soucis!!

Souci de box ?

Oui, mais lequel ?

Vitesse de la connexion ?

Le haut débit de données s'accomoderait mal des pilotes linux…pour le chipset wifi Intel. Le haut niveau de codage de la connexion (WPA2) serait incompatible avec les pilotes, et avec le haut débit.

802.11n et linux

Cette carte wifi Intel Centrino Advanced-N peut utiliser le protocole 802.11n (2.4 GHz ou 5 GHz et 200 Mbit/s jusqu'à 540 Mbit/s). Or le driver intel sous Linux gère mal ce protocole.

Vérifications

Est-ce que network-manager enregistre bien la clé wifi ?

Faire un clic droit sur network-manager ⇒ Modification des connexions ⇒ Sans fil ⇒ Modifier ⇒ Sécurité sans fil et regarder si le champ est rempli. Le champ reste vide.

Désactiver la connexion automatique

Le mot de passe administrateur est demandé au démarrage, ce qui déverrouille le trousseaux de clés, et permet de ne pas avoir à entrer le mot de passe wifi à chaque fois.

Solutions ?

Désactiver le wifi n

Le fichier de conf iwlwifi.conf demande lors du chargement du driver iwlwifi de désactiver le protocole 802.11n (et la carte repasse en 802.11g - protocole wifi “standard” à 54 Mbit/s). C'est ce qui fait que le wifi est censé fonctionner correctement.

  gksudo gedit /etc/modprobe.d/iwlwifi.conf

une page blanche s'ouvre, ajouter ceçi et enregistrer et quitter gedit.

 options iwlwifi 11n_disable=1

Cela ne fonctionne pas.

Modifier Network Interfaces

reseau_sans_fil_detecte_mais_impossible_d_obtenir_l_adresse_ip

   gksudo gedit /etc/network/interfaces

Voici le fichier:

auto lo
iface lo inet loopback

Ajouter le paragraphe suivant, où wlan0 est le nom de votre carte réseau sans fil.

auto wlan0
iface wlan0 inet dhcp

Enregistrer et fermer l'éditeur de texte.

Puis redémarrer le réseau avec cette commande:

  sudo /etc/init.d/networking restart

Cette solution n'a pas fonctionné non plus. Pas de réseau au redémarrage.

Pourquoi ?

A partir de la version 12.04, plus de réseau au démarrage, il est recommandé de changer de service de gestion réseau en “arrêtant” network-manager pour ré-activer networking :

 $ sudo service network-manager stop && sudo service networking start
 $ sudo update-rc.d network-manager remove
 $ sudo update-rc.d networking defaults

Cette manoeuvre n'a pas été suivie. Après reboot et relance de NetworkManager, ça ne marchait pas mieux, les entrées qui activent wlan0 dans /etc/network/interfaces sont commentées avec des # .

NetworkManager.conf

Désactiver NetworkManager

Dans /etc/NetworkManager/NetworkManager.conf, remplacer false par true.

Vous devrez configurer manuellement votre réseau en éditant le fichier interfaces de la carte réseau utilisée.

C'est le choix de Nicola Largo

sauvegarder la conf

  sudo cp /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.OLD

éditer NetworkManager.conf pour désactiver NM

  sudo vi /etc/NetworkManager/NetworkManager.conf

Vous obtenez cela :

[ifupdown]
managed=true

/usr/lib/pm-utils/power.d/wireless n'est pas vide mais un sudo gedit ne me donnait rien ?!

éditer interfaces

 sudo gedit /etc/network/interfaces

page debian d'aide sur la configuration réseau

Pas facile pour un débutant !

Un exemple simple donné par sorrodje sur le forum ubuntu. Il ne s'agit que de la connexion filaire. Il manque la wifi !

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

retour en arrière

   sudo cp /etc/NetworkManager/NetworkManager.conf.OLD /etc/NetworkManager/NetworkManager.conf
   sudo service networking restart

Réinitialiser le réseau

Procédure

    sudo service network-manager stop && sudo service networking restart && sudo service network-manager start

Cette commande n'a rien changé au souci.

Annexes

Commandes

De base

lspci

entré en console permet de connaître son matériel et la carte wifi apparaît en fin de sortie console.

iwconfig

Rechercher le nom de votre carte réseau sans fil iwconfig

lo        no wireless extensions.

wlan0     IEEE 802.11abgn  ESSID:"freebox_rev"  
          Mode:Managed  Frequency:2.467 GHz  Access Point: 00:24:D4:67:E5:24   
          Bit Rate=1 Mb/s   Tx-Power=15 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=37/70  Signal level=-73 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:57   Missed beacon:0

eth0      no wireless extensions.

Bit Rate

connexion_lente_a_cause_d_un_bit_rate_mal_configure Vérifiez le Bit Rate de la carte :

iwconfig

Si vous voyez Bit Rate=1Mb/s alors tapez

   sudo ifdown wlan0
   
   sudo iwconfig wlan0 rate 54M
   
   sudo ifup wlan0

(ou ra0 suivant le nom de votre interface)

Enfin, faites “iwconfig” pour vérifier qu'il vous met bien Bit Rate=54Mb/s . Voilà qui devrait aller mieux !

pour que ca reste permanent : Ajoutez dans /etc/rc.local (avant la ligne exit 0)

  ifconfig wlan0 up
   iwconfig wlan0 rate 54M

on redémarre et le tour est joué!

rfkill list

Donne la liste des interfaces réseau, et si elle sont activées matériellement et logiciellement.
 rfkill list
0: dell-wifi: Wireless LAN
	Soft blocked: no
	Hard blocked: no
1: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
7: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no

Gestion énergie

Power wireless

Désactiver la gestion et l'économie d'énergie par arrêt de la carte wifi.

gksudo gedit /etc/pm/power.d/wireless

une page blanche s'ouvre,ajouter ces 2 lignes :

    #!/bin/sh

    iwconfig wlan0 power off

Enregistrer et quitter gedit. Rendre le script exécutable avec sudo chmod +x /etc/pm/power.d/wireless

Je ne sais pas si le fait de désactiver sur la carte la gestion de l'énergie à une utilité quelconque dans le souci identifié. Le contenu du script qui peut être édité avec sudo gedit <chemin_du_fichier>

   /usr/lib/pm-utils/power.d/wireless
   

donne l'état des périphériques sans fil qui peuvent ou non être mis en veille.

liens

bizarreries

   /usr/lib/pm-utils/power.d/wireless

n'est pas vide mais un sudo gedit ne donne rien en mode graphique nautilus gksudo le contenu apparaît …

en mode graphique nautilus voici le contenu …

#!/bin/sh

. "${PM_FUNCTIONS}"

# See if we have the usual wireless tools.
# Do not just fail because not all cards require these.
which iwpriv >/dev/null 2>&1 && have_iwpriv="true"
which iwconfig >/dev/null 2>&1 && have_iwconfig="true"

# If only all the drivers did The Right Thing with iwconfig power.
# Too bad they do not.

get_wireless_params() {
    # $1 = interface 
    # $2 = on or off
    unset iwpriv iwconfig iwlevel
    
    # Don't do anything if we cannot find a driver for this iface.
    [ -L "/sys/class/net/$1/device/driver" ] || return 1
    # Skip if not a wireless card.
    [ -d "/sys/class/net/$1/wireless" ] || return 1
    # Also don't do anything if the device is disabled
    [ "$(cat /sys/class/net/$1/device/enable)" = "1" ] || return 1
    driver="$(readlink "/sys/class/net/$1/device/driver")"
    driver=${driver##*/}
    case $driver in
        ipw2100) iwpriv_ac="set_power 0"
            iwpriv_batt="set_power 5"
            iwconfig_ac="power on"
            iwconfig_batt="power on";;
        ipw3945)
            iwpriv_ac="set_power 6"
            iwpriv_batt="set_power 7";;
        iwl*) if [ -f "/sys/class/net/$1/device/power_level" ]; then
                 iwlevel_ac=0
                 iwlevel_batt=3
              else
                 iwconfig_ac="power off"
                 iwconfig_batt="power on"
              fi;;
        *) iwconfig_ac="power off"
           iwconfig_batt="power on";;
    esac
    case $2 in
        off) [ "$iwpriv_ac" ] && iwpriv="$iwpriv_ac"
            [ "$iwconfig_ac" ] && iwconfig="$iwconfig_ac"
            [ "$iwlevel_ac" ] && iwlevel="$iwlevel_ac";;
        on) [ "$iwpriv_batt" ] && iwpriv="$iwpriv_batt"
            [ "$iwconfig_batt" ] && iwconfig="$iwconfig_batt"
            [ "$iwlevel_batt" ] && iwlevel="$iwlevel_batt";;
    esac
    return 0
}

wireless_powersave() {
    for dev in /sys/class/net/*; do
        get_wireless_params "${dev##*/}" "$1" || continue
    ret=0
    printf "Turning powersave for %s %s..." "${dev##*/}" "$1"
    if [ "$have_iwconfig" = true -a "$iwconfig" ]; then
        iwconfig "${dev##*/}" $iwconfig || ret=1
    fi
        if [ "$have_iwpriv" = true -a "$iwpriv" ]; then
        iwpriv "${dev##*/}" $iwpriv || ret=1
    fi
        if [ "$iwlevel" ]; then
        echo "$iwlevel" > "$dev/device/power_level" || ret=1
    fi
    [ "$ret" -eq 0 ] && echo Done. || echo Failed.
    done
}

case $1 in
    true) wireless_powersave on ;;
    false) wireless_powersave off ;;
    *) exit $NA ;;
esac

exit 0

todo

modprobe: gestion des modules….

Liens

wifi_centrino_advanced_et_linux.txt · Dernière modification: 2013/06/08 17:04 (modification externe)
GNU Free Documentation License 1.3
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5