AVM Fritz WLAN USB Stick and openSUSE 11.0

Trying to get the gadget named in the subject to work with openSUSE 11.0.
YaST tells me I have to get a driver and/or firmware from the vendor.
The vendor offers me a proprietary driver which I’ll have to compile for
my kernel.
Trying to do so fails with an error message because of a type redefinition,
and after removing that, another error because it uses GPL-only functions.
Tentatively overriding the GPL check produces a module which loads and
detects the device but doesn’t actually succeed in producing a wireless
connection; instead it makes the kernel oops and hang on shutdown.
Any chance of getting that device to work? Or do I have to file AVM in
the “Linux unfriendly” category?

TIA
T.

I removed your previous duplicate thread. Please, only one post on a subject.

Tilman Schmidt wrote:
> Trying to get the gadget named in the subject to work with openSUSE 11.0.
> YaST tells me I have to get a driver and/or firmware from the vendor.
> The vendor offers me a proprietary driver which I’ll have to compile for
> my kernel.
> Trying to do so fails with an error message because of a type redefinition,
> and after removing that, another error because it uses GPL-only functions.
> Tentatively overriding the GPL check produces a module which loads and
> detects the device but doesn’t actually succeed in producing a wireless
> connection; instead it makes the kernel oops and hang on shutdown.
> Any chance of getting that device to work? Or do I have to file AVM in
> the “Linux unfriendly” category?

They are certainly not “Linux friendly” if they are not GPLing their driver.

I don’t have the device, but I’m willing to look at their code. To determine
where in the code that the oops is occurring, please install the objdump
package, and determine which file in the module contains the bad routine. Then
issue the command

objdump -d -l (path to binary) > dump_of_bad_routine

In the output file, find the entry point of the routine that is failing, add the
failure offset to it, and you will have the line number in the source file that
failed.

Larry

Tilman Schmidt wrote:
> Trying to get the gadget named in the subject to work with openSUSE 11.0.
> YaST tells me I have to get a driver and/or firmware from the vendor.
> The vendor offers me a proprietary driver which I’ll have to compile for
> my kernel.
> Trying to do so fails with an error message because of a type redefinition,
> and after removing that, another error because it uses GPL-only functions.
> Tentatively overriding the GPL check produces a module which loads and
> detects the device but doesn’t actually succeed in producing a wireless
> connection; instead it makes the kernel oops and hang on shutdown.
> Any chance of getting that device to work? Or do I have to file AVM in
> the “Linux unfriendly” category?

They are certainly not “Linux friendly” if they are not GPLing their driver.

I don’t have the device, but I’m willing to look at their code. To determine
where in the code that the oops is occurring, please install the objdump
package, and determine which file in the module contains the bad routine. Then
issue the command

objdump -d -l (path to binary) > dump_of_bad_routine

In the output file, find the entry point of the routine that is failing, add the
failure offset to it, and you will have the line number in the source file that
failed.

Larry

Thread locked for move to new location.
AVM Fritz WLAN USB Stick and openSUSE 11.0 - openSUSE Forums

Move complete. Thread unlocked.

oldcpu schrieb:
> Tilman Schmidt;1837649 Wrote:
>> Trying to get the gadget named in the subject to work with openSUSE
>> 11.0.
>
> I removed your previous duplicate thread. Please, only one post on a
> subject.

Sorry, still trying to cope with the limited NNTP support on this news server.
In fact I did post only once, as a cross-post to opensuse.org.help.hardware
and opensuse.org.help.network-internet.wireless, but apparently the server
for the opensuse hierarchy doesn’t grok that so you saw it twice.

Are there other non-standard limitations like that in this hierarchy?
Where can I read up on them?

TIA
T.

Larry Finger schrieb:
> Tilman Schmidt wrote:
>> Trying to get the gadget named in the subject to work with openSUSE 11.0.
>> YaST tells me I have to get a driver and/or firmware from the vendor.
>> The vendor offers me a proprietary driver which I’ll have to compile for
>> my kernel.
>> Trying to do so fails with an error message because of a type
>> redefinition,
>> and after removing that, another error because it uses GPL-only
>> functions.
>> Tentatively overriding the GPL check produces a module which loads and
>> detects the device but doesn’t actually succeed in producing a wireless
>> connection; instead it makes the kernel oops and hang on shutdown.
>> Any chance of getting that device to work? Or do I have to file AVM in
>> the “Linux unfriendly” category?
>
> They are certainly not “Linux friendly” if they are not GPLing their
> driver.
>
> I don’t have the device, but I’m willing to look at their code. To
> determine where in the code that the oops is occurring, please install
> the objdump package, and determine which file in the module contains the
> bad routine. Then issue the command
>
> objdump -d -l (path to binary) > dump_of_bad_routine
>
> In the output file, find the entry point of the routine that is failing,
> add the failure offset to it, and you will have the line number in the
> source file that failed.

