Windows 98 modern USB denetleyicilerini bir sürücüyle tanıdı
2020 model bir dizüstünde Windows 98 SE, xHCI yuvalarına takılan fareyi, ses kartını ve bellek çubuğunu görüyor. xHCI98 sürücüsünü yazan geliştirici, sınırlarını da açıkça listelemiş.
2020 yapımı bir ThinkPad P14s'in yuvalarına aynı anda yedi girişli bir USB dağıtıcı, bir USB Ethernet adaptörü, bir USB ses kartı, bir USB-SATA köprüsü, iki bellek çubuğu ve bir fare takılı. Ekranda ise Windows 98 SE çalışıyor ve hepsini tanıyor. Fotoğraf, geliştirici Yeo Kheng Meng'in xHCI98 adlı sürücüsünün deposunda duruyor. O sürücü olmadan aynı bilgisayarda o yuvaların hiçbiri iş görmüyordu: fare bile.
Sebebi şu: 2010'ların ortasından sonra üretilen bilgisayarlarda tek bir USB denetleyicisi var, adı xHCI. Kheng Meng'in proje günlüğünde yazdığına göre Intel, Skylake işlemcilerle gelen 100 serisi yonga setinden başlayarak eski USB 2.0 denetleyicilerini kartlardan tümüyle çıkardı ve bütün yuvaları xHCI'a bağladı. Windows 98'in ise xHCI diye bir şeyden haberi yok. Fişi takmak yetmiyor; işletim sistemi karşıdaki denetleyiciyle konuşamıyorsa klavye de bellek çubuğu da ölü duruyor. xHCI98 bu boşluğu doldurma denemesi ve GNU GPL sürüm 2 ile yayımlandı.
-
Yemek tarifleri
Malzeme listesi, adım adım yapılış, süre ve porsiyon bilgisiyle. Çorbadan tatlıya kategoriye göre gez ya da aradığını doğrudan ara.
Tariflere bak → -
Nasıl yapılır rehberleri
Telefon ayarlarından resmî işlemlere, hesap güvenliğinden günlük hayattaki küçük sorunlara: numaralı adımlar ve tahmini süreyle anlatılmış rehberler.
Rehberleri gör → -
Program arşivi
Tarayıcılar, güvenlik araçları, ofis ve medya yazılımları. Her kayıtta ne işe yaradığı, sürümü ve indirme bağlantısı.
Programlara göz at → -
Sesli ve görüntülü sohbet
Odalarda grup görüntülü sohbet, birebir sesli arama ve canlı yayın. Tarayıcıdan çalışır — eklenti, uygulama ya da kurulum gerekmez.
Odalara gir →
Dört harflik kısaltmalar: UHCI, OHCI, EHCI, xHCI
Bir bilgisayarın USB yuvalarını yöneten yongaya "ana denetleyici" deniyor. Bu yonganın işletim sistemiyle nasıl konuşacağını tarif eden standartlar zaman içinde değişti: USB 1.1 döneminde UHCI ve OHCI, USB 2.0 ile EHCI, USB 3.0 ile de xHCI. Her biri farklı bir sürücü demek; yenisi eskisinin yerine geçtiğinde eski sürücü işe yaramıyor.
Windows 98 kutusundan UHCI ve OHCI sürücüleriyle, yani USB 1.1 ile çıktı. USB 2.0 desteğini yıllar sonra topluluk getirdi: NUSB 3.3/3.6 ve SweetLow'un yığını, Microsoft'un daha yeni sürücülerini 98'e geri taşıyan gayriresmî paketler. Windows 2000 ise EHCI'yi Service Pack 4 ile kendi içinde aldı. xHCI'ı ikisi de hiç görmedi.
Kheng Meng'in aktardığına göre xHCI, Intel tarafından 2010'da kamuya açık biçimde kesinleştirildi ve bugünkü revizyonu 1.2c. Windows tarafında yerleşik destek ancak Windows 8 ile geldi. Arada kalan on yılı aşkın dönem için yonga üreticileri Windows XP'ye kadar sürücü yazdı; daha gerisi için ticari bir sebep hiç olmadı. Geliştirici bunu açıkça yazıyor: Windows 98 için xHCI sürücüsü yazmanın kimseye parasal bir karşılığı yoktu.
İşin zorluğu da ortada: xHCI 1.2c belirtimi 600 sayfa. Sürücü, denetleyici tek bir iş yapmadan önce komut halkaları, olay halkaları, aygıt yuvası ve uç nokta bağlamları gibi bir dizi veri yapısını kurmak zorunda; her birinin hizalama kuralları katı ve küçük bir hata doğrudan denetleyiciyi kilitliyor.
USB 3.0 denetleyicisinde neden USB 2.0 hızı
xHCI98 tam bir USB yığını değil. Windows 2000'in USB mimarisi iki katmanlı: üstte Microsoft'un usbport.sys dosyası oturuyor (aygıt sayımı, kök dağıtıcı, isteklerin çözülmesi onda), altta ise her denetleyici tipi için bir "miniport" sürücü var. xHCI98 işte o alt katmana takılan bir miniport; usbport.sys'in üstündeki her şey Microsoft'un kendi kodu olarak kalıyor.
Bunun bedeli hız. usbport.sys USB 2.0 çağının tasarımı ve SuperSpeed diye bir kavramı yok. Geliştiricinin anlatımıyla gerçek USB 3.0 için o işletim sistemlerindeki bütün ana denetleyici yığınını baştan yazmak gerekirdi; Windows 98 ya da 2000 çalıştıran bir makinenin o hızdan yararlanma ihtimali de düşük.
Kurtarıcı ayrıntı, konektörün kendisinde: her USB 3.x girişi aynı zamanda USB 2.0 hatlarını da taşıyor ve xHCI bunları ayrı birer mantıksal yuva olarak gösteriyor. Sürücü yalnız USB 2.0 yuvalarını yönetiyor, USB 3.0 yuvalarını beslemesiz bırakıyor. SuperSpeed'e uygun bir bellek çubuğu takıldığında USB 3.0 hatlarını bulamıyor, aynı konektörün USB 2.0 uçlarına düşüyor ve High-Speed hızında çalışıyor.

