Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Un superbe projet, malgré le nom bizarre (Crevette?!?)

Dans l’émission #98, Sandrine affirme que c’est plutôt simple de faire son propre Arduino/Genuino Uno avec quelques pièces et elle a tout à fait raison. J’ajouterais que c’est une activité très formatrice qui vous permet de mieux comprendre le microprocesseur ATMEGA328 de Atmel qui est au coeur du Arduino/Genuino Uno. Mieux encore, être en mesure de faire ce circuit vous même, vous donnera plus de flexibilité dans vos projets futurs.

Le circuit que je vous propose de réaliser dans ce tutoriel est appelé un Shrimp. Il vous permet de fabriquer l’équivalent d’un Arduino/Genuino Uno pour moins de 10$. Compte tenu du fait qu’un Arduino/Genuino Uno officiel coute autour de 20$ à 30$, c’est une activité qui est quand même avantageuse au niveau des coûts. Notez cependant que, comme Sandrine le mentionne dans émission #98, si vous voulez simplement vous procurer un Arduino/Genuino Uno à faible coût, vous n’arriverez pas à battre les clones qui se vendent pour ~5,00$ sur eBay.

Par ailleurs, un Shrimp est beaucoup plus qu’un simple circuit. En fait, c’est un super beau projet qui a pour but d’apprendre l’électronique aux gens qui le souhaitent! Je vous recommande fortement d’aller visiter le site web officiel, soit http://shrimping.it. Il est très bien fait, donne des instructions claires et propose pleins d’applications intéressantes!!

Circuit et bill of material (BOM)

Sur le site officiel du Shrimp, vous retrouverez 2 versions du circuit : la version minimale et la version protégée. Comme la version protégée est pratiquement aussi simple à monter que la version minimale, j’utilise toujours la version protégée.

Jetons un coup d’oeil au circuit à réaliser ainsi qu’aux pièces à se procurer…

Circuit Fritzing d'un Shrimp protégé
Télécharger le circuit Fritzing

Circuit KiCAD d'un Shrimp protégé
Télécharger le circuit KiCAD

BOM

Nom Quantité Prix
12 jumper wires 1 1,42$
Breadboard 400 contacts 1 4,35$
ATMEGA328 (avec bootloader du Uno) 1 5,02$
Cristal 16 Mhz 1 0,31$
Condensateur 10 uF (électrolythique) 1 0,14$
Condensateur 100 nF (céramique) 4 0,48$ (0,12$ ch)
Condensateur 22 pF (céramique) 2 0,18$ (0,09$ ch)
Résistance 10 k 1/4 W 1 0,08$
Bouton 1 0,15$
CP2102 1 1,83$

Note: Les prix des composants proviennent tous du site dipmicro, sauf le prix du CP2102 qui vient de eBay.

Le coût total pour 1 Shrimp est donc de 13,96$.

Trucs pour économiser

Bon, 13,96$ est moins cher qu’un Arduino/Genuino Uno officiel, mais ce n’est pas en dessous de 10$. En fait, ce n’est pas nécessairement facile de faire 1 seul Shrimp pour moins de 10$. Par contre, étant donné que le prix unitaire des composants peut diminuer drastiquement en fonction du nombre acheté, c’est plutôt facile de faire plusieurs Shrimps pour moins de 10$ chacun.

Voyons la liste d’achats que je propose :

Nom Nombre acheté Prix Prix unitaire
Breadboard 400 contacts + 65 jumper wires 4 15,00$ 3,75$
Breadboard 730 contacts 1 5,86$ 5,86$
ATMEGA328 (avec bootloader du Uno) 1 5,02$ 5,02$
ATMEGA328 (sans bootloader) 5 17,88$ 3,58$
Cristal 16 Mhz 20 3,51$ 0,18$
Condensateur 10 uF (électrolythique) 20 0,91$ 0,05$
Condensateur 100 nF (céramique) 50 1,59$ 0,03$
Condensateur 22 pF (céramique) 50 1,06$ 0,02$
Résistance 10 k 1/4 W 50 0,99$ 0,02$
Résistance 330 ohm 1/4 W 50 0,99$ 0,02$
Bouton 20 1,08$ 0,05$
DEL 5 mm 20 1,07$ 0,05$
CP2102 1 1,83$ 1,83$

Note: Les prix des composants proviennent tous du site dipmicro, sauf le prix du CP2102 qui vient de eBay.

En substituant les nouveaux prix unitaires au BOM proposés plus haut, le coût pour 1 Shrimp diminue maintenant à 8,06$.

Vous avez dû dépenser 56.79$, l’équivalent de 2-3 Arduino/Genuino Uno officiel, mais vous avez obtenu 6 Shrimps complets. En plus, il vous reste encore beaucoup de condensateurs, de résistances et de boutons! Aussi, plusieurs pièces sont réutilisables pour d’autres projets comme les breadboards, les jumper wires et le CP2102…

Par ailleurs, si vous magasinez bien vos pièces (eBay a souvent des meilleurs prix que dipmicro), vous serez probablement capable de diminuer davantage le coût de vos Shrimps. Par exemple, vous pouvez trouver des ATMEGA328 avec le bootloader du Uno pour ~2,00$ chacun sur eBay.

Aussi, si vous avez suivi mon tutoriel précédent sur les ESP8266, il est fort probable que vous ayez déjà en votre possession un FTDI232. Ce module peut être utilisé à la place du CP2102. Vous devez juste vous assurer que le jumper est bien sur la position « 5V » avant de programmer vos Shrimps avec celui-ci.

ATMEGA328 avec ou sans bootloader?

Pour fonctionner, un Shrimp doit absolument avoir le bootloader du Arduino/Genuino Uno de chargé sur son ATMEGA328. Or, si vous avez porté attention à la liste d’achats, je suggère d’acheter un seul ATMEGA328 avec un bootloader et tous les autres sans. Pourquoi?

Réponse : Parce que c’est moins cher. Ça permet d’économiser 1,44$ par puce.

Mais encore?

Réponse : Parce que le bootloader du Arduino/Genuino Uno peut être chargé dans un ATMEGA328 à partir d’un Arduino/Genuino Uno. Ceci est démontré sur ce site :

