- ThinkPad X1 Carbon 6th Gen’in gizli xDCI denetleyicisi açılınca dizüstünün kendisi klavye veya depolama aygıtı gibi herhangi bir USB aygıtını emüle edebilir hale geldi
- İpucu
/sys/class/usb_role/intel_xhci_usb_sw-role-switchidi; ancak yalnızca xHCI rol geçişi yeterli değildi, ayrı bir DWC3 tabanlı xDCI UDC’nin PCIe aygıtı olarak görünür olması gerekiyordu - BIOS imajında
xDCI Supportayarı vardı, ancak varsayılan Setup UI’da gizliydi; etkinleştirildikten sonralspciiçinde xDCI8086:9d30vedwc3-pcisürücüsü göründü - Başarılı yöntem Advanced BIOS sayfasının kilidini açmak ve NVRAM yaması oldu; PCH register yeniden yapılandırması ise PMC’deki bazı değişikliklerle sınırlı kaldı ve PSF kilidi nedeniyle başarısız oldu
- xDCI etkinleştirildikten sonra
g_mass_storage, Raw Gadget, syzkaller reproducer’ı ve Facedancer backend’i harici donanım olmadan çalıştı; ancakVBUShattı kesilmiş bir USB kablosu vedevicerol geçişi gerekiyor
ThinkPad’de bulunan USB aygıt modu ipucu
- Raw Gadget, Linux kernel USB Gadget alt sistemine kullanıcı alanı API’si sağlayan bir kernel modülüdür; hatalı USB descriptor’ları sağlayarak USB host fuzzing’i ve exploit geliştirmede kullanılabilir
- Sıradan PC’lerde genellikle USB Device Controller, yani UDC bulunmaz; bu daha çok Raspberry Pi gibi tek kart bilgisayarlarda yerleşik olur
- Önceki çalışmalar Raspberry Pi veya USB 3380 tabanlı EC3380-AB gibi harici donanım gerektiriyordu
- ThinkPad X1 Carbon 6th Gen’de
/sys/class/usb_rolealtındaintel_xhci_usb_sw-role-switchbulundu/sys/class/usb_role, donanımsal USB bileşenlerini host modu ile device modu arasında değiştiren arayüzdürroledosyasınadeviceyazılsa da başlangıçtadmesgmesajı veya/sys/class/udc/girdisi oluşmadı
- xHCI, x86 sistemlerde USB host olarak çalışmayı sağlayan HCD’dir; xDCI ise Intel’in USB device tarafı arayüzü için kullandığı addır
Kernel kodu ve mailing list ile doğrulanan yapı
- Linux kernel’de
intel_xhci_usb_swiki yerde görülürdrivers/usb/roles/intel-xhci-usb-role-switch.c,deviceveyahostyazıldığında xHCI register’larını yöneten USB Role Switch sürücüsünü uygulardrivers/usb/host/xhci-ext-caps.c, xHCI sürücüsüXHCI_INTEL_USB_ROLE_SWquirk’ünü ayarladığındaintel_xhci_usb_swsanal platform aygıtını oluşturur
- ThinkPad’in xHCI PCIe device ID’si
0x9d2fidi ve kernel’dekiPCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_XHCIile eşleşiyordu - Linux kernel mailing list tartışmalarında xHCI ile DWC3 UDC’nin ayrı aygıtlar olduğu ve aralarında bir mux bulunduğu doğrulandı
- role switch bu mux’u değiştirmekle görevlidir
- DWC3 UDC’nin kendisi PCI aygıtı olarak görünmüyorsa device mode için kullanılacak UDC yok demektir
- DWC3, Synopsys’in DesignWare Core SuperSpeed USB 3.0 Controller IP’sidir ve Intel dahil birçok üretici tarafından sistemlerde kullanılır
- ThinkPad’de
lspcikontrol edildiğinde başlangıçta yalnızca xHCI8086:9d2fgörünüyordu;dwc3-pci.c’ye göre Sunrise Point-LP’nin xDCI device ID’si olan0x9d30görünmüyordu
ACPI ve BIOS’ta kalan xDCI izleri
- ACPI DSDT içinde
Device (XDCI)ve_STAmetodu bulunuyordu/sys/bus/acpi/devices/device:33/path,\_SB_.PCI0.XDCIidi/sys/bus/acpi/devices/device:33/status,15idi; bu da aygıtın enabled and functioning durumda olduğu anlamına gelir- Ancak
lspciiçinde xDCI olmadığı için yalnızca ACPI açısından düzgün görünen bir durumdu
- Varsayılan BIOS Setup ekranında xDCI veya OTG ile ilgili ayar görünmüyordu
- Lenovo BIOS Bootable CD güncelleme imajı indirilerek BIOS ikilisi
/mnt/bios/FLASH/N23ET86W/$0AN2300.FL1çıkarıldı ve UEFITool ile incelendi SetupmodülününPE32 image sectionbölümünde string araması yapıldığında şu girdiler ortaya çıktıxDCI SupportEnable/Disable xDCI (USB OTG Device).
- BIOS içinde xDCI Support ayarı vardı, ancak varsayılan UI’da gizlenmişti
Advanced BIOS sayfasıyla xDCI’yi açmak
- x1c6-hackintosh proje dokümantasyonu izlenerek gizli Advanced BIOS sayfasını açma yöntemi denendi
- Bu yöntem, BIOS’un saklandığı SPI çipini yeniden flash’lamayı gerektiriyordu
- SPI klipsi kullanmak yerine SPI çipi soketli bir çiple değiştirilerek, çipi defalarca çıkarıp takarak denemeler yapıldı
- FTDI FT2232H Mini Module ve
flashromkullanılarak SPI çip içeriği dump edildi ve yeniden yazıldı
- BIOS yaması iki aşamadan oluşuyordu
UEFIPatchileDate/TimeBIOS sayfası GUID referansıAdvancedsayfasına yönlendirildi- Ayrı bir byte yamasıyla TPM
MFG Mode’a zorlanarak Boot Guard’ın BIOS değişikliğini algılamaması sağlandı
- BIOS 1.37’de yalnızca ilk yama uygulanınca dizüstü bip sesi çıkarıp boot etmedi; ikinci yama da uygulandıktan sonra Advanced sayfası göründü
Intel Advanced Menu→PCI-IO Configuration→USB ConfigurationaltındakixDCI Support,Enabledolarak değiştirildiğinde boot sonrasında xDCI görünür oldulspciiçinde00:14.1 USB controller [8086:9d30]göründü- Kernel
dwc3-pcisürücüsünü otomatik olarak yükledi /sys/class/udc/altındadwc3.1.autooluştu
xDCI portu ve kablo koşulları
- xDCI’nin bağlı olduğu harici USB portunu bulmak için rol
deviceolarak bırakılmışken her porta USB flash bellek takılarak kontrol edildi- Belirli bir portta OS flash belleği algılamadı; rol
hostkonumuna geri alınca yeniden çalıştı - Bu portun xDCI’ye bağlı port olduğu değerlendirildi
- Belirli bir portta OS flash belleği algılamadı; rol
- ThinkPad’in xDCI portu USB Type-A olduğu için host bilgisayara bağlamak üzere Type-A to Type-A male-to-male kablo gerekiyordu
- role switching portun güç hattı
VBUS’ı kapatmadığı için iki aygıtınVBUShatlarının doğrudan bağlanmaması adına VBUS hattı kesilmiş bir kablo kullanıldı- Başta iki USB 2.0 kablo kesilerek
VBUShattı koparılmış male-to-male kablo elde yapıldı - Daha sonra PortaPow USB Power Blocker ve male-to-male USB 2.0 kablo kullanıldı
- Başta iki USB 2.0 kablo kesilerek
g_zerogadget driver’ı yüklendiğinde başka bir dizüstünde test USB aygıtı düzgün şekilde emüle edildi- 11 Haziran 2024 güncellemesine göre DataPro USB 3.0 Super-Speed A/A Debugging Cable’da USB 2.0
D-veD+hatları da kesilmiş olduğundan SuperSpeed bağlantısı kurmak için gereken High-Speed bağlantı başarısız oluyorVBUShattı elle kesilmiş LogiLink CU0038 kablosu SuperSpeed aygıt emülasyonunda çalışıyor
PCH register’larıyla yazılımsal etkinleştirme denemesi
- BIOS’un xDCI’yi nasıl açtığını anlamak için Kaby Lake BIOS kaynak kodundaki
Pch/Library/Private/PeiPchInitLib/PchXdci.cincelendi - BIOS’un xDCI devre dışı bırakma yolu, xDCI’yi PMC ve PSF içinde devre dışı bırakan bir yapıdaydı
-
PMC değişikliği
- PMC’nin
NST_PG_FDIS_1register’ı offset0x628içindeki bit #24XDCI Function Disabletemizlenirse xDCI güç kesintisinin kaldırılabileceği düşünüldü - Linux kernel’deki
pmc_core_devicevepmc->regbaseeşlemesini yeniden kullanan bir kernel modülü yazıldı - Boot’tan hemen sonra
ST_PG_FDIS1içindekiST_FDIS_LKbit #31 ayarlıydı, bu yüzdenNST_PG_FDIS_1değeri değiştirilemiyordu - Dizüstü suspend edilip uyandırıldıktan sonra lock bit ayarlı değildi ve
XDCI Function Disablebit’i başarıyla temizlendi
- PMC’nin
-
PSF değişikliği
- BIOS,
PID_PSF2Port ID0xBB’nin PSF2 PCR’ındaUSB Dual Role (OTG) Function Disablebit’ini ayarlayarak xDCI’yi devre dışı bırakıyordu - PCR adresi
PCH_PCR_BASE_ADDRESS 0xFD000000, Port ID ve offset birleşimiyle hesaplanıyordu - Kernel modülünde PSF2 PCR
ioremapile eşlendi, ancak okunan değer0xffffffffoldu ve değişmedi - P2SB unhide edilse de sonuç aynıydı
- BIOS’un
RemoveSidebandAccessişlemiEPMASK5ilePID_PSF2’yi IOSF-SB’den ayırıpMASKLOCKile kilitlediği için OS üzerinden PSF yeniden ayarlanamıyordu - PCH erişimi PMC’deki bazı ayarlarda başarılı oldu, ancak PSF yeniden yapılandırması başarısız olduğundan xDCI etkinleştirme yöntemi olamadı
- BIOS,
NVRAM yamasıyla Boot Guard bypass olmadan etkinleştirme
- BIOS ayar değerleri SPI çipinin NVRAM alanında saklandığı için, gizli Advanced sayfasını açmadan yalnızca
xDCI Supportdeğerini değiştirme yöntemi denendi - IFRExtractor-RS ile
Setupmodülünün UEFI IFR bilgisi çıkarıldı xDCI SupportayarıPchSetupUEFI değişkeni içinde saklanıyordu- VarStore GUID:
4570B7F1-ADE8-4943-8DC3-406472842384 - VarStoreId:
0x5 - VarOffset:
0x40 - Değer aralığı:
0x0veya0x1
- VarStore GUID:
- Linux
efivarfsiçinde/sys/firmware/efi/efivars/PchSetup-4570b7f1-ade8-4943-8dc3-406472842384kontrol edildiefivarfsdosyasının ilk 4 byte’ı header olduğundan gerçekxDCI Supportdeğeri dosya offset0x44konumundadır- xDCI devre dışıyken değer
00, BIOS Advanced sayfasından etkinleştirildikten sonra01olarak değişti
- Kullanıcı alanından veya EFI Shell’den bu değişken doğrudan yazılmaya çalışılınca
EFI_WRITE_PROTECTEDhatası alındıefivarfsüzerindeki immutable özniteliği kaldırılsa daRead-only file systemhatası oluştu- chipsec ile EFI Shell’den değiştirilse de aynı hata oluştu
- SPI programmer ile okunan orijinal BIOS imajında
PchSetupçevresindeki byte dizisi bulunup yalnızcaxDCI Supportbit’i01olarak yamalanıp yeniden flash’lanınca xDCI etkinleşti - Bu yöntem hâlâ SPI çip reflashing gerektiriyor, ancak Advanced sayfa yaması ve Boot Guard bypass gerektirmiyor; TPM de bozulmadı
- BIOS 1.37’de NVRAM yamalandıktan sonra 1.61’e güncellendiğinde BIOS ayar değeri korundu, yamayı tekrar uygulamak gerekmedi
xDCI ile USB aygıtı emülasyonu
- Tüm örnekler xDCI’nin BIOS’ta etkin olduğu,
intel_xhci_usb_sw-role-switch’indevicemoduna geçirildiği ve xDCI portu ile USB host’unVBUShattı kesilmiş kabloyla bağlı olduğu varsayımına dayanır -
Legacy gadget drivers
- Linux USB Gadget alt sisteminin legacy gadget drivers’ları, modül yüklendiğinde belirli USB class aygıtlarını emüle eder
g_mass_storage, bir dosya sistemi imajını USB mass storage aygıtı olarak sunar- FAT imajı
disk.imgoluşturulupfile.txtiçineHi from xDCIyazıldıktan sonrasudo modprobe g_mass_storage file=./disk.img stall=0ile yüklendi - USB host üzerinde sürücü otomatik olarak mount edildi ve dosya içeriği doğrulandı
-
Raw Gadget
- Raw Gadget, xDCI ile birlikte çalıştırılarak USB klavye örneği denendi
- Başta
SET_CONFIGURATIONişlenirken takıldı - Nedeni
dwc3ve bazı UDC sürücülerinin 0-length control request’i gadget driver onayı olmadan hemen acknowledge edebileceklerini varsaymasıydı - Raw Gadget’a workaround patch uygulanıp GadgetFS de düzeltildikten sonra klavye emülasyonu başarılı oldu
- İlgili davranış dokümantasyon yaması commit ile düzenlendi
syzkaller ve Facedancer kullanımı
- syzkaller, Raw Gadget kullanarak Linux kernel USB stack’ini harici olarak fuzz edebilir
- Varsayılan syzkaller USB fuzzing’i, kernel içinde sanal USB Device ile Host controller’ı bağlayan Dummy HCD/UDC kullanır
- xDCI kullanmak için syzkaller’ın UDC belirtme kodu
dummy_udcyerinedwc3-gadget,dwc3.1.autoolacak şekilde değiştirildi - syzkaller’ın bulduğu
WARNING in smsusb_start_streaming/usb_submit_urbhatasının reproducer’ısyz-execprog -enable=usbile çalıştırıldı- Ubuntu
5.15.0-91-generickernel’i host olarak çalışan dizüstündeusb_submit_urbuyarısı yeniden üretildi - Bu hata,
smsusbsürücüsünün USB endpoint type doğrulamasını atlamasından kaynaklanan birWARNINGidi ve zararlı bir davranış değildi
- Ubuntu
- Facedancer, Python tabanlı bir USB aygıt emülasyon framework’üdür
- Raw Gadget tabanlı Facedancer backend henüz prototip aşamasındadır ve out-of-tree Raw Gadget yamalarına dayanır
BACKEND=rawgadget,RG_UDC_DRIVER=dwc3-gadget,RG_UDC_DEVICE=dwc3.1.autoayarlanıprubber-ducky.pyörneği çalıştırılınca düzgün çalıştı
- Raw Gadget tabanlı USB Proxy de xDCI ile çalıştı; xDCI kullanılarak dizüstü USB sniffer veya USB Man-in-the-Middle aracı olarak kullanılabilir
Diğer cihazlarda ve yazılımsal yöntemlerde olasılıklar
- ThinkPad X1 Carbon 6th Gen dışındaki PC’lerde de xDCI etkinleştirme mümkün olabilir
- En basit durumda BIOS ayarlarından xDCI’yi açmak yeterli olabilir
- ACPI ve role switching desteği olmalı, ayrıca xDCI portu harici bir porta kablolanmış olmalıdır
- Diğer ThinkPad’lerde de xDCI BIOS ayarı gizlenmiş ve korunuyor olabilir; bu yüzden SPI çip reflashing gerekebilir
- NVRAM yöntemi Boot Guard bypass olmadan uygulanabilir
- Bazı yeni sistemlerde SPI çip reflashing RPMC ile korunuyor olabilir; bu tür çiplerin adında
W25R128FWgibiRharfi bulunabilir
- Güncellemeye göre Shiny Quagsire, XPS 13 ve Surface Go 1’de
grub-mod-setup_varilePchSetupdeğişkenini düzenleyerek xDCI’yi etkinleştirmişti- Bu cihazlarda
PchSetupdeğişkeni korunmadığı için tamamen yazılımsal yöntem mümkündü
- Bu cihazlarda
- Başka bir yazılımsal yaklaşım olarak BIOS zafiyetlerinden yararlanıp xDCI ile ilgili NVRAM değişkenlerini değiştirmek veya boot sırasında DMA ile BIOS’a saldırıp keyfi kod çalıştırmak mümkün olabilir
- Başlıktaki “secret” sözcüğü, kasıtlı bir gizlemeden ziyade belgelenmemiş bir özelliği ifade etmeye daha yakındır
1 yorum
Hacker News yorumları
Bir dizüstü bilgisayarı başka bir bilgisayar için genel amaçlı klavye ve monitör olarak kullanma özelliğinin neden yaygın olmadığını hep merak etmişimdir
Headless bir makinenin bakımını yapmak için yeni bir klavye ve monitör almak garip geliyor, çünkü eldeki dizüstü zaten bu işi yapabilir
Yakında çıkacak Minisforum V3 tabletinde de video girişi var, yani harici monitör gibi kullanılabiliyor, ama klavye ve fareyi de paylaşacak gibi görünmüyor
Keşke bu özellik daha yaygın olsa
Fare ve klavyeyi harici porta yönlendirip kabloyla başka bir makineye bağlayabiliyor, ayrıca yan tarafında iki HDMI portu var; biri çıkış, biri giriş
Dahili bir anahtarla monitör kaynağı olarak deck'in kendi makinesi ile harici giriş arasında seçim yapılabiliyor
Temelde headless makinenin HDMI sinyalini yakalayıp USB üzerinden dizüstüne emüle edilmiş bir webcam olarak sunan bir çip ve elektronikler kablonun içine sığacak kadar küçük
Klavye tarafında ise standart bir kablosuz klavye dışında, nadiren fare de gerekirse diye trackpad'li bir model almak dışında iyi bir çözüm bulamadım
Duyduğuma göre USB 4'te bunu mümkün kılan bir mod varmış
https://web.archive.org/web/20180610141436/http://anselm.hoffmeister.be/computer/hidclient/index.html.en
https://github.com/benizi/hidclient
Bu bana birkaç yıl önce Travis Goodspeed'in yaptığı bir işi hatırlattı
Bir akıllı TV, normal bir USB bellekteki dosyadan firmware güncellemesi alıyordu ve TV dijital imzayı doğrulamak için dosyayı baştan sona okuduktan sonra güncelleme için tekrar okuyordu
USB depolama aygıtı gibi davranan bir cihaz, ilk okumada üreticinin firmware dosyasını, ikinci okumada ise resmi olmayan firmware'i verebilir
https://en.m.wikipedia.org/wiki/Time-of-check_to_time-of-use
Gerçekten ilginç. Ben de benzer şekilde uygulanabilir seçenekleri araştırıyordum
Kullanmak için sürekli bahane aradığım güçlü bir NAS sunucum var ve evin çeşitli yerlerine 40G ve 10G bağlantılar da çektim
PS5 ve XBox, ek depolama alanı olarak USB sabit disk kullanıyor
NAS depolamasını PS5 ve XBox'a gösterebilir miyim diye baktım ve mümkün görünüyor. NAS paylaşımını iSCSI ya da NFS ile mount edip ardından g_mass_storage modülüyle USB depolama aygıtı emüle ederek o depolamayı USB host'a sunabiliyorsunuz
Şu an zaman ve maliyet dışında en büyük engel, böyle bir sistemin sağlayacağı bant genişliği. Kazanç çok büyük değil
Raspberry Pi, USB-OTG desteğiyle tanınıyor ama USB 2.0 hızlarında kalıyor; baktığım benzer sınıftaki diğer SBC'lerin çoğu da böyleydi. İstisna RockPi4'tü ve RockPi'nin gigabit Ethernet portu var; Ethernet'i tam doldurabilirseniz hem PS5 hem de Xbox için tutarlı HDD hızları sağlayabilir
1GbE'nin üzerine çıkabilen bir çözüm için özel PCIe ağ kartı ya da ExpressCard takılabilirse, USB 3.0 arayüzünü gerçekten doyurmak mümkün olur ve bu oldukça ilginç olurdu
Sunucuyla konuşacak bir istemci gerekiyor ama oldukça iyi çalışıyor gibi görünüyor
Masada bir “ince USB istemcisi” bulundurup USB aygıtlarını ona takmayı, sonra da laboratuvardaki istediğim fiziksel host'a ya da VM host'una bağlamayı veya aralarında geçiş yapmayı düşünüyorum
NAS → SBC → PS5 diye tahmin ediyorum; yoksa NAS'ı doğrudan USB kablosuyla PS5'e mi bağlıyorsunuz?
PS5'te içerik oynatma işi nasıl oluyor onu da merak ediyorum. Dahili NVMe'nin belli bir hız şartını karşılaması gerektiğini biliyorum; bu harici sürücüler için geçerli değil mi?
Hatta NanoPi R6S, 1 gigabit porta ek olarak iki adet 2.5G Ethernet portu ile geliyor
Çok detaylı bir yazı, teşekkürler. Kalitesi yüksek
Bunun mümkün olduğunu görmek, sadece modifiye edilmiş bir USB kablosuyla ağsız bir Synergy / Mouse Without Borders benzeri kurulum yapılabileceğine dair umut verdi
Aynı anda birden fazla bilgisayarı kullanmak zorunda olanlar için çok iyi bir yön
Yine de önerdiğin yaklaşım ilginç geliyor
Kısa süre önce benzer bir şeyi araştırdım; tek bir USB-C kablosuyla iki USB-C makineyi bağlayıp 10Gbps iletişim kurmak istiyordum
Ne yazık ki çoğu Ryzen kartında hâlâ Thunderbolt yok ve Thunderbolt olsaydı bunu yerel olarak kolayca desteklerdi
“Dual-role” USB denetleyicileri de USB 3.2/4.0 öncesine kadar oldukça nadirdi ve bu yazıda ele alındığı gibi, mümkün olsa bile çoğu durumda desteklenmiyordu
Thunderbolt olmadan iki makineyi bir USB-C kablosuyla ağ üzerinden birbirine bağlamanın bu kadar zor olması tamamen tuhaf geliyor
Askıya alma sonrasında kilit bitlerinin temizlenmesi kısmı da hoştu. Bu tür sorunlar gerçekten çok yaygın. Örneğin bir SATA aygıtını güvenli silmeyi engelleyen durumdan çıkarmak için de çok sık kullanılan bir yöntemdir
Derinlik etkileyici düzeyde
Bir PC’yi USB aygıtı olarak kullanabilmek birçok ilginç olasılığın önünü açıyor
Gerekli xDCI seçeneğinin bu aygıtın donanımında bulunup ortaya çıkarılmamış olması ve erişmek için firmware hack’i gerekmesi biraz üzücü
Donanım yapabiliyor ama üretici bunu sadece kapatmış ve denetim işlevlerini kilitlemiş
Lenovo’nun bunu bir ThinkPad ile başka bir ThinkPad’i debug etmek için bir yol olarak kullanıp kullanmadığını merak ediyorum
https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/secure-coding/intel-debug-technology.html
Güncelleme: Muhtemelen öyle
https://www.youtube.com/watch?v=ExUvQa_jB7c
Intel Firmware’i DCI ve USB 3.0 ile debug etmeyi anlatan bir video
“Ama Raspberry Pi ile uğraşmak zahmetli: kablo bağlama, kartı boot etme, shell’e girme vb.” kısmında muhtemelen USB OTG ayarlamak yeterli olurdu
Takıldığı aygıttan güç alacak şekilde ayarlanabilir, shell açıldıktan sonra bir script ile işlenebilirdi
Böylece SSH ile mount ayarları ya da komut çalıştırma yapılabilir, muhtemelen aygıt mount etme bile mümkün olurdu
Yine de kendi aygıtını anlamaya ve çekirdeği okumaya çalışma çabasını takdir etmek gerekir. Daha iyi yapmayı sürdürmek istediğimiz bir şey bu ve yaklaşım şu: ekipmanımızı kendimiz onaralım
Bunu bizzat denedim
İlk internet hacker kültürünü güçlü biçimde hatırlatıyor; nostalji uyandıracak kadar öyle. Gerçekten harika bir yazı
ESR hacker olmayı, Hacker News anlamındaki hacker’ı anlatırken tam da bu tip insanlardan söz ediyordu
Merak, sebat ve teknik yetkinliğin birleşimi son derece nadir ve çok etkileyici
Celeron N3350/Pentium N4200/Atom E3900 tabanlı bir sistemim var ve BIOS’ta xDCI anahtarı görünür durumda
Etkinleştirince birkaç seçenek daha çıkıyor ve Linux ile boot edince PCI aygıtı olarak
USB controller: Intel Corporation Device 5aaa (rev 0b)görünüyorAncak UDC aygıt düğümü ortaya çıkmıyor. Asıl yazıdan ipucu alıp biraz daha kurcalamam gerekecek gibi görünüyor