Table des matières:

NLDWRTG la carte d'extension ULTIMATE WRT54G : 8 étapes (avec photos)
NLDWRTG la carte d'extension ULTIMATE WRT54G : 8 étapes (avec photos)

Vidéo: NLDWRTG la carte d'extension ULTIMATE WRT54G : 8 étapes (avec photos)

Vidéo: NLDWRTG la carte d'extension ULTIMATE WRT54G : 8 étapes (avec photos)
Vidéo: ARRÊTEZ LES RÉPÉTEURS WIFI ET PASSEZ À MA SOLUTION ! 2024, Juin
Anonim
NLDWRTG la carte d'extension ULTIME WRT54G
NLDWRTG la carte d'extension ULTIME WRT54G
NLDWRTG la carte d'extension ULTIME WRT54G
NLDWRTG la carte d'extension ULTIME WRT54G

Je modifie les routeurs WRT54G depuis 2006, mais je n'ai jamais eu le temps de concevoir une carte dédiée jusqu'à l'année dernière. Ce matériel est toujours l'un des routeurs wifi les plus piratables au moment de la rédaction et mérite d'être maintenu en vie.

Étape 1: Bref aperçu de la série Linksys WRT54G

Bref aperçu de la série Linksys WRT54G
Bref aperçu de la série Linksys WRT54G

en.wikipedia.org/wiki/Linksys_WRT54G_serie…

Il existe de nombreuses versions différentes sur le marché, regardons donc celles qui peuvent être modifiées:

-WRT54G 2.0/2.1/2.2 -> Bien que tous les mods soient possibles la grosse vieille carte mère prenant tout l'espace dans le boitier, si vous modifiez cette série il faut déplacer votre circuit hors de la boite ou créer un boitier complètement nouveau (ça n'en vaut vraiment pas la peine)

-WRT54G 4.0 Passé au nouveau SoC -> C'était la première carte où la carte mère en forme de L a été introduite, c'est donc la première version où vous pouvez profiter de mon bouclier et l'insérer dans le boîtier

-WRT54GL 1.0/1.1 -> Linksys a publié le WRT54GL (le routeur le plus vendu de tous les temps) en 2005 pour prendre en charge les micrologiciels tiers basés sur Linux, après que la ligne WRT54G d'origine a été basculée de Linux vers VxWorks, à partir de la version 5. Le WRT54GL est techniquement une réédition de la version 4 du WRT54G. Ce modèle est le ROI des WRTG. Il existe de nombreux routeurs d'occasion sur le marché, donc si vous avez le choix du type à acheter, achetez TOUJOURS le WRT54GL.

-WRT54G 5.0 et supérieur -> Utilise le système d'exploitation VxWorks et une mémoire Flash réduite; non compatible avec la plupart des micrologiciels tiers, bien que l'utilitaire "VxWorks killer" permette de charger certains micrologiciels open source tiers sur cette version et les versions futures. Linksys a fait un mauvais tour ici et a essentiellement ruiné un tout bon produit. Bien qu'il soit possible de les modifier, l'espace sur le routeur est si petit (2 Mo) qu'il ne peut contenir que le micrologiciel DD-WRT qui ne peut pratiquement rien faire au-delà de la fonctionnalité de routage normale (pas de VPN, pas de smbfs/cifs, pas de NFS, pas de mmc, pas de poste2). J'ai réussi à créer des noyaux pour cette série et à intégrer 1 à 1 module requis sur le coût d'en retirer d'autres. Cela ne vaut PAS votre temps et vos efforts, n'achetez PAS ces routeurs.

Avec la dernière série WRT, Linksys est passé à l'architecture ARM, par exemple, le WRT1200 AC a un processeur ARM dual-core de 1,3 GHz. J'ai cependant une mauvaise expérience avec ces routeurs, même après avoir essayé plusieurs versions d'OpenWRT (maintenant LEDE), les routeurs peuvent se bloquer de manière aléatoire. Je m'attends à plus de 300 jours de disponibilité pour les appareils Unix.

