Checksumme für Biosfile anpassen

Hi..
Ich möchte in meinem Bios die Whitelist ändern da ich eine andere Netzwerkarte einbauen möchte. Nun hab ich das Problem, wenn ich die ID´s ändere, dass die Checksumme nicht mehr stimmt und ich nicht flashen kann. Wie kann ich danach die Checksumme neu errechnen? ?(
Hat da vielleicht jemand nen Tip?

thx
billi
 
Die Checksumme wird vom Flash-Tool berechnet und mit der im file gesicherten verglichen...wenn sich das sträubt tippe ich eher auf einen Editierungsfehler deinerseits...
Oder hast Du etwa nur den Hexwert im Biosfile geändert ohne ein entsprechendes Tool, dass die Prüfsumme aktualisiert?!

Je nach BIOS benötigst Du...

AWARD-BIOS: cbrom.exe
AMI-BIOS: amibcp.exe

...zum Editieren des BIOS-Files und zum richtigen Abspeichern. Einfach mal danach suchen, evtl. mit den Zusätzen download und bios.
 
@sTEk
Danke für Deinen Tip, aber so einfach ist das nicht. Das Bios ist ein Phoenix-HP-Derivat und das läßt sich leider nicht so einfach bearbeiten.

So, Sorry erstmal das ich hier nur schnell ein Paar Fragen reingeworfen hatte und noch gar nicht genau erklärt hab worum es geht. So ist es vielleicht leichter zu verstehen und Motiviert auch ander mit dem selbem Problem zur Mitarbeit. Und wenn nicht, Ich find das schon raus, und dann profitiere ich allleine davon. :D

Also, es soll an einem HP Notebook (nx9420) die Whitelist geändert werden um ein Intel 4965 AGN WLAN Karte nutzen zu können. Die Whitelist von HP läßt aber nur eine Intel 3945ABG oder Broadcom BCM 4311 zu.
Diese Whitelist soll geändert werden für eine andere Karte. Das es funktioniert ist klar, denn ich habe ein modifiziertes Bios im Rechner laufen. Aber mit einer Atheros Karte.
Die anpassung hat mir irgend jemand aus dem Netz gemacht, der aber jetz keine Zeit mehr hat. Seine Erklärung zum Rechnen waren leider nicht sehr ausführlich, aber ich kenne das Prinzip.
Nun veruche ich das selbst heraus zu finden um einmal meine Karte zum laufen zu bringen und einmal um anderen User die auch das Prob mit dem "104 Unsupported Wireless Network Device detected" vielleicht ein Tutorial in die Hand zu geben wie man diesen Zwang einiger Hersteller um gehen kann.
Ich finde es nämlich echt eine Frechheit mir Vorzuschreiben welche Peripherie ich in meinem Notebook verwenden soll.
So, das erstmal zum Hintergrund.

Alles hier erklärte erfolgt ohne Garantie und ohne Übernahme einer Haftung bei eventellen Schäden.


Jetzt zur Theorie und Praxis. 8o
Am einfachsten währe es, die Sprungadresse zu finden wo die Abfrage stattfindet oder die Stelle wo die Checksumme gebildet wird. Beides ist aber leider nicht gelungen.

Also gehen wir einen anderen weg.

Folgende Sachen werden benötigt:
- Die ID´s der laufenden Karten
- Die ID´s der NICHT laufende Karte
- Eine flashbares Bios File das auf jedenfall im lappi läuft

Über den Gerätemanager in Windows -->Eigenschaften-->Details-->Hardware-IDs bekommt man raus welche ID die eingebaute Karte hat.
Wer für seine neu einzubauende Karte keine ID hat, der kann die neue Karte per Hotplug einbauen, und dann die ID der Karte über den Gerätemanager herausfinden.

Diese Karte ist im Book eingebaut:
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C

Diese Karte soll rein:
PCI\VEN_8086&DEV_4229&SUBSYS_11208086

Über die Seiten des Herstellers konn man auch noch Infos bekommen welche Karten das Book noch unterstützt. Ist wichtig zu wissen, denn so haben wir mehr Stellen wo wie die Änderungen ansetzen können.

Bei mir (HP nx9420) werden die Broadcom BCM 4311 und Intel 3945ABG unterstütz.


Die Id´s stehen im Bios aber in anderer Reihenfolge in little bzw. middle indian.

Diese müssen umformatiert werden wie die ID´s dann im Bios erscheinen.

Ich gehe dabei nach diesem schema vor:

Code:
Diese Intel karte ist drin:

PCI\VEN_8086&DEV_4222&SUBSYS_135C103C
               8086         4222                135C103C
wird zu
               8680         2242              3C10 5C13
als Bios String:
8680 2242 3C10 5C13

Diesen String suchen wir nun im Bios File.
Zur suche nutze ich nur 86802242 , da der rest ein wenig verteilt im File ist.

Im File finde ich dann folgende Stelle..

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (Intel_ID nach der wir gesucht haben)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Der komplette ID String der benötigt sieht aber so aus: 8680 2242 3C10 5C13

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (komplette Intel_ID unserer Karte)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Jetzt werfen wir einen Blick in das .inf File der Treiber der Karte und suchen uns unsere eingebaute Karte und umliegenden Karten zu unserer eingebauten herraus.

; HP_3945_ABG
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_MOW1 , PCI\VEN_8086&DEV_4222&SUBSYS_135B103C ; MOW1
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_MOW2 , PCI\VEN_8086&DEV_4222&SUBSYS_135C103C ; MOW2 (unsere eingebaute Karte)
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_RoW , PCI\VEN_8086&DEV_4222&SUBSYS_135D103C ; RoW
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_JPN , PCI\VEN_8086&DEV_4222&SUBSYS_135E103C ; JPN
%NIC_MPCIEX_3945ABG% = Install_MPCIEX_HP_3945_ABG_VISTA64_KRA , PCI\VEN_8086&DEV_4222&SUBSYS_135F103C ; KRA

Übersichtlicher zusammengeschoben und überflüssiges entfernt:

; HP_3945_ABG
PCI\VEN_8086&DEV_4222&SUBSYS_135B103C
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C (unsere eingebaute Karte)
PCI\VEN_8086&DEV_4222&SUBSYS_135D103C
PCI\VEN_8086&DEV_4222&SUBSYS_135E103C
PCI\VEN_8086&DEV_4222&SUBSYS_135F103C


Hier jetzt mit *Umgewandelte ID´s*

PCI\VEN_8086&DEV_4222&SUBSYS_135B103C 8680 2242 3C 10 5B 13
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C 8680 2242 3C 10 5C 13 *original eingebaut von HP*
PCI\VEN_8086&DEV_4222&SUBSYS_135D103C 8680 2242 3C 10 5D 13
PCI\VEN_8086&DEV_4222&SUBSYS_135E103C 8680 2242 3C 10 5E 13

Jetzt kann man erkennen, das es 5 verschiedene Intel 3945ABG Kartenversionen (von HP) gibt.

PCI\VEN_8086&DEV_4222&SUBSYS_135B103C 8680 2242 3C 10 5B 13 (teil der Intel_ID unserer Karte / unterschiedliche Karten)
PCI\VEN_8086&DEV_4222&SUBSYS_135C103C 8680 2242 3C 10 5C 13 *original eingebaut von HP*
PCI\VEN_8086&DEV_4222&SUBSYS_135D103C 8680 2242 3C 10 5D 13
PCI\VEN_8086&DEV_4222&SUBSYS_135E103C 8680 2242 3C 10 5E 13

Jetzt sehen wir mal wieder in unser Bios File.

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (teil der Intel_ID unserer Karte / unterschiedliche Karten)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Wenn man sich die blauen Id´s drumrum gut ansieht, so kann man die komplette whitelist erkennen. Damit werden nur diese 5 Intel 3945_ABG erlaubt. Die Intel 3945_ABG gibt es aber noch für IBM,DELL,Toshiba,Sony. Da hat jede Karte wieder eine andere ID. Jeder Notebook Hersteller kocht hier seine eigene Suppe. Aber egal. X(

An diesen Stellen können wir die ID´s der neuen Karte dann eintrage. Dazu aber später. ;)

Wenn wir die alten ID´s gegen die neuen tauschen stimmt die Checksumme des Fils nicht mehr, und es kann nicht geflasht werden da das HP Flashtool das erkennt.

Wie oben schon erwähnt ist es nicht möglich die Stelle zu finden wo die Checksummer errechnet wird.

Also gehen wir einen anderen Weg.

Im Bios gibt es noch eine 2. Whitlist für die Broadcom BCM 4311 Karte.

Broadcom BCM 4311

PCI\VEN_14E4&DEV_4312&SUBSYS_1360103C E414 1243 3C 10 60 13
PCI\VEN_14E4&DEV_4312&SUBSYS_1361103C E414 1243 3C 10 61 13
PCI\VEN_14E4&DEV_4312&SUBSYS_1362103C E414 1243 3C 10 62 13
PCI\VEN_14E4&DEV_4312&SUBSYS_135F103C E414 1243 3C 10 5F 13

Jetzt sehen wir mal wieder in unser Bios File.

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (teil der Intel_ID unserer Karte / unterschiedliche Karten)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00 (teil der Broadcom_ID / unterschiedliche Karten)
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Da wir keine der Broadcom Karten nutzen, müssen deren ID´s zum angleichen der Checksumme herhalten.

Und nun gehts zur neuen Karte:

Code:
Das ist die neue Karte die rein soll:

PCI\VEN_8086&DEV_4229&SUBSYS_11208086
               8086          4229                11208086
wird zu
               8680          2942               8680 2011  

als Bios String:
8680 2942 8680 2011

Das heißt also:

8680 2242 3C10 5C13 wird zu
8680 2942 8680 2011

Hier nochmal das original mit den alten Karten:

0x10CF0: 18 C3 86 80 22 42 3C 57 10 5B 13 83 00 5C 84 00 (teil der Intel_ID unserer Karte / unterschiedliche Karten)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00 (teil der Broadcom_ID / unterschiedliche Karten)
0x10D10: 61 04 01 62 80 01 11 80 01 55 63 84 00 64 04 01
0x10D20: 65 84 04 5F 02 05 AF 86 80 00 10 83 00 01 84 00

Und hier schon mal mit der neuen:

0x10CF0: 18 C3 86 80 29 42 86 57 80 20 11 83 00 5C 84 00 (teil der alten Intel_ID / teile der neuen Intel ID)
0x10D00: 5D 04 01 FF 5E 13 E4 14 12 43 3C 10 55 60 84 00 (Broadcom_ID über den die Checksumme wieder angeglichen wird)

Nun gehts ans rechnen der Checksumme.

Hier mal das Beispiel meines Helfers.
Die 86 80 43 10 EF 86 80 22 25 habe ich benutzt um meine ID´s auszutauschen.
Also 86 80 43 10 EF 86 80 22 25 gegen 60 12 90 38 EF CF 17 14 00 tauschen.
Die e4 ff 14 20 43 3c 10 f4 12 habe ich benutzt um die Checksumme wieder anzugleichen.

Also e4 ff 14 20 43 3c 10 f4 12 gegen e4 ff ec 45 69 58 1e 19 12 tauschen.

Die Checksumme des Bios berechnet sich über die Summe aller 4Byte Blöcke. Als Ergebnis kommt wieder eine 4Byte große Zahl raus.
Man mußt du die Checksumme eben relativ zu der Stellenwert-Änderung
anpassen. Simple Addition und Subtraktion mit Hex-Zahlen reicht da
ansich aus.

Stellenwert auffüllen wegen der 4 Bytes Blöcke

00||86||80|||43||||10|EF||||86||80||22|||25
00||60||12|||90||||38|EF||||CF||17||14|||00
=================================
00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25

Alle negativen Werte fehlen in der Checksumme, und alle positiven
Werte sind zuviel. Also muss man die entsprechend Werte in das Gegenteil umwandeln.

00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25 wird zu
00,+26,+6E,-4D,-28,00,-49,+69,+0E,+25

14 20 43 3c 10 f4
00+26+6E-4D
-28 00 -49+69
____________+0E+25
==========
ec 45 69 58 1e 19

Ich versteh nicht so ganz wie er auf + oder - vor den Werten gekommen ist. Er zieht den niedrigen Wert von hohem Wert ab.
Hab ich nachgerechnet, und das stimmt.

00||86||80|||43||||10|EF||||86||80||22|||25
00||60||12|||90||||38|EF||||CF||17||14|||00
=================================
00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25

Die Umwandlung inst gegenteil ist mir logisch.

00,-26,-6E,+4D,+28,00,+49,-69,-0E,-25 wird zu
00,+26,+6E,-4D,-28,00,-49,+69,+0E,+25

Die Rechnung von der Sache her auch, nur ich bekomme ein wenig was anderes raus.
Seine Rechnung:

14 20 43 3c 10 f4
00+26+6E-4D
-28 00 -49+69
____________+0E+25
==========
ec 45 69 58 1e 19

Meine Rechnung:

14 20 43 3c 10 f4 ist der Wert mit dem gerechnet wird

14 20 43 3c
00 +26 +6E -4D
14 46 B1 EF
-28 00 -49 +69
EC 46 68 58

dann noch

10 f4
+0E+25
1E 19

Das ergibt
bei mir: EC 46 68 58 1E 19
beim H: ec 45 69 58 1e 19

So, und da liegt jetzt das nächste Problem.
Warum hab ich 46 und er 45 und ich 68 und er 69 raus.

Vom logischen her, würd ich sagen das hebt sich auf, aber irgendwie muss ja der Unterschied zustande kommen.

So, das wars erstmal mit meinen Ausführungen.

to be continued :rolleyes:
billi
 
Hi

Ich habe genau das selbe Problem wie billiboy.
Auch ein HP nx9420 und möchte eine 4965agn einbauen.
Ich finde im Hexeditor aber den gesuchten String nicht.
Was mach ich falsch? Muß ich das mit einem speziellen Editor machen ?
Ich benutze xvi32.

Am coolsten wäre es wenn mir jemand das fertige Biosfile zukommen lassen könnte.

Gruß
Kpt.Kirk
 
Hallo Kpt.Kirk,

ich bin neu im Board. Naiv wie ich war, wollte ich in meinem HP nx9420 auch die WLAN-Karte gegen eine Intel Draft N-Karte tauschen. Ich verstehe nicht, dass ich problemlos einen USB-WLAN-Stick daran betreiben darf, aber keine neue Karte.
Auf der Suche nach einer Lösung habe ich Eure Beiträge entdeckt.

Has Du ein gepatchtes BIOS bekommen und hat es damit geklappt ?
Für eine Antwort wäre ich dankbar.

Viele Grüße Sam
 
Hallo Kpt.Kirk,

vielen Dank für die Antwort !

Ich habe zwar schon einige Beiträge im Netz gefunden, allerdings habe ich nicht den technischen Sachverstand, um die für mich komplizierten Anleitungen umzusetzen. Schade, dass Du auch noch keine Lösung für unser Problem gefunden hast.

Viele Grüße

Sam
 
Zurück
Oben