Show Posts
Pages: 1 2 3 [4] 5 6
46  International / Français / Re: WR703N + VinciDuino on: September 01, 2012, 03:02:14 am
Une petite mise à jour concernant le WR703N : après avoir décortiqué le brochage du CPU AR9331, je continue mon exploration avec le PCB complet.

Le rôle de chaque composant est maintenant identifié, et à part la datasheet du AR9331 que nous n'aurons probablement jamais, il ne reste que 2 chips non formellement identifiés, bien que leur fonction soit parfaitement connue: U5 (convertisseur DC/DC 5V/3.3V avec diode Schottky intégrée) et U6 (switch d'alimentation USB).

Voici 2 images du PCB "zoomables" avec la molette du mulot  smiley-eek:

http://zoom.it/4ym9
http://zoom.it/nsDQ

Les mêmes images en HR "fixes":

http://img684.imageshack.us/img684/3559/tlwr703ntop.jpg
http://img253.imageshack.us/img253/1109/tlwr703nbottom.jpg

Notez que les 2 images se superposent parfaitement et que l'on peut donc par transparence suivre les vias smiley-mr-green

Non, je n'ai pas d'image des couches internes smiley-cry
47  International / Français / Re: WR703N + VinciDuino on: August 28, 2012, 03:07:00 pm
Tout à fait d'accord, le U-Boot du WR703N est assez limité! Juste pour info, pour arrêter le boot normal et obtenir le prompt U-Boot, il faut taper "tpl" rapidement au tout début. C'est écrit quelque part dans le Wiki OpenWRT, mais au moins, cela évitera à tout le monde de chercher !

Un autre truc que j'ai utilisé ailleurs et pas encore sur le WR703N, c'est la possibilité de monter le rootfs par NFS: il n'y a alors plus besoin de recopier les modifs sur le filesystem du routeur lors du développement à chaque fois, celles-ci apparaissent de manière magique au fur et à mesure smiley-cool

Voici un projet intéressant au sujet du U-Boot sur le WR703N: wr703n-uboot-with-web-failsafe
48  International / Français / Re: WR703N + VinciDuino on: August 28, 2012, 11:07:03 am
Ca ça serait pas mal !

On pourrait faire comme le Raspberry Pi avec les cartes SD : on change de clé USB et hopla !

Mais attention, l'alim de l'USB Host est pilotée par la GPIO8, donc il faudra la mettre à 1 avant d'y accéder pour que l'USB fonctionne.
49  International / Français / Re: WR703N + VinciDuino on: August 26, 2012, 12:59:56 pm
Le modules chargeables à la main c'est avec CONFIG_xxx=m au lieu de =y ?
Mais ne faut-il pas modprobe pour les charger alors ? J'ai pas trouvé modprobe sur OpenWRT
Oui, et "modprobe" n'est qu'une surchouche à "insmod"/"rmmod" qui tente d'installer/enlever les modules dépendants, donc on peut facilement se débrouiller avec "isnmod"/"rmmod" qui eux sont présents.

Et bon boulot sur le pinout !
Merci ! C'était pour inaugurer ma loupe binoculaire toute neuve (en promo chez Nature & Decouvertes à 140€, -30% smiley-eek).

Maintenant, y a plus qu'à bricoler avec le VinciDuino, vu qu'il n'y a pas assez de GPIO de dispo smiley-lol
50  International / Français / Re: WR703N + VinciDuino on: August 26, 2012, 12:12:44 pm
Bienvenue au club  smiley-mr-green

Bon, ça a l'air d'être reparti, non ?

Pas de panique côté nombre de reflashage: le chip Flash SPI est donné pour 100 000 cycles. A coup de 20 par jour, tu en as pour 13 ans  smiley-roll

Mais je te conseilles d'expérimenter le noyau en mettant tes expériences sous forme de modules chargeables à la main, avant de l'intégrer en fixe, cela évite pas mal de déboires !

Sinon, pour les bidouilleurs fous, j'ai beaucoup travaillé pour trouver le pinout du chip Atheros AR9331 (CPU du WR703N), le résultat est là :
http://wiki.openwrt.org/toh/tp-link/ar9331_pinout

