
Marketing is a terrible force, and in the pursuit of profit, it has become fashionable for laptop manufacturers to block third-party extension cards, saying that you want a new card - buy from us, with a surcharge, and not the fact that the manufacturer has what YOU need (and if you take into account what The BIOS for a laptop is updated for a maximum of a year - two, then also live with old equipment).
On Habré there are already such topics (
for example ) about making changes in the laptop's BIOS to support third-party mini pci-e cards, and I want to tell you about the same feat, but on another representative of
HP Pavilion dv6-1319er laptopsA little background, I decided that the current 54Mbit (and in the dry residue ~ 26Mbit) does not suit me at all. The network of the provider has long been 100Mbps, the router has long been with 802.11n support, it remains the case for a few to upgrade the laptop to the standard 802.11n. On ebay a modern Intel Centrino N6200 card for laptops with 2 antennas was purchased. It remains to replace the "grandfather" Broadcom BCM9431 on arrival and enjoy life.
But it was not there that the manufacturer lovingly "took care" of us, because ... there is nothing to install anything into a good laptop, the manufacturer knows best what the owner needs.
And on the screen we see the message:
104-Unsupported wireless network device detected.
System halted. Remove device and restart.

')

We will change the situation!
There are several ways to make a white card:
1) Find information in the BIOS about the current card, and replace the data from the new (VEN, DEV, SUBSYS)
probably the most popular method among users, especially if you change the card of the same manufacturer,
for example, Intel Wifi 5100> 6200 (
link )
2) Remove completely the module responsible for checking,
when loading, there will be a message stating that no wifi modules were detected, and how the BIOS will behave after such an operation is unknown (
link )
3) More complex than the previous ones, but effective, namely, to find in the code the function responsible for checking and make any card be white. Not so scary as it seems, with the necessary knowledge can be handled by a complete layman in assembler.
So let's go on the way # 3 :)
In case of unsuccessful firmware or damage to the device, neither I nor the administration of the resource of responsibility bear any responsibility! All actions you do at your own peril and risk.
Be very careful. No one except you is responsible for any negative consequences of this modification.We need a disassembler IDA, a firmware file from the official laptop hp site, and a utility to unpack the bios firmware file -
Phoenix Tool 1.64 , as well as any HEX editor
1) Download the BIOS from the official site, in my case it is sp49467.exe
2) Run the installation and unpack it in any folder
3) Run PhoenixTool, we need to unpack the BIOS firmware on executable modules.
lyrical digression:****.fd Recovery filenames are , bios , ,
3.1) In PhoenixTool, the following settings must be made:
In the Count, Manufactured will install in
OtherIn Advanced install checkboxes on the
“no SLIC” and
“Allow user to modify other modules” items

Next, click Go and
do not close the window with the information, this will allow us to make changes and, after clicking OK, enter them into the firmware file.
Now we have a DUMP folder with all the BIOS modules.4) Open IDA Pro Advanced (64-bit), because firmware modules compiled for 64 bit
We are interested in the module
E62F9F2F-4895-4AB5-8F1A-399D0D9C6B90 , it is he who is responsible for checking the validity of the cards.
We are looking for a module in the DUMP directory, for example E62F9F2F-4895-4AB5-8F1A-399D0D9C6B90_3_719.ROM (3 and 719 optional, they vary from laptop model and BIOS version), the main card verification module is the largest of the neighboring (for example, our 7Kb)
We expose the settings, Processor Type: Intel 80x86 processors: metapc

5) It is necessary to find the verification function. We will rely on the information about the previous wifi card known to us, we will find the function by the SUBSYS number (for example, Broadcom SUBSYS_1507103C)
In IDA, scroll the pointer to the very top of the code, and do
Search -> Text , insert
1507103C and find
ourselves in the right part of the code.

In the code it becomes clear how the cards are checked (by VEN DEV SYBSYS and REV)
The key to success is that the function returns to the register al = 1, and not 0 if the card does not fit.

6) Edit the module file,
by setting the spacing in IDA to the command mov al, r8b and switching to the Hex View A window, we find out the byte chain
418AC0 - it is needed to search in the hex editor, in order to replace it with the “right command”
To do this, open E62F9F2F-4895-4AB5-8F1A-399D0D9C6B90_3_719.ROM in the HEX editor and look for the string
418AC0 , change to
B00190:
mov al,1 = B0 01
nop = 90
Save the file, open it again in IDA and see that everything is correct with us:

7) Firmware
Close IDA, HEX editor and so on!Go back to the open PhoenixTool,
now press the OK button ,
our changes will be saved in xxxxx_SLIC.fd (for example, 3623F42_SLIC.fd)
must be renamed to a file without the SLIC suffix (for example, 3623F42.fd)
All now you can run InsydeFlash.exe and flash our modified BIOS.
8) Profit

upd: Maybe someone will come in handy, posting the already fixed BIOS
upd3:
BIOS F.46 dv6-1319er sp54629 disabled white list wifi