Pull to refresh

Устанавливаем неподдерживаемую Wifi карту в HP Pavilion dv6-1319er

DIY
image Маркетинг страшная сила, и в погоне за выгодой, у производителей ноутбуков стало модно блокировать сторонние карты расширений, мол хотите карту новей — покупайте у нас, с наценкой, и не факт что у производителя есть то что ВАМ нужно (а если брать в расчет что BIOS для лаптопа обновляется максимум год — два, тогда ещё и жить со старым оборудованием).
На хабре уже есть такие топики (например) о внесении изменений в BIOS ноутбука для поддержки сторонних карт mini pci-e, хочу и я вам рассказать о таком же подвиге, но на другом представителе ноутбуков HP Pavilion dv6-1319er



Немного предыстории, решил что нынешние 54Mbit (а в сухом остатке ~26Mbit) в корне не устраивают меня, т.к. сеть провайдера уже давно 100Мбит, роутер уже давно с поддержкой 802.11n, осталось дело за немногим модернизировать ноутбук под стандарт 802.11n. На ebay была куплена современная карта Intel Centrino N6200 для ноутбуков с 2 антеннами. Осталось по приходу заменить «дедушку» Broadcom BCM9431 и радоваться жизни.
Но не тут то было производитель любовно «позаботился» о нас, ибо… нечего в хороший ноутбук устанавливать что попало, производитель лучше всех знает что нужно владельцу.
И на экране мы видим сообщение:
104-Unsupported wireless network device detected.
System halted. Remove device and restart.


image

image

Будем менять ситуацию!
Есть несколько способов внести карту в белый лист:
1) Найти информацию в BIOS о нынешней карте, и подменить данными из новой (VEN, DEV, SUBSYS)
наверно самый популярный у пользователей способ, особенно если меняете карту того же производителя,
например Intel Wifi 5100 > 6200 (ссылка)

2) Удалить полностью модуль отвечающий за проверку,
при загрузки останется сообщение о том что wifi модули не обнаружены, и как себя будет вести BIOS после такой операции неизвестно (ссылка)

3) Более сложный чем предыдущие, но действенный, а именно — найти в коде функцию отвечающий за проверку и сделать так чтобы любая карта была белой. Не так всё страшно как кажется, с нужными знаниями может справиться полный профан в ассемблере.

Итак Пойдем по пути #3 :)

В случае неудачной прошивки или повреждения аппарата ни я, ни администрация ресурса ответственности не несут! Все действия вы делаете на свой страх и риск.
Будьте очень аккуратны. Никто кроме вас не несет ответственность за любые негативные последствия данной модификации.


Нам необходим disassembler IDA, файл прошики с официального сайта hp для ноутбука, и утилита для распаковки файла прошивки bios - Phoenix Tool 1.64 , а также любой HEX редактор

1) Скачиваем BIOS с официального сайта, в моём случае это sp49467.exe
2) Запускаем установку его и распаковываем в любую папку

3) Запускаем PhoenixTool, нам необходимо распаковать прошивку BIOS на исполняемые модули.

лирическое отступление:
При открытии файла ****.fd утилита сообщит Recovery filenames are, эта информация необходима для того чтобы восстановить bios если что то пойдет не так, если опыта мало и нет второго компьютера, стоит позаботиться о спасении заранее подробнее о процедуре восстановления

3.1)В PhoenixTool необходимо произвести следующие настройки:

В Графе Manufactured установит в Other
В Advanced установить чекбоксы на пунктах «no SLIC» и «Allow user to modify other modules»

image

Далее нажимаем Go и не закрываем окно с информацией, это позволит сделать нам изменения и после нажатия OK внести их в файл прошивки.

image

Теперь у нас есть папка DUMP со всеми модулями BIOS.

4) Открываем IDA Pro Advanced (64-bit), т.к. модули прошивки откомпилированы под 64 bit

Нас интересует модуль E62F9F2F-4895-4AB5-8F1A-399D0D9C6B90, именно он отвечает за проверку валидности карт.

Ищем модуль в директории DUMP, например E62F9F2F-4895-4AB5-8F1A-399D0D9C6B90_3_719.ROM (3 и 719 необязательно, они меняются от модели ноутбука и версии BIOS), главное модуль проверки карт самый большой из соседствующих (например наш 7Кб)

Выставляем настройки, Processor Type: Intel 80x86 processors: metapc

image

5) Необходимо найти функцию проверки. Будем опираться на известную нам информацию о предыдущей карте wifi, найдём функцию, по SUBSYS номеру (например у Broadcom SUBSYS_1507103C)
В IDA прокручиваем указатель на самый верх кода, и делаем Search -> Text, вставляем 1507103C и оказываемся в нужном участке кода.

image

В коде становится понятно как проверяются карты (по VEN DEV SYBSYS и REV)
Залог успеха чтобы функция вернула в регистр al = 1, а не 0 в случае если карта не подходит.

image

6) Редактируем файл модуля,
установив крусор в IDA на команду mov al, r8b и переключив в окно Hex View A, узнаем цепочку байтов 418AC0 — она нужна для поиска в hex редакторе, для того чтобы заменить на «правильную команду»

Для этого откроем E62F9F2F-4895-4AB5-8F1A-399D0D9C6B90_3_719.ROM в HEX редакторе и ищем строку 418AC0, изменяем на B00190

расшифровка байт кода:
mov al,1 = B0 01
nop = 90


Сохраняем файл, снова открываем в IDA и смотим что у нас всё верно:

image

7) Прошивка
Закрываем IDA, HEX редактор итд!

Возвращаемся в открытый PhoenixTool, теперь нажимаем кнопку OK,

наши изменения сохранятся в xxxxx_SLIC.fd (например 3623F42_SLIC.fd)
необходимо переименовать в файл без суффикса SLIC (например 3623F42.fd)

Всё теперь можно запускать InsydeFlash.exe и прошивать наш измененный BIOS.

8) Profit

image

upd: Может кому пригодится, выкладываю уже исправленный BIOS
upd3: BIOS F.46 dv6-1319er sp54629 disabled white list wifi
Tags:
Hubs:
Total votes 45: ↑43 and ↓2 +41
Views 66K
Comments 37
Comments Comments 37

Posts