Gigabyte GA-P67-DS3-B3 support

      29.10.2015 Moje stávající PC s lehce přetaktovaným Core 2 Duo E8600 mi na většinu práce pořád výkonově celkem dostačuje (a vzhledem ke stagnaci růstu výkonu CPU od intelu po ztrátě konkurence AMD ani není třeba se moc honit za novinkami), ale už mě kapánek svrběly ruce, že jsem si dlouho nesáhnul na nějaký novější hardware. Když jsem tak přemýšlel po které generaci Core i3/5/7 sáhnout, přišla mi jako optimální (s nejlepším poměrem cena/výkon a s dobrou přetaktovatelností) 32nm řada Sandy Bridge (2. generace, socket LGA1155). Nejlépe top model i7-2600K (k-čková verze má odemčený násobič, jenž umožňuje dosáhnout vyšší frekvence než turbo na 3,8 GHz) a dá se při troše štěstí koupit cca za 4000 Kč, přičemž výkonově není o mnoho horší než odpovídající Haswelly za dvojnásobek. Navíc při přetaktování by mělo jít dosáhnout vyšší frekvence, jednak díky staršímu hrubšímu výrobnímu procesu křemíku (menší zbytkové proudy), který nemá tak prudce rostoucí závislost příkonu na frekvenci a druhak díky kvalitnějšímu pouzdření s menším tepelným odporem, kde je čip připájený přímo k IHS, zatím co u novějších CPU začal intel dávat mezi čip a IHS nepříliš dobrou teplovodivou pastu. Jak je vidět z tohoto srovnání přetaktovaného Sandy Bridge i7-2600K @5 GHz a přetaktovaného Skylake i7-6700K @4,7 GHz, nárůst výkonu v reálných aplikacích je jen 0 - 20%, to prosím za 4 generace a 4 roky vývoje Core mikroarchitektury. Dokonce i Core 1. generace ještě dokáže držet krok s novou generací Coffee Lake. Novější test Cinebench R20 níže.
      Než jsem se rozhoupal, zmizely téměř všechny základní desky se socketem LGA1155 z PC obchodů (intel mezitím stihl vydat socket LGA1150 pro Haswell a socket LGA1151 pro Skylake). Nezbylo tedy, než se poohlédnout po bazarech, čímž se mi dost zúžila možnost výběru. Jako konzervativní fosil jsem si totiž stanovil požadavky, že základní deska musí mít COM, LPT a PS/2 porty a minimálně 2 klasické PCI sloty. Takové desky dělají téměř jen firmy Gigabyte a ASRock, nepočítám-li předražené a obtížně dostupné průmyslové desky. Nakonec jsem po chvíli hledání výhodně koupil základní desku Gigabyte GA-P67-DS3-B3 i s procesorem intel Core i3-2120 (2 jádra + HT, 3,3 GHz bez turba, 3 MB cache). Deska je založená na chipsetu intel P67 revize B3, která opravuje chybu předchozí revize spočívající v postupném uhnívání SATA 2.0 portů. Jelikož intel z chipsetu P67 vypustil nativní podporu sběrnice PCI, vyřešil to Gigabyte pomocí externího obvodu PCIe -> PCI můstku IT8892E. Uživatelský manuál je zde.

Přehled parametrů:

CPU: LGA1155 - Core i3/5/7 2/3. generace - Sandy/Ivy Bridge
CPU regulátor:  VRD 12 (VID -0,32 V až +0,64 V po 10mV; 4-fázový, ISL6364),
MOSFETy: NTMFS4935N (93 A; 3,2 mΩ), NTMFS4921N (58 A; 7 mΩ)
Chipset: intel P67 rev. B3 (PCH), PCIe to PCI bridge IT8892E, SuperIO IT8728F
PLL: integrované v CPU
HW monitor: součást ITE IT8728F na LPC (napětí, PWM/otáčky, teploty)
Paměť: 4x DIMM DDR3 1066/1333/1600/1866/2133 dual channel,
unbuffered, bez ECC (celkem max. 32 GB), 1,1 V - 2,02 V
Sběrnice: 1 x PCI Express 2.0 x16
1 x PCI Express 2.0 x16 v módu x4
2 x PCI Express 2.0 x1
2 x PCI 3.0
Síťovka: Realtek RTL8111E 10/100/1000 Mbit Ethernet,
RJ45, network BootROM
Audio: Realtek ALC889 7.1-kanálové High-Definition Audio
Konektory: 2 x SATA 3.0 + 4 x SATA 2.0
1 x SPP/ECP/EPP paralelní port
1 x sériový port RS232
1 x PS/2 klávesnicový/myší port
12 x USB 2.0 port (6 na panelu, 6 na desce)
1 x TPM (LPC) header
4 x ventilátor (2 s PWM regulací) s měřením otáček
1 x ATX 24-pin (zdroj stačí 20-pin) + ATX 12 V aux 4-pin (nutný)
BIOS: Phoenix/Award PnP Dual BIOS 6.00PG
ACPI 1.0b, SMBIOS 2.4, DMI 2.0, PnP BIOS 1.0a, MPS 1.4, noAPM
2 x 4 MB sériová SPI FlashROM Macronix MX25L3206E 3,3 V
podpora USB legacy pro Mass Storage zařízení
plynulé nastavení base clock 80 - 200 MHz po 0,1 MHz,
overvoltage CPU, PCH, DRAM, násobič DRAM 8 - 21,33x,
podrobné nastavení časování DRAM, nastavení ventilátoru...
Formát: plný ATX 305 x 215 mm

Gigabyte GA-P67-DS3-B3 photo


BIOSy

typ datum popis velikost
EXE 21.3.2012 Nejnovější oficiální BIOS F5, ME FW 7.1.20.1119 1,7 MB
ZIP! 22.11.2017 Moje neoficiální verze založená na verzi F5 z 21.3.2012
  • updatován mikrokód pro CPUID 206A7h (Sandy Bridge) a 306A9h (Ivy Bridge) - verze před workaroundy chyb Meltdown / Spectre (optimální výkon, nižší bezpečnost)
  • updatován intel ME FW na verzi 8.1.70.1590, pokud chcete ME přepnout do Alt Disable Mode, přepište Byte na offsetu 128h z hodnoty 44h na C4h (není třeba upravovat žádný checksum).
  • pokud máte problém s konfliktem I/O adres nějaké PCI karty, můžete si do BIOSu přidat patch pomocí ROMOSu 1.06
2,0 MB

      Deska je vybavena funkcí DualBIOS, tzn. je osazena 2 samostatnými SPI FlashROM pamětmi (Main a Backup BIOS). Po zapnutí startuje Main BIOS a pokud se mu nepodaří cca na 3 pokusy naběhnout, přebírá řízení Backup BIOS. Ten po startu zkontroluje kontrolní součet Main BIOSu a pokud je špatný, spustí se automaticky procedura přeflashovaní Backup BIOSu do Main BIOSu. Při běžném přeprogramování promocí Q-Flash (klávesa [END] při POSTu) nebo flashspi.exe se mění pouze Main BIOS. Chceme-li aktualizovat i Backup BIOS, je nutno během POSTu stisknout klávesovou kombinaci [ALT]+[F12] a následně potvrdit dotaz, že chceme přepsat záložní BIOS. Kombinace [CTRL]+[F12] prohodí vzájemně Main a Backup BIOS a kombinací [ALT]+[F11] se zkopíruje Backup BIOS do Main BIOSu. S BIOSem se též kopírují uživatelská nastavení uložená v SETUPu. Pokud potřebujeme vynutit spuštění Backup BIOSu když systém vůbec nenabíhá, stačí před zapnutím PC opatrně pinzetou zkratovat piny 7 (HOLD#) a 4 (GND) na paměti Main BIOSu (tím se deaktivuje výstupní pin Main BIOSu), zapnout a držet dokud nenaběhne Backup BIOS (napřed proběhne několik cyklů vypnutí-zapnutí PC). Ještě připomenu, že stejně jako u jiných desek od Gigabyte, lze klávesovou kombinací [CTRL]+[F1] v SETUPu zpřístupnit pokročilé nastavení - zde se objeví navíc akorát položka pro nastavení PCI latency.
      Na stránkách Gigabyte jsem objevil, že pro desku GA-P67-DS3-B3 rev. 2.0 je k dispozici místo BIOSu první verze UEFI UA2 z 13.2.2013 a tak mě vrtalo hlavou, co by se stalo, kdybych ji zkusil flashnout do svojí desky rev. 1.0. Pokušení bylo silné, jenže Gigabití flashovací nástroje tomu nepřály a hlásily neplatné board ID. Ani se tomu nedivím, při pohledu na fotografie, jsou rozdíly mezi rev. 1.0 a 2.0 viditelné na první pohled. Ale mě to přesto nedalo a tak jsem odpájel čip Main BIOSu a naprogramoval ho pomocí svého SPIPGM a připájel zpět. UEFI se však na desce nechytlo a po pár powercyklech ho záložní BIOS přepsal, tak aspoň víte, že to nemá smysl zkoušet :)

      4.11.2015 Jako první problém jsem potřeboval vyřešit, jak k desce připojit PS/2 klávesnici a myš, když má jen jeden kombinovaný PS/2 konektor. Gigabyte bohužel vyrábí minimum novějších desek se 2 PS/2 konektory, nebylo tedy na výběr. Připojení přes PS/2 preferuji proto, že občas používám různé systémy, které nemají nativní podporu USB a taky se dá výhodně použít starší KVM přepínač. BIOS sice implementuje USB legacy emulaci klasické klávesnice, ale setkal jsem se často s tím, že to bylo nakódované prasácky a způsobovalo to různé problémy, takže tuto položku chci rozhodně nechat v SETUPu vypnutou.
      Jak jsem z hledání na netu zjistil, používá Gigabyte dvě různá zapojení kombinovaných PS/2 portů. V tom lepším případě, např. u desky GA-B85M-D3H, je na rezervovaný pin 2 přiveden signál MDAT a na rezervovaný pin 6 je MCLK od myši. Pak stačí použít jednoduše Y-rozbočku na 2 PS/2 samice a problem fucking solved. Jenže svět IT není jednoduchý a přímočarý, proto ještě existuje druhá varianta, která má piny 2 a 6 nezapojené a pouze přepíná komunikační protokol podle toho, co do portu zrovna strčíte, což je i případ mé desky GA-P67-DS3-B3. Gigabyte v manuálu žádné podrobnosti o PS/2 (natož tabulku s pinoutem) neuvádí a na netu jsem taky nic konkrétního nedohledal, takže jsem to zjistil až po koupi propípnutím multimetrem...

