Yazılı sohbetAna sohbet odası — üye olmadan da gir Sesli ve görüntülüKonuşarak sohbet et, istersen kameranı aç Canlı yayınlarYayındakileri izle

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ş.

Windows 98 modern USB denetleyicilerini bir sürücüyle tanıdı
Teknoloji 24 Eylül 2026 8 dk okuma 2 okunma

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ı.

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.

Yan yana duran USB 2.0 ve USB 3.0 Type-A yuvaları
Yan yana duran USB 2.0 ve USB 3.0 Type-A yuvaları — Johannes Kalliauer, CC BY-SA 4.0 (Wikimedia Commons)

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ğeriAralıkSaniyedeki kesme üst sınırı
500 (kurulumun yazdığı)125 mikrosaniye8.000
4000 (eski sabit değer)1 milisaniye1.000
10 (kabul edilen en düşük)2,5 mikrosaniye400.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:

MakineDenetleyiciSonuç
2016 ThinkPad E460Intel Skylake, Sunrise Point-LP, xHCI 1.0Çalışıyor
2020 ThinkPad P14s Gen 1Intel 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

Haberi beğendin mi?
Paylaş WhatsApp X Facebook
Teknoloji Masası

Bu içerik, Yudum Teknoloji Masası editör ekibi tarafından derlenip yayına hazırlanmıştır. Güncel gelişmeler için haber akışını takip edebilirsiniz.

İlgili haberler

Yudum

1998'den beri, dünyanın her yerinden — sohbet, radyo, oyunlar ve daha fazlası.

Sohbete Katıl Ücretsiz üye ol

Yalnız 18 yaş ve üstü — Yudum üzerindeki canlı sohbet, sesli ve görüntülü görüşmeler yetişkinler içindir. Neden?

2574
haber
5983
kimdir
833
tarif
383
rüya tabiri
35
test
214
üye