Ouin, mais si je veux faire un Shrimp, c’est peut-être parce que je n’ai pas d’Arduino/Genuino Uno. Non?

Réponse : C’est aussi possible de charger le bootloader du Arduino/Genuino Uno dans un ATMEGA328 à partir d’un Shrimp.

Ohhhh!!! Donc mon premier Shrimp peut servir à charger le bootloader du Arduino/Genuino Uno sur tous mes ATMEGA328 sans bootloader! Intéressant…

En fait, c’est dommage, mais cette procédure n’est pas expliquée directement sur le site officiel du Shrimp. Heureusement, en farfouillant, je suis parvenu à trouver comment faire.

Configuration sous Linux

La programmation d’un Shrimp se fait habituellement par avec l’IDE Arduino. Sous plusieurs distributions, le paquet se trouve dans les dépôts officiels sous le nom « arduino ». Utilisez votre gestionnaire de paquets préféré pour l’installer.

Aussi, pour avoir accès aux ressources matérielles sans être root, vous devez parfois être membre d’un ou plusieurs de ces groupes : « uucp » , « lock » et « dialout ». Ça dépend de votre distribution. Si c’est le cas, dans un terminal vous pouvez entrer la commande suivante (substituez votre nom d’utilisateur et le nom du ou des groupes souhaités) :

gpasswd -a votre_nom_d_utilisateur nom_d_un_groupe
gpasswd -a votre_nom_d_utilisateur nom_d_un_autre_groupe
...

Vous devez sortir de la session actuelle et revenir pour que ce changement soit appliqué.

Il se peut que vous ayez de la difficulté à programmer vos Shrimps sans être root malgré cette précaution. Dans ce cas, vous pouvez ajouter une règle udev.

Pour ce faire, branchez votre CP2102 dans un port usb. Puis, dans un terminal, entrez la commande lsusb. Vous verrez plusieurs lignes défiler dont une semblable à celle-ci :

Bus 002 Device 013: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

Prenez en note les 2 codes qui suivent le terme « ID ». Dans le cas présent, c’est « 10c4 » et « ea60 ».

Entrez ensuite la commande suivante :

sudo nano /etc/udev/rules.d/81-cp2102.rules

Puis, entrez le texte qui suit (substituez votre nom d’utilisateur) :

## 81-cp2102.rules
SUBSYSTEM=="usb", ATTR{idProduct}=="10c4", ATTRS{idVendor}=="ea60", MODE="0660", GROUP="votre_nom_d_utilisateur"

Télécharger la règle

Faites ctrl+o suivit de enter pour sauvegarder. Puis faites ctrl+x pour quitter l’éditeur de texte.

Vous remarquerez que le « idProduct » et le « idVendor » correspondent aux 2 codes que je vous avais fait prendre en note précédemment. Ceux-ci seront différents si vous utilisez un autre modèle de module usb/série (un FTDI232 par exemple).

Vous devez redémarrer votre ordinateur pour que la règle prenne fonction.

Après tout ça, vous devriez être en mesure de programmer vos Shrimps sans avoir à être root. Si ce n’est pas le cas, vous allez simplement devoir exécuter l’IDE Arduino en tant que root et vivre avec le fait que cette pratique est peu sécuritaire.

Au niveau de la configuration de l’IDE Arduino, lorsque vous l’ouvrez (avec le CP2102 branché) assurez-vous d’avoir sélectionné le bon port. C’est habituellement /dev/ttyUSB0. Pour vérifier, allez dans le menu Tools -> Port. Vous devez également avoir sélectionné la bonne plateforme, soit « Arduino/Genuino Uno ». Pour vérifier, allez dans le menu Tools -> Board.

Voilà, vous êtes maintenant prêts à charger votre premier programme sur votre premier Shrimp.

Circuit Shrimp-Optiloader

Si vous avez bien regardé la liste d’achats que j’ai proposée plus haut, vous avez remarqué que je suggérais d’acheter un breadboard avec 730 contactes, des résistances 330 ohm et des DEL. Vous allez maintenant comprendre pourquoi.

En fait, je vous propose de reproduire un circuit que j’utilise à l’occasion qui permet de charger le bootloader du Arduino/Genuino Uno sur une dizaine de ATMEGA328 en quelques minutes et de les tester par la suite. Pour ce faire, je suggère de procéder en 3 étapes :

  1. Réaliser un Shrimp avec une DEL attachée à la pin physique no. 14 du ATMEGA328 (pin 8 dans le code Arduino)
  2. Ajouter les pièces pour faire la programmation des puces et charger un programme nommé OptiLoader sur votre premier Shrimp
  3. Réaliser un second Shrimp avec une DEL attachée à la pin physique no. 14 du ATMEGA328 (pin 8 dans le code Arduino) pour tester les puces

Voyons maintenant le fameux circuit :

Circuit Fritzing du Shrimp-Optiloader
Télécharger le circuit Fritzing

Première étape

Réalisez votre premier Shrimp, soit le circuit du haut sans les jumper wire mauve, bleu, vert, gris et blanc. N’oubliez pas d’utiliser un ATMEGA328 qui possède déjà un bootloader. Aussi, les connexions rouge et noir du bas du breadboard doivent être présentes pour que le circuit fonctionne. Pour tester le Shrimp, créez d’abord un dossier nommé blink_mod sur votre ordinateur. Dans celui-ci, placez-y un fichier nommé blink_mod.ino contenant le code suivant :

// blink_mod.ino
int led = 8;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  delay(500);
}

Télécharger le code

Ouvrez ce fichier avec l’IDE Arduino, puis appuyez sur Verify, puis sur Upload.

Voilà. La DEL devrait maintenant clignoter.

Deuxième étape

Si tout a fonctionné comme prévu, ajoutez les pièces et connexions qui manquent pour faire la programmation des puces. Pour plus de détails, voici le schéma du circuit de programmation des puces :

Circuit KiCAD du Shrimp-Optiloader
Télécharger le circuit KiCAD

Le programme OptiLoader permet de charger le bootloader du Arduino/Genuino Uno sur un ATMEGA328. Vous pouvez le télécharger grâce à la commande suivante (Attention aux majuscules) :

