Draadlooze AP met ZD1211b

Pagina: 1
Acties:
  • 1.139 views sinds 30-01-2008
  • Reageer

  • Convo
  • Registratie: September 2005
  • Laatst online: 14-12-2025
Hoi, Ik vertel meteen maar even het hele verhaal zodat jullie weten hoe het probleem tot stand is gekomen.

Ik heb een eigen thuisservertje draaien, het is een P3@750 Mhz, 512MB met als OS Debian 4.0. Hij dient op het moment als http, samba en ftp server. Omdat ik geen draadloze router heb, ben ik gaan kijken of ik mijn thuisservertje kan gebruiken als AP. Ik ben hier al een tijdje mee bezig maar ik kom er niet uit.

Omdat ik al een usb wifi adapter heb, wil ik deze hiervoor gaan gebruiken. Het gaat om een Datel WiFi MAX usb_dongle. (Ja, ja ik weet dat het zo'n goedkoop ding is :P ) Maargoed, na een beetje research ben ik erachter gekomen dat het apparaatje een Zydas ZD1211b chipset gebruikt. De drivers voor deze chipset zijn gelukkig aanwezig in de kernel vanaf 2.6.18.x.

Als ik de wifi-adapter aansluit op de usb-poort van de computer, werkt het apparaatje, ten minste als ontvanger. Alleen als ik de adapter in AP modus wil zetten krijg ik de volgende foutmelding.

Osiris:/usr/src/ZD1211LnxDrv_2_22_0_0/src# iwconfig eth1 mode master
Error for wireless request "Set Mode" (8B06) :
    SET failed on device eth1 ; Invalid argument.


Na wat research ben ik er achter gekomen, dat de (community) driver (zd1211rw) die bij de kernel werd meegeleverd (nog) geen ondersteuning biedt voor AP mode.
zie:
http://www.linuxwireless.org/en/users/Drivers/zd1211rw

Gelukkig staat er op de pagina van de zd1211rw driver ook een link naar de officiele driver, geschreven door Zydas.
http://zd1211.wiki.sourceforge.net

Dus ik download de driver en pak hem uit met tar. Met make menuconfig de standaard configuratie bekeken, maar er niets aan veranderd.

Vervolgens laat ik de driver bouwen met make, maar dan begint de ellende, ik krijgt 200+ aantal waarschuwingen en een driver die -hoe kan het ook anders- niet wil starten.

dmesg
_____     ____    _    ____
|__  /   _|  _ \  / \  / ___|
  / / | | | | | |/ _ \ \___ \
 / /| |_| | |_| / ___ \ ___) |
/____\__, |____/_/   \_\____/
     |___/
ZD1211B - version 2.22.0.0-development
vendor_id = 0ace
product_id = 1215
USB 1.1 Host
Release Ver = 4810
EEPORM Ver = 4810
Finsih download Firmware. Ready to reboot
zd1211: failed intr_urb
Calling zd1211_InitSetup fails
zd1211b: probe of 1-2:1.0 failed with error -5



Op http://zd1211.wiki.sourceforge.net/VendorDriver staat een goedkope z.g.n. oplossing maar die helpt niet. Ook staat op dezelfde pagina een patch maar die is voor versie 2.16.0.0 van de driver. daarnaast weet ik ook niet hoe ik die patch zou moeten gebruiken.

Dus, als iemand hier een oplossing voor heeft, of een betere manier weet om de usb wifiadapter in AP mode te zetten, dan zou dat mooi zijn. Mischien zijn er nog anderen met hetzelfde probleem, (wat ik eigenlijk niet verwacht)

Nog even voor de volledigheid:

-Ik draai nu de 2.6.23.14 kernel
-De adapter is niet kapot (werkt wel onder windows als AP)
-Ik ben nog niet echt ervaren met linux
-De documentatie van de driver zit in de .tar.gz en biedt mij geen uitkomst.
-Mijn systeem is up to date, ik gebruikt dus ook de nieuwste versie van gcc en g++
-Ik heb de waarschuwingen die ik tijdens het compileren krijgt niet in deze post staan omdat het er teveel zijn. Ik heb st daarom in een tekstfile staan: http://www.planet.nl/~laat0265/make.log

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08-2025

