Show Posts
Pages: 1 2 [3] 4 5 6
31  International / Français / Re: WR703N + VinciDuino on: October 29, 2012, 03:31:15 am
Je retranscris en Français, le message que j'ai posté dans le forum OpenWrt:

Il y a définitivement un bug dans le bloc hardware USB de l'AR9331.

J'ai effectué un simple test avec une Arduino Duemilanove ou une Vinciduino en faisant tourner bitlash avec le simple script suivant sur l'Arduino:

Code:
function toggle13 {d13 = !d13;print i;i = i + 1;}
function startup {pinmode(13,1); run toggle13,1000;}

...c'est-à-dire, faire clignoter la LED toutes les secondes, en affichant un compteur monotonique incrémenté à la même cadence sur l'UART à travers l'USB.

Côté TP-LINK TL-WR703N, j'ai juste mis le module driver correspondant au chip USB de l'Arduino (ftdi_sio + usbserial en tant que /dev/ttyUSB0 pour la Duemilanove, cdc_acm en tant que /dev/ttyACM0 pour la Vinciduino), et l'émulateur de terminal simple de BusyBox "microcom" ("microcom -s 57600 /dev/ttyUSB0" pour la Duemilanove, "microcom -s 57600 /dev/ttyACM0" pour la Vinciduino).

La communication plante après un temps variable (allant de quelques minutes à quelques heures), mis en évidence par la LED TX de l'Arduino restant allumée en permanence. L'Arduino continue de fonctionner, car la LED d13 continue de flasher tranquillement toutes les seconds.

Même si vous sortez de microcom, de votre session, ou supprimez/réinsérez le module driver, la communication avec la carte Arduino ne redémarre pas. La seule solution pour remettre les choses en état de marche est de couper le jus de l'Arduino. Si celle-ci est alimentée par l'USB, cela se fait simplement en tapant les commandes :

Code:
echo 0 > /sys/classes/gpio/gpio8/value
echo 1 > /sys/classes/gpio/gpio8/value

J'ai constaté que si vous insérez un hub USB passif comme celui décrit dans ce topic, vous pouvez effectuer le même test pendant plus de 10 heures sans problème... Vous pouvez même faire tourner LES DEUX cartes Arduino en même temps sans problème !

De tout ceci, nous pouvons tirer les conclusions suivantes :
  • l'Arduino tourne comme un coucou suisse smiley
  • ce n'est pas un problème d'alimentation, car j'ai pu faire tourner le hub passif USB + les 2 cartes Arduino en même temps
  • ce n'est pas un problème logiciel applicatif du côté du TP-LINK TL-WR703N, car le logiciel est exactement le même dans les deux cas
  • si c'est un problème logiciel, c'est un problème de très bas niveau lié aux différences de timing/protocole entre les configurations directe/à travers le hub, mais pas dans le driver USB lui-même, car cela se produit de la même façon dans le driver ftdi_sio + usbserial et le driver  cdc_acm, donc cela se passe danas les accès bas-niveau interruptions/accès aux registres/DMA, etc.
  • plus probablement, il s'agit d'un bug dans le bloc hardware USB smiley-sad

Cette dernière conclusion confirme seulement que le bloc USB à l'intérieur de l'AR9331 n'est pas très bon, car j'avais déjà constaté que l'AR9331 n'était pas capable de gérer les périphériques USB low-speed comme un simple clavier ou une souris, mais que cela fonctionne à travers un hub USB passif.

La solution: TOUJOURS insérer un hub passif, comme la "Pieuvre", qui intègre un chip hub USB GL850G en boîtier SSOP28. Notez que certains modèles semblables extérieurement, contiennent une puce directement soudée sur le PCB et noyée dans le silicone au lieu du boîtier SSOP28. Ce n'est pas important si vous utilisez le hub tel quel, mais c'est un problème si vous voulez dés-souder le chip pour un  hack... Le hub complet est à peu près au même prix que le chip seul, mais vous avez des câbles et des connecteurs USB, un boîtier plastique réutilisable et un PCB avec un quartz en rab smiley

Le fait que le son USB marche et pas les ports série USB n'est pas lié aux endpoints différents, mais est peut-être lié aux types de transactions USB : pour les communications série, des transactions "bulk" sans erreurs sont utilisées avec détection d'erreurs et ré-essais, car une transmission fiable est requise, alors que les données de son (ou de vidéo) utilisent des transactions "isochronous" qui ne garantissent pas une transmissions sans erreur, car normalement ce type de données peut contenir quelques glitches sans que cela ne soit perçu.