J'avais déjà fais une étude détaillée du PCB:
http://wiki.openwrt.org/toh/tp-link/tl-wr703n_pcb
51  International / Français / Re: WR703N + VinciDuino on: August 25, 2012, 05:23:16 pm
Bravo !

Tu as bien avancé !

Je vais tenter de répondre à tes questions :
  • hotplug2: effectivement, si tu ne compte pas insérer de périphérique USB à chaud, cela ne sert à rien
  • RAM: pas t'affoles ! Linux a horreur du vide  smiley-mr-green Il profite qu'il y a de la RAM dispo pour s'étaler, en gros jusqu'à la moitié de la RAM totale disponible. Mais si il y a besoin, il va réduire la voilure
  • kmod-scsi-core: oui, c'est nécessaire, les "Mass Storage Class" USB s'appuyant sur un jeu de commande SCSI
  • led-gpios: il n'y a pas grand chose, à part ce thread dans OpenWRT qui parle des GPIOs du WR703N avec des exemples
  • kmod-ipt-core: non, si tu ne cherches pas à te connecter à Internet directement, iptables ne te sert à rien. donc tu peux virer celui-ci et les modules noyau associés
  • hello world: je te  conseilles ce tuto en Français
52  International / Français / Re: WR703N + VinciDuino on: August 24, 2012, 03:34:29 pm
Quote
Pour le "pivot root", il faut utiliser du ext2/3/4, sinon les chances d'y arriver sont minces ! Formatte ta clé sur ton PC Linux en tant que partition primaire ext4, c'est le plus simple.
EXT2 pas EXT3/4 sinon tu as la journalisation qui bourre toute ta clef usb ...

En plus si je me rappelle bien seul EXT2 est géré en bas niveau par le kernel, pour EXT3/4 il faut un module kernel en plus.
(kmod-fs-ext3 ou kmod-fs-ext4 je crois)
Le sujet est très controversé  smiley-confuse

L'ext3/etx4 gèrent effectivement un journal qui permet de récupérer le filesystem en cas de problème d'intégrité (coupure de courant innopinée, plantage smiley-eek-blue), ce qui est quand même un gros plus pour un système qui doit avoir une disponibilité sans utilisateur.

Il y a aussi un problème de performances : l'ext4 est pratiquement 2x plus performant que l'ext2, cf. ce lien et celui-ci, il y en a un tas d'autres qui vont tous dans le même sens. Là aussi, cela peut avoir un sens pour une plateforme embarqué qui doit être un minimum efficace en consommation: il ne faut pas croire, mais les disques USB consomment beaucoup lorsqu'on y accède en lecture, encore plus en écriture, et énormément lors d'un effacement de secteur. Donc le moins de temps on l'utilise, le mieux c'est !

En bref, même si l'ext3/ext4 ont un "overhead" dû à la journalisation, ils apportent quand même une sécurité et des performances non négligeables, sachant qu'il est possible de jouer avec certains paramètres pour éviter les effets négatifs pour les disques Flash :
  • l'option "noatime" que j'ai utilisée permet de ne pas écrire les date de dernier accès aux fichiers, ce qui est une des causes majeures d'usure des disques flash si on n'y prête pas attention
  • l'option "commit" permet de régler la durée de conservation des données en cache RAM avant écriture : en passant la valeur par défaut de 5 s à 120 s, on multiplie par 60 la durée de vie du disque Flash et on passe ainsi de 6 mois à 30 ans de durée de vie  smiley-eek... Au détriment de la granularité en termes de perte de données

C'est pourquoi personnellement, je recommanderais l'ext4 avec ou sans journalisation (on peut la désactiver avec l'option "noload", cf. la doc de l'ext4, on obtient alors l'équivalent d'un ext2 aux stéroïdes  smiley-twist).

