Screwed up ndiswrapper on D600 & 11.2

This is my first experience of OpenSuse, which I installed on a Dell D600 laptop which previously had Windoze. Now I do have some *nix experience, as I used to use some Unix in the past and also had a little experience of RH a few years back. More recently I installed the latest Ubuntu on another PC and really liked it. So overall, I’m reasonably comfortable in a noobish kind of way with Linux. :slight_smile: Anyway, I’d seen some great reviews of OpenSuse 11.2 and decided to put that on my D600. My first impression is that it’s a lot nicer on the desktop than Ubuntu! And we all know that Windoze sucks anyway. :wink:

Anyway, I read all over the forums about how to get the internal Broadcomm WLAN going, both here on opensuse.org and on Novell’s site, as well as linuxwireless.org. Not surprisingly it’s a well-known machine and issue and the internal WLAN is actually a Broadcomm BCM4309.

lspci|grep Broadcom

02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705M Gigabit Ethernet (rev 01)
02:03.0 Network controller: Broadcom Corporation BCM4309 802.11a/b/g (rev 03)

From my reading the ndiswrapper method seemed to be well tried and tested on this machine, so I opted to use that, and followed the quite clear instructions given on both sites.

Now my mistake - I copied the two main windoze drivers bcmw15.inf and bcmw15.sys and failed to notice the additional bcm43xx.cat file that was probably also required. When I ran “ndiswrapper -i bcmw15.inf” it appeared to work OK, without any error messages, but now I suspect it actually hadn’t worked correctly.

Anyway, running ndiswrapper -l gave me:

WARNING: All config files need .conf: /etc/modprobe.d/ndiswrapper, it will be ignored in a future release.
bcmwl5 : driver installed
device (14E4:4324) present (alternate driver: ssb)

This made me wonder if maybe I should have used the ssb driver instead, if that’s what 11.2 now comes with. Anyway, I thought I would continue with the well-tried and proven ndiswrapper method. Not surprisingly the wlan0 failed to work. So I decided to remove the driver and start again.

This is where it got really confusing.

ndiswrapper -r bcmw15

couldn’t delete /etc/ndiswrapper/bcmw15: No such file or directory

Also # ndiswrapper -r bcmw15.inf gave the same result. So I copied all three driver files physically into /etc/ndiswrapper, and still I got the same. :open_mouth: So how do I remove the messed up driver from ndiswrapper??? I’m really lost at this part.

Once We figure that out, the instructions say to add a line to the file ‘/etc/modprobe.d/blacklist’ that reads, blacklist <native-driver>
where <native-driver> is the actual name of the driver to be blacklisted.

That’s fine, but what exactly is the name string for the native driver that I should use? Just “ssb” or “bcm43xx” or …??? This little detail isn’t clear to me either.

I think I’m nearly there, if I can just solve these two questions. Thanks in advance to all you guys doing such an amazing job there! To break a fool-proof system, it just takes a better fool, like me! lol!

bcmw**l**5 : driver installed

# ndiswrapper -r bcmw**1**5
couldn't delete /etc/ndiswrapper/bcmw**1**5: No such file or directory

/* no comment */

There are plenty of posts in this forum related to BCM4309. You don’t need to use ndiswrapper.
Please do a forum search for bcm4309.

Thanks guys

Thanks but that makes no sense to me, nor does it help much. The driver is very much present, and I don’t see why ndiswrapper isn’t allowing me to de-install it, saying that it’s not present. What exactly does ndiswrapper want, in order to allow me to de-install the bad instance of this particular ndis driver?

Also attempting to re-do the ndiswrapper -i command, with all the correct files in place this time, to try and overwrite the previous faulty instance, generates another interesting error message.

couldn’t open bcmw15.inf: No such file or directory at /usr/sbin/ndiswrapper line 219. :confused:

Yes, I’ve come across some of them during the hours I spent researching this subject.However, the ndiswrapper method appears to me to be the best documented and straightforward so far (despite my natural aversion to using MS drivers) and that’s what a newb like me needs. However, I’ll be delighted if I’m wrong and have misunderstood the situation. :slight_smile:

Please go gently on the newb here folks!

And I forgot to say that most of them seemed to be for older versions of SUSE Linux, so I’m not sure how valid they are for 11.2.