Tim

Die waarschuwingen zouden wel handig zijn:
make 2>&1 > make.log

Dat zorgt ervoor dat std-err (alle foutmeldingen) ook wordt opgeslagen (eigenlijk redirect je ze naar std-out).

  • Convo
  • Registratie: September 2005
  • Laatst online: 14-12-2025
Oke, ik heb de originele post nu aangepast. Onderaan vind je de link naar het tekstbestandje met de uitvoer van make. Alleen in make.log zie ik de waarschuwingen die ik op mijn scherm kreeg niet meer terug.

[ Voor 27% gewijzigd door Convo op 23-01-2008 15:15 ]


  • LoekVe
  • Registratie: Januari 2008
  • Laatst online: 23-12-2025
Ik zit met hetzelfde probleem, alleen ik kon de vendor driver wel compileren onder Feodora 8. Daarna werkte het apparaat wel in master mode. Ik gebruik nog kernel 2.6.18

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:23

deadinspace

The what goes where now?

Dr.R schreef op dinsdag 22 januari 2008 @ 21:37:
Gelukkig staat er op de pagina van de zd1211rw driver ook een link naar de officiele driver, geschreven door Zydas.
http://zd1211.wiki.sourceforge.net
Welke driver heb je nou precies gedownload? Driver version 2.22.0.0 op zd1211.wiki.sourceforge.net/VendorDriver?
Vervolgens laat ik de driver bouwen met make, maar dan begint de ellende, ik krijgt 200+ aantal waarschuwingen [...]
Ik heb de waarschuwingen die ik tijdens het compileren krijgt niet in deze post staan omdat het er teveel zijn. Ik heb st daarom in een tekstfile staan: http://www.planet.nl/~laat0265/make.log
Ik zie (verrassend genoeg, gezien het commentaar op die wiki) geen enkele waarschuwing in die output. Het zijn trouwens maar 119 regels, dus hoe kom je aan 200+ waarschuwingen? :P
Op http://zd1211.wiki.sourceforge.net/VendorDriver staat een goedkope z.g.n. oplossing maar die helpt niet.
Je bedoelt die eth_copy_and_sum() -> memcpy() wijziging? Heb je die toegepast op zd1205.c en daarna opnieuw gecompiled?
Dus, als iemand hier een oplossing voor heeft, of een betere manier weet om de usb wifiadapter in AP mode te zetten, dan zou dat mooi zijn.
Gezien het commentaar op die VendorDriver pagina heb je misschien meer succes met een wat oudere kernel (zoals bijvoorbeeld 2.6.18, de kernel van Debian 4.0 ;) ).

Als dat niet helpt, dan zou ik die patch op de VendorDriver pagina eens proberen. Dat hij voor 2.16.0.0 is wil niet noodzakelijk zeggen dat hij niet toe te passen is op 2.22.0.0, maar dat is een kwestie van proberen. Hij ziet er simpel genoeg uit.
Ik draai nu de 2.6.23.14 kernel
Hoe kom je daar aan? Zelf gedownload en geinstalleerd?
Mijn systeem is up to date, ik gebruikt dus ook de nieuwste versie van gcc en g++
Welke precies?

  • Convo
  • Registratie: September 2005
  • Laatst online: 14-12-2025
Ben blij dat er tenminste iemand weer reageert :P
Alvast bedankt voor de moeite.
Welke driver heb je nou precies gedownload? Driver version 2.22.0.0 op zd1211.wiki.sourceforge.net/VendorDriver?
Ik heb de vendor driver versie 2.22.0.0 gedownload
Ik zie (verrassend genoeg, gezien het commentaar op die wiki) geen enkele waarschuwing in die output. Het zijn trouwens maar 119 regels, dus hoe kom je aan 200+ waarschuwingen?
Dat klopt, ik heb make.log gemaakt zoals aangegeven in de eerste reply door Tes. Alleen komen de talloze waarschuwingen die over mijn scherm vliegen niet in make.log als ik het op die manier doe. Ik moet nog opzoeken hoe ik die waarschuwingen er ook in krijgt.
Je bedoelt die eth_copy_and_sum() -> memcpy() wijziging? Heb je die toegepast op zd1205.c en daarna opnieuw gecompiled?
Ik heb deze wijziging toegepast op zd1205.c en daarna opnieuw gecompileerd. Dit leverde geen verbetering op.
Gezien het commentaar op die VendorDriver pagina heb je misschien meer succes met een wat oudere kernel (zoals bijvoorbeeld 2.6.18, de kernel van Debian 4.0 ).