De plus, le noyau ne possède aucun support "bas niveau" pour un quelconque filesystem, que ce soit ext2, ext3, ext4, jffs2, squashfs, etc. : c'est juste que le module mkod-fs-ext2 est intégré par défaut dans la configuration noyau d'OpenWRT. Mais si on construit son propre noyau, on peut changer cela et mettre l'ext4 à la place ou en plus.

Il n'y a en tous cas aucun risque de "bourrage" de la clé USB, mais il convient toutefois de bien comprendre ce que l'on fait, car cela peut conduire à des situations d'usure prématurée de la clé USB à plus ou moins long terme, donc gaffe !

53  International / Français / Re: WR703N + VinciDuino on: August 23, 2012, 04:55:57 pm
1) Une fois recompilé mon firmware avec les changements de .config je le flash de la façon suivante :
- copie (scp) de openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin dans /tmp
- mtd write /tmp/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin firmware

Je perd mes réglages à chaque fois (adresses IP, mot de passe, etc ...)

Y a t'il un moyen de faire un upgrade sans tout casser ?

J'ai essayé aussi avec openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin mais je n'ai pas vu de différence
Oui : d'abord, il faut utiliser l'image "openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin" et pas la "openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin" qui est faite pour écraser le firmware TP-Link d'origine.

Ensuite, il ne faut pas utiliser "mtd write" qui écrabouille joyeusement la partition mtd, mais l'utilitaire "sysupgrade" avec l'option "-c" pour préserver les changements dans "/etc/" :
Code:
root@TL-WR703N:~# sysupgrade --help
Usage: /sbin/sysupgrade [options] <image file or URL>

Options:
        -d <delay>   add a delay before rebooting
        -f <config>  restore configuration from .tar.gz (file or url)
        -i           interactive mode
        -c           attempt to preserve all changed files in /etc/
        -b / --create-backup <file>
                     create .tar.gz of files specified in sysupgrade.conf
                     then exit. Does not flash an image. If file is '-',
                     i.e. stdout, verbosity is set to 0 (i.e. quiet).
        -r / --restore-backup <file>
                     restore a .tar.gz created with sysupgrade -b
                     then exit. Does not flash an image. If file is '-',
                     the archive is read from stdin.
        -n           do not save configuration over reflash
        -F / --force
                     Flash image even if image checks fail, this is dangerous!
        -q           less verbose
        -v           more verbose
        -h / --help  display this help
A la fin du flashage, sysupgrade va sauvegarder tes paramètres, rebooter automatiquement le routeur et remettre tes paramètres en place.

2) J'ai inséré une clé USB formattée FAT32 (oui j'ai bien ajouté aussi le kmod-fs-vfat)
Mais j'obtient :
Code:
root@OpenWrt:/# ls -Al /dev/sd*
brw-r--r--    1 root     root        8,   0 Sep  8 15:52 /dev/sda
brw-r--r--    1 root     root        8,   1 Sep  8 15:52 /dev/sda1
root@OpenWrt:/# mount -t vfat /dev/sda1 /mnt/sda1
[  645.560000] FAT-fs (sda1): codepage cp437 not found
mount: mounting /dev/sda1 on /mnt/sda1 failed: Invalid argument
root@OpenWrt:/#

Je te déconseille fortement d'utiliser une clé formattée en FAT32 si tu veux faire un "pivot root" dessus: le FAT32 ne gère pas les liens symboliques, donc la moitié des trucs ne vont pas fonctionner correctement !!!

Pour le "pivot root", il faut utiliser du ext2/3/4, sinon les chances d'y arriver sont minces ! Formatte ta clé sur ton PC Linux en tant que partition primaire ext4, c'est le plus simple.

Sinon pour le problème de "codepage" VFAT, c'est encore une Windowserie qui nécessite l'installation de 2 modules noyaux supplémentaires pour gérer les pages de code du FAT32 :
Code:
opkg install kmod-nls-cp437 kmod-nls-iso8859-1

Bonne chance smiley-wink
54  International / Français / Re: WR703N + VinciDuino on: August 22, 2012, 04:58:05 pm
Super !

Tu as trouvé pourquoi ça ne marchait pas ?

