# bcm4310 usb controller driver ?



## rocky (Mar 22, 2009)

Hello all,

I have a HP Compaq Presario 40-401TU and its WLAN chip is below. I failed to setup my WLAN 


```
none5@pci0:9:0:0:       class=0x028000 card=0x137d103c [color="Red"]chip=0x431514e4[/color] rev=0x01 hdr=0x00
    vendor     = 'Broadcom Corporation'
    device     = '[color="Red"]BCM4310 USB Controller[/color]'
    class      = network
    cap 01[40] = powerspec 3  supports D0 D1 D2 D3  current D0
    cap 09[58] = vendor (length 120)
    cap 05[e8] = MSI supports 1 message, 64 bit 
    cap 10[d0] = PCI-Express 1 endpoint
```

I tried

*NDIS*

Using Dell's driver at ftp://ftp.us.dell.com/network/R174291.exe and ndisgen I have a kernel module. Be cause my system is amd64, I used bcmwl564.sys. The system is panic when this module is loaded.


```
$ file *.sys
bcmwl5.sys:   MS-DOS executable PE  for MS Windows (native) Intel 80386 32-bit
bcmwl564.sys: MS-DOS executable PE  for MS Windows (native) Mono/.Net assembly
```

I don't know much about Mono/.NET but I think there may be something wrong with "Mono/.NET". Is "Mono/.NET" used for windows/amd64?

*BWI*

I cannot compile BWI.02c because of


```
if_bwi.c:68:36: error: net80211/ieee80211_phy.h: No such file or directory
```

