WR703N + VinciDuino

Squonk42:
...
C'est quand même beaucoup de boulot :slight_smile:

Merci pour avoir détaillé ta manip
J'imagine facilement le temps passé sur les "points de détails"

en tous cas et pour ce qui me concerne , respect pour le "boulot" 8)

Merci Jean-François!

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

:sweat_smile:

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 :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 :stuck_out_tongue:

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 !

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 :grin:

Topic réparé... j'essaye de récupérer les messages en vadrouille XD

Youpie !

Bon, voici l'idée de base :

En l’occurrence, le schéma de la VinciDuino dans le contour du capot bleu du WR703N :astonished:

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 :cold_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 :

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:

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 :

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 :slight_smile:
  • 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 :frowning:

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 :slight_smile:

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 .

Lorsque je lance upgrade firmware et aprés un chargement j'ai le message "upgrade failed"

je précise que mon wr703n v1.6 a un firmware dd-wrt de pré-installé.

Comment faire, merci.

De ce que je sais, dd-wrt utilise un partitionnement de la Flash spécifique, alors qu'OpenWrt utilise le même que le firmware d'origine.

Il faut donc remettre le firmware d'origine sur le routeur avant de pouvoir installer OpenWrt dessus.

Je crois que la procédure pour revenir au firmware d'origine est documentée sur le site dd-wrt.

d'accord , donc repassé a un firmware TP-link si possible en anglais (sera plus lisible que le chinois ) puis installé openwrt..

Bonjour
tiens puisque que ce topic est reactivé
question aux petits genies de l'openwrt et des WR703 et MR3020
il existe une communauté qui s'interesse à la SDR et à l'ADSB et qui utilise comme recepteurs des clefs usb de reception TV.
ça fonctionne tres bien sous windows, c'est ce que j'utilise
Je crois avoir lu que la partie reception/injection de RAW sur TCP/IP a été portée sur RPI
pensez vous que cette partie puisse etre facilement portée sur les petits routeurs TP-LINK.
Ce n'est pour moi , là qu'aau stade de la reflexion declenchée il y a 5 minutes.
une reponse du genre : non pas possible parce que ceci ou cela , me convient aussi bien que oui peut , il faut faire attention à ça ou ça.

pour situer ce qu'est la SDR sur base clef usb
le site de Youssef le développeur SDR# et ADSB# (un français très sympathique)
et surtout les liens sur sa page vers les installs

Merci pour vos avis, meme si on s'eloigne un peu de l'arduino

je n'arriva pas a trouver sur le net comment passer du firmware dd-wrt a un firmware officiel tp link pour le wr703n, pour ensuite pouvoir installé openwrt.

Si quelqu'un a une solution!!

Je crois que c'est là:
http://www.dd-wrt.com/phpBB2/viewtopic.php?t=85237&postdays=0&postorder=asc&start=225

Artouste:
Bonjour
tiens puisque que ce topic est reactivé
question aux petits genies de l'openwrt et des WR703 et MR3020
il existe une communauté qui s'interesse à la SDR et à l'ADSB et qui utilise comme recepteurs des clefs usb de reception TV.
ça fonctionne tres bien sous windows, c'est ce que j'utilise
Je crois avoir lu que la partie reception/injection de RAW sur TCP/IP a été portée sur RPI
pensez vous que cette partie puisse etre facilement portée sur les petits routeurs TP-LINK.
Ce n'est pour moi , là qu'aau stade de la reflexion declenchée il y a 5 minutes.
une reponse du genre : non pas possible parce que ceci ou cela , me convient aussi bien que oui peut , il faut faire attention à ça ou ça.

pour situer ce qu'est la SDR sur base clef usb
le site de Youssef le développeur SDR# et ADSB# (un français très sympathique)
et surtout les liens sur sa page vers les installs
http://sdrsharp.com/

Merci pour vos avis, meme si on s'eloigne un peu de l'arduino

J'ai moi-même une clé USB DVB-T+DAB+FM basée sur un tuner silicone EL4000 + contrôleur RTL2832-u, mais je ne l'ai utilisé pour le moment que sous Windows avec HDSDR.

Bon, il faudra oublier les xx# sur un routeur comme ça :slight_smile:

A part ça, le CPU du TL-WR703N est un MIPS24kc à 400 MHz, soit de l'ordre de 240 MIPS, je ne sais pas si cela va suffire pour faire la DFT et l'envoyer sur le réseau ?

Squonk42:
J'ai moi-même une clé USB DVB-T+DAB+FM basée sur un tuner silicone EL4000 + contrôleur RTL2832-u, mais je ne l'ai utilisé pour le moment que sous Windows avec HDSDR.

Bon, il faudra oublier les xx# sur un routeur comme ça :slight_smile:

A part ça, le CPU du TL-WR703N est un MIPS24kc à 400 MHz, soit de l'ordre de 240 MIPS, je ne sais pas si cela va suffire pour faire la DFT et l'envoyer sur le réseau ?

Bonjour squonk
merci pour la reponse

perso je prefere SDR# (ADSB#) à HDSDR , mais ça c'est affaire de gout et d'utilisation

le RPI dans son utilisation principalement ne "fait que" acquerir par usb les signaux I/Q (8 bits) et les présente sur le réseau comme serveur.
Il ne traite pas plus l'info (c'est le soft eloigné qui le fait)
3 liens plus ciblés

perso , j'ai pensé à ça hier soir en lisant une reponse au topic, et tres humblement je ne me rend pas compte
de la faisabilité ou pas avec les petits TP-Link, mais si c'est possible, ça peut être tres sympa

Artouste:
Bonjour squonk
merci pour la reponse

perso je prefere SDR# (ADSB#) à HDSDR , mais ça c'est affaire de gout et d'utilisation

Désolé, c'est un réflexe: j'ai tendance à fuir tous les logiciels dont le nom se termine par "#" :slight_smile:

Mais c'est vrai que l'interface de HDSDR est loin d'être intuitive...

Artouste:
le RPI dans son utilisation principalement ne "fait que" acquerir par usb les signaux I/Q (8 bits) et les présente sur le réseau comme serveur.
Il ne traite pas plus l'info (c'est le soft eloigné qui le fait)

Bon, dans ce cas, ça peut être jouable, ça dépend du débit sur le port USB.

Squonk42:
...
Bon, dans ce cas, ça peut être jouable, ça dépend du débit sur le port USB.

sauf mauvaise lecture de ma part le flux brut issu de la clef doit tourner autour de
(8I + 8Q ) * 2.4 MSP = ~ 38.4 Mbit/s ~ 5 Mo/s

Merci squonk pour le lien cela m'a permis de passer en firmware tp-link, puis j'ai pu installer openwrt.

Bonjour a tous.
Je suis arrive sur ce forum suite au "bricage" de mon wr703n fraichement recu...
J'avais installer openwrt et en essayant de lui comfigurer piratebox et encore et encore....j'ai fini par le bloque.
j'ai essaye de passer par un arduino pour lui causer en serie mais apres plusieurrs jours de tests je n'y suis pas parvenu....
J'ai reussis a reflasher avec un lecteur de carte sim bidouiller en convertisseur serial ttl....et apres beaucoup de reinstall et maj etc...ma piratebox marche nickel.
Mais bon quand ca marche c'est deja moin marrant...alors avant de bidouiller autre chose j'aimerai pouvoir faire une image du system pour faciliter sa reinstallation dans quelque temps. Si quelqu'un a la solution? Merci

Solution:

Cat /dev/mtd5 /tmp/backup.bin