PS/2 pinout

      Nechtěl jsem se však smířit s tím, že si nějaký mamrd ušetřil trochu práce a druhou PS/2 linku ze SuperIO na PS/2 konektor nezaroutoval (čip IT8728F samozřejmě podporuje 2 PS/2 linky) a pustil jsem se do drátování. Když jsem SuperIO oťukával multimetrem, zjistil jsem, že jeho pinout vůbec nekoresponduje s datasheetem (preliminary spec. 0.4.2). Našel jsem ale schéma zapojení základní desky GA-H61M-S2-B3, která používá ten samý čip a jeho správný pinout a zapojení je na straně 17. Později jsem se na běloruském fóru rom.by od uživatele maco dozvěděl, že Gigabyte si nechává od ITE vyrábět vlastní variantu čipu IT8728F s jiným pinoutem. Tu lze identifikovat z typového označení na 3. řádku, kde je řetězec např. AC07KDGB a právě 2 znaky GB na konci značí speciální Gigabytí verzi. Pinout se přitom liší jen tím, že je posunutý o 31 proti datasheetu (k číslu pinu v datasheetu je nutno přičíst 31 a dostaneme číslo pinu na Gigabytí verzi).
      PS/2 linky jsou tedy na pinech: 111 - KDAT, 112 - KCLK (klávesnice) a 113 - MDAT, 114 - MCLK (myš). Piny KDAT a KCLK jsou přivedeny na PS/2 konektor přes 82Ω odpory. Piny MDAT a MCLK překvapivě taky někam vedou, proto jsem je opatrně nadzvednul pomocí ostrého hrotu lámacího nože za současného prohřívání mikropájkou. UPDATE: povedlo se mi najít schéma této základovky (pro stažení se stačí přihlásit třeba Google účtem), SuperIO je na straně 18 a vidíme, že piny 113 a 114 jdou pouze na SMD pull-upy 8,2 kΩ, takže by je ani nebylo třeba odpojovat a drátky jednoduše připájet na jejich plošky. Abych piny dál mechanicky nenamáhal a zamezil tak jejich ulomení, přilepil jsem přímo na vršek SuperIO dva 82Ω SMD odpory a k nim krátkými drátky připojil piny. Na dvojitý USB konektor na backpanelu jsem přilepil druhý PS/2 konektor vypájený z nějaké staré desky a připojil jeho piny 1 a 5 na druhé konce odporů signálů MDAT a MCLK. Dále jsem na tyto piny na PS/2 konektoru připájel další SMD odpory 8,2 kΩ jako pull-upy do napájení a pak už jen stačilo připojit GND na pin 3 a 5V napájení jištěné přes polyswitch na pin 4. Výsledek vidíte na následujících fotkách:

Gigabyte GA-P67-DS3-B3 s CPU i3-2120 tapping SuperIO MCLK, MDAT SuperIO to mouse PS2 routing added PS2 for mouse

backpanel PS/2 test with keyboard and mouse together PS/2 test-CTmouse driver loaded successfully

      Tato HW úprava nebyla nijak složitá, ale ještě hrozilo, že by výsledek mohl zhatit BIOS nesprávnou inicializací registrů SuperIO. Obzvlášť podlé by bylo, kdyby např. návrhář použil druhou PS/2 linku jako GPIO k řízení něčeho důležitého :P. Naštěstí po zapnutí vše proběhlo v pořádku a na poslední fotce obrazovky je vidět, že ovladač CuteMouse úspěšně detekoval PS/2 myš. Používám s oblibou optickou myš M$ IntelliMouse Explorer 3.0A, která podporuje USB i PS/2 protokol a je dodávána s USB -> PS/2 redukcí (tato redukce obsahuje jen drátové propojení). SuperIO IT8728F podporuje automatické přepínání protokolu klávesnice a myši na obou PS/2 linkách. Toto je ve výchozím stavu zapnuté a lze to změnit bitem 7 v registru PCR 2 (APC/PME Control Register 2, index F4h). A skutečně, když jsem za chodu klávesnici a myš prohodil, tak klávesnice se chytla hned a myš po opakovaném spuštění CuteMouse taky. Po vyzkoušení jsem ještě drátky a piny SuperIO zajistil tavným lepidlem. Tak to bylo zatím jedno malé vítězství. Až seženu lepší CPU a paměti a povede-li se mi nainstalovat a rozchodit vše zásadní, tak se z toho stane primární PC...
      UPDATE: stejnou úpravu jsem udělal i na základní desce Gigabyte GA-X79-UP4 se stejným SuperIO čipem pro známého. Na horní straně IO je řada SMD odporů 0402, kde jsem našel 2 pull-upy 8,2 kΩ připojené na piny 113 a 114, takže ani nebylo nutné zvedat a pájet na nožičky IO. Ale pozor na to, že metalizace kontaktních plošek SMD součástek se snadno utrhne, takže po připájení drátků je dobré to hned zafixovat. Druhý PS/2 konektor jsem připájel klasicky na záda dvojitého USB konektoru. Na něj mi nechtěl vůbec chytit cín, ale po aplikaci kapky pájecí kapaliny na hliník se to hned krásně pocínovalo a konektory jsem bez problémů spájel.
      Když už jsem byl v tom HW-šťourání, podíval jsem se také pro zajímavost osciloskopem na průběhy napětí na gatech a drainech MOSFETů 1 fáze regulátoru VRD 12 (všechny průběhy jsou referencované proti zemi). Jak je z oscilogramů vidět, budicí napětí Ugs je 5 V a opakovací frekvence je 225 kHz. Jelikož jsou fáze 4, je z hlediska zvlnění efektivní frekvence 4-násobná, tedy 900 kHz.

VRD high side MOSFET Ug VRD high side MOSFET Ud VRD low side MOSFET Ug VRD low side MOSFET Ud
high side Ug high side Ud low side Ug low side Ud

      17.11.2015 Prozatím jsem na samostatném testovacím SATA disku (Seagate ST380013AS) vyzkoušel, jak se nová deska popere s DOSem, Windows NT 4.0 a Windows 98 SE. V případě DOSu jsem nenarazil na zásadní problémy, vše fungovalo jako na předchozí desce GA-P31-DS3L, až na menší zádrhel s podporu USB. Intel totiž z chipsetů řady 5x a novějších odstranil řadiče UHCI a USB porty připojil přes USB 2.0 huby přímo k EHCI. S touto topologií většina DOSových USB driverů nepočítá a tak najdou pouze EHCI řadič, ale už ne koncová zařízení. Více k tomu vysvětluje v jednom příspěvku na BTTR fóru Bret Johnson, autor jednoho OpenSource USB stacku pro DOS. Jediný driver, který funguje, je komerční DOSUSB 2.0 George Potthasta, jehož demo jsem také vyzkoušel. Driver správně detekoval připojené Mass Storage zařízení. Při prvním přístupu k diskové jednotce následovala nezvykle dlouhá pauza asi půl minuty, ale pak už kopírování souborů probíhalo odpovídající rychlostí USB 2.0 ~ 10 MB/s. Prubnul jsem i DOSUSB 3.0, avšak ten jen chybně detekoval neexistující řadič UHCI místo EHCI (i s vynucením EHCI pomocí parametru /E). Nevýhodou DOSUSB je, že nefunguje ve virtual 86 módu, tedy se správci paměti typu JEMM386, QEMM386, EMM386... Nicméně podpora USB legacy Mass Storage zařízení přes BIOS funguje dobře a rychle.
      Dále jsem vyzkoušel přehrávání h264 videa v mplayeru se zvukovým výstupem přes integrovaný HDA kodek ALC889 a síťování s pomocí NDIS2 ovladače Realtek RTL8111E a M$ TCP/IP stacku. DOSové ovladače na emulaci Sound Blasteru pro SB Audigy 2 zde vůbec nefungují - zavedení proběhlo bez chyby, ale nefungovalo už ani přehrávání melodie přes Adlib, které ještě na předchozí základní desce Gigabyte GA-P31-DS3L šlo (a to ani s pomocí utility SERREN). Nakonec jsem emulaci Sound Blasteru vyřešil pomocí druhé PCI zvukové karty s lepším ovladačem. Sekvenční čtecí rychlost disku jsem naměřil kolem 50 MB/s, takže UDMA funguje. Windows NT 4.0 taky naběhly bez problému, používám v nich diskový ovladač UniATA 0.44b2. Dokonce fungovalo i rychlé USB 2.0 s ION USB driverem. Akorát Windows 98 SE se zaštajfovaly a nechtěly bootnout ani v nouzáku. Prostě ještě v textovém režimu hned po startu DOSu zatuhly, aniž by vypsaly nějakou chybovou hlášku. Podotýkám, že nastavení BIOSu jsem měl poměrně konzervativní a SATA řadič pochopitelně nastavený do IDE legacy režimu (pro provoz v native režimu by byl patrně nutný speciální SATA patch).
      Zkusil jsem tedy provést čistou instalaci Windows 98 SE CZ. Před instalací je nutné omezit velikost XMS paměti na 1024 nebo radši 512 MB, např. pomocí ovladače himemx.exe v config.sys jak popisuju zde. Instalační soubory jsem překopíroval z CD na disk a spustil z DOSu příkaz setup.exe /im /id /ih /is /iq /ie (parametry vypínají scandisk, vytváření spouštěcí diskety a další zdržování). Z nějakého důvodu se mi však setup.exe ihned ukončil bez jakéhokoliv výpisu. Nahradil jsem ho souborem setup.exe z Windows 98 1. vydání (příp. z Windows Millennium) a ten už se spustil normálně. UPDATE: v případě, že setup.exe tuhne, zkuste místo něj spustit setupcor.exe (nelokalizovaná verze setupu s méně bugy). Instalace dál pokračovala v grafickém režimu a první fáze trvala jen pár minut. Potom následoval plánovaný restart, ale Windows zase zatuhly hned při startu po hlášce "Soubory jsou zaktualizovány, probíhá zavedení systému Windows...". Dle souboru bootlog.txt se jako poslední zaváděly ovladače msmouse.vxd, dynapage, vcd, vpd, int13 a enable. Poslední řádek se nedopsal celý a konec souboru byl zaplněn pár sty Byty nějakého binárního bordelu. Zkoušel jsem krokování bootu s vynecháním méně důležitých součástí a stejně jsem na nic nepřišel. Při dalších instalačních pokusech jsem ještě použil parametry /p i a /p j pro vypnutí/zapnutí ACPI. Podrobný přehled parametrů SETUPu je zde. Doporučuji použít spíše /p i bez ACPI, ve Správci zařízení pak nejsou žádné konflikty. S ACPI jsem měl 4 konflikty v systémových zařízeních a u IDE řadiče.
      Postupně jsem nainstaloval celou řadu operačních systémů Windows 95, Windows 95 OSR2, Windows 98 1. vydání a Windows Millennium, ale prakticky se stejným výsledkem, akorát Windows Millennium se místo tuhnutí dokola restartovaly. Ze zoufalství mě pak napadlo zkusit přepojit SATA kabel disku do jiného portu (ze SATA3 do SATA2) a najednou instalace vesele pokračovala dál, během pár minut proběhla detekce zařízení, odklikání pár dialogů, restart a už jsem byl na ploše. To mě teda dostalo. Slepě jsem předpokládal, že SATA3 řadič bude 100% kompatabilní se SATA2 a že se o to BIOS v IDE legacy režimu náležitě postará. Buď je chyba v BIOSu nebo nelze SATA3 kanál hardwarově přenastavit do 100% kompatabilního režimu. Postupně jsem vyzkoušel disk zapojit do všech SATA portů na desce a bootovat šlo v IDE legacy režimu pouze z portů SATA2_2 a SATA2_3 (SATA2_4 a SATA2_5 jsou v tomto případě neaktivní). Pak jsem ještě vyzkoušel režim AHCI, kdy BIOS aktivuje periferní PCI ROM s rozšířením diskových služeb INT 13h a zde šlo bootovat ze všech SATA portů, tedy včetně SATA3. Windows 9x pochopitelně běží v pomalejším režimu kompatability (přístup k disku jede přes BIOS), ale lepší než drátem do oka. Shrnutí SATA portů je v následující tabulce:

