USB: erinevus redaktsioonide vahel

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti
 
(ei näidata sama kasutaja 16 vahepealset redaktsiooni)
5. rida: 5. rida:
 
===Tööpõhimõte===
 
===Tööpõhimõte===
   
  +
Väited
TODO
 
  +
  +
* USB host interface controller tegeleb transpordiga (mitte translationiga nagu nt achi kontroller, mis tõlgib achi protokolli käigult sata protokolliks)
  +
* USB device controller
  +
* USB composite device (nt Yubikey)
   
 
Klassid
 
Klassid
19. rida: 23. rida:
   
 
Kusjuures CDC on ülemklass, mille alla kuuluvad WCC, NCM ja ACM. CDC alla otse ei kuulu seadmeid.
 
Kusjuures CDC on ülemklass, mille alla kuuluvad WCC, NCM ja ACM. CDC alla otse ei kuulu seadmeid.
  +
  +
Üldiselt toimub CPU ja seadme vaheline suhtlemine kahe kihiliselt
  +
  +
* cpu ja 'host controller interface' vahel toimub hci protokolli abil suhtlemine
  +
* cpu ja 'device controller interface' vahel toimub spetsiifilise protokolli abil suhtlemine (nt usb-storage puhul msc)
  +
* hci protokolli sisse on kapseldatud msc protokolli liiklus
  +
* host controlleri ülesandeks on usb seadmete nimekirja koostamine, seadmete avastamine ja unustamine, adresserimine, nö liikluse ruutimine jms
  +
  +
====storage====
  +
  +
TODO
  +
  +
====klaviatuur ja hiir====
  +
  +
TODO
  +
  +
====wired network====
  +
  +
TODO
  +
  +
====wifi network====
  +
  +
Väited
  +
  +
* tavaliselt ei realiseerita wifi seadet usb seadmena kuna wifi kasutab suhteliselt suurt kiirust, nt läptop integreeritud wifi seade on pigem pcie seade
  +
* wifi kasutusjuhule on iseloomulik, et liikluse krüptimine toimub allpool ethernet kihti (erinevalt wired võrgust kus on kombeks kasutada nt ipsec protokolli kus toimub krüptimine ülevalpoolt ethernet kihti, nt esp/ah protokollidega)
  +
* wifi võrgu puhul ei ole usb universaalne mõtlmine realiseeritud sellise põhimõttekindlusega nagu nt webcam puhul - st device kontrolleriga tegelevad pigem spetsiifilised draiverid
  +
  +
====bluetooth network====
  +
  +
Väited
  +
  +
* tavaliselt realiseeritakse bluetooth seade wifi seadmena kuna bluetooth kasutab suhteliselt väikest kiirust, nt läptop puhul
  +
  +
<pre>
  +
root@ubu2110:~# lsusb -t
  +
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
  +
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
  +
|__ Port 6: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
  +
|__ Port 7: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
  +
|__ Port 7: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
  +
|__ Port 8: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
  +
|__ Port 8: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
  +
...
  +
</pre>
  +
  +
kus
  +
  +
* dev 3 ja if 0 - control plane
  +
* dev 3 ja if 1 - data plane
  +
* 12M ja 480M väljendavad ühenduse kiirust
  +
  +
====smart card====
  +
  +
TODO
  +
  +
====webcam====
  +
  +
TODO
  +
  +
<pre>
  +
root@ubu2110:~# lsusb -t
  +
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
  +
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
  +
|__ Port 6: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
  +
|__ Port 7: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
  +
|__ Port 7: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
  +
|__ Port 8: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
  +
|__ Port 8: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
  +
...
  +
</pre>
  +
  +
kus
  +
  +
* dev 4 ja if 0 - control plane
  +
* dev 4 ja if 1 - data plane
  +
  +
====serial dongle====
  +
  +
TODO
  +
  +
====yubikey====
  +
  +
TODO
   
 
===Misc===
 
===Misc===
30. rida: 118. rida:
 
root@ubu2110:~#
 
