Friday, October 23, 2009

How to install a Broadcom Wi-Fi driver on an unsupported system

Dell stops releasing driver updates for a laptop rather quickly. However, the same hardware is found in other laptops, and often these drivers will install. Drivers can even support similar hardware which is not explicitly listed. For example, a driver's description may claim support for one wireless card, but the driver may support all of Dell's Broadcom based wireless cards. A while ago I fixed audio glitches in Vista by installing a newer driver for my Dell Wireless 1500 Draft 802.11n WLAN Mini-Card.

Today I found that Dell had a Broadcom Wi-Fi driver for Windows 7 (R242438), but that driver refused to install. The error message was: "No compatible hardware found. The software you are attempting to install is not supported on this system." Despite this warning, I could manually install the driver via Device Manager without any warnings. After a manual install, the wireless card worked, but I didn't have the utility which shows signal strength in the tray and other components.

Since the driver seemed to be compatible, I searched for a way to do a proper installation. The driver installer unpacks itself to C:\dell\drivers\R242438. In that directory there is a "DellInst.enc" file. It doesn't look like anything, but it may be decoded via "BcmCrypt.exe" (also in that directory, USAGE: BCMCRYPT -e or -d <input> <output>). The file decodes into a text file which shows what cards are supported and what systems are certified with each card. The "Dell Wireless 1500 Draft 802.11n WLAN Mini-Card" (PCI\VEN_14E4&DEV_4328&SUBSYS_00091028) was supported, but my system was not in the list of systems in that section. I simply added the "0x01BD ;Inspiron 6400" line for my system and encoded the file with BcmCrypt. After that the driver installed properly and everything worked, although the highest speed seemed to be 130 Mbps. After changing some advanced settings in Device Manager, I finally got 270 Mbps.

While doing this I also found that there are three different drivers in three subdirectories of C:\dell\drivers\R242438. DRIVER_US is for the US, DRIVER_JPN is for Japan, and DRIVER_ROW is for the rest of the world. For example, it's possible to manually install the driver from C:\dell\drivers\R242438\DRIVER_ROW using Device Manager and gain access to channels 12 and 13. I never tested these channels and I now use the US driver which the installer installed, but it's nice to know that I can change that easily.


Pat K. said...

Thanks a million for that information. You saved my Windows 7 install.

Nyah said...

Could you post step by step guide on how to do this, thanks in advance.

Boris Gjenero said...

1) Download a Dell Wireless driver which supports your operating system. You can search for WLAN and then sort by date. Pick a driver which supports multiple systems and multiple 15xx and/or 13xx cards. I just upgraded using R261123.

2) Extract the driver by running the executable.

3) Open a command prompt window, go to where the driver was extracted, and decrypt the file using:
BcmCrypt.exe -d DellInst.enc DellInst.txt

4) Open DellInst.txt in a text editor. Search for the section relating to your card, for example:
;Dell Wireless 1500 Draft 802.11n WLAN Mini-Card

The section lists system identifiers which are compatible with that card. If the section is missing or empty, you might want to try a different driver. If it has systems but doesn't list your system, add your system. For example:
0x01BD ;Inspiron 6400

5) Encrypt the file you edited to DellInst.enc:
BcmCrypt.exe -e DellInst.txt DellInst.enc

6) If you had an old driver installed, uninstall it.

7) Install the new driver by running Setup.exe. It will probably ask you to restart Windows at the end.

8) Optional: Go into Device manager, double click on the card, and in the advanced tab, change some settings. You can enable Afterburner and Xpress, set Bandwidth Capability to 11a/b/n:20/40Mhz and set Wake-up Mode to None.

Denys said...

How to find this ID? I have dell latitude c610.

Boris Gjenero said...

It seems the Latitude c610 system id is 0x00E3. In Linux you could use the getSystemId executable to find this. I'm not sure how to find it in Windows.

Many said...

Thx for this tuto ;)
But ... Like Denys said, how to find this ID ? I have a laptop Inspiron E1505. I do not have linux but windows ...
Thx for the help ;)

Boris Gjenero said...

I don't know how to get the ID in Windows. Maybe the best idea is to look at an old driver that supports your system and copy from there.

The Inspiron E1505 should be the same as Inspiron 6400, and the ID should be 0x01BD.

Ahmed Hameed said...

Good job , but i wounder what ID od my Inspiron 1764 (windows xp 64-bit)?

Boris Gjenero said...

I don't know of a tool that can display it in Windows. You can see it in Linux. You can also read it directly from physical memory at 0xFE840. For example, debug in DOS can read it. Issue the "df000:e840" command in debug and look at the output. For example, the first bit of the output I see is:

F000:E840 BD 01

Put the second byte before the first (it's little endian) and you get 01BD, the system ID of the Inspiron 6400. For more info look at getIdByteFromMem () here. This should work in a DOS window in Windows, but 64 bit Windows doesn't have that so you'd need to boot DOS.


I have made the changes in DellInst file and run the setup again.
But now I am getting following error
"operating sysetem not supported"

But in DellInst my OS is listed

I have DellInspiron N5010 with WLAN 1501 card
and Win 7 ultimate installed
Please advice

sunil said...

I have dell studio 1558, pls let me know the id