port na MB dev. funkčnost
SATA3_0 (6 Gb/s) CH0, master Win98 nelze spustit v módu SATA native/legacy IDE, lze je spustit v módu AHCI (INT 13h)
SATA3_1 (6 Gb/s) CH1, master Win98 nelze spustit v módu SATA native/legacy IDE, lze je spustit v módu AHCI (INT 13h)
SATA2_2 (3 Gb/s) CH0, slave Win98 lze spustit v módu SATA native/legacy IDE a AHCI (INT 13h)
SATA2_3 (3 Gb/s) CH1, slave Win98 lze spustit v módu SATA native/legacy IDE a AHCI (INT 13h)
SATA2_4 (3 Gb/s) RAID/AHCI port 4 Win98 lze spustit jen v módu AHCI (INT 13h)
SATA2_5 (3 Gb/s) RAID/AHCI port 5 Win98 lze spustit jen v módu AHCI (INT 13h)

      Vrátil jsem se pak ke své stávající instalaci Windows 98 SE CZ, která se po redetekci HW a asi 2 - 3 restartech spustila také. Ve Správci zařízení jsem zjistil, že nefunguje síťovka. Bohužel poslední verze ovladače pro Win98/ME z roku 2008 nepodporuje novější revize RTL8111D/E. Myslím, že rozdíly nebudou nijak velké, když je pro ně podpora i v DOSovém NDIS2 ovladači. Zkusil jsem ručně upravit soubor netrtle.inf, kam jsem importoval sekce RTL8111E z ovladačů pro WinXP. Upravený INF jsem nainstaloval, ale vyskočila chyba 1F6 a adaptér měl nadále u sebe vykřičník. Žádné konflikty HW prostředků zde nejsou. Zkusil jsem i přepsat soubor ovladače rtenic.sys novější verzí pro WinXP z roku 2010, která už RTL8111E podporuje, ale taky se to nechytlo. Hardwarový downgrade čipu je vyloučený, neboť RTL8111E má proti RTL8111B menší QFN pouzdro s jiným pinoutem a jiné napájecí napětí. R. Loew na MSFN fóru píše, že s částečným úspěchem zprovoznil starší ovladač pro síťovku Tenda TEL9901G s RTL8111, který funguje jen na 100 Mb/s a při bootu vyhazuje nějakou varovnou hlášku. Mě však instalace tohoto ovladače způsobila okamžité zatuhnutí systému. Když jsem síťovku zakázal a znovu ji zkusil povolit až po naběhnutí systému, tak se chytla a začla fungovat, ale při dalším restartu následoval opět zátuh. Naštěstí Windows 9x, jakožto hybridní systém, umožňují pracovat i s realmode NDIS2/ODI ovladači. Vybral jsem tedy při instalaci z nabídky adaptérů "Stávající ovladač NDIS2" a naklikal umístění souboru oemsetup.inf z adresáře DOSového NDIS2 ovladače. Celý postup instalace je trochu komplikovanější, proto jsem ho podrobně popsal zde. Windows pak přidají do autoexec.bat řádek net start, který automaticky zavede DOSový ovladač rtgnd.dos. S tímto ovladačem mi síťovka funguje normálně, možná o něco pomaleji, než by běžela s nativním ovladačem. Při stahování souboru z rychlého FTP jsem naměřil 980 kB/s, což na běžné brouzdání v pohodě stačí.

RTGND.DOS NDIS2 realmode driver working under Windows 98 SE

      Dále jsem zjistil, že mi nefunguje žádný USB port ani v pomalém režimu 1.1 (zřejmě díky absenci UHCI), přestože ve Správci zařízení se tvářily normálně. R. Loew psal, že na jeho desce s chipsetem intel Z87 mu USB 2.0 funguje s pomocí nUSB 3.3d. Na čisté instalaci Windows 98 SE jsem s pomocí nUSB 3.5 dosáhl částečného úspěchu - funguje mi USB fleška, ale datový přenos je strašně pomalý (zápis souboru asi 6 kB/s), připojené zařízení se nedetekuje automaticky (musí se ručně refreshnout ve Správci zařízení) a při detekci druhého zařízení "Generic USB hub" během bootu dojde vždy k BSODu, pokud se instalace ovladače nepřeskočí. Třeba se to ještě povede nějak vyřešit...