C'est juste une supposition, mais étant donnée la nature aléatoire du bug, il semble qu'il y ait un problème lorsqu'une erreur de transmission survient dans le mécanisme de ré-essais, présent seulement dans les transactions "bulk". Cela pourrait être confirmé en insérant de manière TRANSPARENTE un analyseur de protocole USB entre la carte Arduino et le routeur TP-LINK TL-WR703N .
32  International / Français / Re: WR703N + VinciDuino on: October 15, 2012, 04:02:07 pm
Bon, voici l'idée de base :



En l’occurrence, le schéma de la VinciDuino dans le contour du capot bleu du WR703N  smiley-eek

Non, les coins ne sont pas en arcs de cercle, mais en arcs d'ellipse ! C'est un peu au chausse-pied, mais les connecteurs pour les shields rentrent à peu près  smiley-roll-sweat

Je voudrais aussi intégrer un GL850G (chip Hub USB 4 ports), comme sur la carte d'extension de Kean.

Côté design, j'ai envie de cacher les composants à l'intérieur du boîtier du WR703N et de faire un joli dessin en "dithering" sur le dessus, un peu comme cela :

33  International / Français / Re: WR703N + VinciDuino on: October 15, 2012, 02:25:15 am
Youpie !
34  International / Français / Re: WR703N + VinciDuino... la suite on: October 14, 2012, 05:02:21 pm
Petites corrections dans le schéma et le PCB, comme expliqué ici.

J'ai surtout pris le multimètre et testé les vias internes pour savoir où ils allaient : résultat, il n'yen a plus qu'un seul qui résiste, et le schéma est pratiquement complet !

Bon, maintenant je vais pouvoir me remettre sérieusement sur la partie Arduino  smiley-mr-green
35  International / Français / Re: WR703N + VinciDuino... la suite on: October 13, 2012, 12:52:35 pm
Merci Jean-François!

Je disais donc: voici enfin le schéma du TL-WR703N reconstitué presque intégralement :



 smiley-sweat

Le schéma n'est pas complet, car il est basé uniquement sur l'observation des couches externes. Les marqueurs 0-9/A-Q encerclés dans le schéma sont des vias qui vont vers les couches internes, et ils correspondent aux étiquettes sur les routages PCBs dessus/dessous. Si quelqu'un veux participer, c'est possible smiley-wink