git clone https://github.com/WestfW/OptiLoader.git optiLoader

Ouvrez le fichier optiLoader.ino avec l’IDE Arduino, appuyez sur Verify, puis sur Upload et sur Serial Monitor. Assurez-vous que la vitesse de communication est 19200 baud (voir dans le coins en bas à droite de la fenêtre de communication série). Après quelques secondes, vous devriez voir le message suivant :

OptiLoader Bootstrap programmer.
2011 by Bill Westfield (WestfW)

Target power on! ...
Starting Program Mode [OK]

Reading signature:950F
Searching for image...
  Found "optiboot_atmega328.hex" for atmega328P
  Start address at 7E00
  Total bytes read: 502

Setting fuses for programming
  Lock: 3F FFE000  Low: FF FFA000  High: DE FFA800  Ext: 5 FFA400

Programming bootloader: 512 bytes at 0x3F00
  Commit Page: 3F00:3F00
  Commit Page: 3F40:3F40
  Commit Page: 3F80:3F80
  Commit Page: 3FC0:3FC0

Restoring normal fuses
  Lock: 2F FFE000

Target power OFF!

Type 'G' or hit RESET for next chip

Le bootloader du Arduino/Genuino Uno devrait être chargé sur le ATMEGA328 qui se situe au milieu du breadboard. Vous pouvez maintenant le retirer et en placer un autre qui n’a pas encore été programmé. Entrez G (majuscule) dans la boite de texte en haut de la fenêtre de communication série et appuyez sur Send. Attendez que le nouveau ATMEGA328 soit programmé et recommencez avec toutes vos autres puces.

Troisième et dernière étape

Réalisez le Shrimp du bas. Déplacez le CP2102 sur celui-ci et charger le code blink_mod.ino. Si la lumière se met à clignoter, c’est que vous avez réalisé correctement le circuit et que vous avez bien chargé le bootloader sur le ATMEGA328.

Remplacez le ATMEGA328 par un autre non vérifié et recommencez le processus…

Voilà. Vous avez maintenant tous les outils pour produire des Shrimps à la pelletée. Félicitations!!

À cocktail, congelées, pannées, frites…

Faire un circuit qui permet de charger le bootloader du Arduino/Genuino Uno sur ATMEGA328 n’est peut-être pas le projet le plus excitant de la planète, mais c’est définitivement un projet pratique. Ça vous permet de choisir votre fournisseur de ATMEGA328 sans vous soucier du fait qu’un bootloader soit présent ou non.

Comme je l’ai mentionné dans l’introduction, si vous voulez vous amusez avec des projets plus intéressants, allez visiter le site officiel des Shrimps. Vous y trouverez plein de bonnes idées, dont, par exemple, des instructions pour faire votre propre clavier conductif. Si vous vous demandez ce que c’est, allez voir le site de Makey Makey

Bonus

Si vous voulez voir rapidement quelles pins physiques du ATMEGA328 correspondent aux numéros d’entrées/sorties du standard Arduino, allez sur le site suivant :

Vous y trouverez un PDF qui contient des étiquettes qui peuvent être collées directement sur un ATMEGA328. Celles-ci indiquent les numéros d’entrées/sorties du standard Arduino vis-à-vis les pins physiques de la puce.

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

La petite histoire…

