Création de pilotes sans fil pour Edimax Wireless USB: EW-7811UN


33

Cela fait des jours que j'essaye de construire le module pour mon périphérique USB sans fil.

C'est un Edimax EW-7811UN

J'ai trouvé plusieurs ressources sur la construction de modules pour Debian, mais aucune pour Arch. Actuellement, je tente de compiler de manière croisée à l'aide de la ToolChain disponible sur le Raspberry Pi GitHub . Ce sont les mesures que j'ai prises:

  • Téléchargé les sources de pilotes depuis le site Web Edimax .
  • Téléchargé les sources du noyau depuis GitHub .
  • Création d'une règle de création spécifique (selon la documentation Edimax) dans le fichier MakeFile Edimax:

ifeq ($(CONFIG_PLATFORM_PI), y)
  EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
  ARCH := arm
  CROSS_COMPILE := arm-bcm2708-linux-gnueabi-
  KVER  := 3.1.9-30-ARCH+
  KSRC := /pi-sources/lib/modules/3.1.9-30-ARCH+/build 
  MODDESTDIR := /pi-sources/lib/modules/3.1.9-30-ARCH+/kernel/drivers/net/wireless/
  INSTALL_PREFIX :=
endif
  • KSRC est le répertoire contenant les sources du noyau.
  • MODDESTDIR est le répertoire dans lequel vous souhaitez que le module se termine.
  • CROSS_COMPILEest mon toolchain (qui a été ajouté à PATH)

La première tentative makedonne cette erreur:

fatal error: linux/smp_lock.h: No such file or directory

J'ai trouvé qu'il s'agit d'un en-tête obsolète, et le fait de le lier par un lien smp.hdevrait résoudre le problème. Cependant, la construction échoue toujours avec des erreurs de source, qui ressemblent à ceci:

error: field 'recv_tasklet' has incomplete type

J'ai assez compilé pour savoir que la compilation ne prend pas en charge la dernière version du noyau, mais si c'est le cas, comment a-t-elle été construite pour Debian?


Informations supplémentaires:

  • La sortie complète ici .

J'ai le même adaptateur, mais pas encore essayé de l'essayer!
Shane Hudson

S'il vous plaît, laissez-moi savoir comment vous vous en sortez et ajoutez votre expérience par la suite, même si c'est négatif.
Jivings

@ Thomas, plus de primes! Assurez-vous qu'Alex ne comprend pas cette fois-ci :)
Jivings le

Réponses:


12

Instructions pour la compilation croisée

  1. Téléchargé les sources de pilotes depuis le site Web Edimax .

  2. Clonez les sources du noyau depuis GitHub .

  3. cddans votre source de noyau et cddansinclude/linux . Courir

    ln -s smp.h smp_lock.h`.
    
  4. unzip le téléchargement Edimax et tar -xzf le package de pilotes. cddans le driver/rtl...sous - répertoire.

  5. modifier include/rtw_xmit.h et ajouter #include <linux/interrupt.h>sous les autres inclus.

  6. modifier os_dep/osdep_service.c et ajouter

    #include <linux/semaphore.h>
    #define init_MUTEX(sem)         sema_init(sem, 1)
    

    sous l'autre comprend.

  7. Modifier l' Makefileajout

    ifeq ($(CONFIG_PLATFORM_PI), y)
    EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
    ARCH := arm
    CROSS_COMPILE := arm-bcm2708-linux-gnueabi-
    KVER  := 3.1.9-30-ARCH+
    KSRC := ~/pi-sources
    MODDESTDIR := ~/pi-sources/lib/modules/3.1.9-30-ARCH+/kernel/drivers/net/wireless/
    INSTALL_PREFIX :=
    endif
    

sous des sections similaires.

  1. En supposant arm-bcm2708-linux-gnueabi-{gcc|ld}est sur votre chemin, exécutezmake CONFIG_PLATFORM_PI=y modules .

Le module devrait maintenant être compilé.


La construction est réussie! Mais où le module est-il construit? Je peux donc le copier sur le Pi.
Jivings

La racine du package de pilote, je pense.
Alex Chamberlain

1
Hm, semble être là. Bizarre. Quel est le point MODDESTDIRalors?
Jivings

Aucune idée!!!!!!!!!
Alex Chamberlain

Pour que cela soit construit sur le Raspberry Pi, je devais aussi faire un lien symbolique entre le /lib/modules/3.1.9-30-ARCH+/buildrépertoire et les sources du noyau.
Jivings

-1

Essayez de copier le fichier config.gz à partir de /proc/config.gz sur votre RPi. Puis gunzip et renommez-le .config et faites comme ci-dessus.


3
Pouvez-vous indiquer pourquoi cela est utile dans votre réponse?
Jivings
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.