Though I can compile BWI.01 but the loadable modules donot expose any message in system log (drivers are loaded but I can't see bwi device in dmesg)

Please help me to use wifi in my Laptop  I just like to install FreeBSD on it  Thank you so much!


----------



## richardpl (Mar 22, 2009)

What version of FreeBSD?
Could you post whole "pciconf -lv" output.
If system paniced you could show bt if your FreeBSD is 7 or better.


----------



## paradox (Mar 22, 2009)

>chip=0x431514e4
it's 802.11 LP revision chip
currently not support by bwi driver



> I used bcmwl654.sys


bcmwl6[64] it compiled under windows vista
you need to use bcmwl5[64].sys
this module compiled under windows XP

as i now
ndis_wrapper support only XP driver not vista


----------



## rocky (Mar 22, 2009)

Thanks Richardpl and Paradox for your helps.



			
				richardpl said:
			
		

> What version of FreeBSD?
> Could you post whole "pciconf -lv" output.
> If system paniced you could show bt if your FreeBSD is 7 or better.



I use FreeBSD-7.1-RELEASE. The output of 'pciconf -lv' is below

http://viettug.org/attachments/download/128/icy_pciconf.txt




			
				paradox said:
			
		

> bcmwl6[64] it compiled under windows vista
> you need to use bcmwl5[64].sys
> this module compiled under windows XP
> 
> as i now ndis_wrapper support only XP driver not vista



I had some typo in my previous post and I have no change to re-edit (the forum doesnot allow me to do that). I used *bcmwl564.sys* (my system is amd64 based).

In http://linuxwireless.org/en/users/Drivers/b43#unsupported there is a note



> BCM 4310 USB - This device has an LP PHY. We think that means low power. In any case, previous code does not work. The reverse engineers have generated specs for the code writers and development is in progress. Note: This card uses the PCI bus, despite its name.



I don't know whether someone has worked on this chip...

I used the *.sys file from Dell's archiver (ftp://ftp.us.dell.com/network/R174291.exe). Should I install Windows XP 64 bit on my system, install WLAN driver then get the correct *.sys file?

Thank you again,

Regards,


----------



## paradox (Mar 22, 2009)

> I don't know whether someone has worked on this chip...


this wifi cards prefectly work under freebsd but only i386 arch with bcmwl5.sys



> Should I install Windows XP 64 bit on my system, install WLAN driver then get the correct *.sys file?


no
you can only unpack archive


as i now about ndis_wrap & amd64 - not work
only crash and panic...
my be its problem on freebsd inside kernel ..

if you want 
try i386 arch


----------



## rocky (Mar 22, 2009)

Thanks Paradox.

Is there anyway to trace the error with bcmwl564.sys? The trace may help some programmer to reverse the chip? 

I will install i386 arch as your suggestion.

Thank you very much.

PS: It's naturally to install amd64 on a amd64 laptop. So I'll wait for the amd64 drivers


----------



## richardpl (Mar 22, 2009)

If it is usb device, and everything points it really is, there is chance it will work only with recent 8.0 CURRENT. Only on 8.0 CURRENT *ndisulator* have usable USB support.

Vista drivers (NDIS api version > 5.1) don't work with *ndisulator*.


----------



## paradox (Mar 22, 2009)

> device     = 'BCM4310 USB Controller'


no usb, its wifi 
its inrorrect info at pciconf


----------



## richardpl (Mar 22, 2009)

Check with lspci (sysutils/pciutils) then.

Anyway, reporting bug with backtrace is only way to fixing it.

See textdump() and http://www.freebsd.org/send-pr.html


----------



## rocky (Mar 23, 2009)

Thanks Richardpl.

It's so funny that the result of `lspci` and `pciconf -lv` are different. The output of my `lspci' is here (simple) and here (with chipset ID). You will see that


```
$ lspci |grep -i net
09:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g (rev 01)
0a:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)
```

`lspci` tells me that's "BCM4312" while `pciconf` tells me that's "BCM4310 USB Controller"  :\ . Now I have a hope. I will try another Dell's driver instead of R174291.exe. I will report soon.

Thank you all so much.


----------



## rocky (Mar 23, 2009)

Hello all,

Though `lspci` and `pciconf` provided differents names, they provided that same chipset id (chip=0x431514e4). It seems that `pciconf` provides correct information.

I now give up with bcm4310 on Adm64 system. I have installed FreeBSD-7.1-RELEASE / i386 and things seem works 


```
$ dmesg |grep ndis
ndis0: <Dell Wireless 1395 WLAN Mini-Card> mem 0x91100000-0x91103fff irq 18 at device 0.0 on pci9
ndis0: [ITHREAD]
ndis0: NDIS API version: 5.1
ndis0: [color="Red"]WARNING: using obsoleted if_watchdog interface[/color]
ndis0: Ethernet address: 00:21:00:af:6a:a1

$  ifconfig ndis0 up scan
[color="Red"]<nothing here>[/color]
```

The bad news is that the last command (scan for wireless network)   runs forever while providing nothing: I must press Ctrl+C to stop it.

Is there any way to make `ifconfig' more verbose?


----------



## paradox (Mar 23, 2009)

try directly connect to wifi ap
if you know ssid name and other param


----------



## paradox (Mar 23, 2009)

> `lspci` tells me that's "BCM4312" while `pciconf` tells me that's "BCM4310 USB Controller"


yes its bcm4312
you my try to compile and load 
for more verbouse info
this driver
paradox.lissyara.su/bwi.02.tar.bz2
only for more verbouse debug
not for work


----------



## richardpl (Mar 23, 2009)

rocky said:
			
		

> Hello all,
> 
> Though `lspci` and `pciconf` provided differents names, they provided that same chipset id (chip=0x431514e4). It seems that `pciconf` provides correct information.
> 
> ...



ifconfig X up scan work only if *roaming* is set *to manual*, in any other case you need to use *ifconfig ndis0 list scan*

ifconfig is not very user friendly, for example you could type:
`# ifconfig ndis0 afjdsakfjkasjfas` and it will wait forever.


----------



## rocky (Mar 23, 2009)

Hello all,

@paradox: I compiled bwi.02 successfully (/ i386). The module is loadable but I don't see any message in `dmesg`. Could you give me some more instructions? I will test & gather information that may help you.

@richardpl: Thank you for a nice command  It works fine at this time. I will try other tests tomorrow.

Thank you all for helps.


----------



## richardpl (Mar 23, 2009)

Also before using it note that you need to turn device radio on: either via special button or special keyboard shortcut, in other words *ndisulator* will *not* trigger radio on on interface creation/upping.


----------



## rocky (Mar 23, 2009)

richardpl said:
			
		

> Also before using it note that you need to turn device radio on: either via special button or special keyboard shortcut, in other words *ndisulator* will *not* trigger radio on on interface creation/upping.



Thank you Richardpl. The problem is that such button/keyboard doesnot work. The wireless button is next to power button and no matter I press its colour is always "orange". It took me hours to search via google and I found nothing good. I guess that we should change something via sysctl (for ndis0)

I found ndis's registries by *sysctl -a |grep ndis*. Where can I found the full document for these flags? Could I use these flags to turn on the wireless?

Below the message from `dmesg` when the wireless button is pressed:


```
acpi_ec0: EcRead: failed waiting to get data
ACPI Exception (evregion-0529): AE_NO_HARDWARE_RESPONSE, Returned by Handler for [EmbeddedControl] [20070320]
ACPI Error (psparse-0626): Method parse/execution failed [\\_SB_.PCI0.LPC0.EC0_._Q43] (Node 0xc4dcf820), AE_NO_HARDWARE_RESPONSE
acpi_ec0: evaluation of query method _Q43 failed: AE_NO_HARDWARE_RESPONSE
```


----------



## richardpl (Mar 23, 2009)

In your case it might be different. Just when trying to associate with AP try it first time without pressing button and second time pressing it.

In my case toggling button toggles wireless radio on/off and at same time enable bluetooth interface, but that is just my special case.

If it still doesnt work try with ACPI disabled.


----------



## rocky (Mar 24, 2009)

Hello paradox and richardpl,

It took me hours to install FreeBSD and it took me a week to install hardware drivers  I feel tired now 

After turning ACPI off the sound works though the extra keys/buttons keep the silence. Amd64 / no ACPI is not bootable....

I will be back soon.


----------



## rocky (Mar 26, 2009)

Hello all,



			
				richardpl said:
			
		

> Anyway, reporting bug with backtrace is only way to fixing it.
> 
> See textdump() and http://www.freebsd.org/send-pr.html



Should I report my hardware problems to FreeBSD Team so that they may fix in future? If "yes" where should I start?

Thank you.


----------



## rocky (Apr 2, 2009)

Thanks paradox, richardpl et. al. for helps. 

The wireless card works well on my FreeSBD-7.1 though the button is always in orange (strange!). 

The system summary (HP Compaq Presario CQ40-401)

```
Arch   | i386/acpi | i386/acpi=off | x86_64/acpi |
---------+-----------+---------------+-------------+
  Sound  | no sound  |     good      | no sound    |
Wireless |    good   |     good      | system hang |
```

Hope this helps someone else 

Regards,

-- kyanh


----------



## alish (Jun 5, 2009)

*How list access points*

Hi all,
Recently I switched from GNU/Debian to FreeBSD, I installed my wireless drive with ndisgen and now I want to connect to an access point? how should I do this?

Here is my pciconf -lv:

```
ndis0@pci0:12:0:0:      class=0x028000 card=0x000b1028 chip=0x431514e4 rev=0x01 hdr=0x00
    vendor     = 'Broadcom Corporation'
    device     = 'BCM4310 USB Controller'
    class      = network
```
and ifconfig ndis0:

```
ndis0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:16:44:b9:fe:cd
        media: IEEE 802.11 Wireless Ethernet autoselect
        status: no carrier
        ssid "" channel 1 (2412 Mhz 11g)
        authmode OPEN privacy OFF bmiss 7 scanvalid 60 protmode CTS bintval 0
```
thanks,


----------



## rocky (Jun 6, 2009)

Assuming that you know to load the ndis0-module at boot time.

Because it's hard to scan wireless network with ndis (as I experienced) you should first know the SSID (it's the network broadcast name that you can read from windows machine or ask someone else). For e.g, if the SSID is "my_ap" then 


