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.