Étape 2: Extension de la fonctionnalité

Extension de la fonctionnalité
Extension de la fonctionnalité

Ok, alors quels hacks pouvez-vous faire avec ce routeur:

1, ajoutez 2x ports série -> ce qui peut s'avérer utile si vous avez d'autres serveurs sur un emplacement distant et que vous souhaitez vous connecter à leur bios via une ligne série ou d'autres routeurs, des commutateurs qui permettent cela

2, ajoutez 1 port USB1.0 -> pourrait être utilisé pour connecter une imprimante, un disque dur externe, etc. (je n'ai jamais fait ce mod, il ne fera donc pas partie de l'écriture)

3, ajoutez une carte SD externe pour le stockage, cela peut étendre la petite mémoire de stockage flash de 16 Mo de votre routeur à 16/32/… + Go. Je n'ai eu aucun problème avec l'utilisation de ces tailles de cartes SD et également avec l'utilisation de toutes nouvelles cartes CLASS 10 durables. Si vous avez expérimenté quelle est la limitation des cartes par modèles WRTG, veuillez laisser un commentaire ci-dessous.

4, ajoutez un arduino pour contrôler votre maison, relais, rcswitches

L'ajout d'un arduino ouvre essentiellement un nombre illimité d'options: contrôle de robot, contrôle des appareils infrarouges en vue (téléviseurs, magnétoscopes, DVD, projecteurs, climatisation), connexion de tonnes d'appareils à des commutateurs sans fil 433 Mhz bon marché, communication avec d'autres arduinos, raspis, ajouter un Xbee etc etc.

Bien que tout cela puisse être fait avec un Raspberry PI + Arduino et des extensions, je considère le routeur WRT54G plus fiable que le raspis. J'ai ces routeurs dans des configurations similaires avec plus d'un an (!) de disponibilité, je ne pourrais pas en dire autant du raspis où mon temps de disponibilité le plus élevé était d'environ 240 jours sur un raspi 1, puis la carte SD a abandonné le système, bien que le C Le code de contrôle Arduino a été chargé dans la mémoire, je n'ai donc pas eu à me dépêcher de le remplacer car le nœud de contrôle était toujours parfaitement fonctionnel:))

Étape 3: Liste du matériel

Liste du matériel
Liste du matériel

Je joins la disposition du tableau au format SVG et EasyEda. Si vous voulez construire le projet, vous aurez besoin des composants suivants: 1x Régulateur de tension LM7805

2x bouchons pour vreg 1uF 10uF (condensateurs électrolytiques 10 pièces 25V 35V 50V 1uF ~ 1000uF différentes valeurs et tensions)

1x câble 4 broches de la SDcar à la carte (10Pcs Jumper Wire 2/3/4/5/6/7Pin Female to Female Dupont Cable 20cm for Arduino)

2x DIP051A7212D Relais Reed

1x prise mâle RS232 (20 pcs 9 broches D-Sub DB9 connecteur PCB mâle à angle droit WT7n)

1x MAX 233 (10Pcs Max233 Max233cpp Rs232 Rs-232 Pilote/Récepteurs Ic Nouveau X)

1x câble de connecteur 10 broches (5Pcs 2mm Pas 2x5 Broches 10 Broches 10 Fils IDC Plat Ruban Câble Longueur 10CM)

1x prise 10 broches (20 pièces 2.54mm 2x5 broches 10 broches droites mâle enveloppé PCB Box Header IDC connecteur)