Je te conseille quand même d'installer une console USB avec un câble type CA42 à moins de 2€ et 3 coups de fer à souder, on ne sait jamais  smiley-grin

Si tu maîtrise "vi" le minimum nécessaire pour éditer un fichier et le sauvegarder, il n'y a pas besoin de Luci : les fichiers de config sont dans "/etc/config" et sont en texte clair, leur description est dispo ici.

Pour ce qui est de l'overlay, c'est assez simple, en fait:
  • tu formattes une clé USB avec une seule partition primaire en ext4 sur ton PC (gparted conseillé, sinon fdisk si tu connais)
  • tu installes les drivers noyaux nécessaires, à savoir : kmod-usb-core, kmod-usb2, kmod-usb-ohci, kmod-usb-storage et bien sûr kmod-fs-ext4 (cf. ici)
  • il faut aussi installer le paquet block-mount
  • à l'insertion de la clé USB, tu devrais voir passer des choses en faisant "dmesg" (dont le nom de la partition, normalement "sda1")
  • mkdir /mnt/sda1, puis mount -t ext4 /dev/sda /mnt/sda1, puis ls /mnt/sda1, tu dois avoir un "lost+found"
  • tu recopies le contenu de la Flash SPI sur le disque USB: tar -C /overlay -cvf - . | tar -C /mnt/sda1 -xf -
  • tu modifies le fichier /etc/config/fstab comme suit et tu rebootes :
Code:
config mount
option target /overlay
option device /dev/sda1
option fstype ext4
option options rw,sync,noatime,commit=120
option enabled 1
option enabled_fsck 0

L'option "noatime" permet de ne pas mettre à jour en permanence les dates d'accès aux fichiers, et "commit=120" permet de mettre en cache les accès pendant 120 s (au lieu de 5 s par défaut) : cela permet d'améliorer BEAUCOUP la durée de vie de la clé USB Flash  smiley-cool

Presque tout cela est bien expliqué dans le lien ci-dessus, qui détaille le "pivot overlay extroot".
55  International / Français / Re: WR703N + VinciDuino on: August 21, 2012, 03:31:32 pm
Quote
Il faut alors changer de shell en tapant:
Code:
sudo update-alternatives --install /bin/sh sh /bin/bash 100

Fait mais ca ne change pas le problème smiley-sad
J'ai bien bash maintenant au lieu de dash mais l'erreur est toujours là

Bon, c'est déjà mieux, mais c'est pas encore çà! Tu es sûr d'avoir tous les outils de compilation installés (vérifie avec "sudo dpkg -l build-essential") ? Sinon, il faut un :
Code:
sudo aptitude update; sudo aptitude install build-essential

Quote
J'ai réussi à générer un paquet "binutils-avr" ...
Mais pour le "gcc-avr" et l' "avr-libc", c'est une autre paire de manche...

