Compilation de zd1211b - probleme liés aux linux headers

Bonjour,

je fais appel a vous car je m’arrache les cheuveux en essayant d’installer ma clé wifi usb sagem de ma livebox sur mon noyau [b]2.6.18-4 /b.
Pour résumer mon problème, je n’arrive pas à compiler mon module zd1211b.
Les premières étapes se sont relativement bien passées :
- installation des headers de ma version (qui pointent correctement vers mon dossier situé dans usr/src), et de build-essential.
- téléchargement des sources de mon module (avec apt),
- modification de mon Makefile afin d’utiliser la version b du module comme indiqué sur ce tuto (http://doc.ubuntu-fr.org/materiel/wifi/zd1211),

et la … problème. Impossible de compileret d’installer. Llors du “make ZD1211REV_B=0 install”, je recoit une erreur liée au linux-headers-2.6.18-3-686.

Auriez vous une idée pour faire enfin fonctionner cette clé ?

Merci bien.
ced

PS : je n’ai pas mon pc sous les yeux, mais j’aurais la possibilité de poster un peu plus tard les exactes errreurs

J’ai eu à installer ce dongle.
J’avais trouvé la solution sur ce site : souslabanquise.eu/dotclear/i … ous-dapper

Ayant galéré, je l’avais gardé dans les bookmarks. Il y avait des trucs à modifier dans le makefile comme sur le tuto ubuntu que tu indiques.

Au moment où j’écris ces lignes, je n’arrive plus à accéder au site, j’espère qu’il n’est pas down.

Salut AnatomicJC,

je te remercie bien pour ton aide. J’ai en effet entendu parler de ce site sur pas mal de forum, mais aussi sur google. Malheureuseument, je n’ai jamais reussi a y acceder, et pourtant, je suis presque sur que la solution y est. snifff

Bref, en fait je n’arrive pas a compiler.

si je fais un make ZD1211REV_B=0 , j’obtiens des tas de warning.

je continu en faisant un make ZD1211REV_B=0_INSTALL , c’est la foire aux erreurs lol

make[1]: entrant dans le répertoire « /usr/src/linux-headers-2.6.18-4-686 »
  Building modules, stage 2.
  MODPOST
Can't open file
make[2]: *** [__modpost] Erreur 1
make[1]: *** [modules] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.18-4-686 »
make: *** [all] Erreur 2

je compile ensuite avec make ZD1211REV_B=1 , toujours plein de warning

et enfin avec make ZD1211REV_B=1_install

  Building modules, stage 2.
  MODPOST
Can't open file
make[2]: *** [__modpost] Erreur 1
make[1]: *** [modules] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.18-4-686 »
make: *** [all] Erreur 2

Merci
ced

Bon, on peut dire que tu as du bol, enfin j’espère. Je viens de fouiller sur l’ubuntu de ma femme et j’ai retrouvé le Makefile modifié (elle n’utilise plus ce dongle depuis un moment).

J’avais utilisé la version zd1211-driver-r83 pour compiler disponible ici : zd1211.ath.cx/download/

Et je viens de tomber par hasard sur le tuto du site down (lien en fin de post) que je t’ai indiqué. Il a été retranscrit sur le forum ubuntu. Et d’après ce que j’ai lu, c’est la procédure que j’avais utilisée pour installer ce foutu dongle. Au fait, c’est bien un SAGEM XG760A ? Et c’est bien zd1211b ??

Assez de blabla voici le Makefile modifié :

[code]#

.zd1211 - USB2.0 802.11b/g driver for Zydas ZD1211 chipsets

CC=gcc
CPP=g++
LD=ld
rM=rm -f -r

VERSION := $(shell uname -r)
MODPATH := /lib/modules/$(VERSION)

if the kernel is 2.6.x, turn on this

KERN_26=y

KERNEL_SOURCE=/usr/src/linux-headers-$(shell uname -r)
#KERNEL_SOURCE=/usr/src/linux

set to 1 for zd1211b

ZD1211REV_B=1

SRC_DIR=src
DEFINES=-D__KERNEL__ -DMODULE=1

ifeq ($(KERN_26), y)

ifeq ($(ZD1211REV_B),1)
MODULE = zd1211b.ko
endif
ifeq ($(ZD1211REV_B),0)
MODULE = zd1211.ko
endif

INCLUDES=-I$(KERNEL_SOURCE)/include -I$(SRC_DIR)/include/ -I$(SRC_DIR)

EXTRA_CFLAGS += -I$(PWD)/src/include

ifndef CONFIG_FRAME_POINTER
EXTRA_CFLAGS += -fomit-frame-pointer
endif

ifdef CONFIG_SMP
EXTRA_CFLAGS += -D__SMP__ -DSMP
endif

KDIR := $(MODPATH)/build
PWD := $(shell pwd)

WLAN_SRC=$(PWD)

EXTRA_CFLAGS += -O2 -Wall -Wstrict-prototypes -pipe
#EXTRA_CFLAGS += -Wa,-a,-ad -g
EXTRA_CFLAGS += -DZDCONF_WE_STAT_SUPPORT=1
EXTRA_CFLAGS += -DHOST_IF_USB
EXTRA_CFLAGS += -DAMAC
EXTRA_CFLAGS += -DGCCK
EXTRA_CFLAGS += -DOFDM
EXTRA_CFLAGS += -DHOSTAPD_SUPPORT
EXTRA_CFLAGS += -DUSE_EP4_SET_REG
EXTRA_CFLAGS += -DDOWNLOADFIRMWARE
EXTRA_CFLAGS += -DfTX_GAIN_OFDM=0
EXTRA_CFLAGS += -DfNEW_CODE_MAP=1
EXTRA_CFLAGS += -DfWRITE_WORD_REG=1
EXTRA_CFLAGS += -DfREAD_MUL_REG=1
EXTRA_CFLAGS += -DENHANCE_RX=1
ifeq ($(ZD1211REV_B),1)
EXTRA_CFLAGS += -DZD1211B
endif
ifeq ($(ZD1211REV_B),0)
EXTRA_CFLAGS += -DZD1211
endif
#EXTRA_CFLAGS += $(INCLUDES)

ifeq ($(ZD1211REV_B),1)
obj-m := zd1211b.o
endif
ifeq ($(ZD1211REV_B),0)
obj-m := zd1211.o
endif
zd1211-objs := $(SRC_DIR)/zd1205.o
$(SRC_DIR)/zdasocsvc.o
$(SRC_DIR)/zdauthreq.o
$(SRC_DIR)/zdauthrsp.o
$(SRC_DIR)/zdmmrx.o
$(SRC_DIR)/zdshared.o
$(SRC_DIR)/zdhci.o
$(SRC_DIR)/zdglobal.o
$(SRC_DIR)/zdencrypt.o
$(SRC_DIR)/zdpmfilter.o
$(SRC_DIR)/zdpsmon.o
$(SRC_DIR)/zdsynch.o
$(SRC_DIR)/zdbuf.o
$(SRC_DIR)/zd1205_proc.o
$(SRC_DIR)/zdhw.o
$(SRC_DIR)/zddebug.o
$(SRC_DIR)/zdtkipseed.o
$(SRC_DIR)/zdmic.o
$(SRC_DIR)/zdusb.o
ifeq ($(ZD1211REV_B),1)
zd1211-objs += $(SRC_DIR)/zd1211.o
zd1211b-objs = $(zd1211-objs)
endif
ifeq ($(ZD1211REV_B),0)
zd1211-objs += $(SRC_DIR)/zd1211.o
endif

all:

ifneq ($(KERNELRELEASE),)

else
ifndef ZD1211REV_B
make both
else
@echo -e $(KDIR)
@echo -e $(PWD)
@echo -e $(EXTRA_CFLAGS)
@echo -e $(zd1211-objs)
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
endif

endif

else # kernel 2.4

INCLUDES=-I$(KERNEL_SOURCE)/include -I$(SRC_DIR)/include/ -I$(SRC_DIR)
ifeq ($(ZD1211REV_B),1)
MODULE = zd1211b.o
endif
ifeq ($(ZD1211REV_B),0)
MODULE = zd1211.o
endif

OBJECTS=$(SRC_DIR)/zd1205.o
$(SRC_DIR)/zdasocsvc.o
$(SRC_DIR)/zdauthreq.o
$(SRC_DIR)/zdauthrsp.o
$(SRC_DIR)/zdmmrx.o
$(SRC_DIR)/zdshared.o
$(SRC_DIR)/zdhci.o
$(SRC_DIR)/zdglobal.o
$(SRC_DIR)/zdencrypt.o
$(SRC_DIR)/zdpmfilter.o
$(SRC_DIR)/zdpsmon.o
$(SRC_DIR)/zdsynch.o
$(SRC_DIR)/zdbuf.o
$(SRC_DIR)/zd1205_proc.o
$(SRC_DIR)/zdhw.o
$(SRC_DIR)/zddebug.o
$(SRC_DIR)/zdtkipseed.o
$(SRC_DIR)/zdmic.o
$(SRC_DIR)/zdusb.o
OBJECTS += $(SRC_DIR)/zd1211.o

CFLAGS=-O -Wall -Wstrict-prototypes -pipe # -Wa,-a,-ad -g

ifdef CONFIG_MODVERSIONS
CFLAGS += -DMODVERSIONS -include $(KERNEL_SOURCE)/include/linux/modversions.h #kernel 2.4
endif

ifndef CONFIG_FRAME_POINTER
CFLAGS += -fomit-frame-pointer
endif

ifdef CONFIG_SMP
CFLAGS += -D__SMP__ -DSMP
endif

CFLAGS += -DZDCONF_WE_STAT_SUPPORT=1
CFLAGS += -DHOST_IF_USB
CFLAGS += -DAMAC
CFLAGS += -DGCCK
CFLAGS += -DOFDM
CFLAGS += -DHOSTAPD_SUPPORT
CFLAGS += -DUSE_EP4_SET_REG
CFLAGS += -DDOWNLOADFIRMWARE
CFLAGS += -DfTX_GAIN_OFDM=0
CFLAGS += -DfNEW_CODE_MAP=1
CFLAGS += -DfWRITE_WORD_REG=1
CFLAGS += -DfREAD_MUL_REG=1
ifeq ($(ZD1211REV_B),1)
CFLAGS += -DZD1211B
endif
ifeq ($(ZD1211REV_B),0)
CFLAGS += -DZD1211
endif
CFLAGS += -DENHANCE_RX=1

ifndef ZD1211REV_B
all:
make both
else
all: $(MODULE)
endif

$(MODULE): $(OBJECTS)
$(LD) -static -r $(OBJECTS) -o $(MODULE)
chmod -x $(MODULE)

%.o: %.c
$(CC) -static $(CFLAGS) $(INCLUDES) $(DEFINES) $(DEBUG) -c $< -o $@

endif
both:
make ZD1211REV_B=0
make install ZD1211REV_B=0
make clean
make ZD1211REV_B=1
make install ZD1211REV_B=1

menuconfig:
/bin/sh scripts/Menuconfig config.in
inst:
make
make install

install: all
mkdir -p $(MODPATH)/kernel/drivers/usb/net/zd1211

mkdir -p /etc/zd1211

cp $(MODULE) $(MODPATH)/kernel/drivers/usb/net/zd1211
depmod -a $(VERSION)

#for apdbg
gcc -o apdbg apdbg.c
chmod +x apdbg
cp ./apdbg /sbin/apdbg

clean:
rm -rf .tmp_versions .*.cmd *.ko *.mod.c .mod.o .o $(SRC_DIR)/.o $(SRC_DIR)/..o.cmd

[/code]

Le Tuto si tu veux vérifier les modifications : forum.ubuntu-fr.org/viewtopic.ph … 14#p649014

Par contre il explique pour un PC portable ASUS et je n’ai pas eu à faire ça :

[quote]C’est içi que l’astuce interviens, votre Asus A9RP est équipé d’un chip wifi Zydas de type ZD1211b. Celui-ci est monté en interne sur le bus USB. Comme ce matériel n’es pas reconnu par la dernière version du pilote, il va faloir lui expliquer :

Code:

sudo gedit /usr/src/zd1211/zd1211-driver-r83/src/zdusb.c

repérez la ligne contenant " #ifdef ZD1211B "
introduisez une ligne en dessous contenant :
Code:

            { USB_DEVICE(0x0b05, 0x171b) },

puis enregistrez.

Nous vennons d’ajouter un ID de periphérique a reconnaitre par le driver comme un chip usb zydas 1211b.[/quote]

Par contre tout le reste correspond. L’erreur dans le Makefile est en fait une mauvaise indication quant à l’emplacement de linux-headers je crois.

Voilou, ça a fonctionné pour une Ubuntu, j’espère que ça marchera pour ta Debian !! J’espère par contre que les compilations que tu as faites précédemment ne t’ont pas foutu le bordel dans tes fichiers.

Bonne compilation !!! :smiley:

Merci beaucoup AnatomicJC,

je vais tester ca tout de suite. Je suis loin d’etre un specialiste de linux, mais je vais m’y accrocher. Mais je suis rassuré car j’ai une base bien solide a présent.

En ce qui concerne mon dongle, je n’ai pas la référence exacte (l’etiquette s’est effacée, et impossible de la trouver sur la doc de la livebox), mais d’apres un lsusb, la reference de ma clé est 079b:0062 Sagem, et d’apres les docs que j’ai trouvé sur le net, c’est bien le zd1211b a utiliser.

Pour l’emplacement des linux-headers, j’y ait effectivement pensé, mais je ne voit aucun probleme.

Je te tiendrais au courant de l’avancement des choses.
Bonne siorée, et merci encore pour toutes ces données.
ced

Ca yé, j’ai une tres bonne nouvelle, enfin mon dongle marche, et tout ca grace a AnatomicJC.

Donc, pour ceux qui souhaite installer ce matériel comme moi, il faut suivre le tuto de ubuntu que AnatomicJC a conseillé, la grosse partie y est indiqué.

Il ne faut pas oublier de bien indiquer dans le makefile qu’il doit etre utilisé en version b, comme par exemple cette ligne :

# set to 1 for zd1211b ZD1211REV_B=1

et bien sur ne pas oublier de modifier le zdusb.c (comme l’a cité AnatomicJC)

voila, un modprobe -v de zd1211b pour charger le module (verifier que ce soit bien la version b qui soit chargé encore une fois), un ifconfig wlan0 up et hop … a vous le net…

voila, sur ceux je vais au lit, bonne soirée a tous, et merci encore pour toutes tes infos AnatomicJC