C’est grâce à Bloguelinux que j’ai découvert les ESP8266. Par contre, ça n’a jamais été mentionné dans une émission. C’est un autre auditeur ou auditrice dont je ne me rappelle malheureusement plus le pseudonyme qui en a parlé dans la salle de chat (#bloguelinux sur Freenode) lors d’une émission live. Si vous avez l’occasion, venez participer sur IRC lors de la prochaine émission. Vous ne le regretterez pas!

ESP8266/NodeMCU, quecé ça?

Il existe plusieurs modèles d’ESP8266. Pour ma part, j’ai choisi le moins cher, soit la version ESP-01. C’est est un petit module de 25 mm X 15 mm qui comprend un microcontroller, une antenne Wifi et 2 entrée/sortie générales (GPIO). Ce qui est intéressant de ce dernier, c’est qu’il coute environ 3.78$ (ou 2.54€) sur ebay!!! Pour sa part, NodeMCU est un firmware open source (Licence MIT) qui peut être chargé sur un ESP8266 et qui peut le contrôler grâce à des scripts LUA.

Pourquoi ce tutoriel?

La raison est bien exprimée par la diatribe de @Pat_bloguelinux sur les forums dans l’émission #90. En fait, je me suis heurté à plein de ressources contradictoires et/ou périmées sur Internet. La communauté des ESP8266 est déjà limitée et plusieurs outils de programmations de ce module fonctionnent sous Windows seulement. À un certain point dans mon exploration, j’étais vraiment découragé par le manque d’information et l’instabilité du module. Heureusement, j’ai fini par trouver toutes les solutions à mes problèmes et, si vous suivez mes instructions, vous devriez pouvoir charger NodeMCU sur votre ESP8266 sans trop de soucis!

Prérequis

Logiciels

Je ne vais pas passer à travers l’installation de ces logiciels. Pour moi, sous Arch Linux, GNU Screen, Nmap et ARP-scan se trouvaient dans les dépôts de base tandis qu’Esptool et ESPlorer se trouvaient dans l’AUR. Cherchez dans les dépôts de votre distribution. Si vous ne les trouvez pas tous, les instructions pour l’installation de ces logiciels sont sur leurs sites web respectifs. Un point à noter est que Esptool est un script Python 2. Or, Arch Linux utilise Python 3 de base. Il se peut donc que, pour le faire fonctionnez, vous deviez aller changer la première ligne du script /usr/bin/esptool.py pour #!/usr/bin/env python2.

Composants

  • 1 ESP8266 ESP-01
  • 1 FTDI232
  • 1 câble microUSB vers USB
  • 1 condensateur électrolytique 330 μC ou 470 μC
  • 1 condensateur en céramique 100 nF
  • Plusieurs jumper cables (mâle-mâle, mâle-femelle, femelle-femelle)
  • 2 résistances 330 Ω ou 220 Ω
  • 2 DEL

Le FTDI232 sert à programmer l’ESP8266. Vous en avez besoin d’un seul pour programmer autant de ESP8266 que vous le voulez. Vous pouvez même vous en servir pour programmer d’autres modules comme un Trinket Pro. Notez que pour programmer l’ESP8266, votre FTDI doit supporter le 3.3V. Vous pouvez vous procurer un FTDI sur eBay pour environ 2.63$ (1.77€).

Circuit pour le chargement de NodeMCU

Voici un schéma Fritzing qui montre le circuit à réaliser :

ESP8266-FTDI-texte

Télécharger le circuit
Note : La pièce Fritzing de l’ESP8266 vient du compte github de ydonnelly.

Liste des connexions :

FTDI ESP8266
VCC VCC, CHPD
GND GND, GPIO0
TX RX
RX TX

Ce circuit est essentiellement le même que celui décrit sur ces 2 sites :

La différence c’est que j’ai ajouté un breadboard, car c’est la manière la plus pratique de faire les connexions avec des jumper cables. En plus, ça permet d’ajouter facilement les condensateurs de découplage. Ces derniers sont super importants, car l’ESP8266 est très sensible à la stabilité de son alimentation. Plus de détails sur ce point sont disponibles sur ce site :

Vous remarquerez peut-être que votre FTDI est différent de celui du schéma Fritzing. Ne vous fiez donc pas à l’ordre des connexions, mais plutôt à leur nom. Aussi, il se peut qu’il y ait un jumper sur votre FTDI qui permet de sélectionner entre 5V et 3.3V. C’était le cas sur le mien. Choisissez 3.3V, sinon vous risquez de briser l’ESP8266. La photo ci-dessous montre comment faire :

FTDI-connecteur-texte

Autre point super important : Pour pouvoir charger NodeMCU, la pin GPIO0 doit absolument être mise à la terre (GND).

Flash! Oh! Ohhh!

J’ai tenté de compiler et charger NodeMCU à partir du code source… J’ai obtenu un succès, disons… limité. Je vous suggère donc une solution plus simple, soit d’utiliser directement un fichier binaire. Vous pouvez le trouver ici :

La différence entre la version “integer” et “float”, c’est principalement que la version “float” prend un petit peu plus de mémoire. La différence est tellement minime que je vous suggère d’utiliser la version “float”.

Lorsque le fichier binaire est téléchargé, branchez le FTDI dans votre ordinateur avec le câble USB. Entrez ensuite la commande suivante :

dmesg | grep tty | tail -n 1

Notez sur quel “tty” votre FDTI est branché. Dans mon cas, c’est /dev/ttyUSB0.

Ensuite, à partir d’un terminal, naviguez jusqu’au fichier binaire et entrez la commande suivante :

sudo esptool.py --port /dev/ttyUSB0  write_flash 0x00000 Chemin_du_firmware_NodeMCU.bin

Source : Flashing the NodeMCU firmware on the ESP8266 (Linux) – Guide

Attendez que le firmware soit complètement chargé. Et voilà! Vous avez maintenant un ESP8266 avec NodeMCU.

Vérification

Pour vérifier si NodeMCU fonctionne, débranchez le câble USB et retirez la mise à la terre du GPIO0. Cette dernière étape est très importante, car si vous oubliez de débrancher GPIO0, votre ESP8266 va vous sembler gelé. Le schéma Fritzing suivant vous montre le circuit :

ESP8266-verification-texte
Télécharger le circuit

Liste des connexions :

FTDI ESP8266
VCC VCC, CHPD
GND GND, GPIO0
TX RX
RX TX

Rebranché le câble USB et, dans un terminal, entrez cette commande :

sudo screen /dev/ttyUSB0 9600

Source : How to Make an Interactive TCP Server with NodeMCU on the ESP8266

Eh oui! J’en avais aucune idée auparavant, mais GNU Screen peut servir pour établir une communication série (9600 baud dans le cas présent)! Le contenu du terminal devrait se vider et un curseur apparaitra. Si tout va bien, vous devriez être en mesure d’enter la commande suivante :

node.restart()

Si vous n’arrivez pas à entrer cette commande, vérifiez que vous avez bien débranché GPIO0. Sinon, essayez de recharger NodeMCU.

Si votre commande a fonctionné, vous devriez voir le message d’accueil de NodeMCU ci-dessous (le paquet de symboles bizarres est tout à fait normal).

NodeMCU-accueil

Pour sortir de GNU Screen, faites Ctrl+a, attendez une demi-seconde, appuyez sur k et confirmez que vous voulez bien fermer la session en appuyant sur y.

C’est maintenant que le fun commence!

Premier script LUA

Pour débuter votre exploration de l’ESP8266, je vous propose de commencer par le “hello world!” des circuits électroniques, c’est-à-dire de contrôler des DEL. Ceci peut être accompli grâce au circuit suivant :

ESP8266-FTDI-DEL-texte
Télécharger le circuit

Pour programmer et charger le code LUA, vous pouvez utiliser ESPlorer. Pour le démarrer, entrez cette commande :

sudo esplorer

Cette fenêtre apparaitra.

ESPlorer-texte

Suivez maintenant ces instructions :

  1. Dans le menu “View”, sélectionnez “Show Log” (ou faire Ctrl+l)
  2. Vérifiez que “/dev/ttyUSB0” est bien sélectionné
  3. Appuyez sur “Open”
  4. Appuyez sur “Reset” (même chose que node.restart())
  5. Entrez votre script LUA (voir plus bas)
  6. Sauvegardez le script sous le nom “init.lua” (utilisez ce nom, c’est important.)
  7. Le script sera chargé automatiquement sur l’ESP8266. Attendez la fin du chargement.
  8. Appuyez sur “Reload”
  9. Vérifiez que “init.lua” est bien présent
  10. Appuyez sur “Reset”
  11. Appuyez sur “Close”

Le code ci-dessous crée un serveur web qui dessert une page web où se trouvent 4 boutons qui permettent d’allumer ou d’éteindre les DEL. N’oubliez pas de changer le nom du réseau et le mot de passe du réseau pour les vôtres.

wifi.setmode(wifi.STATION)
wifi.sta.config("NOM_DU_RESEAU","MOT_DE_PASSE_DU_RESEAU")
print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
    conn:on("receive", function(client,request)
        local buf = "";
        local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
        if(method == nil)then
            _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
        end
        local _GET = {}
        if (vars ~= nil)then
            for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
                _GET[k] = v
            end
        end
        buf = buf.."<h1>ESP8266 - Serveur web</h1>";
        buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>MARCHE</button></a>&nbsp;<a href=\"?pin=OFF1\"><button>ARRET</button></a></p>";
        buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>MARCHE</button></a>&nbsp;<a href=\"?pin=OFF2\"><button>ARRET</button></a></p>";
        local _on,_off = "",""
        if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.HIGH);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "ON2")then
              gpio.write(led2, gpio.HIGH);
        elseif(_GET.pin == "OFF2")then
              gpio.write(led2, gpio.LOW);
        end
        client:send(buf);
        client:close();
        collectgarbage();
    end)