method 1: from root terminal try


```
$ ifconfig ndis0 ssid my_ap
 $ ifconfig ndis0 list scan
```

Your network should be showed. If not, don't worry so much. Press the wireless button and try again. Now


```
$ dhclient ndis0
```

You should the FreeBSD handbook to learn about

* access wireless network using WPA or s.th similar
* configure wireless network in /etc/rc.conf

Many topics on this forum relate to your topic. Please search as my topic is "solved".

Good luck.


----------



## alish (Jun 6, 2009)

rocky said:
			
		

> Assuming that you know to load the ndis0-module at boot time.
> 
> Because it's hard to scan wireless network with ndis (as I experienced) you should first know the SSID (it's the network broadcast name that you can read from windows machine or ask someone else). For e.g, if the SSID is "my_ap" then
> 
> ...



Thanks for your help, but it doesn't work, I think the kernel module doesn't work correctly because my wifi led is off.
how should I verify that my module is OK?


----------



## rocky (Jun 6, 2009)

If you can see `ndis0` when running `ifconfig` the module is loaded. 

You *must* use `ndisgen` with right windows driver for your laptop. What is your laptop model? And please follow the right way to generate kernel module (if possible please post your steps here.)

If you want to debug, please read http://forums.freebsd.org/showthread.php?t=4429

PS: Don't be upset. It tooke me about 2 weeks to get my `ndis0` to work  My wifi led is off too but I can access to WLAn normally.


----------



## alish (Jun 6, 2009)

Thanks, now I can set ssid but, I couldn't scan.
here is ifconfig ndis0:

```
ndis0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:16:44:b9:fe:cd
        media: IEEE 802.11 Wireless Ethernet autoselect
        status: no carrier
        ssid xxxxx channel 1 (2412 Mhz 11g)
        authmode OPEN privacy OFF bmiss 7 scanvalid 60 protmode CTS bintval 0

and dmesg:
ndis_newstate: INIT -> INIT
Setting BSSID to ff:ff:ff:ff:ff:ff
Setting ESSID to ""
ndis_newstate: INIT -> SCAN
ndis_scan_results: 0 results
ndis_scan_results: 0 results
ndis_scan_results: 0 results
ndis_scan_results: 0 results
```


----------



## DutchDaemon (Jun 6, 2009)

Use 

```
[/url] tags, please.
```


----------



## alish (Jun 6, 2009)

sorry, It is my first time that playing in forums.


----------