root@ubu2110:~#
 
</pre>
 
</pre>
  +
  +
Tagasi laadimine, nt
  +
  +
<pre>
  +
root@ubu2110:~# modprobe xhci_pci
  +
root@ubu2110:~# lsmod | grep usb
  +
usbnet 53248 1 cdc_ether
  +
usbhid 65536 0
  +
btusb 61440 0
  +
btrtl 24576 1 btusb
  +
hid 151552 2 usbhid,hid_generic
  +
mii 16384 2 usbnet,r8152
  +
btbcm 24576 1 btusb
  +
btintel 40960 1 btusb
  +
bluetooth 671744 43 btrtl,btintel,btbcm,bnep,btusb,rfcomm
  +
  +
root@ubu2110:~# lsusb -t
  +
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
  +
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
  +
|__ Port 2: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
  +
|__ Port 4: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
  +
|__ Port 6: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 12M
  +
|__ Port 7: Dev 5, If 0, Class=Wireless, Driver=btusb, 12M
  +
|__ Port 7: Dev 5, If 1, Class=Wireless, Driver=btusb, 12M
  +
|__ Port 8: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
  +
|__ Port 8: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
  +
|__ Port 9: Dev 7, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M
  +
  +
root@ubu2110:~# usb-devices
  +
  +
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh=16
  +
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
  +
P: Vendor=1d6b ProdID=0002 Rev=05.15
  +
S: Manufacturer=Linux 5.15.0-140-generic xhci-hcd
  +
S: Product=xHCI Host Controller
  +
S: SerialNumber=0000:00:14.0
  +
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
  +
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
  +
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
  +
  +
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
  +
D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 2
  +
P: Vendor=0bda ProdID=8152 Rev=20.00
  +
S: Manufacturer=Realtek
  +
S: Product=USB 10/100 LAN
  +
S: SerialNumber=00E04C31A33D
  +
C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
  +
I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=00 Driver=r8152
  +
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  +
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
  +
E: Ad=83(I) Atr=03(Int.) MxPS= 2 Ivl=16ms
  +
  +
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 8
  +
D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
  +
P: Vendor=1d6b ProdID=0003 Rev=05.15
  +
S: Manufacturer=Linux 5.15.0-140-generic xhci-hcd
  +
S: Product=xHCI Host Controller
  +
S: SerialNumber=0000:00:14.0
  +
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
  +
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
  +
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
  +
</pre>
  +
  +
===USB liikluse debugimine===
  +
  +
TODO
  +
  +
# modprobe usbmon
  +
  +
# ls /sys/kernel/debug/usb/usbmon/
  +
  +
# tcpdump -D
  +
...
  +
  +
$ wireshark
  +
  +
TODO
   
 
===Kasulikud lisamaterjalid===
 
===Kasulikud lisamaterjalid===

Viimane redaktsioon: 21. september 2025, kell 17:29

Sissejuhatus

TODO

Tööpõhimõte

Väited

  • USB host interface controller tegeleb transpordiga (mitte translationiga nagu nt achi kontroller, mis tõlgib achi protokolli käigult sata protokolliks)
  • USB device controller
  • USB composite device (nt Yubikey)

Klassid

  • andmesalvestus (storage) - MSC (Mass Storage Class)
  • serial port dongle - ACM (Abstract Control Model)
  • klaviatuur, hiir - HID (Human Interface Device Class)
  • wired network - NCM (Network Control Model)
  • wifi network - WCC (Wireless Controller Class)
  • bluetooth network - WCC (Wireless Controller Class)
  • smart card - CCID (Chip Card Interface Class)
  • webcam - UVC (Video Class)

Kusjuures CDC on ülemklass, mille alla kuuluvad WCC, NCM ja ACM. CDC alla otse ei kuulu seadmeid.