USB devices in device manager under Windows 98 SE

      UPDATE 31.12.2015: Konečně se mi podařilo rozchodit USB 2.0 porty. Vrátil jsem se ke své předchozí záloze Windows 98 SE (s dříve nainstalovaným nUSB 3.3d), nakopíroval do adresáře \WINDOWS\INF aktualizované soubory machine*.inf od LoneCrusadera z MSFN fóra a nechal při bootu znovu redetekovat všechen hardware. Nastavení "USB Legacy Function" a "USB Storage Function" jsem předtím v SETUPu vypnul. Tentokrát proběhla detekce všech USB zařízení bez problému, ale při detekci zvukové karty SB Audigy 2 došlo k náhlé modré smrti. Po restartu měla zvukovka ve Správci zařízení vykřičník a když jsem ji nechal vypnutou, tak USB 2.0 normálně fungovalo včetně automatické detekce připojených zařízení. Při kopírování z USB flashky jsem dosáhl rychlost čtení 18 MB/s.
      Bez zvuku je to ale na pytel. Tak jsem stávající instalaci zazálohoval a zkusil celý postup ještě jednou zopakovat. Zdá se, že Windows 9x při konfiguraci Plug&Pray fungují poněkud stochasticky a nyní proběhla úspěšná instalace jak USB 2.0 tak zvukovky, ale nedařilo se mi zas rozchodit síťovku s dříve vyzkoušeným realmode NDIS2 ovladačem. Ve Správci zařízení jsem si všiml, že síťovka sdílí IRQ10 s jedním ze 2 USB EHCI. Zkusil jsem tedy tento EHCI zakázat a ejhle, síťovka začala fungovat! Když jsem pak zkusil EHCI znovu povolit, došlo po chvíli manipulací s USB zařízeními v různých portech k BOSDu, takže jsem ho radši nechal zakázaný. To, že budu moct ve Windows 98 SE používat jen polovinu USB portů mi nijak nevadí, hlavně že vše ostatní funguje. Zde je pro zajímavost rozbalený celý výpis stromu Správce zařízení, kde jsem si i poznamenal přiřazená IRQ.
      Také se mi podařilo rozlousknout záhadu, proč Windows 9x odmítají bootovat z disku připojeného k SATA3 portu. Problém se totiž projevoval i v DOSu, ale protože používám UDMA driver od Jacka R. Ellise, tak se úspěšně maskoval a ničeho jsem si nevšiml. Gigabyte totiž ve svém Award BIOSu kapánek ojebal podporu virtual DMA, která z nějakého důvodu funguje pouze na SATA2 portech. U SATA3 portů funguje čtení, ale při zápisu dojde po delší prodlevě k chybě. Tento problém nastává až po přepnutí CPU do virtual 86 módu, tedy při aktivaci správce paměti typu EMM386, QEMM386, JEMM386... nebo právě při bootu Windows 9x. Jack po mé konzultaci vydal pomocný ovladač xhddboot.sys, který se zavede v config.sys ještě před správcem paměti (nepoužívá XMS, pouze přebere řízení UDMA) a následně je nahrazen plnou verzí ovladače xhdd.sys, která se zavede až po správci paměti. Ten už používá XMS a předchozí buffery v konvenční paměti jsou uvolněny, takže nedochází k jejímu plýtvání. Bohužel ovladač XHDD není kompatabilní s Windows 9x :(.
      Zkusil jsem ještě takový nápad - upravil jsem OpenSource TSR utilitu protect.com, která hookuje INT 13h a zabraňuje zápisu na disk tak, aby místo chyby tiše požadavky zápisů zahazovala. Doufal jsem, že Windows po načtení vlastního ovladače esdi_506.pdr pošlou INT 13h k čertu a budou si UDMA spravovat samy. Systém sice nabootoval až do desktopu, ale šlo akorát hýbat myší (když jsem blokování zápisu deaktivoval, tak se kousnul úplně), zřejmě tedy INT 13h stále používá...
      Nic dalšího, než přímo patchnout/nahradit polofunkční BIOSí služby INT 13h mě nenapadá a tak jsem jako workaround využil možnost BIOS Boot Manageru (klávesa [F12]) vybrat jako bootovací druhý disk na SATA2 portu (na SATA3-master mám SSD, na SATA2-slave mám 1TB HDD), na jehož 1. primární oddíl jsem Windows 98 SE překopíroval. V tomto případě se oddíl běžně viditelný jako D: změní na C: a naopak. Zpřeházela se mi sice písmena dalších primárních FAT32 oddílů, ale to jsem úspěšně napravil pomocí utility Letter Assigner 1.2.0 (startuje se v autoexec.bat, takže změna je platná i v DOSu).

      19.11.2015 Tak se mi konečně podařilo vyhrát na eBay jednu aukci procesoru intel Core i7-2600K revize D2 a dnes dorazil z Německa. Vložil jsem ho nedočkavě do soketu a zkusil trochu přetaktovat. Tato K-verze má odemčený násobič a v SETUPu lze nastavit max. hodnotu 59x. S přidáním 50 mV Vcore se mi podařilo naběhnout na 47x 100 MHz (4,7 GHz) s jedním zapnutým jádrem a dal by si říct i více. Minimální hodnota násobiče, když je procesor v idle stavu, je 16x a téměř netopí. Zato při zátěži si dokáže pořádně pápnout a je vidět, že provizorně použitý intelí box chladič už moc nestíhá, bude to chtít něco lepšího. Pro snížení tepelného odporu mezi CPU a chladičem jsem povrch IHS přebrousil brusným papírem (napřed 400, pak finálně 1000 pod vodou) na holou měď.

Core i7-2600K top Core i7-2600K after sanding top Core i7-2600K bottom

Core i7-2600K @4,7GHz CPU-Z

      24.11.2015 Porozhlédnul jsem se po bazarech a v Růžovce mi padl do oka starší, ale výkonný chladič Thermaltake Big Typhoon pro LGA775 s 6 heatpipe, masivní měděnou základnou a 12cm větrákem za 300 Kč. Starý jetý větrák jsem nahradil novým Arctic Fan F12 PWM (300 - 1350 RPM, max. 57 CFM) s 4-pinovým konektorem. Vzhledem k tomu, že chladič váží 0,8 kg, rozhodl jsem se plastové úchytky ala intel box, které tak skvěle kurví a deformují PCB, nahradit něčím bytelnějším. Chystám se tedy na výrobu masivního backplate z duralu, do kterého vyříznu závity pro úchytové šrouby M4.
UPDATE 17.12.2015: bohužel po namontování do skříně jsem zjistil, že listy větráku jsou tak nevyvážené (hází nahoru a dolů), že se mi při max. otáčkách rozklepe celý chladič jak motor v autě. Dle diskuse na CZC nejsem jediný, kdo má tento problém. Asi šla kvalita Arcticu v poslední době hodně dolů :(. Odnesl jsem ho na reklamaci, ale moc si od toho neslibuju. Prozatím jsem ho nahradil větrákem Akasa DFS122512L, který má jen 1200 RPM a tudíž menší průtok vzduchu. Ten nevibruje vůbec. Ověřil jsem si, že deska umožňuje bez problémů regulaci otáček i u 3-pinových větráků (v SETUPu je volba PWM/Voltage).
UPDATE 5.1.2016: Reklamace větráku byla vyřízena kladně a dostal jsem nový kus. Jenže hned po zapnutí bylo vidět, že tenhle hází taky, možná ještě více, viz video. Možná to není patrné, ale kýval se i celý plastový rám větráku, takže zítra půjde na další reklamaci (vrácení peněz zatím není možné).
UPDATE 14.1.2016: Reklamace větráku byla opět uznána výměnou a už nepřekvapivě jsem zjistil, že nový větrák taky brutálně hází. Předtím jsem byl zrovna v BOSTARu koupit přes známého nový větrák Noctua NF-P12 PWM (300 - 1300 RPM, max. 54 CFM, 0,6 W) s 4-pinovým konektorem, na který jsem dostal několik kladných doporučení (už mě to čekání nebavilo). Stojí sice dost peněz, ale je to opravdu kvalitka (nehází, tichý a ložiska by měla vydržet déle)...
UPDATE 19.1.2016: I třetí reklamace byla uznána, byl vypsán dobropis a dostal jsem zpět peníze. Arctic už nikdy více...

chladič Thermaltake Big Typhoon top chladič Thermaltake Big Typhoon bottom větrák Noctua NF-P12 PWM - box větrák Noctua NF-P12 PWM - top

      28.11.2015 V sobotu jsem se pustil do zámečničiny. Výchozí surovinou byl odřezek AlMgSi pásu šířky 100 mm o síle 5 mm z Ferony. Hrubý obrys backplate jsem si nejprve načrtnul na tenký papír přiložený k zadní straně základovky tak, abych se vyhnul všem překážkám v podobě čouhajících vývodů a součástek. Též jsem si překreslil pozice 4 otvorů pro uchycení spony chladiče a 3 otvorů pro uchycení horního přítlačného plechu soketu (dolní plech pod soketem jsem odmontoval a nebude dále použit). Tyto 2 plechové díly byly spojeny 3 šrouby o vnějším průměru 3,4 mm se stoupáním závitu cca 0,8 mm. Jelikož na takovou exotiku nemám závitníky, musel jsem je nahradit klasikou M4 a díry v desce převrtal. Nakreslenou šablonu backplate jsem vystřihnul z papíru a rýsovací jehlou překreslil na hliníkový pás. Stojanovou vrtačkou jsem si obvrtal všechny rohy a vnější strany obrysu. Pak následovalo zdlouhavé pižlání pomocí přímočaré elektrické pilky s jemně ozubeným listem na kov. Inu, pořád lepší, než ruční pilka na železo. Hrubé obvodové nerovnosti jsem srazil frézou upnutou do stojanovky, ale bohužel nemám křížový posuv, takže finální podobu dotvořil až handjob s pilníkem a brusným papírem :)

výroba backplate-vrtání rohů výroba backplate-řezání obvodu výroba backplate-vrtání obvodu výroba backplate-hrubý obrobek hotový backplate

      Největší obavy jsem měl z přesného vrtání děr, neboť na desce už není kolem otvorů mnoho místa pro korekce. První rohovou díru jsem prostě někam vyvrtal od oka podle šablony. Vyřízl jsem M4 závit a jedním šroubem přichytil backplate k desce. Pak jsem si ho nakroutil do rovnoběžné polohy s hranami desky, obrýsoval rýsovací jehlou druhý otvor, odšrouboval, vyvrtal díru, vyřezal závit a znovu přišrouboval k desce. Teď už byl backplate pevně fixován ve 2 bodech, takže jsem mohl v klidu obrýsovat polohy zbývajících 5 otvorů. Po vyměření středu otvoru jsem do přiložené jehly vždy řádně majznul kladivem, aby mi z ďolíku vrták nevyběhl. Původně jsem měl v plánu otvory předvrtávat, ale tenký vrták mi dobře neseděl ve sklíčidle, tak jsem jel rovnou naostro 3,2 mm. A kupodivu jsem to svrtal velmi přesně, po přiložení k desce jsem neměl problém všechny šrouby hladce prostrčit a zašroubovat bez jakéhokoliv bočního pnutí. Ruční práci s kovem, dřevem, plexi, atd... mám rád, ale zrovna chladné a větrné počasí tomu na mé balkónové dílničce moc nepřálo a po pár hodinách venku jsem tam vymrz jak drozd...
      Backplate je samozřejmě třeba od desky izolovat. K tomu účelu posloužil kus průhledné plastové fólie do tiskárny, z nějž jsem si vystřihnul podložku s cca 2mm přesahem. Vybral jsem si M4 šroubky vhodné délky a přišrouboval horní plechový dílec soketu. Na třetí šroub, který slouží jako zámek, jsem nasadil speciální distanční sloupek s rozšířenou horní částí, pod níž se zasouvá přítlačný plech. Procesor jsem vložil do patice a vršek IHS máznul tenkou vrstvou teplovodivé pasty. Pro uchycení chladiče jsem koupil M4 šroubky s 6-hranou hlavou, neboť vzhledem k velikosti žebrování chladiče by je nebylo možné šroubovat shora (dotažení provedu klíčem). Mezi hlavu šroubku a sponu chladiče jsem navléknul na dřík pružinku s podložkou a pod sponu jsem navléknul plastový distanční sloupek, viz detail na poslední fotce.

původní backplate pod socketem LGA 1155 nový backplate pod socketem LGA 1155 nově namontovaný přítlačný plech LGA 1155 GA-P67-DS3-B3 s uchyceným chladičem detail uchycení spony-odpružený šroub

      7.12.2015 V neděli jsem trochu zvětšil plochu chladiče PCH pomocí hliníkového žebra ze starého PC zdroje. Původní chladič neměl skoro žádné žebrování a docela se zahříval. Nemám rád, když něco topí tak, že na tom neudržím prst. Díky debilnímu umístění PCH těsně k PCIe slotu pro grafickou kartu nebylo možné dát na PCH chladič s vyšším žebrováním nebo přimontovat větráček, protože by kolidoval s chladičem či kondenzátory na grafické kartě. Proto jsem přídavný plech s nízkými žebry (výška nepřesahuje sloty) umístil rovnoběžně s deskou a směrem dozadu. Teplota se o něco snížila, na povrchu chladiče jsem naměřil 58°C.

zvětšení chladiče PCH paměti DDR3 Kingston HyperX Genesis

      Také jsem dnes sehnal kit DDR3 pamětí 2 x 2 GB Kingston HyperX Genesis 1866 MHz / CL11 / 1,5 V (KHX1866C11D3P1K2/4G). Napřed jsem je prohnal pár hodin MemTestem a pak změřil jejich datovou propustnost a latenci pomocí programu MBench 1.0. Paměti jsem nataktoval na 2133 MHz s časováním 12-13-13-37 a nechal automatické nastavení napětí v BIOSu. V tabulce je pro porovnání i můj nejlepší výsledek s DDR2 moduly v PC s Core 2 Duo E8600. Jak je vidět, nárůst datové propustnosti je 2 až 4-násobný, zejména zásluhou integrovaného paměťového řadiče přímo v CPU. To by mohlo výrazně pomoci u aplikací pracujících s větším objemem dat, třeba při úpravě fotek (RAWů). Později jsem ještě tabulku doplnil o test 16GB DDR4 paměti Samsung M471A2K43DB1-C (signle channel, dual rank) v pracovním notebooku s CPU Core i7-11850H pro porovnání. Rychlost je srovnatelná s DDR3 pamětí v dual channelu. Rychlosti cache pamětí tohoto CPU byly dle MemTestu86 9.4: L1: 380,3 GB/s, L2: 102,1 GB/s, L3: 44,9 GB/s.

paměť Kingston DDR2-800 dual Kingston DDR3-1333 dual Kingston DDR3-1866 dual Kingston DDR3-2133 dual Corsair DDR3-1866 dual Corsair DDR3-2133 dual Samsung DDR4-3200 single
časování 4-4-4-16; 2,0x; 2,1 V 8-8-8-23; 13,33x; 1,5 V 11-11-11-32; 18,66x; 1,5 V 12-13-13-37; 21,33x; auto 9-9-9-24; 18,66x; 1,65 V 9-11-11-31; 21,33x; 1,65 V 24-22-22-52-74; 1:8; 1,2 V
latence 64,5 ns (258 clocks) 49,3 ns (150 clocks) 44,0 ns (150 clocks) 42,4 ns (144 clocks) 40,7 ns (138 clocks) 38,0 ns (129 clocks) 38,5 ns (96 clocks)
integer R/W 6563 / 2831 MB/s 14375 / 8889 MB/s 16030 / 11332 MB/s 16139 / 12165 MB/s 16265 / 11745 MB/s 16742 / 12592 MB/s 15320 / 17416 MB/s
MMX R/W 7223 / 2852 MB/s 15160 / 8650 MB/s 17936 / 11034 MB/s 18125 / 12144 MB/s 18272 / 11421 MB/s 19023 / 12509 MB/s 19485 / 20175 MB/s
SSE R/W 7233 / 8214 MB/s 15913 / 19944 MB/s 19972 / 22901 MB/s 21193 / 23088 MB/s 20414 / 22647 MB/s 22259 / 23004 MB/s 24021 / 22198 MB/s

      24.5.2022 Provedl jsem upgrade paměti na 2 x 4 GB Corsair Vengeance Pro 2133 MHz / CL9 / 1,65 V (CMY8GX3M2B2133C9 ver. 4.29). Tato banální věc, která trvá když hodně, dvě, tři minuty se však neobešla bez problémů a tady mě potrápila celou noc. Po výměně modulů totiž PC udělalo několik marných power off/on cyklů a resetovalo nastavení CPU a pamětí do defaultu z důvodu nestability. V SETUPu jsem nejprve zkusil aktivovat XMP profil, kde se nastavil násobič 21,33x, časování 9-11-11-31 a napětí 1,64 V dle specifikace výrobce, ale s tímto nastavením prostě deska odmítala jet. I když jsem XMP profil deaktivoval a nastavil ručně napětí a časování (včetně nejpomalejšího 15-15-15-40), tak vždy následoval power cyklus a reset nastavení do defaultu. Bez problémů fungovalo nastavení na 1600 MHz, ale už s výrazným poklesem rychlosti i při zkráceném časování na 8-8-8-21. Pak se mi povedlo rozchodit i nastavení na rychlosti 1866 MHz, ale jen a pouze s nastavením časování na auto (dle SPD EEPROM) na 9-9-9-24 při 1,64 V. Pokud jsem přepnul na ruční nastavení a nastavil ty samé hodnoty dle SPD, tak zcela nepochopitelně také došlo k power cyklu a resetu nastavení. Alespoň že je rychlost při nastavení auto srovnatelná s původními pamětmi (viz tabulka výše). Dlouho jsem googlil a podobných problémů dost i mají další uživatelé a to i s pamětmi DDR4, občas někomu pomohl update BIOSu, ale jinak jsem žádné řešení nenašel. Možná by pomohla modifikace SPD na trochu rychlejší časování, že bych z nastavení auto dostal ještě o chlup více. V souvislosti s tím jsem našel velmi zajímavý program Thaiphoon Burner, který slouží na čtení a modifikaci SPD (umí pohodlně měnit standardní časování i XMP). Freeware verze neumí zapisovat do EEPROM, ale data lze uložit v textovém formátu, ten převést do binárního a následně zapsat pomocí mého nástroje SMB.

      10.6.2022 Tak po pročítání různých O'C fór jsem na to konečně kápnul. Jako kritický parametr časování se ukázala hodnota tRFC, kterou jsem měl dosud vždy nastavenou na auto a BIOS tam nyní nacpal hodnotu 200, což už bylo pro rychlost 2133 MHz málo. V případě vyšších frekvencí může být někdy třeba i vyšší hodnota než 255 (můj BIOS umí max. 255). Iteračně-půlením intervalu jsem došel k hodnotě 217, kdy už systém nedokončil POST a zatuhl, při hodnotě 216 už následovala černá obrazovka a reset nastavení. Na základě hodnot z XMP profilu jsem ručně nastavil časování 9-11-11-31-42-240, napětí DDR = 1,64 V a napětí řadiče pamětí VTT = 1,14 V (někdy značené jako VCCIO) a už to běží jak má. Zde je na konci stránky tabulka doporučených napětí pro O'C Sandy Bridge. Při větším přetaktování CPU také může paradoxně pomoci malé snížení napětí PLL (doporučeno 1,75 V). Rozdíl proti předchozím 1866 MHz není nijak dramatický, ale potěší a je to i o něco rychlejší než předchozí Kingstony na 2133 MHz, viz tabulka výše.

      13.12.2015 Po té, co jsem sehnal a otestoval všechny klíčové komponenty, jsem se pustil do přestavby PC. Demontoval jsem všechny karty, starou základní desku a důkladně vyčistil case od nahromaděného prachu. Při té příležitosti jsem si taky vyřezal v předním panelu otvory pro 2 USB konektory. Namontoval jsem novou základní desku, zastrkal karty (SB Audigy 2 mod, DVB tuner a VGA 7900GT - nové hry nepařím, tak není důvod k upgrade) a pozapojoval všechny kabely. Jelikož deska už nemá žádný IDE konektor a bylo by škoda kvůli tomu vyhazovat jinak stále funkční a kvalitní vypalovačky (NEC ND-4550A a TEAC CDW-524EK), připojil jsem DVDW přes IDE/SATA redukci Kouwell KW-5562 s převodníkem Sunplus SATALink SPIF3811A, přes kterou jsem měl dříve připojený šuplík na PATA disky. Tato redukce zvládá i ATAPI mechaniky v DMA režimu, ale není úplně nejlevnější. Zkusil jsem tedy na eBay najít nějakou alternativu a objednat na pokus tuto obousměrnou redukci za směšných 43 Kč. Ta je založená na nedohledatelném čipu 875S50041. Bohužel se ukázalo, že tento čip nezvládá ATAPI mechaniky (BIOS je vůbec nedetekoval) přesto, že to prodejce v popisu tvrdí (řádek "ATA / ATAPI..." v tabulce). Navíc, pokud se k redukci žádné IDE zařízení nepřipojí a v SETUPu se nechá volba "Auto", tak BIOS při detekci disků asi na půl minuty vytuhne, než detekci vzdá. Je tedy nutné na nepoužívaném kanálu nastavit v SETUPu volbu "None". Napsal jsem stížnost prodejci a domluvili jsme se, že mi vrátí na PayPal účet polovinu částky (přece jen ji pořád ještě můžu použít pro ten šuplík na disky).

GA-P67-DS3-B3 in case IDE/SATA redukce s čipem 875S50041 - top IDE/SATA redukce s čipem 875S50041 - bottom

      Jako druhý pokus jsem zkusil objednat dražší jednosměrnou redukci za 87 Kč, kde prodejce přímo uvádí podporu optických mechanik a disků. Na destičce je osazen též neznámý, podobně vypadající čip 875K80141, který ale opravdu funguje. Připojil jsem přes ni CDW a šlape v módu UDMA 2. Jako další alternativu pro PATA mechaniky by bylo možné koupit IDE řadič do PCIe x1 slotu založený na čipu JMicron JMB363, např. tento nebo tento. Obsahuje navíc i další 2 SATA porty a má vlastní BIOS. Avšak volných slotů už nemám moc nazbyt a také jsem se celkem rád zbavil překážejících plochých IDE kabelů.

IDE/SATA redukce s čipem 875K80141 - package IDE/SATA redukce s čipem 875K80141 - top IDE/SATA redukce s čipem 875K80141 - bottom

      Více mě mrzí absence řadiče disketové mechaniky, protože občas potřebuju přenášet data mezi staršími PC, která nemají USB (v práci máme např. i starší spektrák a osciloskop na diskety) a nebo přečíst data z nějakých starých objevivších se disket. Resp. SuperIO IT8728F obsahuje FDC, akorát ho ty lemry líný nevyvedli na konektor). Sice lze levně (cca od 200 Kč) koupit externí USB disketovou mechaniku, ale někde jsem četl, že neumí všechny běžně používané formáty disket a 5,25" diskety do ní taky nedám. Předpokládám, že univerzálnější bude tato floppy/USB redukce za 12 Liber, ale o podporovaných formátech se prodejce nezmiňuje. Nejprve však vyzkouším svůj nápad připojit k základní desce přes LPC sběrnici (vyvedenou na TPM header) další SuperIO čip Winbond W83627HF-AW, z nějž si vyvedu vše potřebné.

      15.12.2015 Jako primární OS používám stále Windows XP SP3. Ty neměly s výměnou desky zásadní problém, proběhla redetekce HW a po restartu jsem ještě nainstaloval aktuální verzi intel chipset INF 9.4.0.1027 a intel MEI (Management Engine Interface) 11 (z něj jsem však instaloval pouze ovladač heci.sys pomocí heci.inf, který se při spuštění instalátoru dočasně rozbalí do adresáře %TEMP%\IIF21.tmp\HECI\). Sběrnice HECI (Host Embedded Controller Interface) slouží pro přímou komunikaci mezi hlavním CPU a ME (Management Engine) Embedded Controllerem integrovaným v PCH, který se stará o správu napájení, řízení pracovní frekvence CPU, hlídání teplot a další. ME EC si žije v počítači svým vlastním životem i když je vypnutý (napájení si bere z 5VSb ATX zdroje). Běží na něm dedikovaný firmware - v podstatě malý operační systém (někdy označován jako systém s oprávněním ring -3) včetně TCP/IP stacku, který přímo komunikuje s onboard síťovkou (v SPI FlashROM paměti BIOSu má vyhrazenou vlastní sekci o velikosti až několik MB, je zašifrovaný a nikdo, kromě intelu, vlastně neví, co přesně dělá a jestli v něm třeba není backdoor pro NSA). Na starším chipsetu intel Q35 už byl demonstrován ring -3 rootkit. Nemusím asi zdůrazňovat, jaká to přináší bezpečnostní rizika. Jelikož ME firmware řídí spoustu podpůrných funkcí, nelze se ho patrně zbavit...
      V XPčkách jsem narazil akorát na drobný problém, že nefungovala detekce USB zařízení připojených až po bootu systému (ta zařízení, jež byla trvale připojená, tak systém viděl). To jsem vyřešil ve Správci zařízení vypnutím volby: Řadiče sběrnice USB|Kořenový rozbočovač USB|Řízení spotřeby|Povolit počítači vypínat zařízení z důvodu úspory energie (pro oba kořenové rozbočovače).
      V Linuxu jsem zas narazil na problém, že když jsem nechal během bootu v USB zapojenou čtečku paměťových karet, tak se mi zpřeházela označení disků, že SSD a HDD - dříve sda a sdb se posunuly na sde a sdf, zatím co sdasdd zabrala USB čtečka a systém pochopitelně nenabootoval. Čistě to řeší persistent block device naming pomocí využití labelů nebo UUID disků. Nechtělo se mi zatím stávající systém nějak rozvrtávat a tak jsem jako workaround přidal v bootloaderu kernel parametr usb-storage.delay_use=3, který pozdrží inicializaci USB periferií o 3 s (1 s byla málo, 2 s už byly OK a 1 s jsem přidal jako rezervu). Také se mi začala nová síťovka hlásit jako eth1 místo eth0, což jsem napravil v konfiguráku /etc/udev/rules.d/70-persistent-net.rules, kde jsou přiřazena jména síťových zařízení podle MAC adres, takže stačilo smazat řádek staré síťovky a novou přejmenovat.

      19.12.2015 Po sestavení kompu jsem byl samozřejmě zvědavý na možnosti přetaktování procesoru, kam až se mi podaří dostat se vzduchovým chlazením a jak rychle poroste teplota a příkon. V SETUPu jsem jednoduše v menu M.I.T.|Advanced Frequency Settings|Advanced CPU Core Features měnil násobič (CPU Clock Ratio) a "Turbo Ratio" pro jednotlivá jádra jsem nechal na Auto, protože při nastavení pevných hodnot systém podivně tuhnul a následně se restartoval i při poměrně nízkém přetaktování. Volbu "Internal CPU PLL Overvoltage" jsem zapnul až od 4,8 GHz výše, "Turbo Power Limit" jsem nastavil na 200 W a "Turbo Current Limit" na 200 A, nechal aktivní všechna 4 jádra, ale vypnul "CPU Multi-Threading" (hyperthreading, vysvětleno dále) a nechal všechny úsporné funkce na Auto. U odemčeného procesoru nemá moc smysl sahat na BCLK (systémová sběrnice DMI a PCIe), to akorát může být zdrojem různých nestabilit, nechal jsem tedy 100 MHz. Pro dosažení vyšších frekvencí jsem samozřejmě musel zvyšovat i napětí jádra v menu M.I.T.|Advanced Voltage Settings, položka "Dynamic Vcore (DVID)", kterou lze měnit s jemným relativním krokem 10 mV. Snažil jsem se vždy najít minimální potřebnou hodnotu přírůstku Vcore, při které byl systém stabilní a pak přidal 10 - 20 mV rezervu. Zapnul jsem též volbu "Load-Line Calibration". Jako zátěžový test jsem zvolil program LinX 0.6.5, který dokáže maximálně vytížit všechna jádra tak, jako snad žádná reálná aplikace. Jednovláknový výkon jsem měřil pomocí programu Super PI / mod 1.5 XS na 1 M číslic. Aktuální hodnoty frekvencí a teplot jednotlivých jader, Vcore, příkonu a otáček větráku jsem sledoval v programu HWMonitor 1.28. Při frekvenci 5,0 GHz a zatížení všech 4 jader se už procesor nestíhal chladit a tak docházelo k thermal throttlingu (automatickému snižování násobiče), další zvyšování frekvence už nemělo moc smysl. MOSFETy VRD byly pěkně horké, takže jsem nechtěl desku ani procesor moc dlouho trápit.

