Problem je bio jer je jedan od ventilatora koji su spojeni na maticnu na maximalnom broju okretaja uzrokovao krivo ocitanje broja okretaja.
Nakon par sati pretrazivanja foruma je sve sta sam naso prakticki jedno te isto - flash/reset BIOS-a. Resetirati ili flash-ati BIOS a da riskiram da kasnije necu moci podesiti parametre mi bas nije bilo previse privlacno pa sam nakon odstekavanja svih USB-ova (osim tastature) vec skoro sve skupa ostavio za kasnije kad bi probao staviti i PS/2 tastaturu, drugu graficku i slicno.
Medjutim, nakon desetaka uzastopnih resetiranja mi je bilo tesko a ne opet poceti primjecivati da se za vrijeme dok jos nisu ucitani Windowsi svi ventilatori vrte namaximalnom broju okretaja. Zbog toga sam (krivo) pomislio da je uzrok elektricke prirode i da se zbog necega manifestira kad svi ventilatori koje kontrolira maticna (processor, chipset i system) dobivaju punih 12 V.
Od System venta mi je na plocu spojen samo SENSE a napon se uzima direkton s napajanja a ventilatori od processora i od chipseta su sa sva 3 pina (+12 V, GND, SENSE) spojeni na maticnu. Palo mi je na pamet iz Windowsa uzrokovati da se ventilatori od procesora i od chipseta vrte na maximalnom broju okretaja pa vidjeti da li ce se kompjuter smrznuti. Okretaje ventilatora mi je nejjednostavnije bilo povecati tako da sam spustio klizac za temperaturu na kojoj se ventilatori vrte s max brojem okretaja:
formatting link
Podesio sam parametre tako da su se ventilatori vrtjeli ko nakon restarta ali se nije desavalo nista. Tu sam se malo igrao s brojem okretaja, probao sam za vrijeme dok se ventilatori vrte pokretati programe i najednom sam primijetio da se ocitanje broja okretaja za chipset fan iz nekog razloga svaki cas penje na 75000:
formatting link
Experimentiranje je pokazalo da se kriva ocitanja desavaju samo kad je broj okretaja blizu maximalnog a nikad kad se ventilator vrti nekom nizom brzinom.
Tu sam sad pomislio da bi to mogo biti uzrok, nikad nisam disassemblirao nijedan BIOS ali nije nemoguce da bi broj okretaja koji je veci od 65535 (16 bitova) uzrokovati blokiranje BIOS-ovog koda. Drugi razlog (koji mi se cini vjerojatnijim) bi mogo biti da rutina u BIOS-u negdje u RAM-u priprema cifre za ispis broja okretaja (kad se otvori PC Health Status ekran se broj okretaja vidii u BIOS-u), mozda se cifra po cifru za ispis odvaja pomocu gledanja ostatka kod dijeljenja s 10 a ako su za broj okretaja predvidjene najvise 4 znamenke (0000 - 9999), onda je moguce da peta znamenka prebrise neku memorijsku lokaciju zbog koje se promijeni tijek programa. Ili se nikako ne smije desiti 5 prolaza kroz petlju ili...
Uglavnom, ako bi uz odstekavanje ventilatora BIOS proradio, onda bi to trebalo biti to. Odstekao sam chipset vent (ploca bez problema moze raditi i bez njega jer sam nedavno stavio heatsink) i nakon toga je stvarno sve opet bilo OK.
Naknadno sam u BIOS-u spustio napon ventilatora za chipset vent na 60% od maximalne nakon cega i uz ponovo ustekani ventilator ne dolazi do blokiranja BIOS-a (jer se na 60% od max okretaja ne desavaju kriva ocitanja).
Evo sad prostora za nekog tko ce detaljno objasniti sve aspekte ovog problema. Bilo bi lijepo kad bi neko napravio oscilogram signala na SENSE pin-u nekog ventilatora. Ovdje se moze vidjeti kakve su otprilike izvedbe s elektrickog gledista:
formatting link
Ocito postoje 3 izvedbe SENSE signala - puni napon, preko zenner-ice (TTL) i open collector. Da li do krivog ocitanja dolazi zbog iskrenja (previse impulsa) ili zbog nekompatibilnosti napona (ploca ocekuje TTL level a dolazi 12 V signal zaoscilira)?
Ako je vec doslo do krivog broja impulsa sta se tocno desava u BIOS-u pa da preveliki broj impulsa uzrokuje smrzavanje? Da li negdje postoji source ili disassemblirani kod bilo kojeg BIOS-a pa da se izolira rutina za ispis brojeva? Na cemu se uopce izvrsava kod upisan u BIOS, na nekom embedded mikrokontroleru ili je to x86 instrukcijski set koji se izvrsava na glavnom processoru?
Naso sam knjigu koja ce mozda dati neke odgovore:
formatting link
a naletio i na neke podatke tipa da 1234h na adresi 0000:0472 odredjuje da li je u pitanju cold boot:
formatting link
Do sad nisam proucavao kako BIOS funkcionira na nivou assemblera ali me je sad zainteresiralo pa ako neko zna nesta o tome neka napise 2-3 recenice ili nek stavi koji link. Takodjer ako neko ima ventilator koji mu tu i tamo uzrokuje preveliko ocitanje, volio bih vidjeti oscilogram SENSE pin-a tog ventilatora.
To bi bio taj slucaj, jedna malo manje uobicajena stvar za provjeravanje prilikom problema s BIOS-om. Oni koji su rekli da treba istekati *SVE* uredjaje pa na taj nacin otkriti koji uzrokuje problem su bili u pravu ako su pod 'sve uredjaje' racunali i ventilatore :-))