Üldiselt toimub CPU ja seadme vaheline suhtlemine kahe kihiliselt

  • cpu ja 'host controller interface' vahel toimub hci protokolli abil suhtlemine
  • cpu ja 'device controller interface' vahel toimub spetsiifilise protokolli abil suhtlemine (nt usb-storage puhul msc)
  • hci protokolli sisse on kapseldatud msc protokolli liiklus
  • host controlleri ülesandeks on usb seadmete nimekirja koostamine, seadmete avastamine ja unustamine, adresserimine, nö liikluse ruutimine jms

storage

TODO

klaviatuur ja hiir

TODO

wired network

TODO

wifi network

Väited

  • tavaliselt ei realiseerita wifi seadet usb seadmena kuna wifi kasutab suhteliselt suurt kiirust, nt läptop integreeritud wifi seade on pigem pcie seade
  • wifi kasutusjuhule on iseloomulik, et liikluse krüptimine toimub allpool ethernet kihti (erinevalt wired võrgust kus on kombeks kasutada nt ipsec protokolli kus toimub krüptimine ülevalpoolt ethernet kihti, nt esp/ah protokollidega)
  • wifi võrgu puhul ei ole usb universaalne mõtlmine realiseeritud sellise põhimõttekindlusega nagu nt webcam puhul - st device kontrolleriga tegelevad pigem spetsiifilised draiverid

bluetooth network

Väited

  • tavaliselt realiseeritakse bluetooth seade wifi seadmena kuna bluetooth kasutab suhteliselt väikest kiirust, nt läptop puhul
root@ubu2110:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
    |__ Port 6: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
    |__ Port 7: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 8: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 8: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
...

kus

  • dev 3 ja if 0 - control plane
  • dev 3 ja if 1 - data plane
  • 12M ja 480M väljendavad ühenduse kiirust

smart card

TODO

webcam

TODO

root@ubu2110:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
    |__ Port 6: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
    |__ Port 7: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 8: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 8: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
...

kus

  • dev 4 ja if 0 - control plane
  • dev 4 ja if 1 - data plane

serial dongle

TODO

yubikey

TODO

Misc

Peale arvutis usb osakonna nö väljalülitamist

root@ubu2110:~# lsusb -t
root@ubu2110:~# usb-devices
root@ubu2110:~# lsmod | grep usb
root@ubu2110:~#

Tagasi laadimine, nt

root@ubu2110:~# modprobe xhci_pci
root@ubu2110:~# lsmod | grep usb
usbnet                 53248  1 cdc_ether
usbhid                 65536  0
btusb                  61440  0
btrtl                  24576  1 btusb
hid                   151552  2 usbhid,hid_generic
mii                    16384  2 usbnet,r8152
btbcm                  24576  1 btusb
btintel                40960  1 btusb
bluetooth             671744  43 btrtl,btintel,btbcm,bnep,btusb,rfcomm

root@ubu2110:~# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
    |__ Port 2: Dev 2, If 0, Class=Vendor Specific Class, Driver=r8152, 480M
    |__ Port 4: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 6: Dev 4, If 0, Class=Vendor Specific Class, Driver=, 12M
    |__ Port 7: Dev 5, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 5, If 1, Class=Wireless, Driver=btusb, 12M
    |__ Port 8: Dev 6, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 8: Dev 6, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 9: Dev 7, If 0, Class=Chip/SmartCard, Driver=usbfs, 12M

root@ubu2110:~# usb-devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh=16
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=05.15
S:  Manufacturer=Linux 5.15.0-140-generic xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=480 MxCh= 0
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  2
P:  Vendor=0bda ProdID=8152 Rev=20.00
S:  Manufacturer=Realtek
S:  Product=USB 10/100 LAN
S:  SerialNumber=00E04C31A33D
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=00 Driver=r8152
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=   2 Ivl=16ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 8
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev=05.15
S:  Manufacturer=Linux 5.15.0-140-generic xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

USB liikluse debugimine

TODO

# modprobe usbmon
# ls /sys/kernel/debug/usb/usbmon/
# tcpdump -D
...
$ wireshark

TODO

Kasulikud lisamaterjalid

  • TODO