On 02/07/2010 10:26 PM, aquatarkus wrote:
>
> aquatarkus;2116687 Wrote:
>> Yes, I’ve come across some of them during the hours I spent researching
>> this subject.
>
> And I forgot to say that most of them seemed to be for older versions
> of SUSE Linux, so I’m not sure how valid they are for 11.2.

What are the PCI ID’s for your Broadcom device? You can get them from

/sbin/lspci -nnv | grep 14e4

In general, if a set of instructions are given for 11.1, the same instructions
are valid for 11.2.

Suddenly, I saw what you meant. Doh! :shame: lol!

OK, if you will excuse my typo there, here’s what really happened (copy n’pasted directly from the terminal):

ndiswrapper -r bcmw15.inf
couldn’t delete /etc/ndiswrapper/bcmw15: No such file or directory [/QUOTE]

So the problem is still there, even though the driver is clearly present…

Of course it is still there, because you are making the same mistake again.

Yes, and ndiswrapper told you WHERE it actually is.

Thanks once again guys!

The last time you pointed out a typo error with a missing “1”. This time there isn’t the typo but I’m still getting the same error message. To me it’s not even clear what exactly the command wants in the argument, after the “-r”. Does it just want the driver name in the form “bcmw15” or “bcmw15.in” - or either of those with the ndis driver source directory path prepended? There seems to be a lot of information out there, but with certain important details missing.

If you’re referring to this text string, couldn’t delete /etc/ndiswrapper/bcmw15: No such file or directory, then to me it appears to be actually telling me where it isn’t rather than where it is.

The text string is:
02:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme BCM5705M Gigabit Ethernet [14e4:165d] (rev 01)
02:03.0 Network controller [0280]: Broadcom Corporation BCM4309 802.11a/b/g [14e4:4324] (rev 03)
So the magic number is 14e4:4324

A lot of the posts I found were talking about 9.x versions, and even earlier. Many were also talking about router connection issues with the BCM4309, rather than ndiswrapper usage. The instructions I eventually followed, and which seemed very clear, were from Novell’s support site (TID# 7002752). Just they fatally omitted to mention that sometimes you need more than just the .inf and .sys files! The Ndiswrapper - openSUSE page wised me up to the fact.

On 02/08/2010 01:26 PM, aquatarkus wrote:
>
> Thanks once again guys!
>
> Akoellh;2116789 Wrote:
>> Of course it is still there, because you are making the same mistake
>> again.
> The last time you pointed out a typo error with a missing “1”. This
> time there isn’t the typo but I’m still getting the same error message.
> To me it’s not even clear what exactly the command wants in the
> argument, after the “-r”. Does it just want the driver name in the form
> “bcmw15” or “bcmw15.in” - or either of those with the ndis driver source
> directory path prepended? There seems to be a lot of information out
> there, but with certain important details missing.
>
> Akoellh;2116789 Wrote:
>> Yes, and ndiswrapper told you WHERE it actually is.
> If you’re referring to this text string, couldn’t delete
> /etc/ndiswrapper/bcmw15: No such file or directory, then to me it
> appears to be actually telling me where it isn’t rather than where it
> is.
>
>
> lwfinger;2116714 Wrote:
>> What are the PCI ID’s for your Broadcom device? You can get them from
>>
>> /sbin/lspci -nnv | grep 14e4
>
> The text string is:
> 02:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme
> BCM5705M Gigabit Ethernet [14e4:165d] (rev 01)
> 02:03.0 Network controller [0280]: Broadcom Corporation BCM4309
> 802.11a/b/g [14e4:4324] (rev 03)
> So the magic number is 14e4:4324

That device needs either the Broadcom-wl package or ndiswrapper. As you seem to
want to use the latter, I’ll let Akoellh continue.

Oh dear, Larry, how can you do this to me, how shall I continue with this?

How about this here?

Maybe they have a video about the difference between the letter “l” (the one between “k” and “m”) and the number “1” (one), that might be very helpful with the “problem” above.

(Simply removing all subdirectories of /etc/ndiswrapper would also do the trick, but I won’t post any “rm as root”-commands to our dear OP, who knows what he might be typing instead :-)).

I don’t really mind which I use, provided there are simple, clear and accurate newb-friendly instructions, and I don’t have to fart around with stuff like getting firmware from different places than the main driver package. As I understand it, there was only the ndiswrapper option available for this particular WLAN adapter until relatively recently, and the native driver is based on reverse engineering. I’ll be glad to know if I’ve understood that incorrectly.