SETUP-MIT-Advanced CPU Core Features

f [GHz] t/tmax [°C] Pmax [W] DVID(min) [mV] Vcore(BIOS) [V] Super PI 1M [s]
1,6 31 - 34 / 35 8 auto 0,981 idle
3,4 55 - 60 / 62 65 auto 1,200 11,031
3,8 62 - 68 / 72 87 auto 1,308 9,890
4,2 62 - 73 / 76 96 auto 1,320 8,938
4,4 66 - 75 / 78 101 auto 1,356 8,532
4,6 72 - 85 / 90 109 +40 (+30) 1,380 8,157
4,8 87 - 97 / 98 118 +120 (+100) 1,476 7,844
5,0 94 - 98 / 98 120 +180 (+160) 1,536 7,531
5,1 94 - 98 / 98 120 +240 (+220) 1,596 7,391

Core i7-2600K overclocking Pmax, tmax vs frequency

      Jeden známý má PC s modernějším 22nm intel Core i5-4670K Haswell (4 jádra bez HT, 3,4 GHz / 3,8 GHz turbo, 6 MB cache, 84 W TDP) přetaktovaný na 4,2 GHz, chlazený mohutným heatpipe chladičem s 14cm větrákem. Provedli jsme tedy porovnání teplot a příkonu na stejné frekvenci. Jak je vidět, přes veškerá optimistická prohlášení nová 22nm technologie s tri-gate 3D tranzistory není zas taková pecka. Na jmenovité frekvenci je Haswell typicky úspornější, ale při přetaktování roste příkon a teplota mnohem rychleji, než u starší 32nm technologie. Limitem je pro něj cca 4,5 GHz s běžným vzduchovým chlazením. Přitom nárůst výkonu je jen pár % (pokud se zrovna nevyužijou nové speciální instrukce).

