View previous topic :: View next topic |
Author |
Message |
tejesh83 n00b
Joined: 14 Mar 2003 Posts: 7
|
Posted: Wed Mar 03, 2004 9:16 pm Post subject: Broadcom 94306 Wireless: Anyone get it working yet? |
|
|
Anyone have any luck getting Broadcom 94306 Wireless working yet?
I've tried ndiswrapper with no success. It doesn't appear to be 64 bit friendly. I commented out the dump stack routine (looks like a debug print statement), that relies on an ASM instruction to get the current stack pointer (not AMD64 compatible), which got the ndiswrapper module to compile and load.
But loadndisdriver fails with an illegal argument error when trying to load either the driver supplied with my eMachines M6807 and the one posted on the ndiswrapper website. It says to check dmesg for more info, but there's nothing useful there.
Any suggestions for what I should try next? |
|
Back to top |
|
|
gebner Tux's lil' helper
Joined: 01 Jan 2004 Posts: 100 Location: Wien, EU
|
Posted: Wed Mar 03, 2004 10:51 pm Post subject: |
|
|
I don't think you will have any luck until there are native drivers for that since AFAIK you can't execute i386 code from an amd64 kernel. _________________ clue = if 0 == 0 then clue else error "The poster didn't have any clue when he posted this." |
|
Back to top |
|
|
thither n00b
Joined: 04 Feb 2004 Posts: 32
|
Posted: Thu Mar 04, 2004 12:47 am Post subject: |
|
|
gebner wrote: | I don't think you will have any luck until there are native drivers for that since AFAIK you can't execute i386 code from an amd64 kernel. |
I've been wondering about this too. The 32-bit emulation libs are certainly able to run 32-bit code, but wrapping that emulation around a kernel module seems as if it would be complex at best.
Nonetheless, I've also been trying to get ndiswrapper working for this beastie. With version 0.4 I was able to compile it just by changing the getSp() function in driver/ndis.c to this:
Code: | int getSp(void)
{
register volatile int i asm("%esp");
return i;
} |
...and everything seems to work just hunky-dory (the module loads fine). When I run the loadndiswrapper program, though, I get the mysterious error "Unable to prepare driver." Still trying to track down what this comes from.
I was also able to get the latest CVS version to compile and install by removing the (32-bit specific) divdi3.c and longlong.h files from the makefile (they're mysteriously copied out of gcc or glibc or somewhere). This gave me better results and didn't complain, but it didn't actually do anything when I told it to load the drivers (no new devices for iwconfig appeared).
This is all compiling against gentoo-dev-sources-2.6.3-r2, btw. I haven't experimented with drivers for the chip other than the eMachines ones, I might try that next (ie, the HP or Dell drivers).
ndiswrapper seems to make a lot of 32-bit assumptions which are probably not very correct for amd64, and getting it to work is most likely a challenge. |
|
Back to top |
|
|
tejesh83 n00b
Joined: 14 Mar 2003 Posts: 7
|
|
Back to top |
|
|
gebner Tux's lil' helper
Joined: 01 Jan 2004 Posts: 100 Location: Wien, EU
|
Posted: Sat Apr 03, 2004 12:12 pm Post subject: |
|
|
/me is seriously thinking about ditching gentoo and installing FreeBSD... _________________ clue = if 0 == 0 then clue else error "The poster didn't have any clue when he posted this." |
|
Back to top |
|
|
tcma Apprentice
Joined: 28 Jun 2004 Posts: 208
|
Posted: Fri Sep 03, 2004 2:08 am Post subject: |
|
|
Any success with Broadcom 94306 Wireless working on 64 bit AMD gentoo linux?
Using ndiswrapper or other methods?
thither wrote: | gebner wrote: | I don't think you will have any luck until there are native drivers for that since AFAIK you can't execute i386 code from an amd64 kernel. |
I've been wondering about this too. The 32-bit emulation libs are certainly able to run 32-bit code, but wrapping that emulation around a kernel module seems as if it would be complex at best.
Nonetheless, I've also been trying to get ndiswrapper working for this beastie. With version 0.4 I was able to compile it just by changing the getSp() function in driver/ndis.c to this:
Code: | int getSp(void)
{
register volatile int i asm("%esp");
return i;
} |
...and everything seems to work just hunky-dory (the module loads fine). When I run the loadndiswrapper program, though, I get the mysterious error "Unable to prepare driver." Still trying to track down what this comes from.
I was also able to get the latest CVS version to compile and install by removing the (32-bit specific) divdi3.c and longlong.h files from the makefile (they're mysteriously copied out of gcc or glibc or somewhere). This gave me better results and didn't complain, but it didn't actually do anything when I told it to load the drivers (no new devices for iwconfig appeared).
This is all compiling against gentoo-dev-sources-2.6.3-r2, btw. I haven't experimented with drivers for the chip other than the eMachines ones, I might try that next (ie, the HP or Dell drivers).
ndiswrapper seems to make a lot of 32-bit assumptions which are probably not very correct for amd64, and getting it to work is most likely a challenge. |
|
|
Back to top |
|
|
mindwarp n00b
Joined: 23 Jan 2003 Posts: 22 Location: Detroit, MI
|
Posted: Fri Sep 03, 2004 4:31 am Post subject: |
|
|
gebner wrote: |
/me is seriously thinking about ditching gentoo and installing FreeBSD... |
If you read the link he is running FreeBSD i386, not FreeBSD amd64. FreeBSD cannot use the wireless card any better in 64-bit mode than linux. And if you install gentoo i386, you will be able to run it just fine, same as freebsd.
~mindwarp _________________ Mindwarp.net |
|
Back to top |
|
|
tcma Apprentice
Joined: 28 Jun 2004 Posts: 208
|
Posted: Fri Sep 03, 2004 4:57 am Post subject: Broadcom BCM94304 802.11g wifi on 64 bit AMD |
|
|
I installed Linux version 2.6.7-gentoo-r11 AMD 64 bit on eMachines M6807.
I want to make the Broadcom BCM94304 chip work with 802.11g wireless on 64 bit AMD.
I know that Broadcom has only a 32 bit Windows driver. Therefore I need to use the ndiswrapper application.
Do I use the 32 bit Compatibility emulation mode to run ndiswrapper?
This is my approach, feel free to comment:
- install 32-bit emulation libraries.
- compile 32-bit ndiswrapper from a 64-bit environment using multilib.
- use 32-bit chroot environment to run the 32-bit ndiswrapper application |
|
Back to top |
|
|
ballyn n00b
Joined: 14 Aug 2003 Posts: 73
|
Posted: Fri Sep 03, 2004 3:09 pm Post subject: |
|
|
This still won't work. Ndiswrapper is a kernel module, so to insert it into your running (64-bit) kernel you need a 64-bit module. A chroot doesn't change this.
Even though ndiswrapper will compile and run in a 64-bit kernel, it still can't use the 32-bit windows driver.
More info in this thread https://forums.gentoo.org/viewtopic.php?t=198443... I don't believe that anything has changed since then, but you might try the ndiswrapper mailing list.
Edit:
http://ndiswrapper.sourceforge.net/wiki/index.php/FAQ
Quote: | Can I use ndiswrapper in 64-bit mode (for AMD64)?
No. There are two problems. NDIS (Windows) drivers don't work in 64-bit mode. It is not possible to run 32-bit NDIS drivers in 64-bit mode (we run the Windows drivers natively on the processor). Second problem is that ndiswrapper itself assumes 32-bit word lengths. The second problem can be fixed easily once 64-bit NDIS drivers are available.
As of the newest WinXP 64bit beta (08/2004) there are still no wifi drivers. So no fix yet...
|
So, AFAIK, you can't use this radio in 64-bit mode. You'll have to run a 32-bit system if you want to use it.
Last edited by ballyn on Fri Sep 03, 2004 3:21 pm; edited 1 time in total |
|
Back to top |
|
|
tcma Apprentice
Joined: 28 Jun 2004 Posts: 208
|
Posted: Fri Sep 03, 2004 3:21 pm Post subject: |
|
|
In that case, will running 32 bit Ndiswrapper on a 32 bit User-mode Linux Kernel under my existing 64 bit gentoo linux work?
User-mode Linux home page is
http://user-mode-linux.sourceforge.net/
I want to learn User-mode Linux anyway.
ballyn wrote: | This still won't work. Ndiswrapper is a kernel module, so to insert it into your running (64-bit) kernel you need a 64-bit module. A chroot doesn't change this.
Even though ndiswrapper will compile and run in a 64-bit kernel, it still can't use the 32-bit windows driver.
More info in this thread https://forums.gentoo.org/viewtopic.php?t=198443... I don't believe that anything has changed since then, but you might try the ndiswrapper mailing list. |
|
|
Back to top |
|
|
ballyn n00b
Joined: 14 Aug 2003 Posts: 73
|
Posted: Fri Sep 03, 2004 3:25 pm Post subject: |
|
|
I don't think this will work, either. UML doesn't have a lot of control over low-level hardware. Networking through UML utilizes the network that is already in place and not the hardware itself. See http://user-mode-linux.sourceforge.net/networking.html |
|
Back to top |
|
|
tcma Apprentice
Joined: 28 Jun 2004 Posts: 208
|
Posted: Fri Sep 03, 2004 4:32 pm Post subject: |
|
|
This means the only choice is to install 32 bit linux kernel on Emachines M6807.
Then run 32 bit Windows driver under 32-bit ndiswrapper under 32 bit linux kernel.
|
|
Back to top |
|
|
mindwarp n00b
Joined: 23 Jan 2003 Posts: 22 Location: Detroit, MI
|
Posted: Fri Sep 03, 2004 9:03 pm Post subject: |
|
|
tcma wrote: | This means the only choice is to install 32 bit linux kernel on Emachines M6807.
Then run 32 bit Windows driver under 32-bit ndiswrapper under 32 bit linux kernel.
|
Or just spend $40 and buy a prism54 card that will work perfect and you wont have to mess with it again. _________________ Mindwarp.net |
|
Back to top |
|
|
topcat n00b
Joined: 17 Nov 2003 Posts: 10
|
Posted: Mon Jan 24, 2005 5:04 am Post subject: |
|
|
Linuxant has support for the Broadcom chips under 64-bit Linux. Writing this to you using the new driver. No problem installing the 30-day trial.
In order to configure and make a part of my system I needed the Gentoo wireless configuration which is now in baselayout-1.11.0 or better.
Here is what I did:
Installed driver as described on Linuxant web site. Got the code for the 30-day trial. No particular problems.
Code: | ACCEPT_KEYWORDS="~amd64" emerge baselayout
emerge wireless-tools
|
Went through a whole bunch of configuration files. Lots of changes, for example /etc/hostname is now specified in /etc/conf.d/hostname, ....etc
Under this baselayout all /etc/init.d/net.* files are linked to /etc/init.d/net.lo. When baselayout finishes installing, it prints out the command to run.
Code: | /bin/ls /etc/init.d/net.eth*| xargs -n1 ln -sfvn net.lo |
To check and make sure everything is running.
Found wireless is eth1 ...
Code: | ln -s /etc/init.d/net.eth1 /etc/init.d/net.lo |
Added 'iface_eth1="dhcp"' to /etc/conf.d/net and everything worked.
Code: | /etc/init.d/net.eth1 start |
Don't know what /etc/conf.d/wireless.example is all about. I have 'iface_eth1="dhcp"' in it anyway and copied to /etc/conf.d/wireless, but it wasn't doing anything. Had to edit /etc/conf.d/net as mentioned above. |
|
Back to top |
|
|
|