Sorry for the delay in replying. I got put off by the “thread locked”
message. I’ll be back soonish with the results of the check you proposed.
(It’s a machine I don’t always have access to.)

Thanks,
Tilman

[Dropped opensuse.org.help.hardware from the list of groups in the hope
of avoiding the “duplicate posting” problem which seems to have caused
the locking of the thread. Hope that’s ok.]

Larry Finger schrieb:
> Tilman Schmidt wrote:
[…][color=green]
>> Any chance of getting that device to work? Or do I have to file AVM in
>> the “Linux unfriendly” category?
>
> They are certainly not “Linux friendly” if they are not GPLing their
> driver.[/color]

Granted. However, between black (vendors blocking any effort to use their
device with Linux) and white (vendors maintaining a fully functional GPLed
driver within the official kernel source tree), there are a lot of shades
of grey, from sharing specs to publishing a GPLed but out-of-tree driver,
or even different hues like the oft-deplored binary-only parts, somtimes
accompanied by limited-functionality open source drivers.

> I don’t have the device, but I’m willing to look at their code.

Thanks for that offer, but in the meantime I have already received a
pointer to a solution for Ubuntu published on the web
(http://forum.ubuntuusers.de/topic/avm-usb-stick-8.04/4/#post-1402740)
which cleared everything up. There are really two problems:
(a) changes in the kernel to which the code has to be adapted, and
(b) the new measures against non-GPL USB drivers in the Linux kernel.
So without much further ado, here’s how I got it to work:

  • Download the AVM driver fwlanusb-1.00.00.tar.gz from the AVM website.

  • Unpack with the command “tar -tvzf fwlanusb-1.00.00.tar.gz”, producing
    a directory “fritz”.

  • Apply the following patch to adapt the source for use with kernel
    release 2.6.25:

--------8<--------8<--------8<--------8<--------8<--------8<--------8<--------8<
diff -rup fritz~/src/defs.h fritz/src/defs.h
— fritz~/src/defs.h 2007-07-05 15:00:00.000000000 +0200
+++ fritz/src/defs.h 2008-07-11 17:47:08.000000000 +0200
@@ -60,7 +60,7 @@

#define UNUSED_ARG(x) (x)=(x)

-typedef unsigned long uintptr_t;
+//typedef unsigned long uintptr_t;

/---------------------------------------------------------------------------
*---------------------------------------------------------------------------*/
diff -rup fritz~/src/wext.c fritz/src/wext.c
— fritz~/src/wext.c 2007-07-05 15:00:00.000000000 +0200
+++ fritz/src/wext.c 2008-07-28 02:37:10.000000000 +0200
@@ -68,7 +68,7 @@ static int fwlanusb_get_name (
struct net_device *dev, struct iw_request_info *info,
union iwreq_data *wrqu, char *extra) {

  •   strcpy(wrqu-&gt;name, "IEEE 802.11b/g");
    
  •   snprintf(wrqu-&gt;name, IFNAMSIZ, "IEEE 802.11b/g");
    

return 0;
}

-------->8-------->8-------->8-------->8-------->8-------->8-------->8-------->8

  • Bypass the measures against non-GPL USB drivers introduced with
    kernel release 2.6.25. This is of course frowned upon, so I won’t
    explain how to do it.

  • Run the driver’s “install” script as root, with the command
    “sudo ./install”

  • Plug in the stick, watch it being detected in the syslog, configure
    as described in the driver’s Readme.html file, enjoy (with bad
    conscience).

HTH
T.

[li] Introduced by commit 782e70c6fc2290a0395850e8e02583b8b62264d8, which[/li]claims in its description: “There are no known closed source USB drivers
in the wild, so this patch should cause no problems.” Oh well.

All of this sounds reasonable, yet I get an additional error:

make
make -C /lib/modules/2.6.31.3-1-default/build SUBDIRS=/media/500GB/fritz/src modules
make[1]: Entering directory /usr/src/linux-2.6.31.3-1-obj/i386/default' make -C ../../../linux-2.6.31.3-1 O=/usr/src/linux-2.6.31.3-1-obj/i386/default/. modules CC [M] /media/500GB/fritz/src/driver.o /media/500GB/fritz/src/driver.c: In function ‘net_init’: /media/500GB/fritz/src/driver.c:317: error: ‘struct net_device’ has no member named ‘priv’ /media/500GB/fritz/src/driver.c:318: error: ‘struct net_device’ has no member named ‘open’ /media/500GB/fritz/src/driver.c:319: error: ‘struct net_device’ has no member named ‘stop’ /media/500GB/fritz/src/driver.c:320: error: ‘struct net_device’ has no member named ‘hard_start_xmit’ /media/500GB/fritz/src/driver.c:321: error: ‘struct net_device’ has no member named ‘get_stats’ /media/500GB/fritz/src/driver.c: In function ‘net_rx’: /media/500GB/fritz/src/driver.c:405: error: ‘struct net_device’ has no member named ‘priv’ /media/500GB/fritz/src/driver.c: In function ‘net_tx’: /media/500GB/fritz/src/driver.c:436: error: ‘struct net_device’ has no member named ‘priv’ /media/500GB/fritz/src/driver.c: In function ‘net_stats’: /media/500GB/fritz/src/driver.c:458: error: ‘struct net_device’ has no member named ‘priv’ make[4]: *** Error 1 make[3]: *** [_module_/media/500GB/fritz/src] Error 2 make[2]: *** [sub-make] Error 2 make[1]: *** [all] Error 2 make[1]: Leaving directory /usr/src/linux-2.6.31.3-1-obj/i386/default’
make: *** [fwlanusb.o] Error 2

Not sure what to do about it, I found a hint here

Ilap’s tech: Cisco VPN Client on Karmic Koala

stating “I looked at the source code and seemed that the Linux kernel 2.6.31 replaced the old net_device structure with a new one and is using that new structure for the net_device operations. This structure called net_device_ops (const struct net_device_ops *netdev_ops).”

Alas I am too casual a programmer to fix it myself, I would be happy if you could help me out.

… and breaks at least two licenses at the same time (GPL and the license of AVM).

Very interesting, that such a thread, clearly explaining illegal activities and breaking one of the most important bases of FOSS (the most important free software license in linux) remains open for nearly one year.

While it may be a very bad thing to break a license, I feel it’s even worse to sell equipment, that one only can make use of by breaking the manufacturers license.

Pretty odd, if you ask me.

I ventured to raise a support issue with AVM on the topic, only to get nonsensical statements about how they do not feel inclined to make statements about when and if the linux driver will be updated.

The only AVM supported Linux is 10.2, which is out of support by itself.

Why?

AVM does not support newer linux versions and nobody forces you to buy their products.

If you ask me, it’s pretty odd to buy such hardware in the first place.

I bought it when I was on SUSE 10.2, and it worked nicely without breaking any law.

I feel inclined to make use of my legal, paid for property, although AVM does not feel like supporting it any further. If they don’t like it, they can easily take the product back and refund me.

Good luck on that.

:slight_smile:

P.S.

The patch excluding non-GPLed modules from using certain functions was first introduced in 2.6.16 (= 10.1) and postponed for two years in order to give vendors protesting (AVM was one of them) time to react.

AVM only reacted in stating they will drop linux support “then”, but if having a look at their other linux drivers, you will see, that all of them had not been developed since SuSE 9.x.

So you bought the wrong hardware, bad luck, but we are talking about a value of 30€ (new) with a lot of alternatives for the same or lower price, I don’t really see the point of making such fuss about it.

Why, considering your lament, you need not complain about other peoples “fuzz” :wink:

I am far from making a “fuzz” of it, I just try to make it work.

On the other hand cases like this are the reason I am only playing with linux, whatever flavor. Nice pastime.

Serious work is done with Windows, thank god Microsoft forces vendors (including AVM) to make their stuff work with that platform, which is why I can use the stick most of the time :slight_smile:

I don’t complain (in fact you are complaining here), I just state the actual situation when you bought that device.

All other vendor drivers were no longer available before (for 10.1), the driver “fwlanusb” was only available for 32 bit and never played well with Networkmanager, which was also known before and ndiswrapper is still a solution for today.