CPU i7-2600K i5-4670K relative [%]
idle: fmin [GHz] 1,6 0,8 -50,0
tmax [°C] 34 32 -5,9
Pmax [W] 8 10 +25,0
load: f [GHz] 4,2 4,2 0
tmax [°C] 76 95 +25,0
Pmax [W] 96 124 +29,2
Vcore [V] 1,376 1,2246 -11,0
Super PI 1M [s] 8,938 8,612 -3,6

      Dále jsem otestoval výkon sadou programů použitých dříve na Core 2 Duo. Porovnal jsem procesory C2D E8600 @4 GHz, Core i3-2120 @3,3 GHz (už je prodaný, takže jsem na něm netestoval vše) a Core i7-2600K @4 GHz s vypnutým i zapnutým HT (HyperThreadingem). Zjistil jsem, že zapnutý HT většinou výkonu spíše škodí a výsledky opakování jednotlivých měření jsou nekonzistentní. Proto jsem nakonec HT vypnul. Je však možné, že Windows XP neumí s HT správně zacházet. U jednovláknových aplikací pomohlo nastavit afinitu jen na 1 jádro. Když jsem pak udělal test rychlosti kompilace zdrojových kódů v GCC pod Linuxem, tak se zapnutým HT proběhl překlad o 18% rychleji.
      Při nenáročné práci jako brouzdání po Internetu, hudba, filmy a pod. jsem subjektivně žádný rozdíl oproti předchozímu C2D nepoznal. To se projeví až v náročnějších aplikacích, jako třeba úprava fotek (RAWů) v Adobe Lightroomu a PSP, kde se odezva výrazně zrychlila, což práci velmi zpříjemnilo. Znatelný rozdíl je i v aplikacích na kompresi souborů a videa a při kompilaci zdrojových kódů - tam není výkonu nikdy dost, ale není zas tak nutná interaktivita (může to běžet na pozadí). Spotřeba PC v klidu se snížila ze 101 W na 75 W díky pokročilejšímu power managementu CPU, ale při zátěži zas výrazně vzrostla ze 140 W na 225 W. Inu, 4 plně vytížená a přetaktovaná jádra si umí pořádně cucnout. Testovací program LinX je dost extrémní případ vytížení. Při předchozím měření C2D jsem použil program Orthos, který není tak brutální, takže s LinXem by to mohlo být klidně o 20 W více.

OS: WinXP UNI WinXP SMP WinXP UNI/SMP WinXP SMP+HT WinXP SMP Win10-x64 SMP
TEST/CPU i3-3220 3,3 GHz E8600 4 GHz i7-2600K 4 GHz i7-2600K 4 GHz i7-2600K 4,6 GHz i7-7820HQ 3,9 GHz
DOS/3DStudio render [1] 52 s 51 s 42 s 42 s 36 s -
DOS/Pi benchmark [2] 14,78 s 10,48 s 12,19 s 12,19 s 10,60 s -
DOS/FFMPEG [3] 28,06 s 24,00 s 23,23 s 23,23 s 20,26 s -
DOS/Quake1 [4] 633 FPS (ATI) 521 FPS 468 FPS 468 FPS 485 FPS -
Paint Shop Pro [5] - 7 s 6 s 9 s 5 s -
WinRAR komprese [6] 126 s 91 s 97 s / 48 s 68 s 45 s 56 s
DOSBox-Quake1 [7] - 125,1 FPS 130,3 FPS 102,1 FPS 145,4 FPS 167,5 FPS
Quake II SW render [8] - 95,5 FPS 93,9 FPS 95,0 FPS 106,7 FPS 97,7 FPS
Unreal Tournament OGL [9]  - 420 FPS 470 FPS 470 FPS 535 FPS -
Super PI/mod 1.5 XS (1M)  12,094 s 11,750 s 9,390 s 13,225 s 8,157 s 9,829 s
wPrime 2.10 (32M)  - - 37,531 s / 9,656 s 7,265 s 8,422 s 10,923 s
Linux/GCC[10] - - 11,45 s / 3,83 s 3,24 s 3,35 s -
[1] - 3D Studio R4 render p_hodiny.3ds, 1280x1024/24bpp
[2] - můj prográmek na výpočet Pí, DOS/DJGPP (optimalizace pro PIII)
[3] - FFMPEG 2.1.8 komprese MPEG1 -> h264, 6748896B velký soubor UBILOGO.MPG
[4] - Quake1 320x200, demo1.dem, bez zvuku
[5] - Paint Shop Pro 9.01, filtr edge preserve smooth 5 na bitmapě 3600x3600/24
[6] - WinRAR 3.80, best compress, 404461568B velký ISO image (SCO-OS.ISO)
[7] - DOSBox 0.74 SVN 25.1.2015 - Quake1 320x200, demo1.dem
[8] - Quake II software rendering 1600x1200, demo1.dm2
[9] - Unreal Tournament OpenGL rendering 1280x1024, flyby, GeForce 7900GT na default
[10] - kompilace Corebootu pro 86Duino, make -j4 bez HT, make -j8 s HT

C2D-Core i7-2600K benchmark

Měření příkonu PC sestavy @4,5 GHz TrueRMS wattmetrem:

full load (Windows XP): 225 W
idle (Windows XP): 75 W
idle (DOS): 133 W
+40 W LCD monitor NEC 2190UXp

      7.6.2022 Na přání jsem ještě doplnil test v programu Cinebench R20 pod Windows 7-x64 (poslední verze R23 už na Win7 neběží, protože má závislosti na WinRT knihovnách z Win8/10) a porovnal svůj PC s pracovním notebookem s CPU Core i7-11850H (8C16T, 2,5/4,8 GHz, 10 nm, 45 W TDP, 24 MB L3 cache) s 16 GB RAM DDR4 3200 (test paměti výše) pod Windows 10-x64 21H2. Následně jsem test ještě zopakoval (a aktualizoval) s novýma RAMkama na 2133 MHz CL9, ale to se projevilo jen nepatrným zvýšením o pár bodů.

CPU/test: 1C 4C 4C8T/8C16T SuperPi
Core i7-2600k: 338 (4,5GHz) 1318 (3,90x; 4x4,5GHz) 1702 (5,04x; 4x4,5GHz) 8,265s
Core i7-11850H: 577 (4,3-4,7GHz) +70,7% 2014 (3,49x; 3,9-4,2GHz) +52,8% 3867 (6,70x; 2,5-3,5GHz) +127,2% 7,251s

      16.4.2016 V poslední době mě začaly zlobit zadní USB porty. Připojená zařízení se různě odpojovala, telefon se nenabíjel a pod. Když jsem připojil 86Duino, změřil jsem, že napájecí napětí pokleslo až pod 2 V. Po tomto trápení už USB port neutáhl ani optickou myš. Na vině byly vratné pojistky (polyswitche) na základní desce, které při velkém proudovém zatížení časem stárnou a zvětšují svůj odpor. Když jsem rozdělal PC a podíval jsem se na ně (jsou hnedka u zadní strany konektorů), naměřil jsem u 3 postižených USB portů hodnoty 4,5Ω, 6Ω a 14Ω, zatím co u ostatních pod 0,1Ω. Poměrně náročnou laparoskopickou operací s mikropájkou se mi podařilo připájet nové SMD polyswitche velikosti 1206 na záda těm starým, aniž bych musel vyndat základní desku z bedny. Doporučuji tedy, pokud sestavujete PC s nějakou použitou základní deskou, proměřte si napájení USB portů a případně včas polyswitche vyměňte ještě před montáží do bedny, ušetří to dost času...

      26.2.2019 Včera v noci se mi při programování MCU v digitronových hodinách podařilo odpálit paralelní port - to už se mi jednou povedlo asi před 13 lety. Po mnohačetném připojování a odpojování kablíku neizolovaného VN zdroje 320 VDC (naneštěstí filtrovaného nemalou kapacitou 100 µF) pro napájení anod jsem místo nohy předřadného odporu štrejchnul krokodýlkem přímo o stabilizační Zenerovu diodu, která se ihned s hlasitou ránou rozprskla a v tom okamžiku se PC vypnul. Proud se měl sice uzavřít do země zdroje, ale tekl ještě druhou zemní smyčkou přes LPT port do základní desky a odtud přes PC zdroj PEčkem zpět do napájecího zdroje po jeho síťové šňůře. To zřejmě způsobilo nezdravý posun potenciálů vůči ostatním signálům a odnesly to vstupy ACK (přímo použitý jako MISO), BUSY# a SELECT-PRINTER# (nezapojené). Všechny datové výstupy přežily a stejně tak programovaný MCU Atmel ATtiny4313. Když jsem zkoumal zapojení LPT na nějaké podobné desce Gigabyte, všiml jsem si, že zatím co datové výstupy jsou k SuperIO připojené přes odporové sítě 33 Ω, tak vstupy jsou připojeny na přímo, což zřejmě sehrálo svou roli při krátkém proudovém impulsu. Nezbývá tedy, než SuperIO IT8728F vyměnit. Naštěstí se dají objednat na eBay za docela lidovou cenu, jenže já kokot starý jsem zapomněl, že potřebuju speciální verzi s Gigabytím pinoutem (písmenka "GB" na konci poslední řádky kódu značení), tak to asi budu muset objednat znovu...
      Pro účely programování AVR jsem dočasně v souboru avrdude.conf v sekci programmer "bsd" přemapoval signál MISO na funkční pin 12 (PAPER END) a přepojil drátek na CANON konektoru (a při té příležitosti tam nacpal i 33Ω odpůrek).

      16.3.2019 V pátek mi dorazil od Číňana náhradní SuperIO čip IT8728F EXA GB (ta verze se správným pinoutem pro Gigabyte) a tak jsem se v sobotu pustil do výměny. Nejvíce času zabrala kompletní demontáž/montáž základní desky z/do case zapojování kabeláže. Poškozený čip jsem odpájel horkovzdušnou pistolí, měděným knotem jsem očistil pájecí plošky, usadil a připájel nový čip. Přitom jsem musel opět zvednout 2 nožičky od druhého PS/2 portu, připájet k drátkům a zatavit tavňákem. Operace se zdařila, pacient žije, porty portují, long live Gigabyte!

