Forum Linux.général Piloter une carte wifi

Posté par  .
Étiquettes : aucune
0
29
mai
2006
Bonjour,

je possède une clé Wifi et je voudrai pouvoir lui envoyer ou lire les données qu'elle reçoit.
Etant donné que sur linux tout est fichier, je pensais qu'il suffisait de lire ou d'écrire dans le fichier représentant le périphérique de ma clé wifi.

Cependant j'ai rencontré plusieurs problèmes.
Je suis allé dans le répertoire /dev afin de connaître quel était le périphérique représentant ma clé mais je n'en ai trouvé aucun de satisfaisant. Le seul qui pourrai convenir serai ttyACM0. C'est un périphérique que j'ai crée afin de simuler un port série sur mon port USB host.
J'ai donc essayé de faire un '#echo "bonjour" > /dev/ttyACM0' mais linux me renvoie l'erreur "-sh: cannot create dev/ttyACM0: Invalid argument".

Y a-t-il besoin de monter la clé comme une clé USB classique ?
J'ai consulté le fichier /proc/devices et j'ai constaté qu'il y a certains périphériques présents dans ce fichier alors qu'il n'y a pas d'entrée correspondante dans /dev. C'est notamment le cas de 2 périphériques :
180 usb
189 usb_device
Je me demande ce que cela signifie (ces périphériques ne sont pas activés ?).
Les numéros à coté des périphériques étant des majeurs, je me demandais s'il était possible d'ouvrir un flux de lecture ou d'écriture en utilisant le majeur et le mineur (sans utiliser le nom).

J'aimerai donc savoir s'il est possible de lire et d'écrire sur ma clé wifi "comme dans un fichier".

A noter que je travaille sur un linux embarqué sur une carte à base de ARM9. J'utilise NFS pour monter mon arborescence de fichier et, je ne sais pas pourquoi, ce système de fichier est en lecture seule (j'ai essayé plusieurs options lors de la configuration de mon noyau mais rien a faire je n'arrive pas a avoir une arborescence en lecture/écriture).
J'ai pensé que l'erreur pouvait venir de là (vu que j'ai une arborescence en lecture seule, il ne serait pas possible d'écrire dans un quelconque fichier) j'ai donc essayé un '#cat /dev/ttyACM0' mais j'ai la même erreur ("cat: /dev/ttyACM0: Invalid argument"

Merci
  • # j'ai rien compris ...

    Posté par  (site web personnel) . Évalué à 3.

    ... a ce que tu voulais faire :)

    Si tu veux utiliser ta clef wifi pour envoyer des données "raw" à travers le reseau, peut etre que netcat peut t'aider. Si c'est pour lire, un petit tcpdump/ethereal devrait faire l'affaire.

    Par contre si tu veux "commander" celle-ci de manière bas-niveau je pense qu'il faut passer par un module noyau (mais la je suis à mon niveau d'incompétence)
    • [^] # Re: j'ai rien compris ...

      Posté par  . Évalué à 2.

      En fait c'est tout simple : je désire savoir s'il est possible de lire les données reçues par ma clé grâce à un petit programme en C.

      Pour cela, je me disais que puisque sur linux un périphérique est vu comme un fichier, alors il doit être possible de lire les données recues par le clé comme on lit un fichier (open, read, close).

      Je désire aussi pouvoir émettre des informations sur le réseau via ma clé (exemple : envoyer "bonjour" à la machine 192.168.2.3).
      Là aussi je suppose que la méthode à utiliser est d'écrire les données à transmettre dans le fichier représentant ma clé.

      Le problème c'est que je ne sais pas quel est le fichier représentant ma clé. Je suppose qu'il se trouve dans le répertoire /dev étant donné que ce répertoire référence tous les périphériques reliés à la machine.

      J'ai déjà réussi à transmettre des données de cette manière via un cable USB en utilisant le protocole CDC ACM (un protocole permettant de simuler un port série avec un port USB) :
      - Je relie mon PC à ma carte (le PC est en host et la carte en device)
      - j'écris des données coté PC (echo "bonjour" > /dev/ttyACM0)
      - je les reçoit telles quelle sur la carte avec la commande "cat /dev/ttygserial"

      J'aimerai donc savoir s'il existe une méthode similaire avec une clé wifi.
      • [^] # Re: j'ai rien compris ...

        Posté par  (site web personnel) . Évalué à 3.

        A mon avis, ce n'est pas possible. Le problème est que la liaison série est beaucoup plus simple qu'un lien réseau.

        Tu introduis par exemple la notion d'adresse IP qui necessite plus de couches que le simple fait d'emettre une série d'impulsions sur une patte de ton port série.

        Pour un besoin comme ca, je commencerai par faire un petit client/serveur tout bête comme celui en python que tu trouvera ici : http://docs.python.org/lib/socket-example.html

        Puis, si tu tiens vraiment à écrire dans un fichier pour envoyer vers une machine, tu peux mettre en place un filesystem FUSE http://fuse.sourceforge.net/
        • [^] # Re: j'ai rien compris ...

          Posté par  . Évalué à 1.

          C'est bien ce que je pensais, ça ne dépend pas du support de communication mais du protocole au dessus, en l'occurence TCP/IP dans mon cas.

          Je te remercie pour ta réponse.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.