end)

Télécharger le code
Source : ESP8266 Web Server Tutorial

Pour accéder à cette page, dans un terminal, entrez :

sudo arp-scan --localnet | grep Espressif
ou encore
sudo nmap -sn 192.168.1.0/24 | grep -B 2 Espressif

L’une ou l’autre de ces commandes vous donnera l’adresse IP et l’adresse MAC de votre ESP8266. Entrez l’adresse IP dans le navigateur de votre choix et vous aurez accès à la page suivante :

Serveur-web

Super n’est-ce pas? Vous pouvez vous amuser à allumer et à éteindre les DEL à partir de cette page web comme bon vous semble. Si vous voulez éviter de chercher l’adresse IP de votre ESP8266 à chaque fois que vous le débranchez, utilisez l’adresse MAC pour donner un IP statique à votre ESP8266 sur votre router.

Laissez aller votre créativité!!

Ce petit tutoriel devrait vous donner une base suffisante pour que vous puissiez créer plein de dispositifs contrôlables à partir votre ordinateur ou votre téléphone cellulaire! Pensez à toutes les possibilités si vous alimentez votre ESP8266 avec des piles et si vous changez les DEL par des moteurs ou des relais… Par ailleurs, plutôt que d’utiliser les GPIOs en sortie, vous pouvez les utiliser en entrée et vous faire un petit système d’alarme…

Bon geekage!

Bonus

Pour ne pas oublier quand sera la prochaine émission live de Bloguelinux, entrez la commande suivante dans un terminal :

fun () { curl -s www.bloguelinux.ca | grep "localize_time_orig" | awk -F '[<>]' '{ print "Prochaine émission live : " $3 "\nProchain Aprèscast : " $15 }'; }; PROMPT_COMMAND="fun"

Maintenant, tant que vous ne fermez pas le terminal, à chaque fois que vous entrerez une commande (ex. : ls), la date et l’heure de la prochaine émission et du prochain Aprèscast s’afficheront.

 

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

 

Bon alors.. la dernière fois que j’ai écrit un billet dans bloguelinux.ca, c’était le 22 octobre 2011 soit il y a 3 ans et 7 mois. Il faut dire que depuis l’arrivée de notre podcast, j’ai pu communiquer de vive voix ce que je voulais exprimer concernant mes bidouillages techniques. Mais cette fois-ci, considérant la complexité de ce que je veux démontrer, j’ai préféré écrire un billet décrivant la marche à suivre dans ses moindres détails.

Cela faisait littéralement des mois que je procrastinais à accomplir ceci. Jusqu’à il y a quelques jours, dès que mon serveur démarrait, le client OpenVPN démarrait automatiquement avec sa configuration par défaut. L’avantage de faire ceci est que tout le traffic réseau entrant et sortant de mon serveur CentOS est encrypté mais par contre mon serveur devient isolé dû à la connexion OpenVPN. Donc, il n’est pas possible de créer une règle sur mon routeur pour me permettre d’accèder à mon serveur de l’extérieur via SSH ou HTTP (en fait je peux très bien créer la règle mais elle ne permettra pas d’accéder à mon serveur). Et la seule raison pourquoi j’ai configuré OpenVPN ainsi est pour mon client Bittorrent, c’est en fait le seul traffic réseau que je désire voir obligatoirement encrypté.

Il y a tout prêt d’un an, j’ai fait des recherches pour trouver un façon de configurer OpenVPN et Transmission (mon client Bittorrent) pour que seulement le contenu de Transmission passe par OpenVPN, en faisant ceci, mon serveur redeviendrait accessible de l’extérieur. J’ai trouvé plusieurs articles et billets sur divers blog et forums qui expliquaient la marche à suivre mais plusieurs d’entres-eux semblaient se contredire et utilisaient des méthodes relativement différentes (qui sans doute fonctionnaient pour les auteurs). Une autre chose qui m’intimidait est que presque toutes ces méthodes demandaient l’utilisation de Netfilter/iptables. iptables a toujours été intimidant pour moi et je ne crois pas que je serais un jour vraiment à l’aise à utiliser cette commande en toute confiance.

J’abaisse mon chapeau bien bas pour le sérieux coup de pouce que Sandrine m’a donné afin de finalement faire fonctionner ceci. Elle avait déjà trouvé un billet de blog expliquant la marche à suivre, l’a adapté selon ses besoins et l’a fait fonctionner dans son environnement il y a plus de 6 mois. Tout ce que je fais ici est de documenter en détails les étapes que j’ai suivi pour arriver au même résultat que Sandrine (la seule différence étant que j’utilise CentOS et elle Debian).