náhradní SuperIO čip IT8728F EXA GB z eBay deska po odpájení poškozeného SuperIO deska po připájení nového SuperIO

Chyba v BIOSu - problémy s PCI kartami

      29.12.2016 Vcelku náhodou jsem narazil na záhadnou částečnou nekompatabilitu této základní desky se zvukovými kartami řady SoudBlaster Live! a Audigy. Zrovna jsem potřeboval vyzkoušet jednu SB Live! 5.1 SB0100 a tak jsem ji v PC prohodil za současně používanou SB Audigy 2. Bootnul jsem do DOSu a spustil přehrávač MPXPlay, který má vestavěné ovladače na tyto PCI zvukovky. MPXPlay kartu detekoval, ale přehrávání se nespustilo, jako kdyby bylo neustále pauznuté. Ani žádný další DOSový program či hra s podporou moderních PCI zvukovek (QuickView, QDOS, Q2DOS a Hexen II) se nechytal (přitom na SB Audigy 2 mi vše zvučí bez problémů). Z původně triviální záležitosti se tak stala anabáze na několik hodin, neboť jsem chtěl této záhadě přijít na kloub.
      Zkusil jsem kartu přehodit do druhého PCI slotu, vymazat CMOS, flashnout starší verzi BIOSu, aby se vymazala ESCD (v SETUPu na to chybí položka), povypínat v SETUPu všechny nepotřebné onboard periferie, ale nic nezabralo. Pak jsem zkusil kartu nainstalovat pod Windows XP a tam fungovala úplně normálně (jak s integrovaným WDM ovladačem, tak s alternativními ovladači kX Project 5.10.0.3552. Ve správci zařízení měla přidělené IRQ 19 a rozsah I/O adres FFE0 - FFFFh. Dále jsem zkusil instalaci ovladačů pod Windows 98 SE, které po té už nebyly schopné nabootovat. Linux při bootu taky hlásil nějaký problém s detekcí karty v Alsa modulu snd_emu10k1:


 [    7.411095] snd_emu10k1 0000:05:00.0: AC'97 0 does not respond - RESET
 [    7.411481] snd_emu10k1 0000:05:00.0: AC'97 0 access error (not audio or modem codec)
 [    7.412305] snd_emu10k1: probe of 0000:05:00.0 failed with error -13

a kartě nebylo přiděleno správně přerušení:


05:00.0 Multimedia audio controller: Creative Labs SB Audigy (rev 03)
	Subsystem: Creative Labs SB0090 Audigy Player/OEM
	Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin A routed to IRQ 0
	Region 0: I/O ports at cfc0 [size=32]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

      Ani na Internetu jsem nic nenašel. Tím mi došly veškeré nápady. Mám akorát podezření na chybnou PnP enumeraci zařízení v BIOSu, ale překvapuje mě, že když si s tím poradily XPčka, tak se nechytal Linux, který si dělá inicializaci HW dost po svém. Ještě jsem zkusil kartu ve 3 starších deskách Gigabyte GA-P31-DS3L, Commell P4LA a Gigabyte GA-MA790GP-DS4H pro AMD a všude fungovala normálně i pod DOSem v MPXPlay nabootovaném z USB flešky. Záhada tak zůstává nevysvětlena.

      17.9.2017 Později jsem na stejný problém narazil i u zvukovky SB Audigy (fungovala mi zas jen ve Windows XP). Vyzkoušel jsem také low-profile PCI kartu SB Audigy LS (ta používá jiný DSP než EMU10K2) a fungovala normálně ve všech OS jako Audigy 2. Na Internetu jsem našel jednu diskusi zabývající se podobným problémem nekompatability PCI karet (některé nefungovaly vůbec, ani pod Windows ani v Linuxu) na základních deskách intel DP67BG, DH67GD a DH67CLB3, které používají stejný PCIe to PCI bridge IT8892E. Jeden uživatel vyřešil problém výměnou základní desky za Gigabyte GA-H67A-UD3H-B3 se stejným PCIe to PCI bridge a další uživatel to vyřešil koupí 2-slotového PCIe to PCI adaptéru ADP09925. Další podobný problém s deskou intel DH77KC je popsán zde, kde se ukázalo, že bylo špatné routování přerušení v DSDT ACPI tabulce. Problém tedy nebude v HW ale v BIOSu. Zkusil jsem ještě přečíst konfigurační PCI registry z SB Audigy a Audigy 2, ale jediný podstatný rozdíl byl v I/O base adresách (CFC0h vs CF80h). Porovnal jsem též registry PCIe to PCI bridge, ale tam nebyl žádný rozdíl. Zásadní odlišnost jsem našel až po přečtení I/O portů CFC0 - CFDFh, kde se 8x opakovala statická sekvence A2 00 91 04, zatím co u SB Audigy 2 jsem na portech CF80h - CF90h našel různé Byty, z nichž se 4 neustále měnily, což signalizovalo nějakou aktivitu...

      3.12.2017 Kamarád Yokotashi mi zapůjčil na otestování svůj PCIe to PCI adaptér osazený PCIe to 32b/66MHz PCI/PCI-X můstkem Pericom PI7C9X111SL, který si nedávno koupil. Vyzkoušel jsem v něm zvukové karty SB Audigy 2, Audigy, Audigy LS a Live!, přičemž fungovaly bez problémů ve všech zmiňovaných OSech. Dále jsem v adaptéru pro zajímavost otestoval i starou SVGA kartu S3 Vision 968 - na PCI sběrnici byla vidět, ale nepodařilo se mi z ní nabootovat. V SETUPu jsem vyzkoušel volby pro preferovanou inicializaci VGA v PCIe x4 (kam jsem měl adaptér připojený) i v PCI slotu. Taktéž PCI POST karta nedekódovala PORT 80h. V onboard PCI slotech SVGA i POST karta fungovaly normálně. To se dá celkem pochopit, neboť PCIe to PCI bridge Pericom nepodporuje subtraktivní dekódování narozdíl od onboard můstku ITE.

      5.12.2017 Při hledání příčiny problému jsem se příliš jednostranně upnul k domněnce, že jde asi o problém s routováním přerušení. Vyzkoušel jsem všechny myslitelné varianty kernel parametru pci a porovnával jsem kernel výpisy s apic=debug, ale na nic jsem nepřišel. Kamarádovi Ruikovi jsem naposílal logy a dump ACPI tabulek k analýze, ale ani tam nic podezřelého nebylo. Nicméně mě nakopnul správným směrem, že by mohlo jít o konflikt v I/O prostoru, abych se na to znovu podíval. A skutečně, když jsem si dumpoval různé oblasti I/O prostoru, všiml jsem si už dříve podezřelé sekvence A2 00 91 04 na různých místech - bingo! Je to alias neboli zrcadlo! Když jsem zvukovku z PC vyjmul, tak stále na adrese CFC0h byla tatáž hodnota.
      A od čeho že je to alias? Nedalo už moc práce dohledat, že se jedná o zrcadla portů 3B0 - 3BFh patřících historickému adaptéru MDA a 3C0 - 3DFh patřících adaptéru VGA. Tyto porty se pak zrcadlí s periodou 400h v celém 16-bitovém I/O prostoru. A BIOS zřejmě s tímto aliasingem nepočítal, takže při PnP enumeraci přiřadil SB Live! a Audigy kolizní I/O adresu CFC0h. Je otázkou, jak to že při použití PCIe to PCI bridge Pericom přiřadil BIOS jinou nekonfliktní I/O adresu CF00h a Windowsy použily též nekonfliktní adresu FFE0h. Když jsem pak pod DOSem pomocí svého programu SMB přepsal PCI BAR0 registr SB Audigy na hodnotu CF01h, tak začla zvukovka okamžitě fungovat a taktéž zvučela i pod Linuxem, který sem nabootoval z DOSu přes linld.com. Problémy s přiřazením přerušení byly tedy pouze důsledkem nefunkčních I/O portů zvukovky.


       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
...
0300: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0310: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0320: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0330: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0340: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0350: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0360: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0370: ff ff ff ff ff ff 50 ff 04 7f cc ff ff ff ff ff 
0380: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0390: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
03a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
03b0: a2 00 91 04 a2 00 91 04 a2 00 91 04 ff ff ff 04 - MDA
03c0: 33 00 70 01 02 0f ff 00 11 00 00 00 eb 00 01 00 - EGA/VGA
03d0: a2 00 91 04 1f 00 00 00 33 00 04 00 a2 00 91 04 - VGA
03e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
03f0: ff ff ff ff ff ff 50 ff 00 00 01 13 00 60 00 a7 
0400: 11 00 20 01 01 00 00 00 d7 61 67 00 00 00 00 00
0410: 00 00 00 00 01 01 01 00 00 00 00 00 00 00 00 00 
0420: 00 00 c3 46 00 00 00 00 40 00 00 00 00 00 00 00 
0430: 3b 20 02 00 00 41 00 00 00 08 c3 46 00 00 00 00 
0440: 00 00 00 00 20 13 00 00 00 00 00 00 00 00 00 00 
0450: 00 00 00 00 09 20 3f 00 00 00 00 00 00 00 00 00 
0460: 3f 00 00 00 00 00 00 00 00 08 08 00 00 00 00 00 
0470: 03 00 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 
0480: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0490: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
04a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
04b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
04c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
04d0: 28 0c ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
04e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
04f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0500: 40 00 08 02 a1 19 00 00 00 44 00 00 14 00 07 07
0510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0520: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0530: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0540: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0550: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0560: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0570: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0580: c3 b9 6b b9 c3 6e ff ae 00 00 00 00 ff 6f fb e8 
0590: 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 
05a0: 00 00 08 00 00 00 00 00 00 00 00 00 00 28 00 00 
05b0: ff 80 03 02 f4 ff 57 1f c6 7f ff fe 00 00 00 00 
05c0: 30 01 00 00 f0 0f 00 00 df 0d 00 00 00 00 00 00 
05d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
05e0: 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 
05f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0600: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0610: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0620: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0630: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0640: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0650: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0660: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0670: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0680: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0690: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
06a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
06b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
06c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
06d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
06e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
06f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0700: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0710: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0720: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0730: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0740: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0750: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0760: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0770: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0780: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0790: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
07a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
07b0: a2 00 91 04 a2 00 91 04 a2 00 91 04 ff ff ff 04 - alias 1
07c0: a2 00 91 04 a2 00 91 04 a2 00 91 04 a2 00 91 04 
07d0: a2 00 91 04 a2 00 91 04 a2 00 91 04 a2 00 91 04
07e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
07f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
...
cf00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cf90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cfa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cfb0: a2 00 91 04 a2 00 91 04 a2 00 91 04 ff ff ff 04 - alias 51
cfc0: a2 00 91 04 a2 00 91 04 a2 00 91 04 a2 00 91 04 kolize s
cfd0: a2 00 91 04 a2 00 91 04 a2 00 91 04 a2 00 91 04 SB Audigy
cfe0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
cff0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
...
mapa I/O prostoru s SB Audigy (CFC0 - CFDFh)


       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
cf00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cf10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cf20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cf30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cf40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cf50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cf60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cf70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cf80: 00 00 46 00 00 00 6f 33 00 00 00 00 00 08 00 00 - SB Audigy 2
cf90: 16 3f c0 02 71 12 04 00 44 0b f0 f0 00 00 a0 00 
cfa0: 00 00 68 00 2c 2c 2c 2c 00 00 00 00 00 00 00 00
cfb0: a2 00 91 04 a2 00 91 04 a2 00 91 04 00 00 00 04 - alias 51
cfc0: a2 00 91 04 a2 00 91 04 a2 00 91 04 a2 00 91 04 částečná kolize s
cfd0: a2 00 91 04 a2 00 91 04 a2 00 91 04 a2 00 91 04 SB Audigy 2
cfe0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
cff0: ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 
mapa I/O prostoru s SB Audigy 2 (CF80 - CFBFh)

      Zbývá otázka, proč se adresa VGA portů aliasuje a jestli by nešlo tuto prasárnu nějak vypnout. V dokumentaci k chipsetu intel PCH 6x jsem v popisu registrů PCI to PCI bridge na straně 427 našel v BCTRL (Bridge Control) na offsetu 3Eh dva zajímavé bity: 3 - VGAE (VGA Enable) a 4 - V16D (VGA 16-Bit Decode). VGAE musí být zapnutý proto, aby se I/O požadavky vždy dostaly přes můstek do grafické karty bez ohledu na nastavení jeho I/O okna, avšak defaultně se při dekódování ignorují vyšší bity 15:10, čímž dochází k zrcadlení. To lze potlačit bitem V16D, který nebyl nastavený. Tento bit se poprvé objevil u intel PCIe chipsetů řady 910/915. Netuším, jaký obskurní software by mohl využívat zrcadlené adresy a tak jsem bit V16D zapnul a skutečně všechny aliasy zmizely (žádné jiné negativní projevy jsem nepozoroval) a zvukovka začla fungovat i na defaultně přidělené I/O adrese CFC0h. Abych bit V16D nahodil ještě před zavedením operačního systému, napsal jsem patch do svého ROMOSu 1.06, jehož kód je umístěn v PCI Option ROM a spouští se tak během POSTu. Jiné základní desky tento bit běžně nenastavují, ale raději přiřazují nekonfliktní I/O adresy. Poslal jsem též bug report na podporu Gigabyte, ale neočekávám žádnou smysluplnou odpověď, takže jsem si pomohl sám. Ruik a Bjorn Helgaas nyní pracují na patchi do Linux kernelu a pciutils, který by mohl pomoci i dalším podobně postiženým uživatelům, je to i na bugzille. Tak tohle byla na stupnici pinožení dužnatá 4 (málem 5), ale člověka potěší, když rozlouskne takový tvrdý ořech...

      20.12.2017 Přišla mi odpověď z technické podpory Gigabyte, kde jsem jim detailně popsal problém včetně způsobu jeho opravy, ale prý se tak starou deskou už nebudou zabývat. Co také jiného čekat, vypustí neotestovaný zmetek, ale peníze od zákazníka už mají. Kéž by tak BIOSy byly OpenSource (alespoň uvolněné po ukončení podpory).
Dear ... from technical team wrote me, that Intel 6 series is an old BIOS and we don’t provide newer BIOS or maintenance any more. Please have a try with different PCI card or try a PCIE add-in card instead. Best regards,
Gigabyte


Aktualizace BIOSu

      19.1.2017 Trochu jsem se teď vrtal v BIOSu a zkoumal problematiku okolo intel ME (Management Engine) firmware, který je dnes jakožto binární blob od intelu součástí každého BIOSu pro platformu intel. Více informací jsem sepsal zde. Dále jsem zkontroloval aktuálnost mikrokódů v modulu BIOSu NCPUCODE.BIN, našel jsem novější mikrokódy pro CPUID 206A7h (Sandy Bridge) a 306A9h (Ivy Bridge) a sestavil nový modul NCPUCODE.BIN, který jsme pomocí CBROM32 1.99 vložil do BIOS image. Zajímavé je, že se v průběhu let velikost mikrokódů mění, např. pro CPUID 206A7h má první update z 28.12.2010 velikost 8192 B a poslední z 12.6.2013 už má 10240 B. Takže intel dopředu počítal s nějakou rezervou v patch RAM CPU.

      22.11.2017 Provedl jsem další aktualizaci ME FW na verzi 8.1.70.1590, testy v MEManuf prošly a nepozoruji žádnou změnu chování PC. Též jsem vyzkoušel novou verzi ME cleaneru pro přepnutí ME FW do režimu Alt Disable. Funkce EIST, Turbo Boost i suspend to RAM zůstaly funkční.

USB 3.0 řadič VIA Labs VL805 PCIe x1

      6.2.2021 Jelikož moje základní deska nemá integrovaný USB 3.0 řadič, rozhodl jsem se ho doplnit skrze levnou kartičkou do PCIe x1 slotu, pro který jsem zatím nenašel žádné jiné smysluplné využití. Karta je osazena XHCI řadičem VIA Labs VL805 a SPI FlashROM pamětí s označením T25S40, avšak podle JEDEC ID se jedná o paměť ZB25D40B od Zbit Semiconductor. Když jsem ji montoval do PC, všiml jsem si, že zahnutý konec kovového bracketu nesedí s hranou v case, ale vznáší se cca 2 mm nad ní, jako kdyby karta nebyla plně zasunutá do slotu. Bracket jsem tedy odšrouboval, narovnal a znovu ohnul ve svěráku a upravil díru pro šroubek. Při té příležitosti jsem ještě do něj udělal další otvor na eSATA konektor, který jsem měl na samostatném bracketu a nezbylo by na něj už volné místo. Karta potřebuje připojit 5V napájení přes klasický Molex konektor z PC zdroje, protože v PCIe slotu už 5 V není a Číňan ušetřil za měnič.

VIA VL805 USB 3.0 XHCI controller PCI-E bracket eSATA mod

      K dispozici jsou ovladače pro OS Windows XP - 8.1 x86/x64. Všechny verze podporují Windows XP (včetně poslední 5.60B, která je unifikovaná pro zmíněné OSy). Když jsem však ovladač nainstaloval, dostal jsem akorát vykřičník ve Správci zařízení a chybu: "Toto zařízení nelze spustit. (Kód 10)". Zkoušel jsem o tom něco pohledat a mimo jiné jsem narazil na utilitu pro upgrade firmware. Aktualizaci je asi dobré udělat, protože si uživatelé stěžovali na řadu problémů. Shodou okolností je tento čip použit i na Raspberry Pi 4, kde se to hodně řeší a k dispozici je poměrně nový firmware verze 0138A1 z roku 2020, ke stažení na GitHubu. UPDATE: Pozor, tento FW nepoužívat, viz níže. Když jsem se ho pokusil flashnout, narazil jsem na problém, že flasher nerozpoznal připojenou SPI paměť, nicméně ji přesto naprogramoval. Aby se změna projevila, je potřeba vypnout a zapnout PC. Po identifikaci skutečného typu paměti jsem přidal následující řádky do souboru spiflash.ini:


[FlashType]
...
23=ZB25D40B

[ZB25D40B]
FlashID=5E3213 
ReadID=9F
WriteEnable=06
WriteStatus=01
ChipErase=C7
ReadData=03
ReadStatus=05
PageProgram=02
ClockRate=32
PageSize=10

Pak už byl flasher spokojený a paměť rozpoznal. Při zápisu se někdy vyskytne chyba, mělo by stačit ho znovu zopakovat.

VL80x FW Upgrade Tool flashing FW successfully

      Avšak ani to nevedlo k úspěchu ve Windows. Přitom pod Linuxem řadič normálně fungoval. Nakonec mě napadlo přebootovat Windows s vypnutou podporou PAE pro 4 GB+ RAM a vida, ovladač se chytil, řadič začal normálně fungovat. To mě VIA kapánek vypekla, zkusil jsem tedy ještě jednu alternativní možnost. Nedávno se objevil nový projekt NTOSKRNL Emu_Extender, který umožnil do Windows XP backportovat univerzální USB XHCI ovladač z Windows 8 a ten funguje bez problémů i s PAE. Zde je ke stažení balíček se vším potřebným (zkompilovaný aktuální NTOSKRNL Emu_Extender, modifikované USB 3.0 ovladače a firmwary pro VL805 s mojí aktualizací INI souboru).

      4.3.2021 mi dorazil od Číňana levný USB 3.0 - SATA kablík. Ze zvědavosti jsem hned rozloupnul plastovou krytku a zjistil, že je založený na můstku JMicron JMS578 s SPI FlashROM pamětí PH25Q40B (datasheet jsem nenašel).

JMicron JMS578 USB 3.0 to SATA bridge

      Redukci jsem připojil ke staršímu 2,5" SATA disku Fujitsu MHX2300BT a k počítači, disk se roztočil, ale systém vůbec nedetekoval nové USB zařízení (tak se redukce běžně chová bez disku). Když jsem redukci připojil k jinému PC s nativním USB 3.0, tak se USB zařízení a normálně nadetekovalo a disk se připojil. Napadlo mě, že bude asi problém ve firmwaru, který jsem do USB 3.0 řadiče naflashoval. Zkusil jsem se tedy postupně vrátit o několik verzí zpět:

FW verze chování
0138A1 USB 3.0 zařízení se vůbec nedetekují, pouze USB 2.0 / 1.x
0137AB USB 3.0 zařízení jedou pouze v režimu HighSpeed
013705 USB 3.0 zařízení jedou v režimu SuperSpeed dle očekávání

Připojený disk jsem otestoval v programu HD Tune Pro, ale je to líná 4200RPM lemra, která rychlost USB 3.0 stěží využije (na USB 2.0 portu dosahoval max. rychlosti 27 MB/s). Až budu mít po ruce rychlejší disk, dám sem nový test. Průběh rychlosti byl stejný jak pod Windows XP s backportovaným ovladačem z Windows 8, tak na Windows 7 x64 s ovladačem VIA.

HD Tune pro of Fujitsu MHX2300BT attached via USB 3.0 to SATA bridge



Zpět

Aktualizováno 17.6.2022 v 3:34