1x en-têtes de connecteur (connecteur d'en-tête cassable femelle 2,54 mm à une rangée 1*40 broches fr Arduino 2017)

1x carte SD (peut être une ancienne grosse SD ou une nouvelle microsd avec convertisseur, de moins de 32 Go, elles devraient fonctionner, de plus je n'ai pas testé les cartes)

1x convertisseur TTL 3v5v (5x convertisseur de niveau logique 3,3V à 5V TTL bidirectionnel pour Arduino Raspberry pi)

1x optocoupleur 4n35

1x lecteur de prise de fente de module de carte SD pour Arduino ARM MCU lire et écrire

1x Arduino Promicro (5 pièces Leonardo Pro Micro ATmega32U4 16MHz 5V remplacer ATmega328 Arduino Pro Mini)

1x modules RX et TX les acheter sous forme de pack combo (kit émetteur et récepteur RF 433Mhz 5pcs pour télécommande sans fil Arduino)

Étape 4: Conception du matériel

Conception de matériel
Conception de matériel
Conception de matériel
Conception de matériel
Conception de matériel
Conception de matériel

-La carte se visse dans la partie principale de la carte inférieure en plastique noir

-MAX233 a été choisi par rapport au MAX232, donc aucun capuchon supplémentaire ne sera nécessaire pour le convertisseur série PC->WRTG (ou un tout nouveau boîtier WRTG) pourrait être conçu avec makerbot

-La prise micro USB arduino promicros face au panneau avant pour la programmation externe.

-Basé sur Arduino Promicro (arduino est alimenté par l'entrée 12V du routeur WRT54G (via un régulateur de tension), la tension en circuit ouvert de l'adaptateur est d'environ 16V !)

-Le Promicro a un vrai usb, pas des déchets partagés, donc le /dev/tts/1 du WRTG peut être câblé à l'UART matériel du Promicro

-Communication série via /dev/tts/0 entre PC WRTG

-Récepteur RF 433Mhz + émetteur (l'émetteur pourrait prendre 12V pour une portée plus élevée)

-L'émetteur et le récepteur IR peuvent être ajoutés au panneau avant

-Des LED supplémentaires peuvent être ajoutées au panneau avant (indiquer Rx/Tx pour RF, IR, routeur/indicateur de communication ardu)

J'aurais pu concevoir la carte avec un mini convertisseur buck, mais j'ai adopté l'approche du régulateur de tension linéaire puisque je l'avais en main. J'ai trouvé 5V à un certain point du circuit, mais en tapant dessus, le routeur a été rendu inutilisable (ne pouvait probablement pas fournir la quantité de courant nécessaire à la carte arduino), j'ai donc opté pour une approche vreg supplémentaire.

Le convertisseur 3v5v TTL est là pour fournir la conversion de tension appropriée (j'utilise un modèle arduino promicro 5V, qui utilise 5V sur son port UART matériel, donc une conversion de niveau de tension est requise). Cependant, j'ai modifié des routeurs dans le passé en ajoutant des Arduino Nanos, des Micros sans le convertisseur et je n'ai eu aucun problème car le port TTY du WRTG est tolérant à 5V, mais cela ne signifie pas que vous devez le faire fonctionner à partir de cette tension.

Le 4n35 a également été introduit pour se débarrasser de certains bruits provenant du côté PC externe, je n'utilisais pas ce composant par le passé mais cela peut aussi être dû au fait que le portable que j'ai utilisé lors des tests était défaillant.

Le câble du connecteur à 10 broches prend en charge la plupart des connexions, mais vous devez vous assurer d'installer correctement les prises.

Comme il est montré sur l'image au port série

Pin 1: 3,3 V + Pin 2: 3,3 V <= Les 2 broches les plus à droite (plus proches des LED) sont le POSITIF se connecte sur le côté droit du connecteur sur le blindage NLDWRTG (près du régulateur de tension LM7805)

Broche 9: GND + Broche 10: GND <= Le côté opposé se trouve le NÉGATIF se connecte au côté gauche du connecteur sur le blindage NLDWRTG

Pour connecter les fils entre le lecteur SDCARD et le WRTG suivre:

www.jbprojects.net/articles/wrt54gl_mods/

Les broches concernées:

  • CS -> Point 1
  • MOSI -> Point 2
  • SCK -> Point 5
  • MISO -> Point 7

Étape 5: Limites

Limites
Limites

Le CPU du WRT54GL n'est pas le plus puissant (Broadcom BCM5352 @ 200 MHz), peut être overclocké à 250Mhz (ce n'est pas recommandé:)) donc ne vous attendez pas à exécuter SETI@HOME dessus. Le routeur -seulement- a des interfaces 100mbit/s et contrairement à ce que vous pouvez trouver sur beaucoup d'endroits, ce matériel *NE prend PAS en charge les VLAN 802.1q*. Ce n'est qu'un simple VLAN basé sur un port, veuillez ne pas mettre le WRTG dans un réseau transportant des VLAN, il ne peut pas le faire.

Une application particulièrement utile consiste à utiliser le routeur comme client VPN pour se connecter à un emplacement central. Bien qu'il soit également parfaitement utilisable pour un serveur VPN, n'attendez pas beaucoup de performances de celui-ci.

Voici quelques-uns de mes résultats avec un WRT54GL v1.1 utilisant OpenVPN comme client.

Débit maximal du tunnel: 500 kbit/s vers le bas 50 kbit/s vers le haut

Performances de routage maximales sans VPN depuis WAN -> LAN 28 mbit/s

Performances NAT (masquerade) maximales sans VPN depuis WAN -> LAN 27 mbit/s

Il existe encore de nombreux emplacements avec une bande passante globale inférieure à celles-ci (ISDN, Adsls, réseaux câblés, satellite, etc.) que ce routeur peut parfaitement satisfaire.

Habituellement, les problèmes proviennent de la mise en place d'un trop grand nombre de clients sans fil sur ces routeurs. J'ai vu de nombreuses configurations au fil des ans dans des cafés, des hôtels, des restaurants où ils jettent un routeur wifi sur le comptoir et l'appellent un jour, s'attendant à ce qu'il puisse servir plus de 10 personnes. Tout ce qu'ils obtiennent, c'est une expérience wifi complètement inutilisable à la fin puisque la bande passante théorique globale pour ce routeur 802.11G est de 51 mbit/s et c'est pour tout le monde, disons que la vraie est d'environ 30 mbit/s. Pour 10 personnes, c'est 3mbit/s par utilisateur dans le meilleur des cas, ce qui n'est nulle part suffisant pour les applications gourmandes en bande passante d'aujourd'hui (streaming vidéo/audio, pages Web 2.0 pleines de grandes images, etc.).

Comme je l'ai dit plus tôt, le but de ce hack est le contrôle à distance et cela n'utiliserait pas plus de quelques kbit/s de trafic via un VPN.

Étape 6: Logiciel WRTG

Logiciel WRTG
Logiciel WRTG

Le firmware est construit sur la meilleure version: DD-WRT v24-sp2 (08/12/10) std-nokaid (SVN révision 14929) Il existe d'autres images comme le VPN qui sacrifie le module ext2 pour économiser de l'espace tout en ayant le mmc module kernel (LoL). Optware 2 est un package utilitaire abandonné mais toujours utile qui étend les fonctionnalités de base de DD-WRT:

-Cela crée une distribution Linux de base à partir de l'installation paralysée de la boîte occupée.

-Fournit bash et autres coquillages.

-Fournit beaucoup de goddies comme: htop, netcat, tcpdump, ngrep, mc

-Fournit des services de serveur tels que: samba, astérisque, vsftpd, serveur jabber

Cependant, les progiciels sont anciens, truffés de bugs et de vulnérabilités. La publication et l'image ici équivaudraient à fournir une installation de Windows 98 $, donc je ne publierai rien pour le moment, mais j'écrirai étape par étape comment configurer votre carte SDC OptWare 2.

À l'avenir, je prévois de créer une nouvelle distribution Linux (SnowGlobe Linux) avec de nouveaux packages pour cet appareil et de la publier.

1, JFFS2 doit être activé, peu importe qu'il n'y ait pas d'espace libre dessus:

/dev/mtdblock/4 128K 128K 0 100% /jffs

2, partitionnement SDCARD. Voici une astuce astucieuse:

14 Go ou tout ce que nous voulons avoir pour la première partition de données pour ddwrt 100-500 Mo deuxième partition (EXT2) pour la récupération

Par exemple:

Disque /dev/sde: 14,5 Gio, 15523119104 octets, 30318592 secteurs

Unités: secteurs de 1 * 512 = 512 octets Taille du secteur (logique/physique): 512 octets / 512 octets Taille des E/S (minimum/optimal): 512 octets / 512 octets Type de label: dos Identificateur de disque: 0x6ad48986 Device Boot Start End Secteurs Taille Id Type /dev/sde1 2048 29362175 29360128 14G 83 Linux /dev/sde2 29362176 30318591 956416 467M 83 Linux

Créer des systèmes de fichiers:

mkfs.ext2 -L SnowGlobe-data /dev/sde1

mkfs.ext2 -L SnowGlobe-recovery /dev/sde2

Ajustez les systèmes de fichiers:

tune2fs -c0 -i0 -m0 /dev/sde1

tune2fs -c0 -i0 -m0 /dev/sde2

Seule la première partition sera montée automatiquement par le système au démarrage ! L'idée derrière la partition de récupération est que WRT54G n'a pas d'espace pour contenir un fdisk ailleurs. Donc, s'il y a un arrêt malpropre et qu'il y a des incohérences du système de fichiers, le seul moyen de le réparer est d'avoir une copie de fdisk (et les bibliothèques requises pour démarrer) sur une deuxième partition qui ne sera montée qu'occasionnellement en lecture seule pour exécuter fsck si nécessaire. Sinon, il faudrait retirer la carte et la mettre dans un PC pour réparation…

3, montage

Si vous insérez une carte déjà partitionnée et formatée et que wrtg démarre correctement, il est fort probable que la première partition soit montée automatiquement:

/dev/mmc/disc0/part1 13,8G 59,6M 13,7G 0% /mmc

Opt doit être lié maintenant:

mount -o bind /mmc/ /opt/

4, script d'installation OWRT2

Avant de commencer, vérifiez si defgw, DNS est bon.

wget https://www.3iii.dk/linux/optware/optware-install-… -O - | tr -d '\r' > /tmp/optware-install.sh

sh /tmp/optware-install.sh

S'il ne peut pas obtenir le script, c'est parce que busybox wget échoue. Cela fonctionnera avec le wget d'owrt mais bon, vous voulez installer owrt…

La sortie devrait ressembler à:

Vérification de la configuration du système…

Utilisation de 192.168.1.1 comme passerelle par défaut. Utilisation du ou des serveurs de noms suivants: nameserver 192.168.1.1.30 Attention: le serveur de noms local est différent de la passerelle ! Vérifiez la configuration ou entrez: sed -i s/192.168.*/192.168.1.1/ /tmp/resolv.conf pour corriger cela. Installation du package uclibc-opt_0.9.28-13_mipsel.ipk … Connexion à ipkg.nslu2-linux.org[140.211.166.82]:80 uclibc-opt_0.9.28-12 100% |************ *************************************| 832 Ko 00:00:00 ETA Mise à jour de /opt/etc/ld.so.cache /opt/sbin/ldconfig: impossible de créer /opt/etc/ld.so.cache~ (Aucun fichier ou répertoire de ce type) Installation du package ipkg-opt_0.99.163-9_mipsel.ipk … Connexion à ipkg.nslu2-linux.org[140.211.166.82]:80 ipkg-opt_0.99.163-9_ 100% |****************** *********************************| 75896 00:00:00 Téléchargement ETA https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Gonflage https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Mise à jour liste des packages disponibles dans /opt/lib/ipkg/lists/optware Terminé avec succès. Installation d'uclibc-opt (0.9.28-12) sur /opt/… Téléchargement du paquet https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… uclibc-opt suggère d'installer ipkg-opt Configuration d'uclibc-opt Mise à jour de /opt/etc/ld.so.cache terminée avec succès. Installation d'ipkg-opt (0.99.163-9) sur /opt/… Téléchargement de https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Configuration d'ipkg-opt Terminé avec succès.

5, bogue de chemin:

Vous DEVEZ exporter le chemin avec:

export PATH="/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/ jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/mmc/sbin:/mmc/bin:/mmc/usr/sbin:/mmc/usr/bin"

sinon ipkg ne fera rien !

6, vérifiez ipkg:

mise à jour ipkg

Devrait sortir:

Téléchargement

Inflating https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Liste mise à jour des packages disponibles dans /opt/lib/ipkg/lists/optware Terminé avec succès.

7, installer des packages:

ipkg installer bash htop mc openvpn tcpdump vim bzip2 bc e2fsprogs findutils gawk grep gzip moins faire ntfs-3g openssl perl php psmisc psutils

samba36 sed tar unrar décompresser vnstat vsftpd wget whois zip ncftp

8, Liste des packages installés:

ipkg-opt list_installed

Il n'est pas conseillé de créer des packages sur le routeur en raison du manque de ressources. Configurez un environnement de compilation croisée mips séparé dans Vmware/Vbox/KVM à cet effet.

Choses nécessaires:

-OS hôte Debian 7 wheezy 64 bits

-OpenWrt-SDK-Linux-x86_64-1.tar.bz2 ->

openwrt.org/docs/guide-developer/obtain.fi…

Ne perdez pas de temps à essayer de compiler le SDK par vous-même, le SDK binaire fourni est assez bon.

Créez une application helloworld simple

#include int main(void) { printf("Enfer ! monde, pourquoi mon code ne se compile-t-il pas ?\n\n"); renvoie 0; }

./staging_dir_mipsel/mipsel-linux-uclibc/bin/gcc -lpthread bonjour.c -o bonjour

Si tout se passe bien, vous devriez avoir un exécutable mips maintenant:

bonjour: exécutable ELF 32 bits LSB, MIPS, MIPS32 version 1 (SYSV), lié dynamiquement (utilise des bibliothèques partagées), non dépouillé

Étape 7: Logiciel Arduino

Vous pouvez télécharger le code source complet ci-dessous. C'est assez simple, il peut contrôler les 2 relais et certaines prises RC via la radio 433Mhz. Vous pouvez facilement l'étendre, par exemple: ajouter plus de commutateurs rc.

Étape 8: Clôture et liste de tâches

Fermeture et liste de tâches
Fermeture et liste de tâches

Le WRT54G est un excellent matériel, donc tout le travail investi dans ce projet en vaut la peine, en plus du bouclier NLD Wrtg pourrait être utilisable avec les futures versions matérielles.

Étant donné que la consommation électrique d'un WRTG est inférieure à celle des Raspberry PI, l'alimentation solaire du routeur peut également être une bonne mise à niveau et avec l'Arduino, nous pouvons surveiller chaque détail du processus de charge solaire (tension de la batterie, tension du panneau, consommation). Je continuerai la série WRTG avec des hacks solaires plus tard.

Trouver un moyen de programmer l'Arduino directement à partir du WRTG serait formidable (cela nécessiterait une méthode pour réinitialiser l'Arduino).

Les personnes ayant des compétences en 3D, Makerbot sont plus que bienvenues pour concevoir une plaque de recouvrement personnalisée (comportant les connecteurs de ma carte) pour la face avant ou redessiner la partie avant en plastique complète du routeur.

MISE À JOUR: Pour célébrer l'architecture MIPS devenant Open Source, j'ai mis à jour le didacticiel expliquant comment construire des programmes C simples avec le WRTG.

Vive le MIPS !:)

type de système: puce Broadcom BCM5352 rev 0processeur: 0 modèle de processeur: BCM3302 V0.8 BogoMIPS: 199.47 instruction d'attente: non temporisateurs de microsecondes: oui tlb_entries: 32 vecteur d'interruption supplémentaire: pas de point de surveillance matériel: non exceptions VCED: non disponible Exceptions VCEI: non disponible

Conseillé: