guerrerolor / android-x86

Automatically exported from code.google.com/p/android-x86
2 stars 1 forks source link

Broadcom Wireless 43XX series #666

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Boot Computer with a BCM43XX (4312,4313, etc)
2. Wifi is disabled with "Error" in Froyo and is "Off" in ICS.

What is the expected output? What do you see instead?

      The expected output is the ability to access Wifi networks. There are multiple posts without answers and I would like to make this the primary post with eventually a solution.

What version of the product are you using? On what operating system?

      I have tested the ICS builds on two systems, DELL Studio 1735 and HP Mini 210-2000. My wireless chipsets are the BCM4313 and BCM4312.

Original issue reported on code.google.com by KennethAMeyerson@gmail.com on 29 Jan 2012 at 11:04

GoogleCodeExporter commented 9 years ago
With me is the same problem, the wireless card drivers do not start. Only work 
on Android 2.3.

Original comment by Jarek3...@gmail.com on 9 Feb 2012 at 9:08

GoogleCodeExporter commented 9 years ago
Netbook Samsung NC110.

Original comment by Jarek3...@gmail.com on 9 Feb 2012 at 9:10

GoogleCodeExporter commented 9 years ago
Same with Aspire One 522.

Original comment by vavooon@gmail.com on 11 Feb 2012 at 10:00

GoogleCodeExporter commented 9 years ago
Similar Problem in my LenovoS10

Original comment by joeta...@gmail.com on 5 Mar 2012 at 4:49

GoogleCodeExporter commented 9 years ago
I can confirm this is also the case on a Dell Mini 10v with the BCM4312 
wireless card.

Original comment by brett.c...@gmail.com on 15 May 2012 at 5:03

GoogleCodeExporter commented 9 years ago
I really know little(or nothing) about Android structure, but know about linux.
http://forum.xda-developers.com/showthread.php?t=1673929

This guy said that running android on Debug mode did the trick, after he type 
"modprobe b43", that is actually the way we load modules and it´s dependencies 
on any other Linux distro.

What about if you add this command to the init.rc as a workaround. 

I was researching about these "caveats" before try Android 4.0-RC1 on my HP dv1

Cheers ;)

Original comment by nicolasg...@gmail.com on 28 Jun 2012 at 12:50

GoogleCodeExporter commented 9 years ago
And this could be a solution too:
https://groups.google.com/forum/?fromgroups#!topic/android-x86/3PERw-L5eio

;)

Original comment by nicolasg...@gmail.com on 28 Jun 2012 at 12:52

GoogleCodeExporter commented 9 years ago
The problem with b43 is that it is an unofficial open source driver requiring 
firmware from the proprietary driver. I asked them once if we could legally 
redistribute the firmware and didn't get a real firm answer, and considering 
the proprietary driver worked far better than b43 the last time I tried to use 
it, I didn't try to clarify the issue.

I have informed Broadcom of our problems with the official driver (wl) and they 
claimed they were working on an update. If the update does not solve our 
problems I may try the b43 driver again and assuming it works correctly, I will 
see if I can get a concrete answer about the firmware. 

The other problem is that not all builds are the same and may contain either 
b43 or wl, or neither. In short, there are a lot of problems with these 
Broadcom chipsets and the problems evolve when things are updated. They are 
unlikely to work in Android unless the device maintainer gives them special 
attention, and I believe I am the only maintainer with one of these chips that 
isn't covered by the newer brcm driver. My device is the tx2500, but it is a 
very specific build. 

Original comment by Kvan...@gmail.com on 28 Jun 2012 at 3:29

GoogleCodeExporter commented 9 years ago
Which wifi adaptor do you have on your tx2500?

Original comment by ivofoun...@gmail.com on 25 Aug 2012 at 4:00

GoogleCodeExporter commented 9 years ago
It is the BCM4312 chip, which has a pci id of 14e4:4315.

Original comment by Kvan...@gmail.com on 26 Aug 2012 at 3:25

GoogleCodeExporter commented 9 years ago
Hi I am layman to Linux and android is completly new , I am using Lenovo s10-2 
with Broadcom 4315 pci id of 14e4:4315 , I downloaded BCM4312 llinux drivers 
from http://www.broadcom.com/support/ file name 
hybrid-portsrc_x86_32-v5_100_82_112.tar

How do I load drivers , please elobrate step by step , there is mentioning of 
locations that I do not find from the root directory , so please mention 
locations from root directory , or some like "first change directory to 
"system" or please mention step by step commands that a layman can understand , 
or just tell us to type the following commands , I am loving this it has become 
a challenge , ealier I used to work for Microsoft , I quit MS and I am linux 
patriot for now , Greetings and Thanks for the help who ever does  so in 
advance. 

Original comment by rishiraj...@gmail.com on 10 Oct 2012 at 6:28

Attachments:

GoogleCodeExporter commented 9 years ago
Version:
 4.0-RC2-amd_brazos
Hardware:
 ASUS M5A78L-M LX-Plus MB
 AMD FX(tm)-4100 Quad-Core (3.6GHz) CPU
 1x 4GB DDR3 RAM
 ATI Radeon HD 6670 GPU
 Realtek PCIe GBE Family Controller (LAN)
 Linksys Wireless-G PCI Network Adapter with Speedboost
 - (WMP54GS using Broadcom 4306 chipset)

Problem:
 Same as above. WLAN is disabled at start, and after enabled, cannot be handled through system settings. Additionally, eth0 is not connected, but can be used for 1/2 internet uses after configuration. This does not work for Google Play.

Partial Solution:
 1) Enter into a terminal (ALT+F1)
 2) su (for root access)
 3) dhcpcd eth0 (attempt to connect to wired internet)
 4) netcfg eth0 dhcp (enable ethernet)
 5) setprop net.dns1 4.2.2.1 (set the DNS and allow connectivity)
 6) ping -c 3 www.google.com (confirm connection is available)
 From here, you can now access the browser internet, but not anything that requests a wifi access point.
 WIFI:
 3) modprobe -r wl (diable wl module, try disabling b43 if you need to reset)
 4) modprobe b43 (enable broadcom 43xx module)
 5) netcfg (list networks)
 From here, you now have wlan0, but it should be listed as "down", and attempting "dhcpcd wlan0" will time out without an open (or pre-configured?) wifi ssid/key available

 7) ALT-F7 (exit terminal)

I can't seem to hook the module with the system settings window to allow the 
switch to enable and disable this internet source. I also can't find any 
documentation on configuring a wlan network.

Original comment by koma...@gmail.com on 25 Dec 2012 at 6:12

GoogleCodeExporter commented 9 years ago
Can't find the 'edit' button, so forgive me for the double post (it's christmas 
to boot?). After some more research, I have determined that the issue is the 
lack of firmware. After attempting to power on wifi in the settings, I gave the 
terminal a good dmesg. I obtained this report: http://pastebin.com/jRDrivJL
Throught some handy dandy googling, I came to the realization that this 
particular androidx86 build did not come with b43-fwcutter, the firmware 
install tool for linux support. Without make, or any commonly used package 
handlers, I am unsure of how to obtain said firmwares.

Original comment by koma...@gmail.com on 25 Dec 2012 at 3:00

GoogleCodeExporter commented 9 years ago
i have a dell inspiron 6400 and the 4.0 eeepc iso is working even if it sais 
"no asus".

there is no documentation on android x68 what ppl soudl do when the have a comp 
that not one of those 5.

anyway and eth0 seems not to be there i tryed some commends and its not 
detected. wired lan would be enough for me. but i dont even seem to get this 
working 

but i wanted to say about b43-fwcutter its some tool the extracts the formware 
from a official download or something i guess. (older?) ubuntu versions use 
this package for the b43 firmwares. newver versions use the 
firmware-b43-installer or the cutter is a subpackage. anyway i found this site 
http://jayrambhia.wordpress.com/2012/05/12/wireless-firmware-missing-in-linux/ 
and i downloaded it put it in the firmwares folder i then had a b43 folder in 
there with a bunch of files but the command  "modprobe -v b43" gave me errors.

i think the chips and not detected at all. and the wired lan works fine under 
ubuntu its another well supperted chip that dont need nonfree firmware. i need 
to install b43 on linux to the wifi working but then it works.

Original comment by nicomu...@web.de on 4 Jan 2013 at 1:14

GoogleCodeExporter commented 9 years ago
and about this "problem" with b43 and that its not free just do it like ubuntu, 
make it work but dont include it in the release but include instruckted to easy 
install it. like ubuntu. would be great.

Original comment by nicomu...@web.de on 4 Jan 2013 at 1:16

GoogleCodeExporter commented 9 years ago
Well, firmwares are designed per-OS. From what I've gathered, one must compile 
them against the kernel they should be working for. eth0 is the first default 
lan connection. type "netcfg" into a prompt to see the available network hooks 
and their status. If eth# does not exist, it is possible that the kernel, or 
drivers for said Ethernet adapter are not in your installation. Again, this 
will ONLY give you internet through a linux terminal (ATL+F1 or the terminal 
app), and the default web browser. Using most other browsers will fail horribly 
until the wifi issue is dealt with.

Also, b43 is the module. First thing you will notice is that the drivers for 
all b43 devices are coherently missing. I managed to find a direct download for 
'universal' broadcom drivers for both b43 and the b43legacy modules. The 
result? My Wifi device could be enabled, it could scan, and could attempt to 
communicate with the wireless router. Downside? It would never collect an IP. 
Would loop through until it decided the connection was insufficient for use, 
and wait for you to make another attempt. Though I had no real errors, the 
drivers were old. I read through and decided to attempt to connect as a given 
ip. This failed even worse than trying automatically.

I have decided to build a development environment and begin compiling drivers 
and firmware for my device. There is also a considerable amount of changes that 
I need to do to init.rc. Previously, I was able to modify these with little to 
no constraints, but in the exhaustingly grinding research, I forgot what I had 
done. I'll simply see what happens when the environment is finished, and I have 
built my first attempt at getting the required settings and software embedded 
in my own personal release. Stay tuned till then, I refuse to give up!

Original comment by koma...@gmail.com on 4 Jan 2013 at 4:42

GoogleCodeExporter commented 9 years ago
netcfg dont gives me any eth(x) on my laptop.

good to know i had issues with firefox on android while i tested it on 
virtualbox. i found it strange that firefox was able to sync the date and the 
default browser worked and but i could not browse the web with firefox.

i guess i will give android x86 some time as it is not that importand for me to 
spend time figuring things out.

but if other programs on android require wifi and will not work with this 
"terminal ethernet" would it not be able to fake a wired lan and tell android 
its a wifi?

Original comment by nicomu...@web.de on 4 Jan 2013 at 3:54

GoogleCodeExporter commented 9 years ago
Indeed, there is an ethernet patch out there. But I've only just begun to dive 
into the androidx86 world, and by dive, I mean jumping off the 1000ft cliff and 
plummeting into the ocean known as androidx86 XD I've narrowed down the wifi 
troubles here and there, but until I get something actually working, I can't 
say I've 'found' the issue, or solved it. Just got 4.0R2 ics-x86 downloaded and 
compiled. I'll keep the posts to actual progress only. ~waves~

Original comment by koma...@gmail.com on 5 Jan 2013 at 12:05

GoogleCodeExporter commented 9 years ago
Solution found!

What you'll need:
 Ubuntu (I used 10.04)

This was intended to get androidx86 to run from the HD with any wifi adapter 
that requires the use of the b43fwcutter. This still did not allow me to 
connect to Google's services, as Google would not let me. I even tried 
imitating another system's build.prop. No luck.

Step 1 - installing b43fwcutter:
 > Since we can't install it as a package on android, and we can't build it on the device without make, we will install this on Ubuntu. Start here: http://linuxwireless.org/en/users/Drivers/b43#Other_distributions_not_mentioned_above and install b43fwcutter as told. You will download the source to the fwcutter, and then compile it. This is important to gain access to the older drivers for your android. Once it is compiled, place b43fwcutter to a directory you can easily type. You don't have to install it to /bin, but it means you will have to type it out (/home/<user>/b43-fwcutter or similar).

Step 2 - download old drivers:
 This is a modified version of the "If you are using the b43 driver from older kernel:" section. Make sure your android HD is mounted and accessible. For this purpose, we will assume you mounted it to "/mnt/droid".
   * if your directory is different than this, simply use $ find /mnt/droid -name '*.ko' to find your root firmware directory
  $ su
  $ export FIRMWARE_INSTALL_DIR="/mnt/droid/android<build>/system/lib/firmware"
  $ wget http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
  $ tar xjf broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
  $ /home/<user>/b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-5.10.56.27.3/driver/wl_apsta/wl_prebuilt.o
* explanation: shortcut our firmware directory, download the firmware, 
un-archive to current directory, extract firmware to android.

Step 3 - edit init.rc:
 This was rather tedious to figure out. init.rc is not readily available to you. In fact, it's archived as an img file. The run-down is that we need to extract the files, edit init.rc, encrypt the files, copy to your android directory.
  a) make a backup of /mnt/droid/android<build>/ramdisk by using "cp ramdisk ramdisk_orig" This will ensure that if you mess up, you can recover.
  b) make a dir called "ramdisk" in your home directory "mkdir /home/<user>/ramdisk"
  c) "gunzip -c /mnt/droid/android<build>/ramdisk | cpio -i"
  d) you can use "ls" to view the files now in that directory. The only file we are interested in, is 'init.rc'. gedit it, or vi it, whatever you like.
  e) when complete, we need to repack it with "find . | cpio -o -H newc | gzip > /mnt/droid/android<build>/ramdisk"

Step 4 - init.rc edits:
 There is only 1 REAL edit we need to do here. I've tried all the configurations I could find, or think of, but this is the only one that seemed to actually do anything at all. Scroll towards the bottom of the list. Find "service wpa_supplicant ..." after this service, create a new service.
 : service dhcpcd_wlan0 /system/bin/dhcpcd wlan0
 :     group system dhcp
 :     disabled
 :     oneshot
This fixes that pesky "no such service 'dhcpcd_wlan0'" error. This also enables 
the use of dhcpcd wlan0 to connect to a wifi access point. Compile from step 3 
and boot into androidx86

Step 5 - Connecting...:
 This is a fairly tricky scenario. First, we need a terminal. Either ALT+F1, or pull up a virtual terminal. su for root, "modprobe b43". If you access wifi, and it's down, you can try to add a Google account and it will be available at the top. It should power up, and list the local wifi access points. If you attempt to connect to it, it will run on an infinite loop trying to obtain an IP. The reason behind this is unclear atm, but there is still hope. Start by attempting to connect. While it's infinitely looping, jump to the terminal and type "dhcpcd wlan0". This will force a connection. If you look at dmesg, it will have connected. Quickly "netcfg" to view the connections. wlan0 should have found an IP. Jot this number down!

Step 6 - Final settings:
 Now that our device connected and authenticated an IP with the modem, we now need to end this infinite loop, which by now has probably removed your authenticated connection. Forget the info, then connect to it again. This time, check the Advanced Settings checkbox, Change it from DHCP to STATIC, set in the IP given, and fill in whatever else is necessary for your device. Odds are, it won't let you continue until you type in 24 to one of the values. Click connect, and watch the magic happen. Your wifi device will now be connected to your modem of choice! Downsides is that you STILL cannot connect to Google's service. Probably an anti-hack preventative. Another downside is that your system does not auto-install the module each load time. I didn't look further to adding this setting, as it was more important to get it working than it was to make it a regular function. Great luck, and have fun!

Notes:
 By law, no distribution (linux or otherwise) can come pre-packaged with Broadcom's firmwares, or fwcutter. It is also unlawful to distribute said firmwares without explicit instruction from Broadcom.
 Some extra thanks go out to the original writer of this guide: http://hvera.wordpress.com/2011/02/21/porting-wifi-drivers-to-android/ Although some settings currupt the functionality of your wifi devices, it could lead to further fixes.

Original comment by koma...@gmail.com on 10 Jan 2013 at 1:39

GoogleCodeExporter commented 9 years ago
to komak57 : 
Thanks for that method. Well, I can't test it right now. 

I just wanted to add that I was running the JB 4.2.1 ISO and noticed I had some 
needed ucode stuff already on my Ubuntu installation (ucode5 AND ucode15 (?!) 
because Ubuntu had problems with my 14e4:4315 (BCM4312)) (see dmesg from 
someone above via pastebin). I wasn't able to add these on the Live-CD 
installation (due to system.sfs) so I installed it with system as RW and 
copy-pasted the files. 
So far so good. 
Noticing various "unsupported" problems which are just misterious when doing 
"modprobe b43" WITHOUT "DEBUG=1" and OUTSIDE the first 2 terminals, I just 
experimented. Doing it either on the first or the second one had the same 
result. 
As the boot screen begins to animate the WIFI button's led begins to light up. 
Success? NO. 

When trying to enable WiFi on the settings, it doesn't change text but makes 
the ON-Button "un-Off-able". Exiting and re-opening Settings sets the button to 
the "Off"-State. dmesg-ing shows that the firmware gets loaded. 
Playing around with disabling / enabling you end up with one of these 2 
results: 
1. Hardware doesn't function, "rmmod b43" doesn't kernel-panic, WiFi is "On" in 
Settings listing no APs, searching does nothing (error). 
2. Hardware functions, "rmmod b43" does kernel-panic (rmmod mac80211 does it to 
be precise), WiFi is On in Settings listing no APs, searching does a proper 
search and you CAN connect properly. 

I glitched once into the second result and the Browser was working. Everything 
was working. I was happy... until it had a kernel-panic. 

Fun fact: "Issue 666"... 666 xD

Original comment by nuda1...@gmail.com on 19 Feb 2013 at 8:17

GoogleCodeExporter commented 9 years ago
nuda1998, I'm not sure what hardware you're testing, but those of us with 
Aspire One 722s experience kernel panic issues with wireless under Linux-like 
operating systems that can be averted by prioritizing PXE boot above everything 
else (it doesn't actually need to boot off PXE, just try to do so before it 
falls back to the hard drive). Might be worth trying to see if result 2 can 
become a proper success case.

Original comment by sam...@seenet.ca on 19 Feb 2013 at 8:22

GoogleCodeExporter commented 9 years ago
as of now, I am writing off Android. 
Well.. I should have tested "dhcpcd wlan0" before writing the post xD 

What I did: 
1. Boot into Debug Mode 
2. modprobe b43 
3. exit x2 
4. Disable HW 
5. Enable WiFi in Android 
6. Enable HW 
7. dhcpcd wlan0 
8. Enjoy 

I am running Android x86 on a (acer) eMachines e525. I may try putting PXE 
above everything else if it does a kernel-panic again. Thanks for the tip, 
samuel!

Original comment by nuda1...@gmail.com on 19 Feb 2013 at 8:28

GoogleCodeExporter commented 9 years ago
Well... it kernel-panic'd even with the PXE trick. :/

Original comment by nuda1...@gmail.com on 19 Feb 2013 at 8:52