Mais tel quel, le schéma est déjà très intéressant. En se servant du cadre de localisation externe du schéma, on voit :
  • qu'il y a de nombreuses broches inutilisées sur l'AR9331, mais que toutes ne sont pas des GPIOs. Certaines on une fonction dédiée, comme la seconde interface RF connectée à GND dans la zone G4, ou les ports Ethernet additionnels dans la zone D4
  • qu'il y a des GPIOs inutilisées qui le sont sur d'autres modèles TP-Link (MR3020) dans la zone D5, mais qu'elles ne sont pas accessibles car localisées sous le chip AR9331
  • que les seules GPIOs disponibles sont celles que nous connaissons déjà: celles en E3 : GPIO11 (RESET_SW), GPIO7, GPIO6 (LDO, qui est en fait !USB_OC pour l'indicateur de sur-courant USB), GPIO29, GPIO8 (USB_POWER) et GPIO27 (LED3); celles localisées en G4-5: GPIO28, GPIO13 to GPIO17, GPIO0, GPIO1 et bien sûr les pads de l'UART LVTTL TP_IN/TP_OUT
  • que la plupart de ces GPIOs sont connectées à GND ou VCC par des résistances de pull-up/pull-down, et qu'elles sont utilisées au démarrage comme switch de configuration, et qu'on ne peut donc les mettre dans l'état opposé, au moins pendant cette phase initiale. C'est pourquoi j'ai tenté de le faire et regardé si le WR703N bootait toujours smiley-razz

C'est le deuxième endroit où on peut encore découvrir des choses intéressantes : en lisant les sources du noyau modifié par Atheros, on trouve des indications qui laissent à penser qu'il est possible :
  • de booter sur le bus MDIO, peut-être aussi depuis l'USB... Le démarrage en USB en mode DFU permettrait de récupérer un WR703N "brické", par exemple
  • d'overclocker le quartz 25 MHz à 40 MHz
  • de mettre l'USB en mode host ou device
  • de booter soit normalement depuis le SPI, soit depuis une ROM interne (boot USB ?)
  • de choisir une SDRAM SDR/DDR1/DDR2

Mais en regardant attentivement le schéma, il y a des choses qui sont d'ores et déjà possibles :
  • on peut souder une antenne en enlevant J1 et en soudant l'antenne côté chip avec le gros pad de masse juste à côté pour le blindage
  • en mettant un gros pâté de soudure à la place de R113 qui n'est pas montée, on court-circuite le switch d'alimentation et de protection en sur-courant USB, permettant ainsi d'alimenter le WR703N par le port USB hôte
  • en enlevant R65/R68, on accède aux paires Ethernet 1/2 et 4/5 pour alimenter le WR703N en PoE
  • en désactivant l'USB dans le noyau et en pilotant le signal USB_POWER en tant que GPIO, on peut alimenter qqchose connecté sur le port USB hôte avec VBUS/GND, comme un relais "solid state" pour piloter une charge alimentée par le 220 V...

Bref, il y a de quoi s'amuser !
36  International / Français / Re: test on: October 13, 2012, 05:17:05 am
Je ne peux pas modifier mon dernier post, je n'y ai pas accès  smiley-fat

Et puis l'image est toute petite: 671 x 461 pixels, 8 KB !

En fait, j'ai ce problème depuis mon post du 5 octobre, qui contenait juste du texte et un smiley : j'ai eu un crash du serveur arduino.cc juste au moment où il est passé, et depuis, c'est le bazar !

Je suis sûr que c'est encore le modo qui censure  smiley-lol
37  International / Français / Re: test on: October 13, 2012, 04:33:58 am
Pareil quand je suis connecté sous mon pseudo! Par contre, ça marche bien en tant qu'anonyme ?!?

Je l'ai signalé à Jean-François.
38  International / Français / Re: test on: October 12, 2012, 05:03:08 pm
Tada !

Voici enfin le schéma du TL-WR703N reconstitué presque intégralement (il manque les couches internes, ce sont les repères ronds dans le schéma et sur le PCB) :



 smiley-sweat
39  International / Français / Re: Vinciduino : Bug sur le 3V3 => Problème avec shield Ethernet on: October 06, 2012, 07:56:44 am
Merci Barbudor !

Il fallait le trouver !

Je vais faire gaffe sur ma Vinciduino.
40  International / Français / test on: October 05, 2012, 03:10:41 pm
Merci à tous pour les compliments  smiley-red

Maintenant, mon but est d'extraire du PCB la "netlist" pour dans un premier temps créer le schéma avec tous les composants utilisés mais sans "fil" dessiné pour matérialiser les liaisons entre les pattes, puis de placer les composants  et dessiner les fils qui relient toutes les pattes reliées logiquement entre elles.

Je devrais alors (aux pistes présentes dans les couches de PCB internes près, mais a priori, il n'y en a pas beaucoup), pouvoir recréer le schéma complet du TL-WR703N !!!
41  International / Français / Re: WR703N + VinciDuino on: October 05, 2012, 02:46:08 pm
Bonsoir à tous !

Je pensais peut-être rajouter une section "How?"  smiley-mr-green

J'ai utilisé les images en haute résolution du PCB nu prises par Kean.

Les photos ont été prises avec un APN 8 Mpx, soit 2.8 Mpx en X ou en Y. Sachant que le PCB fait 4,7 cm x 4,7 cm ou un peu moins de 2 pouces x 2 pouces, cela fait pas loin de 1.5 Mpx/pouce, bien mieux que ce que l'on peut espérer avec on scanner à plat à 1200 x 2400 dpi...

Bon, après, le problème, c'est que l'image n'est pas parfaite : il y a un effet de perspective (les bords du PCB ne sont pas // entre eux et encore moins // avec les bords de l'image), il faut donc corriger les 2 images (dessus/dessous du PCB) avec un programme genre PS ou Gimp avec la fonction idoine.

Ensuite, l'image n'a pas forcément des pixels "carrés", et son échelle en X et Y est a priori inconnue... Il faut donc trouver un repère de dimensions connues en X et Y, ici le circuit U1 (AR9331) ou U2 (SDRAM). Avoir un composants avec beaucoup de pattes et plutôt gros est important, car l'image n'est peut-être pas non plus avec une échelle constante partout (phénomène de type "barrique" lié à la lentille en mode macro). Il faut donc mettre à l'échelle séparément en X et en Y pour retrouver des pixels "carrés" et contrôler que c'est le cas dans un maximum d'endroits dans l'image, toujours en se basant sur des dimensions de composants connus.

Une fois ceci réalisé, il faut aligner le dessus/dessous pour que les trous, vias et le contour du PCB coïncident. J'utilise le mode "déformation de la marionnette" de PS avec les 2 images placées sur 2 couches avec de la transparence. Ce mode permet de placer des aiguilles et de les déplacer pour déformer localement une couche/l'autre. On commence par les 4 coins, puis on rajoute des aiguilles entre lorsqu'il y en a besoin, jusqu'à obtenir la superposition parfaite.

Il faut ensuite lancer EagleCAD (le logiciel de CAO électronique utilisé) et créer un fichier de PCB contenant un des composants présents sur la carte (de préférence un gros...), que l'on prend dans une bibliothèque existante ou que l'on crée à demeure. La création des composants est une opération longue et pénible si on n'a pas trop l'habitude. Avec un peu d'entraînement, cela devient presque facile  smiley-sweat

Il faut alors mettre le PCB EagleCAD en plein écran et en transparence pour mettre à l'échelle les images pour que cela corresponde parfaitement avec les composants EagleCAD. Pour cela, j'utilise sous XP l'utilitaire Glass2K pour rendre les fenêtres plus ou moins transparentes. Il faut s'arranger pour que que la taille de l'image bitmap à une échelle simple (comme 25%), corresponde à la taille du PCB EagleCAD en plein écran. Si on règle le facteur de zoom d'EaglCAD sur 2, on peut alors zoomer l'image à 50%/100%/200% et le PCB EagleCAD presque simultanément pour voir les détails.

Enfin, il faut créer, puis placer tous les composants précisément, puis recréer toutes les pistes entre... Dernière touche, créer les plans de masse et d'alimentation, en créant au passage des "classes" de pistes qui ont des tolérances d'espacement/plans plus ou moins importantes (les pistes "RF" sons plus éloignées des plans de masses que les simples pistes) : c'est alors automatiquement géré par EagleCAD.

C'est quand même beaucoup de boulot  smiley
42  International / Français / Re: WR703N + VinciDuino on: October 04, 2012, 04:20:19 pm
Pour ceux qui se demandaient où j'étais passé, voici la réponse :



Pour les détails, veuillez consulter http://squonk42.github.com/TL-WR703N/ (pardon, c'est en Anglais).
43  International / Français / Re: WR703N + VinciDuino on: September 22, 2012, 03:27:54 pm
Merci pour les photos hi-res du PCB  smiley-cool
44  International / Français / Re: WR703N + VinciDuino on: September 22, 2012, 06:01:25 am
Oui, parfois une formation d'écailler peut servir smiley

Sinon, voici les différences entre le MR3020 et le WR703N :
  • il est agréé CE/FCC
  • il est distribué à l'export et donc aussi en France
  • il a 4 LEDs en plus
  • il a un interrupteur à glissière en plus
  • le bouton RESET en replacé par le bouton/LED WPS
  • il a 2 antennes intégrées, dont une seule est utilisée (celle au coin)
  • le connecteur RJ45 SMT blindé avec découpe du PCB est remplacé par un RJ45 non blindé traversant (?!?)
  • l'UART est accessible par un connecteur non monté au pas de 2.54 mm très facile à souder  smiley
  • il est plus gros (6,7 cm x 7, 4 cm x 2,2 cm au lieu de 5,7 cm x 5,7 cm x 1,9 cm)
  • il est plus cher (30,03 € au lieu de 16,73 € sur eBay), si quelqu'un a un plan moins cher, je suis preneur !

Sinon côté électronique et logiciel, les 2 appareils sont très semblables.
45  International / Français / Re: WR703N + VinciDuino on: September 14, 2012, 03:08:31 pm
Scanné ? Pour faire une photo de carte sans ombres je ne vois que çà comme solution smiley-wink
Merci, je vais arrêter de me bousiller les yeux.
Non, avec reflex APN 5 MPX avec éclairage fort par le dessus. Etant donnée la faible hauteur des composants, les ombres ne sont pas trop visibles. On arrive à avoir 1000 dpi avec une bonne profondeur de champ, ce qui n'est pas le cas avec un scanner à plat, même si avec les scanners modernes (pas comme le mien !), la résolution est supérieure.

Barbudor, pour ne pas abimer tes beaux yeux smiley-lol, voici des photos du PCB nu auxquelles j'ai contribué, cette fois-ci avec un reflex APN 8 MPX avec 1600 dpi:
http://www.kean.com.au/oshw/WR703N/teardown/

Je suis assez silencieux en ce moment car je prépare une surprise, et je ne dirais qu'une chose : faites chauffer EagleCAD smiley-zipper

Je pense que tu as inversé U5 et U6 dans ta description.
Heu, non ?

U5 est bien un convertisseur DC/DC 5V/3.3V avec diode Schottky intégrée et sa self à noyau ferrite L14 juste à côté, et U6 est bien un switch d'alimentation USB, placé sous le connecteur d'alim microUSB.
Pages: 1 2 [3] 4 5 6