Quelques détails avant d’entrer dans le vif du sujet. J’utilise les services de Private Internet Access (https://www.privateinternetaccess.com) pour mon accès VPN et je suis satisfait de leurs services depuis que je suis avec eux. Je ne peux que vous les recommander (Patrick en est aussi très satisfait, Sandrine est avec ProXPN, un autre excellent fournisseur de service VPN) . De plus, veuillez prendre note que cette marche à suivre est basée sur CentOS 6.6 (c’est ce que je roule sur mon serveur) que j’ai configuré avec une adresse IP statique. Puisqu’il s’agit de CentOS qui utilise SELinux et qui est activé par défaut, il faut s’assurer de le désactiver pour que cette marche à suivre fonctionne (j’ai passé 4 jours à sacrer avant de réaliser que j’avais oublié de le désactiver). Finalement, il y probablement 87 façons différentes d’arriver au même résultat (j’exagère un peu…) mais c’est de cette façon que je l’ai configuré sur mon serveur.

Une fois votre CentOS démarré et fonctionnel (configuré avec une adresse IP fixe et un compte d’utilisateur autre que root), vous êtes prêt à commencer:

Désactivé SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

Changer « net.ipv4.ip_forward = 0 » pour « net.ipv4.ip_forward = 1 »

sed -i 's/net\.ipv4\.ip_forward = 0/net\.ipv4\.ip_forward = 1/' /etc/sysctl.conf

Ajouter une nouvelle entrée dans le fichier de table de routage « rt_tables »

echo 1 VPN >> /etc/iproute2/rt_tables

Redémarrer CentOS


Créer une nouvelle interface locale avec l’adresse IP 192.168.0.1 Note importante: Si vous utilisez déjà le sous-réseau 192.168.0.x dans votre environnement, changez 192.168.0.1 pour autre chose, par exemple: 10.0.0.1 et remplacez 192.168.0.1 par 10.0.0.1 dans les scripts « up.sh » et « down.sh » que vous verrez plus tard.
Créer un nouveau fichier /etc/sysconfig/network-scripts/ifcfg-lo:1 avec le contenu suivant

DEVICE=lo:1 IPADDR=192.168.0.1 NETMASK=255.255.255.255 ONBOOT=yes NAME=loopback

Installer openvpn

yum install -y openvpn

Télécharger les fichiers de configuration de Private Internet Access

wget https://www.privateinternetaccess.com/openvpn/openvpn.zip

Extraire le fichier openvpn.zip
Déplacer ca.crt et crl.pem dans /etc/openvpn
Créer un répertoire « locations » sous /etc/openvpn

mkdir /etc/openvpn/locations

Déplacer tous les fichiers *.ovpn du fichier openvpn.zip dans /etc/openvpn/locations
Créer un lien symbolique (symlink) du fichier ovpn que vous désirez utiliser pour votre connexion OpenVPN

ln -s /etc/openvpn/locations/France.ovpn /etc/openvpn/client.conf

Voici le contenu du fichier /etc/openvpn/client.conf

client dev tun proto udp # La prochaine ligne sera différente selon le fichier ovpn choisi remote france.privateinternetaccess.com 1194 resolv-retry infinite nobind persist-key persist-tun ca /etc/openvpn/ca.crt tls-client remote-cert-tls server auth-user-pass /etc/openvpn/login.txt auth-nocache comp-lzo verb 1 reneg-sec 0 keepalive 10 60 crl-verify /etc/openvpn/crl.pem # Les lignes qui suivent changent le comportement de OpenVPN script-security 2 up /etc/openvpn/client/up.sh down /etc/openvpn/client/down.sh route-nopull route-method exe route-delay 1 10 route-metric 512 route 0.0.0.0 0.0.0.0

Créer un fichier « login.txt » dans /etc/openvpn avec votre nom d’utilisateur sur la première ligne et votre mot de passe sur la deuxième (Il s’agit ici de votre nom d’utlisateur et mot de passe qui vous a été donné par votre founisseur VPN).

Changer les permissions (mode) du fichier login.txt

chmod 600 /etc/openvpn/login.txt

Créer un répertoire client sous /etc/openvpn

mkdir /etc/openvpn/client

Créer les 3 fichiers suivants dans /etc/openvpn/client
up.sh

#!/bin/sh # This script enables policy routing after the tunnel interface is brought up # Policy routing is used to make sure response packets go through the tunnel interface # This is mandatory when your ISP has setup anti-spoofing filters # Create SERVICES chain in iptables /sbin/iptables -N SERVICES # Add a default route via tun0 into the VPN routing table /sbin/ip route add default dev tun0 table VPN # Pass traffic from lo:1 (192.168.0.1) to the VPN routing table, using policy routing ("ip rule" commands) /sbin/ip rule add from 192.168.0.1/32 table VPN # Pass traffic from tun0 IP address to the VPN routing table /sbin/ip rule add from $4/32 table VPN #On ajoute les règles iptables pour faire le NAT # Source NAT and destination NAT rules to make sure the incoming and ougoing packets on 192.168.0.1 are $ /sbin/iptables -A PREROUTING -t nat -i tun0 -p tcp --dport 1194 -j DNAT --to 192.168.0.1 /sbin/iptables -A PREROUTING -t nat -i tun0 -p udp --dport 1194 -j DNAT --to 192.168.0.1 /sbin/iptables -A POSTROUTING -t nat -o tun0 -j MASQUERADE # Allow session continuation traffic /sbin/iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT # Allow Bittorrent traffic via tun0 /sbin/iptables -A SERVICES -p tcp --dport 6061 -j ACCEPT # rTorrent random range /sbin/iptables -A SERVICES -p udp --dport 6061 -j ACCEPT # DHT # Disallow BitTorrent traffic via eth0 - Just to be extra safe... /sbin/iptables -A FORWARD -s 192.168.0.1/32 -o eth0 -j DROP #Démarrage de transmission /sbin/service transmission-daemon restart

down.sh

#!/bin/sh #This script disables policy routing before the tunnel interface is brought down /sbin/service transmission-daemon stop #On efface les règles iptables ajoutées /sbin/iptables -D PREROUTING -t nat -i tun0 -p tcp --dport 1194 -j DNAT --to 192.168.0.1 /sbin/iptables -D PREROUTING -t nat -i tun0 -p udp --dport 1194 -j DNAT --to 192.168.0.1 /sbin/iptables -D POSTROUTING -t nat -o tun0 -j MASQUERADE /sbin/iptables -D INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -D SERVICES -p tcp --dport 6061 -j ACCEPT # rTorrent random range /sbin/iptables -D SERVICES -p udp --dport 6061 -j ACCEPT # DHT /sbin/iptables -D FORWARD -s 192.168.0.1/32 -o eth0 -j DROP # Flush all iptables rules /sbin/iptables -F # Delete SERVICES iptables chain /sbin/iptables -X SERVICES # Remove rule for tun0 IP address /sbin/ip rule del from $4/32 table VPN # Remove rule for the secondary loopback IP address (192.168.0.1) /sbin/ip rule del from 192.168.0.1/32 table VPN # Remove the default route via tun0 from the IPRED routing table /sbin/ip route del default dev tun0 table VPN

watchdog_openvpn.sh (ce script surveille si OpenVPN a cessé de fonctionner et le redémarre au besoin)

#!/bin/bash while [ 1 ] do test1=`ip addr show tun0 | grep inet | awk '{print $2}' | cut -d/ -f1` REGEX="^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" if [[ $test1 =~ $REGEX ]]; then #OK sleep 300 else #Not OK /etc/init.d/openvpn restart 1>>/dev/null 2>>/dev/null sleep 60 fi done

Donner les permissions (mode) rwx—— (700) à ces 3 nouveaux fichiers

chmod 700 /etc/openvpn/client/*

Ajouter la ligne ci-dessous (avant la dernière ligne) au fichier rc.local pour faire démarrer watchdog_openvpn.sh au démarrage

/etc/openvpn/client/watchdog_openvpn.sh&

Afin d’installer le client Bittorrent Transmission à partir de paquet RPM, vous devez activez le repo EPEL

yum install epel-release yum -y upgrade

Si la première de ces 2 dernières commandes vous donne une erreur roulez les commandes suivantes

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm sudo rpm -Uvh epel-release-6*.rpm yum -y upgrade

Installer Transmission et Transmission Daemon (version avec interface de Web)

yum -y install transmission transmission-daemon

Créer le fichier de configuration « settings.json » pour Transmission Daemon avec le contenu ci-dessous sous /var/lib/transmission/.config/transmission/

{ "alt-speed-down": 50, "alt-speed-enabled": false, "alt-speed-time-begin": 540, "alt-speed-time-day": 127, "alt-speed-time-enabled": false, "alt-speed-time-end": 1020, "alt-speed-up": 50, "bind-address-ipv4": "192.168.0.1", "bind-address-ipv6": "fe80::", "blocklist-enabled": false, "dht-enabled": true, "download-dir": "/home/transmission/downloads", "download-limit": 100, "download-limit-enabled": 0, "encryption": 1, "incomplete-dir": "home/transmission/incomplete", "incomplete-dir-enabled": true, "lazy-bitfield-enabled": true, "lpd-enabled": false, "max-peers-global": 200, "message-level": 2, "open-file-limit": 32, "peer-limit-global": 240, "peer-limit-per-torrent": 60, "peer-port": 6061, "peer-port-random-high": 65535, "peer-port-random-low": 49152, "peer-port-random-on-start": false, "peer-socket-tos": 0, "pex-enabled": true, "port-forwarding-enabled": false, "preallocation": 1, "proxy": "", "proxy-auth-enabled": false, "proxy-auth-password": "", "proxy-auth-username": "", "proxy-enabled": false, "proxy-port": 80, "proxy-type": 0, "ratio-limit": 2.0000, "ratio-limit-enabled": false, "rename-partial-files": true, "rpc-authentication-required": true, "rpc-bind-address": "0.0.0.0", "rpc-enabled": true, "rpc-password": "MOT DE PASSE POUR LE CONTRÔLE DISTANT", "rpc-port": 9091, "rpc-username": "LOGIN POUR LE LOGIN DISTANT", "rpc-whitelist": "127.0.0.1", "rpc-whitelist-enabled": false, "script-torrent-done-enabled": false, "script-torrent-done-filename": "", "speed-limit-down": 100, "speed-limit-down-enabled": false, "speed-limit-up": 100, "speed-limit-up-enabled": false, "start-added-torrents": true, "trash-original-torrent-files": false, "umask": 18, "upload-limit": 100, "upload-limit-enabled": 0, "upload-slots-per-torrent": 14 }

Modifier lignes rpc-password et rpc-username selon vos préférences.

Créer 3 répertoires pour Transmission

mkdir -p /home/transmission/{incomplete,downloads}

Modifier les permissions de ce répertoire tel qu’indiqué

chmod -R 770 /home/transmission

Assigner le groupe « users » à ces répertoires

chgrp -R users /home/transmission

Si ce n’est déjà fait, ajouter le groupe « users » à votre compte d’utilisateur

gpasswd -a "votre nom d'utilisateur" users

Configurer le service openvpn pour qu’il démarre automatiquement lors du démarrage de CentOS

chkconfig openvpn on

Redémarrer CentOS


 

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

J’utilise depuis un certain temps sous Linux, le logiciel commercial Antidote 8 comme correcteur pour tous mes textes. Mais depuis le passage de l’ordinateur de ma femme à SolydX, qui est basé sur Debian testing, Antidote 8 a cessé de fonctionner en me générant des erreurs de segmentation.

Après plusieurs recherches sur Internet, je suis tombé sur article qui mentionnait que le problème provenait de Antidote 8 lui-même qui ne reconnaît pas certaines versions du noyau (kernel) de Linux. Selon l’article, Antidote 8 serait codé statiquement (hard coded) pour reconnaître des versions du noyau (kernel) ayant une numérotation du genre 3.13.4 et SolydXK retourne le numéro sous la forme de 3.13-4 ce qui fait planter Antidote 8.

J’ai donc continué mes recherches sur Internet à savoir s’il y aurait une solution pour présenter un numéro de noyau (kernel) Linux différent, mais seulement pour certaines applications spécifiques.
Finalement j’ai trouvé un solution qui c’est avérée assez simple : Il s’agit d’installer un petit script (fake-uname.so) qui change temporaire la version du noyau (kernel) Linux dans une variable d’environnement et de modifier le script appelant de Antidote 8 pour utiliser cette variable d’environnement.

Dans tous les exemples ci-dessous, remplacez le 32 par 64 si vous utilisez une version 64 bits

1. Mettre le script en place :

wget https://mail.gnome.org/archives/evolution-list/2003-December/txtBEWSVk2eft.txt -O /tmp/uname.c

1. Ajouter des fonctionnalités au script :

sed -i '1i#define _GNU_SOURCE' /tmp/uname.c

2. Compiler

sudo gcc -shared -fPIC -ldl /tmp/uname.c -o /opt/Druide/Antidote8/Programmes32/fake-uname.so

3. Prendre une copie du script de démarrage original

sudo cp /opt/Druide/Antidote8/Programmes32/Antidote8 /opt/Druide/Antidote8/Programmes32/Antidote8.back

4. Intégrer

Editer le script de démarrage de Antidote 8 avec votre éditeur préféré

sudo vi /opt/Druide/Antidote8/Programmes32/Antidote8.
Insérer les deux lignes suivante au tout début du script

export LD_PRELOAD=/opt/Druide/Antidote8/Programmes32/fake-uname.so export RELEASE=$(uname -r | sed 's/^\(...\)/\1.0-antidote-fix/g')
Vous devriez maintenant être en mesure d'utiliser Antidote 8. Nul besoin de redémarrer votre ordinateur ou de fermer votre session, voyons, c'est Linux!

Mise à jour de Antidote 8

Antidote 8 ne vous permettra pas d’effectuer une mise à jour du logiciel si le script appelant a été modifié. Donc vous devez remettre la copie originale en place avant de procéder à une mise à jour

sudo cp /opt/Druide/Antidote8/Programmes32/Antidote8.back /opt/Druide/Antidote8/Programmes32/Antidote8

Effectuer la mise à jour de Antidote 8 normalement et ensuite insérez à nouveau les deux ligne dans le script de démarrage de Antidote 8 selon votre distribution (32 ou 64 bits) tel que spécifié à l’étape 4.

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Un des défis face à l’utilisation de Linux avec un notebook est l’utilisation des connexions à votre serveur de fichiers (Samba) ou d’autres types (FTP, SSH, etc) et plus spécifiquement si vous utilisez votre notebook hors des confins de votre réseau local. Si vous ajoutez vos connexion utilisant un mécanisme permanent, tel que le fichier « fstab » (pour que vos connexions s’effectue de façon automatique lors du démarrage de votre notebook), lorsque vous serez déconnecté de votre réseau local, « fstab » ne réussira pas à trouver votre serveur Samba, vous recevrez donc une erreur et la période de démarrage sera plus longue.

Afin de palier à ce problème agaçant, je vous recommande d’utiliser AutoFS pour gérer vos connexions à des services/serveurs externes puisque ce processus effectuera les connexions seulement que si vous tenter d’accéder au répertoire servant de « mount point ».

Il est vrai que Gnome et KDE (ainsi que d’autres « window managers ») offrent des gestionnaires de fichiers avec un mécanisme nommé « virtual filesystem » (VFS) qui peuvent « monter » à peu près n’importe quoi (SMB, FTP, SSH, et quelques autres). Par contre il s’agit encore d’un processus non-automatisés et sous Gnome par exemple, les « mount points » se retrouvent sous « /home/votre nom d’utilisateur/.gvfs » ce qui n’est pas très intuitif.

De plus, pour ceux qui préfèrent les « window managers » et/ou gestionnaires de fichiers minimalistes n’offrant aucun support pour VFS, AutoFS demeure une excellente solution.

Ils existent bien sûr plusieurs alternatives à AutoFS mais j’ai arrêté mes recherches lorsque j’ai découvert AutoFS à cause de sa simplicité et sa polyvalence (AutoFS est complêtement indépendant du type d’environnements graphiques que vous utilisez et peu bien sûr fonctionner dans le bon vieux « shell »).

Archlinux ont une excellente page wiki decrivant en détail, la marche à suivre pour configurer et utiliser AutoFS, allez y jeter un coup d’oeil…

https://wiki.archlinux.org/index.php/Autofs

Pour ce qui est de la configuration de AutoFS sous Ubuntu, la page wiki semble trop complexe à mon avis, si je réussi à trouver la temps, je vais tenter de configurer AutoFS sur Ubuntu et je vous ferez part de mon expérience dans un autre article.

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit

Bonjour tout le monde,

Ceci est un problème bizarre qui m’a forcé à faire plusieurs recherches avant de trouver la solution. En fait il s’agit d’un problème de lenteur sur certains sites Internet sécurisés avec SSL comme par exemple celui de la Caisse Populaire Desjardins. C’est ma femme qui m’a fait part du problème et au début j’y croyais plus ou moins mais après plusieurs tests, il y avait effectivement un problème de lenteur très évident et au point de fermer la fenêtre du navigateur en croyant que celui-ci ne fonctionne plus. Je tiens à préciser que le problème n’était pas causé par le site de la Caisse Populaire Desjardins et qu’il est utilisé à titre indicatif seulement.

Pour empirer la situation, je ne réussissait pas répliquer le problème sur mon ordinateur avec la version 11.04  de Ubuntu et non plus avec mon mini portable avec la version 10.10 de Ubuntu (la même version que l’ordinateur de ma femme). La seule différence entre mon mini portable et l’ordinateur de ma femme est que le mini portable est une installation vierge et celui de femme est une mise à jour (upgrade) de la version 10.04 LTS.

Après plusieurs recherches, j’ai trouvé qu’il s’agit d’un problème de la version 10.10 de Ubuntu qui n’implemente pas correctement de tcp window scaling, mais seulement dans le cas d’une mise à jour d’une version inférieure (upgrade). Vous pouvez facilement solutionner ce problème en désactivant le tcp window scaling avec les commandes suivantes dans un terminal:

sudo -i

Inscrivez votre mot de passe afin de prendre les droits en root et puis ensuite

echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

Maintenant il faut tester la connexion sur le site qui est à l’origine du problème le lenteur. Si tout fonctionne correctement, il faut rendre la configuration permanente pour ne plus être modifiée par des mises à jour futures.

echo "net.ipv4.tcp_window_scaling = 0" >> /etc/sysctl.conf

cette commande ajoute la ligne net.ipv4.tcp_window_scaling = 0 à la fin du fichier /etc/sysctl.conf et le tcp window scaling sera donc désactivé par défaut.

Fermez votre terminal et le tour est joué.

Laissez-moi savoir si ce petit truc règle le problème pour vous!

 

 

Merci de partager...Share on Google+Tweet about this on TwitterShare on FacebookEmail this to someoneShare on Reddit