Als dat niet helpt, dan zou ik die patch op de VendorDriver pagina eens proberen. Dat hij voor 2.16.0.0 is wil niet noodzakelijk zeggen dat hij niet toe te passen is op 2.22.0.0, maar dat is een kwestie van proberen. Hij ziet er simpel genoeg uit.
Ziet er voor jou mischien erg simpel uit, maar voor mij niet. Ik heb amper ervaring met C. Ik ga het morgen proberen met die patch, maar ik verwacht er niet erg veel van.
Hoe kom je daar aan? Zelf gedownload en geinstalleerd?
Ja, gedownload van kernel.org en daarna geconfigureerd met xconfig en geinstalleerd. Ik heb dit gedaan omdat er verbeteringen inzaten voor de zd1211rw driver. Helaas (nog) geen AP ondersteuning. Ik gebruikte eerst de kernel die met Debian geleverd werd dit was 2.6.18-4. Ik heb hierop ook al geprobeerd de vendor driver te compileren, maar dit leverde mij dezelfde problemen op.
Welke precies?
Ja, dit is een beetje kort door de bocht. Vooral omdat Debian altijd vrij laat is met het aanbieden van nieuwe packages via apt. (Tenzij ik de sources aanpas natuurlijk). Maargoed, ik gebruik nu gcc 4.1.2 en g++ 4.1.2

Heb je mischien een methode waarmee ik alle uitvoer, dus ook de waarschuwingen van make in een bestand kan zetten?

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:23

deadinspace

The what goes where now?

Dr.R schreef op vrijdag 25 januari 2008 @ 20:57:
Dat klopt, ik heb make.log gemaakt zoals aangegeven in de eerste reply door Tes. Alleen komen de talloze waarschuwingen die over mijn scherm vliegen niet in make.log als ik het op die manier doe. Ik moet nog opzoeken hoe ik die waarschuwingen er ook in krijgt.
Ahja.

CLI programma's hebben twee outputs, standard out (stdout) en standard error (stderr). Die waarschuwingen van het compilen zullen via stderr gaan en niet via stdout. stdout redirect je met >, en stderr redirect je met 2>.

Je kan stderr ook naar stdout sturen, met 2>&1. Dat is ook wat Tes wilde bereiken, maar zijn tip bevatte een klein foutje, 2>&1 moet achteraan, zo dus:
make > make.log 2>&1

(dat is ook niet erg logisch vind ik, en ik doe het zelf ook regelmatig fout)
Ziet er voor jou mischien erg simpel uit, maar voor mij niet. Ik heb amper ervaring met C. Ik ga het morgen proberen met die patch, maar ik verwacht er niet erg veel van.
Dat is niet zozeer wat ik bedoelde. Ik bedoelde dat die patch vrij eenvoudig is (qua impact op de driver), dus dat ik het een redelijke kans geef dat hij toe te passen is op 2.22.0.0, ook al is hij bedoeld voor 2.16.0.0.

Je kan de patch toepassen door in de directory te gaan staan die de directory src/ bevat waar zd1205.c in staat, en dan het volgende commando uit te voeren:
patch -p1 < /path/to/ZD1211-2_16_0_0-linux-2.6.20.patch

(aanpassen voor waar je patch file staat / hoe je patch file heet natuurlijk)
Ja, gedownload van kernel.org en daarna geconfigureerd met xconfig en geinstalleerd. Ik heb dit gedaan omdat er verbeteringen inzaten voor de zd1211rw driver. Helaas (nog) geen AP ondersteuning. Ik gebruikte eerst de kernel die met Debian geleverd werd dit was 2.6.18-4. Ik heb hierop ook al geprobeerd de vendor driver te compileren, maar dit leverde mij dezelfde problemen op.
Ah, ok. Als je zelf een kernel compiled, dan is het overigens netter om dat met make-kpkg te doen, daar komt dan een Debian package uit rollen die de kernel bevat. :)
Ja, dit is een beetje kort door de bocht. Vooral omdat Debian altijd vrij laat is met het aanbieden van nieuwe packages via apt. (Tenzij ik de sources aanpas natuurlijk). Maargoed, ik gebruik nu gcc 4.1.2 en g++ 4.1.2
Hmm, hoe kom je aan die gcc? Want de gcc in Etch is 4.1.1.

  • Convo
  • Registratie: September 2005
  • Laatst online: 14-12-2025