perso, je me contenterais d'AVRdude afin de pouvoir reflasher l'Arduino en remote.
Recompiler les sketches sur le WR703 lui même me parait inutile (pour l'instant smiley-wink).
Bon courage!


Ca ne serait pas cool de faire tourner l'IDE Arduino dans un navigateur Web pointant sur le serveur intégré au WR703N ?

Le couple WR703N + VinciDuino deviendrait alors un outil complètement indépendant du PC/Mac/iPhone/Android !
56  International / Français / Re: WR703N + VinciDuino on: August 21, 2012, 02:51:22 pm
J'ai réussi à générer un paquet "binutils-avr" qui tient la route (pour ceuce qui sont intéressés, les patches et le makefile OpenWRT), à placer dans le répertoire "feeds/packages/devel" du "trunk" d'OpenWRT, suivi d'un "./scripts/feeds update -i" pour ajouter le package et d'un "./scripts/feeds install -a" pour l'ajouter au menuconfig.

Mais pour le "gcc-avr" et l' "avr-libc", c'est une autre paire de manche...

En effet, il faut :
  • ...générer un compilateur sur une machine de travail linux-x86 (mon PC de travail)...
  • ... pour faire tourner sur une machine mips24kc (le WR703N)...
  • ... pour générer du code pour AVR (l'Arduino)

Ceci est compliqué par le problème dit "de la poule et de l'oeuf", à savoir qu'on a besoin à un moment donné de faire tourner le compilateur mips24kc => AVR pour générer un tas de chose (fichiers de démarrage, includes, etc.) qui ont eux-même besoin du compilateur pour être créés !

Cette configuration avec 3 architectures est connue en tant que "Canadian build", en référence au système politique Canadien qui comportait 3 partis politiques majeurs à l'époque où ce problème a été rencontré en premier.

En gros, on s'en tire en générant un compilateur intermédiaire linux-x86 => AVR pour générer ces fameux fichiers.

J'ai réussi à faire cette manip "à la mimine" à partir des sources et générer un gcc-avr+avr-libc qui tourne sur le WR703N, mais j'aimerai bien pouvoir le faire proprement en tant que package, et je me bats donc actuellement avec les makefiles OpenWRT smiley-sweat

Mon plus gros problème est de générer de manière conditionnelle des outils (qui vont dans le répertoire "tools" d'OpenWRT), à savoir ce fameux compilateur intermédiaire, lorsque l'utilisateur choisit de générer un compilateur AVR pour le WR703N.

Si quelqu'un a des idées sur le sujet, il est le bienvenu !
57  International / Français / Re: WR703N + VinciDuino on: August 21, 2012, 09:13:40 am
En fait, il faut faire :
Code:
make -j x (remplace x par le nombre de cœurs de ton cpu + 1)
J'ai jamais compris ce +1, puisse qu'au final tu as un nombre limité physiquement de threads ... +1 ou non ton cpu peut pas exécuter un nombre illimité de chose en parallèle ...
Du reste en regardant le man de make et les différentes doc sur le web tu trouve de tout, nb_threads, nb_threads + 1, ... smiley-zipper
D'après ce que j'ai pu voir à droite et à gauche (j'ai du mal à me souvenir où  smiley-red), cela correspond effectivement au nombre de "jobs" (et donc de "threads"), mais il y a toujours un thread principal qui lui ne fait qu'attendre la fin des autres.

Ps: en argument CLI unix que tu fasse -J8 ou -J 8 ça revient à la même chose.
Oui, par contre, n'est ce pas "j" minuscule et pas "J" majuscule ?

Ou mieux, utiliser "ccache", mais c'est plutôt délicat à faire marcher comme il faut smiley-razz
J'utilise ccache, mais c'est utile uniquement pour les recompilations incrémentielles, pas pour la premier compilation complète.
Mais c'est un gros bordel pour activer ccache dans menuconfig donc je préfére pas perdre barbudor avec.
C'est vrai que c'est un peu brutal comme mise en bouche  smiley-mr-green
58  International / Français / Re: WR703N + VinciDuino on: August 20, 2012, 04:03:08 pm
Code:
make -Jx (remplace x par le nombre de cœur de ton cpu)
En fait, il faut faire :
Code:
make -j x (remplace x par le nombre de cœurs de ton cpu + 1)
Ou mieux, utiliser "ccache", mais c'est plutôt délicat à faire marcher comme il faut smiley-razz
59  International / Français / Re: WR703N + VinciDuino on: August 20, 2012, 03:55:08 pm
Quote
Building package index...
(cd /home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64/packages; /home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64/scripts/ipkg-make-index.sh . > Packages && \
      gzip -9c Packages > Packages.gz \
   ) >/dev/null 2>/dev/null
make[2]: *** [package_index] Error 126
make[2]: Leaving directory `/home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64'
make[1]: *** [_call_image] Error 2
make[1]: Leaving directory `/home/barbu/openwrt/OpenWrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64'
make: *** [image] Erreur 2

problème qui ne vient pas de moi apparemment : https://dev.openwrt.org/ticket/11943

Donc apparemment il va falloir que je me mette à Buildroot plus tôt que prévu  smiley-cry

Vous n'avez pas eu de problème particulier ?
Il suffit de suivre les indications ?

PS: Je suis partit sur un host en Xubuntu (simple, facile pour un non Linuxien comme moué). Mais apparemment la team OpenWRT est plutôt Arch linux qui me semble un peu trop "streamline" pour moi smiley-wink
Vous utilisez quoi de votre coté ?

J'utilise Ubuntu 12.04 LTS, remis à jour périodiquement depuis au moins 2 ou 3 ans.

Un piège classique avec les xxxUbuntu est que ceux-ci remplacent le Shell "bash" par un Shell "dash" qui est sensé être plus rapide pour le boot (ça reste à prouver  smiley-confuse), mais qui casse les scripts shell de compilation...

Un moyen de vériefier est de taper :
Code:
ls -l /bin/sh
lrwxrwxrwx 1 root root 4 août  11 19:25 /bin/sh -> bash

Si le tiens point sur "dash": bingo !

Il faut alors changer de shell en tapant:
Code:
sudo update-alternatives --install /bin/sh sh /bin/bash 100
60  International / Français / Re: WR703N + VinciDuino on: August 20, 2012, 03:43:12 pm
Je persiste et persiffle : je mesure bien un TXD (TP_OUT) à 2,7V ainsi que le VCC sur la résistance de pull-up R82 a coté de RXD (TP_IN).

Mon modèle est indiqué "Ver:1.6" sur l'étiquette derrière le boitier et "Rev:1.1" sur le PCB smiley-wink
Il n'y a eu a priori que 2 versions de PCB: 1.0 (peu répandue) et 1.1, donc ce n'est pas un problème de version. J'ai d'ailleurs détaillé le PCB 1.1 composant par composant dans le Wiki OpenWRT, et d'après les points de tests dûment étiquetés, il y a du 3,3 V, du 2,5 V, du 2,0 V et du 1,2 V, toutes ces tensions ayant une utilité identifiée.

C'est peut-être tout simplement un problème d'alimentation ? Ou alors ton multimètre qui a une résistance d'entrée trop faible ? j'ai déjà eu le cas avec un multimètre chinois à 10 euros... J'ai plus tendance à croire un scope avec une sonde calibrée 1 Mohms /20 pF, d'abord parce que c'est calibré et ensuite parce que je peux voir le résultat !

Mais après tout, qu'importe ? Mon WR703N tourne avec une adaptateur LVTTL (3,3 V) / USB depuis 6 mois sans soucis  smiley-mr-green

Je viens de télécharger le Image Generator d'OpenWRT (version stable 10.03.1) mais je suis pas sur que ce soit ce qu'il faut car ce package est daté de décembre 2011.

Pouvez vous me confirmer ce qu'il faut prendre ?

1ère étape pour moi : apprendre à configurer OpenWRT pour réduire au minimum a ce qui m'interesse.
En effet l'intérêt d'OpenWRT pour moi est d'avoir une distri Linux toute prête qui support la plateforme mais je n'ai pas besoin de toute la partie WRT (Wireless Router).
Ce que je veux obtenir dans un premier temps c'est :

- Linux
- Busybox, shell
- SSHd (dropbear)
- USB Mass Storage (pour mettre une clé USB ou un adaptateur de carte uSD)
- USB CDC Serial pour Arduino ou autres USB/TTL (CP21xx, FTDI, etc...)
- Ethernet
- Client Wifi (une configuration statique par fichier de config me convient très bien)

Je compte le faire d'abord avec Image Generator sans recompiler
Le "Image Generator" est plutôt fait pour rajouter des packages que pour en enlever. Le système de base est assez interdépendant au niveau des packages installés, et la seule façon d'enlever des choses va passer par une configuration des options de ces packages et une recompilation smiley-sweat

Et de toutes façons, il faut absolument partir du "trunk" avec Subversion ou un "snapshot" (vaut mieux le SVN !), car le WR703N n'est pas encore supporté dans les versions stables.

Après, il suffit de suivre à la lettre le Wiki OpenWRT (installation et utilisation).
Pages: 1 2 3 [4] 5 6