Sürücüden önce gelen sınav: DOS'ta çalışan bir test aracı
Projenin ilginç yan ürünü, sürücüden önce yazılmış. xHCI belirtimi denetleyicilerin kesme (interrupt) bildirimi için MSI adlı yöntemi tercih ediyor; işlemciye doğrudan bellek yazarak haber veren bir yol. Eski usulde ise denetleyicinin donanımdaki bir kesme ucu kullanılıyor. Kheng Meng'in yazdığına göre Windows MSI desteğini ancak Vista ile aldı, dolayısıyla daha eski sistemlerde sürücünün elinde yalnız o eski uç kalıyor.
Sorun şu ki her denetleyici o ucu düzgün uygulamıyor. Bunu önceden anlamak için geliştirici XHCIQUAL adında küçük bir DOS programı yazdı; Open Watcom ile derlenmiş, Windows'a hiç dokunmadan gerçek DOS'tan çalışıyor ve denetleyiciyi devralıp sıfırlayarak bir hüküm veriyor. Depodaki uyarı net: eski usul kesme ucu bildirmeyen bir denetleyici bu iki sistemde sürülemez ve bunun yazılımsal bir çaresi yok. Yani kurulum yapmadan önce makinenin sınavı geçip geçmediği öğrenilebiliyor.
18 MB/s'ten 33 MB/s'e: tek bir kayıt defteri değeri
İlk sürümlerde bir USB belleğin okuma hızı 18 MB/s civarındaydı. 23 Eylül 2026'da çıkan 1.1.1.0 sürümüyle bu değişti ve sebebi tek bir ayar: kesme yumuşatma aralığı. Bu, denetleyicinin bir kesmeden sonra bir sonrakini kaldırmadan önce ne kadar bekleyeceğini söyleyen süre. Kısa aralık daha hızlı depolama, ama daha çok kesme demek.
Kurulum artık bu değeri 250 nanosaniyelik birimlerle 500 (yani 125 mikrosaniye) yazıyor; önceki sürümlerde 4000 (1 milisaniye) sabitti. Depodaki ölçüm, bir MSSU10-128GSR USB belleğinde ATTO kıyaslamasıyla alınmış.
| Ayar değeri | Aralık | Saniyedeki kesme üst sınırı |
|---|---|---|
| 500 (kurulumun yazdığı) | 125 mikrosaniye | 8.000 |
| 4000 (eski sabit değer) | 1 milisaniye | 1.000 |
| 10 (kabul edilen en düşük) | 2,5 mikrosaniye | 400.000 |
64 KB ve üstü aktarımlarda 500 değeri yaklaşık 33-34,6 MB/s okuma ve yazma veriyor; eski 4000 ise 18 MB/s'te kalıyordu. Karşılığı da yazılmış: USB ses aygıtı çalarken aynı anda diskten hızlı okuma yapılırsa ses kesilebiliyor. Kıyas olsun diye not düşülmüş, Linux'un xHCI sürücüsü aynı ayarı 160'ta (40 mikrosaniye) tutuyor; bu paket genel amaçlı bir sürücü olduğu için daha temkinli davranıyor.
Nerede denendi, nerede tökezledi
Deponun en değerli bölümü, neyin denenmediğini söyleyen bölüm. Gerçek donanımda tam doğrulama yalnız Windows 98 SE için yapılmış. 32 bit Windows 7 gerçek bir makinede bir kez çalışmış (19 Eylül 2026, ThinkPad E460). Windows 2000 SP4, ME, XP, Vista ve 64 bit 7 ise yalnız QEMU sanal makinelerinde görülmüş, hiç gerçek donanıma girmemiş.
Denenen makineler ve sonuçları depodaki tablodan:
| Makine | Denetleyici | Sonuç |
|---|---|---|
| 2016 ThinkPad E460 | Intel Skylake, Sunrise Point-LP, xHCI 1.0 | Çalışıyor |
| 2020 ThinkPad P14s Gen 1 | Intel Comet Lake PCH-LP, xHCI 1.1 | Çalışıyor |
| Soket 1151 masaüstü (H110) | Intel 100 serisi PCH | Çalışıyor |
| Soket 1151 v2 masaüstü (B360) | Intel Cannon Lake PCH | Çalışıyor |
| AM4 masaüstü (B550) | AMD 500 serisi + Ryzen'in kendi denetleyicisi | Çalışıyor |
| AM4 masaüstü (X570) | AMD tasarımı X570 yonga seti | Çalışmıyor |
| AM5 masaüstü (X670) | AMD 600 serisi + Ryzen'in denetleyicileri | Çalışıyor |
AMD tarafındaki denemeler geliştiriciye ait değil; Omores adlı retro bilgisayar YouTube kanalının bildirdiği sonuçlar. Sürücü Intel'in belirtimine göre yazılmış ve ağırlıkla Intel makinelerinde denenmiş, diğer üreticilerin uygulamaları için bir güvence verilmiyor. X570'in neden olmadığı da yazmıyor.
Sınırlar, listenin kendisi kadar uzun
Depoda bilinen kusurlar ayrı bir tabloda sıralanmış. Öne çıkanlar:
- Windows 98'de NUSB yığını kuruluysa, sürücüyü aygıt yöneticisinden devre dışı bırakmak, kaldırmak ya da güncellemek makineyi mavi ekrana düşürüyor. Kusurun NUSB'nin usbport.sys dosyasında olduğu, Microsoft'un kendi sürücülerinin de aynı makinede aynı şeyi yaptığı belirtiliyor. SweetLow yığınında bu sorun görülmüyor.
- Kök yuvaya takılan her aygıt High Speed olarak bildiriliyor. Gerçek hızı bildirmek usbport'u çökerttiği için fare ve klavye kök yuvada daha seyrek yoklanıyor; çözüm, yavaş aygıtları bir dağıtıcının arkasına almak.
- Windows Vista ve 7'de kök yuvaya takılan bir USB 1.1 dağıtıcı sistemi durduruyor (STOP 0x7E). Windows 98, 2000 ve XP etkilenmiyor.
- Kök yuvadaki Full-Speed bir USB ses aygıtı Windows XP ve sonrasında kuruluyor, "çalıyor" görünüyor ama ses çıkmıyor. Dağıtıcı arkasında çalışıyor.
- Denenen tek gerçek Windows 7 makinesinde denetleyiciyi devre dışı bırakma işlemi hiç bitmemiş; sebebi henüz bilinmiyor.
- Saniyede iki kez gibi hızlı tempoda tak-çıkar yapılırsa Windows 98 donuyor. Olağan kullanımda sorun yok.
- 64 bit Vista ve 7'de sürücü imzasız olduğu için imza denetiminin kapatılması gerekiyor.
İki aylık boş zaman projesi, yapay zekâ yardımıyla
Teknik kısım kadar ilginç olan, projenin nasıl çıktığı. Sürücü C89 ile, 1998 tarihli MSVC 6.0 derleyicisi ve Windows 2000 DDK'sı kullanılarak yazılmış; 64 bit sürüm için WDK 7.1 gerekmiş, çünkü daha eski hiçbir derleyici o mimariyi hedefleyemiyor. Miniport arayüzünü Microsoft hiç belgelemediği için geliştirici açık kaynaklı ReactOS'un usbport koduna, denetleyici tuhaflıkları için de Linux, Haiku ve FreeBSD sürücülerine bakmış.
Geliştirici, işi 0'dan 16'ya numaralanmış 17 aşama halinde planladığını ve boş zamanında iki ayda bitirdiğini yazıyor. Yapay zekâ kullanımını da ayrı bir başlıkta açıkça anlatıyor: planlama, kodlama ve gözden geçirme için farklı modeller kullanmış, donanım doğrulamasını ve koda girecek şeyin denetimini kendisi yapmış. Yazının metninin kendisine ait olduğunu, yalnız şemaların ve tabloların yapay zekâ ürünü olduğunu da not düşmüş.
Kheng Meng proje günlüğünde şöyle yazıyor: "Tıpkı Apple II üzerindeki Swift projemde olduğu gibi, yapay zekâ olmasaydı bu proje benim için bir hobi projesi olarak yapılabilir olmazdı. Belgelenmemiş bir ikili arayüze karşı, onlarca yıllık bir araç zinciri üzerinde yazılan bir WDM ana denetleyici sürücüsü, elle yapıldığında iki aylık bir yan iş değildir. Bitirebilseydim bile yıllar sürerdi diye tahmin ediyorum."
Depodaki uyarı da aynı dürüstlükte: proje tek bir insandan ve yalnız yapay zekâ yardımıyla çıktığı için hataların şaşırtıcı olmadığı, karşılaşılanların bildirilmesi isteniyor.
Geliştiricinin kendi demo videosu, aygıtların çalışırken takılıp çıkarıldığını gösteriyor; bu ayrıntı önemli, çünkü sıcak takma işini BIOS'un değil sürücünün yaptığını kanıtlıyor.
Sırada ne var
Projenin ilk sürümü 30 Ağustos 2026'da çıktı, deponun kendisi ise şubatta açılmıştı; eylül boyunca altı sürüm yayımlandı. Windows ME, XP, Vista ve 7 desteği kullanıcı isteğiyle sonradan eklenmiş. Windows 98'i kurmayı kolaylaştıran bir topluluk projesinde, sürücünün hazır kütüphaneye alınmasını isteyen bir kayıt açıldı bile.
Açık kalan sorular da belli. X570 yonga setinin neden reddettiği bilinmiyor; Windows 2000 ve ME'yi gerçek donanımda çalıştıran kimse henüz rapor etmedi; Windows 7'de denetleyiciyi durdurma sorununun sebebi bulunmuş değil. Ve asıl büyük soru duruyor: gerçek SuperSpeed için bütün ana denetleyici yığınını baştan yazmaya kalkacak biri çıkar mı? Geliştirici bunun bu sistemlerdeki karşılığına değmeyeceğini düşünüyor. Yirmi yedi yıllık bir işletim sisteminde fare ile ses kartının aynı anda çalışmasının, zaten yeterince uzak bir hedef olduğu da söylenebilir.
Fotoğraf: Photograph: wdwd, CC BY-SA 4.0, Wikimedia Commons