Nasıl çalışır
Bir USB cihazın takılır takılmaz kendisi hakkında bildirdiklerini gösterir. Cihaz tanımlayıcısı USB-IF tarafından atanan Vendor ID'yi, üreticinin seçtiği Product ID'yi, uyduğunu söylediği USB belirtiminin sürümünü, ürünün kendi sürümünü ve cihaz sunuyorsa üretici, ürün ve seri numarası metinlerini taşır.
Altında tam ağaç görünür: her yapılandırma arayüzleriyle, her arayüz sınıf, alt sınıf ve protokolden oluşan üçlüsü resmî USB-IF adına çevrilmiş hâlde ve her endpoint adresi, yönü, aktarım türü ve azami paket boyutuyla. Birden fazla alternatif ayara sahip arayüzler —kameralarda ve ses kartlarında sık görülür— ayrıca listelenir.
Araç yalnızca tanımlayıcıları okur: cihazla asla oturum açmaz, asla bir arayüz talep etmez ve ona asla tek bir bayt göndermez, dolayısıyla cihazı kullanan sürücüyle çakışmaz. Tüm ağaç, bir rapora eklemek ya da başka bir bilgisayarınkiyle karşılaştırmak için JSON olarak dışa aktarılabilir.
Örnekler
046D:C52B0x00 / 0x00 / 0x00 → 3 × HID (0x03)Kablosuz bir klavye ve fare alıcısı cihaz düzeyinde 0x00 sınıfını bildirir, bu yüzden gerçek tür arayüz arayüz belirlenir: burada, her birinde kesme ile çalışan bir giriş endpoint'i olan üç HID arayüzü.0x08 / 0x06 / 0x50Mass Storage · SCSI transparent command set · Bulk-Only TransportBir belleğin ya da harici diskin tipik üçlüsü: SCSI komutlarının üzerinden aktığı, biri giriş biri çıkış iki toplu endpoint.0x02 / 0x02 / 0x01Communications and CDC Control · Abstract Control Model · AT Commands (ITU-T V.250)Bir geliştirme kartının veya modemin sanal seri portudur: kesme ile çalışan bir endpoint'i olan bir denetim arayüzü ve verileri taşıyan iki toplu endpoint'i olan bir CDC-Data arayüzü.Kullanım senaryoları
- Sürücüsünü aramak ya da Linux'ta bir udev kuralı yazmak için bir cihazın tam Vendor ID ve Product ID değerlerini öğrenmek.
- İşletim sistemi ilk bakışta göstermediğinde bir belleğin, bir okuyucunun ya da bir adaptörün seri numarasını görmek.
- Ürün yazılımı geliştirirken cihazın beklenen arayüzleri, alternatifleri ve endpoint'leri doğru sınıflarla yayımladığını doğrulamak.
- Bir cihaz için kod yazmadan önce hangi endpoint üzerinden ve hangi aktarım türüyle konuşulması gerektiğini keşfetmek.
- Görünüşte aynı olan iki cihazı sürümlerini, arayüzlerini ve paket boyutlarını karşılaştırarak ayırt etmek.
- Tüm ağacı JSON olarak dışa aktararak bir bilgisayarın USB yapılandırmasını belgelemek.
Sık sorulan sorular
Neden iPhone'umda ve Firefox'ta çalışmıyor?
WebUSB API'si Chromium tabanlı tarayıcılarda —Chrome, Edge ve Opera— Windows, macOS, Linux, ChromeOS ve Android için uygulanmıştır. Firefox ve Safari bunu uygulamaz; iOS'ta ise tüm tarayıcılar sistemin motorunu kullandığı için orada da yoktur. Ayrıca HTTPS gerekir ve sayfanın başka bir sitenin içine gömülü olmaması gerekir.
Cihaz takılı ama seçicide görünmüyor.
Seçilen filtre fazla dar olabilir: tüm cihazları sunan seçeneği deneyin. Yine de görünmüyorsa, büyük olasılıkla tarayıcının engelleme listesindedir; bu liste güvenlik nedeniyle bazı ürünleri —aralarında FIDO güvenlik anahtarları da var— hiçbir web sayfası onlara dokunamasın diye dışarıda bırakır. Linux'ta cihaz düğümü üzerindeki sistem izni de eksik olabilir.
Cihaz neden 0x00 sınıfını bildiriyor?
Cihaz tanımlayıcısındaki 0x00 sınıfı «arayüzlere bak» demektir. Farklı işlevleri aynı kabloda birleştiren neredeyse tüm bileşik cihazlar bunu kullanır: yerleşik hub'ı olan bir klavye, mikrofon da sunan bir kamera ya da çok işlevli bir yazıcı. Bu durumlarda her işlevin gerçek türü cihazın sınıfında değil, her arayüzün sınıfındadır.
Endpoint nedir ve 0x81 gibi bir adres ne anlama gelir?
Endpoint, bir arayüze verilerin girdiği ya da çıktığı posta kutularının her biridir. Adresin düşük yedi biti endpoint numarasıdır, en yüksek bit ise yönü belirtir; yani 0x81 giriş yönündeki 1 numaralı endpoint'tir —cihazdan bilgisayara— ve 0x01 çıkış yönündeki 1 numaralı endpoint olurdu. Aktarım türü ona nasıl davranılacağını tanımlar: süre kısıtı olmayan büyük hacimler için toplu, bir tuşa basmak gibi küçük ve sık olaylar için kesme ile, geç kalmaktansa bir paketi kaybetmeyi yeğleyen ses ve video için eşzamanlı.
Araç cihazda bir şeyi değiştirebilir ya da bozabilir mi?
Hayır. Yalnızca tarayıcının cihazı listelerken zaten aldığı tanımlayıcıları okur; asla oturum açmaz, asla arayüz talep etmez ve asla yazmaz. Bu yüzden işletim sisteminin o anda kullandığı bir klavyeyi ya da belleği bile inceleyebilirsiniz, bir web sayfasının onlarla iletişim kurmasına izin verilmese de.
Üretici ya da ürün neden boş görünüyor?
Bu metinler isteğe bağlı tanımlayıcılardır: birçok ucuz cihaz bunları hiç yazmaz ve bazı işletim sistemleri tarayıcıya iletmez. Bu durumlar için araç, Vendor ID ve Product ID değerlerini Linux USB projesinin usb.ids kataloğunda arar; bu katalog üreticinin resmî adını, çoğu zaman da ürünün adını kayıt altında tutar.
Cihazın verileri bilgisayarımdan çıkıyor mu?
Tanımlayıcılar tarayıcınızda okunur ve hiçbir sunucuya gönderilmez. Tek istisna, Vendor ID ve Product ID değerlerini —modeli tanımlayan, bilgisayarınızı ya da elinizdeki birimi değil, iki sayı— sorgulayan usb.ids katalog aramasıdır ve bunu cihazı seçmeden önce kapatabilirsiniz. Seri numarası asla gönderilmez.
Bir arayüzün alternatif ayarları nedir?
Aynı arayüz birden fazla endpoint kümesi bildirip yalnızca birini etkin tutabilir. Kameralar ve ses kartları bunu farklı çözünürlük ya da kalite bileşimleri sunmak için kullanır: her alternatif veri yolunda farklı bir bant genişliği ayırır ve işletim sistemi aktarıma başlarken uygun olanı seçer. Cihaz boştayken etkin kalan alternatif 0 numaralı olandır.