I’m treating this episode as a great learning opportunity, which means I’m expecting to learn a lot from you guys. :slight_smile:

On 02/08/2010 03:16 PM, Akoellh wrote:
>
> lwfinger;2117058 Wrote:
>> … I’ll let Akoellh continue.
>
> Oh dear, Larry, how can you do this to me, how shall I continue with
> this?
>
> How about ‘this here’ (http://www.sesamestreet.org/)?
>
> Maybe they have a video about the difference between the letter “l”
> (the one between “k” and “m”) and the number “1” (one), that might be
> very helpful with the “problem” above.
>
> (Simply removing all subdirectories of /etc/ndiswrapper would also do
> the trick, but I won’t post any “rm”-commands to our dear OP, who knows
> what he might be typing instead :-)).

Oh, go for it. I would be especially interested as such ‘rm’ commands will be
preceeded with ‘sudo’ so as to enhance the excitement.

On 02/08/2010 03:36 PM, aquatarkus wrote:
>
> I don’t really mind which I use, provided there are simple, clear and
> accurate newb-friendly instructions, and I don’t have to fart around
> with stuff like getting firmware from different places than the main
> driver package. As I understand it, there was only the ndiswrapper
> option available for this particular WLAN adapter until relatively
> recently, and the native driver is based on reverse engineering. I’ll be
> glad to know if I’ve understood that incorrectly.
>
> I’m treating this episode as a great learning opportunity, which means
> I’m expecting to learn a lot from you guys. :slight_smile:

You make it sound as if reverse engineering is bad.

Your installation will not be easy as the vendor of your device has never
cooperated willingly with Linux. The only Linux drivers that they supply contain
binary blobs that taint the kernel. In addition, they provide no specifications,
and they refuse to allow anyone to redistribute their firmware. That makes it
difficult to satisfy your requirements.

OK OK, but then let’s make it a little more exciting than sudo.

su -c "rm -rf /etc/ndiswrapper/* && ndiswrapper -l"

And now let’s wait and see.

rotfl! :FIM: Now where’s an emoticon for banging my head against the wall multiple times as I realise what was wrong. Maybe I just need my eyes tested… :shame:

Heh, you’re forgetting I used to be a Unix user, so I’m familiar with the basic shell commands, including recursive rm. :slight_smile: Just the dyslexia seems to be getting to me.

Not bad - just slightly risky to use reverse-engineered drivers.

Yes, I know. Those bastards. Would it not help if they could at least have the binary blobs able to run in user space? And are Linuxant’s Broadcomm drivers then also reverse engineered?

Oh I see. Now that’s something I didn’t know - and it explains a lot.

Heh, unfortunately I had already succeeded in running ndiswrapper -r after extending my knowledge of the ASCII character set. And like I said I am reasonably familiar with the standard set of shell commands.

Well, I’ve now got the ndiswrapper working, and despite my natural aversion to Microsoft related code, it is running very sweetly. Thanks to you guys for your help, as well as to Sesame Street. lol!

Now my next task will be to get a bunch of “illegal” codecs installed. Shouldn’t be too hard. :smiley:

On 02/08/2010 07:56 PM, aquatarkus wrote:
>
> lwfinger;2117134 Wrote:
>> You make it sound as if reverse engineering is bad.
> Not bad - just slightly risky to use reverse-engineered drivers.

It is not risky in terms of system stability. In fact, the b43 driver used to be
a lot more stable than the Broadcom wl driver. Theirs is improving. Where
reverse engineering can fall down is in performance. After all, if we do it
perfectly, then we copy their mistakes. As the RE will have its own errors,
performance can suffer, particularly for transmits. Despite this, b43 can do
quite well. With the BCM4311/2, we reach speeds of 24 Mb/s, near the maximum
rate of 27 Mb/s for a 54 Mb/s link. The BCM4306/3 now reaches 20 Mb/s.

The Linuxant driver is just like ndiswrapper, i.e. it translates NDIS commands
for a Windows driver.

In that case I will definitely look into the native driver, especially if the performance is that good. I have developed quite a bit of real time code myself in the past - drivers and firmware type stuff - so I know fairly well what’s involved in writing a reliable and efficient LAN driver, if given all of the interface specs. I am amazed at how people can reverse something like a LAN driver, effectively working in the dark with a black box, and even end up with better performance than the original version. That really is an incredible achievement.