Het is alweer even geleden dan ik met het probleem aan kwam zetten. Ik heb in de tussentijd geen tijd kunnen vinden om me ermee bezig te houden. Maar ik ga me er weer aan wagen.

De patch is bedoeld voor versie 2.16.0.0 van de vendor driver. Na een tijdje zoeken heb ik de driver gevonden. Daarna heb ik de driver gepatcht met de eerder genoemde patch. Tijdens het patchen ben ik geen problemen tegen gekomen.
Osiris:~/ZD1211LnxDrv_2_16_0_0# patch -p1 < ../ZD1211-2_16_0_0-linux-2.6.20.patch
patching file src/zd1205.c
patching file src/zd1205_proc.c
patching file src/zd1211.c
patching file src/zd1211.h
patching file src/zd1205.h
Osiris:~/ZD1211LnxDrv_2_16_0_0#


Bij deze oudere driver was het niet mogelijk hem te configureren met make config en make menuconfig. Ik heb dus maar aangenomen dat dat niet nodig is.
make: *** Er is geen regel om doel 'menconfig' te maken.  Gestopt.


Vervolgens probeer ik het make commando, en weer gaat het fout. Deze keer echter met wat minder foutmeldingen en waarschuwingen.
make output:
Osiris:~/ZD1211LnxDrv_2_16_0_0# ls
apdbg.c  Makefile  Menudbg  src  Winevl_iface
Osiris:~/ZD1211LnxDrv_2_16_0_0# make
make both
make[1]: Map '/root/ZD1211LnxDrv_2_16_0_0' wordt binnengegaan
make clean
make[2]: Map '/root/ZD1211LnxDrv_2_16_0_0' wordt binnengegaan
rm -rf .tmp_versions .*.cmd *.ko *.mod.c *.mod.o *.o src/*.o  src/.*.o.cmd menudbg apdbg winevl_iface
make[2]: Map '/root/ZD1211LnxDrv_2_16_0_0' wordt verlaten
make ZD1211REV_B=0
make[2]: Map '/root/ZD1211LnxDrv_2_16_0_0' wordt binnengegaan
/lib/modules/2.6.24-1-686/build
/root/ZD1211LnxDrv_2_16_0_0
-I/root/ZD1211LnxDrv_2_16_0_0/src/include -fomit-frame-pointer -O2 -Wall -Wstrict-prototypes -pipe -Wno-unused -DZDCONF_WE_STAT_SUPPORT=1 -DHOST_IF_USB -DAMAC -DGCCK -DOFDM -DHOSTAPD_SUPPORT -DUSE_EP4_SET_REG -DDOWNLOADFIRMWARE -DfTX_GAIN_OFDM=0 -DfNEW_CODE_MAP=1 -DfWRITE_WORD_REG=1 -DfREAD_MUL_REG=1 -DENHANCE_RX=1 -DZDCONF_MENUDBG -DZDCONF_APDBG -DPRODUCTION -DZDCONF_BANDEDGE_ADJUST -DZDCONF_SES_SUPPORT=1 -DAAAA03_FIX=1 -DZD1211 -DZDCONF_LP_SUPPORT=0
src/zd1205.o src/zdreq.o src/zdasocsvc.o src/zdauthreq.o src/zdauthrsp.o src/zdmmrx.o src/zdshared.o src/zdhci.o src/zdglobal.o src/zdencrypt.o src/zdpmfilter.o src/zdpsmon.o src/zdsynch.o src/zdbuf.o src/zd1205_proc.o src/zdhw.o src/zddebug.o src/zdtkipseed.o src/zdmic.o src/zddebug2.o src/zdlpmgt.o src/zdturbo_burst.o src/zdusb.o src/zdmisc.o src/zd1211.o
make -C /lib/modules/2.6.24-1-686/build SUBDIRS=/root/ZD1211LnxDrv_2_16_0_0 modules
make[3]: Map '/usr/src/linux-headers-2.6.24-1-686' wordt binnengegaan
  CC [M]  /root/ZD1211LnxDrv_2_16_0_0/src/zd1205.o
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:450: warning: initialization from incompatible pointer type
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c: In function âzd1205_rx_isrâ:
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:4212: error: âstruct sk_buffâ has no member named âmacâ
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c: In function âzd1205_xmit_frameâ:
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:5019: warning: ISO C90 forbids mixed declarations and code
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:5020: warning: assignment from incompatible pointer type
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:5023: warning: assignment from incompatible pointer type
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c: In function âzd1205_ioctlâ:
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:8256: warning: ignoring return value of âcopy_from_userâ, declared with attribute warn_unused_result
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:8257: warning: ignoring return value of âcopy_to_userâ, declared with attribute warn_unused_result
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c: In function âzdcb_rx_indâ:
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:9686: error: implicit declaration of function âeth_copy_and_sumâ
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c: In function âzd1205_set_zd_cbsâ:
/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.c:10117: warning: assignment from incompatible pointer type
make[4]: *** [/root/ZD1211LnxDrv_2_16_0_0/src/zd1205.o] Fout 1
make[3]: *** [_module_/root/ZD1211LnxDrv_2_16_0_0] Fout 2
make[3]: Map '/usr/src/linux-headers-2.6.24-1-686' wordt verlaten
make[2]: *** [all] Fout 2
make[2]: Map '/root/ZD1211LnxDrv_2_16_0_0' wordt verlaten
make[1]: *** [both] Fout 2
make[1]: Map '/root/ZD1211LnxDrv_2_16_0_0' wordt verlaten
make: *** [all] Fout 2
Osiris:~/ZD1211LnxDrv_2_16_0_0#


Ik gebruik ondetussen kernel 2.6.24-1-686. Het systeem is verder up to date.

Ik weet niet of het mogelijk is om de driver op een andere kernel te compileren en dat over te zetten. De driver (met patch) is namelijk geschreven voor 2.6.20.

Ik weet niet of je, (of iemand anders) hier een redelijk oplossing voor kan vinden. Maar zoals ik het er nu uitziet vrees ik dat ik beter op zoek gaan naar andere wifi-apparatuur.

  • Convo
  • Registratie: September 2005
  • Laatst online: 14-12-2025
Na een hoop ellende gehad te hebben met de usb wifiadapter met de zd1211 chipset, kap ik ermee.
De belangrijkste reden is dat ik ben overgestapt van Planet Internet naar KPN. Hierbij krijg ik een draadloze router in bruikleen, dus mijn thuisserver hoeft niet meer als AP dienst te doen. Ik zie het nut er niet van in om nog meer van mijn en jullie tijd te verdoen met het aan de praat krijgen van een goedkoop onding.

Het lijkt erop dat er af en toe toch nog nieuwe versies uitkomen van de vendordriver voor de zd1211(zie startpost). Heel stiekem en zonder enige verder informatie verandert het versienummer van de driver zodat hij compileert met nieuwere kernels. Ik heb de driver nu dus zonder foutmeldingen weten te compileren. Echter blijven er enkele waarschuwingen, en werkt de driver uiteindelijk niet met mijn wifi adapter.

Ik post hier niet meer info over, omdat ik al aangaf dat ik ermee gekapt ben. Als iemand anders tegen hetzelfde probleem aanloopt ben ik nog altijd geinteresseerd, gewoon om het voor de kick toch aan de praat te krijgen. :P Als iemand ideen of vragen heeft sta ik er nog altijd voor open.

Toch nog maar ff TES en deadinspace bedanken voor de moeite.

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 23:23

deadinspace

The what goes where now?

Dr.R schreef op zondag 06 juli 2008 @ 20:35:
Toch nog maar ff TES en deadinspace bedanken voor de moeite.
Dank je, maar jammer dat het niet gelukt is :)
Pagina: 1