Hoe snel moet ik typen om USB 2.0 te toppen?

Pagina: 1
Acties:

Vraag


Acties:
  • +1 Henk 'm!

  • 5pë©ïàál_Tèkén
  • Registratie: April 2008
  • Laatst online: 14:41
L.S.,

Voor mijn vader heb ik een tijdje terug een nieuw systeem samen gesteld. Werkt allemaal top, geen klachten. Alleen wil vader lief per sé zijn muis en toetsenbord op USB 3.0 (blauw) aansluiten 'want dat is sneller'.
Als hij blij is ben ik blij - dikke prima. Maar nu wil ik het 'kloppend' hebben. Hoe snel moet ik met een toetsenbord typen om de USB 2.0 transfer rate te toppen?

Mijn aannames:

- 'for the sake of arguement' leert mijn vader opeens vloeiend Chinees waardoor hij alleen nog maar Chinees typt. Per getypt Chinees symbool wordt de maximale 4 byte gebruikt. (bron).
- de maximale doorvoer snelheid van USB 2.0 high speed (de grijze poorten die mijn vader niet wil gebruiken) is 480 mbit/sec. (bron).

4 byte = 32 bit. 480.000.000 / 32 = 15.000.000 toetsaanslagen per seconde.

Klopt mijn theoretische rekenoverzicht, of zie ik dingen over het hoofd? Dank voor uw tijd.

Team anti-scalp - wauw..

Beste antwoord (via 5pë©ïàál_Tèkén op 22-11-2020 05:09)


  • djunicron
  • Registratie: Januari 2009
  • Laatst online: 01-06 11:08

djunicron

*click-swoosh-thud*

Probleem zit niet in de bus, of dat nu USB 1.1, 2.0, 3.0 of 3.2 is...

Een Keyboard moet zich als HID gedragen. Human-input-device. En een keyboard zend naast dat het natuurlijk extra functies kan hebben, in principe alleen maar keycodes.

Ter referentie kan je veel leren uit wat b.v. goede en wat complexere firmwares hiervoor, waarvan een bijzonder populaire QMK is; zie hier alle keycodes:
https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes

Zoals je onder Hardware features ziet, kan je keyboard naast deze keycodes, diverse andere hardware aansturen. Je kunt dus rotary encoders en displays en LED arrays aansturen.

Normaliter kan je met 6KRO 6 keycodes tegelijk sturen. Indien je firmware goed in elkaar zit, kan je dan per poll 6 codes sturen. De grote van de code is irrelevant. Meeste keyboards, of dat nu USB 2.0 is of ouder / nieuwer, USB micro of C, etc. willen niet meer dan 50hz pollen. Je kunt dus technisch gezien 300 tekens per seconde sturen. Iemand die net een paar maanden blind kan typen, typt zo'n 50 woorden per minuut, oftewel zo'n 300 tekens per minuut. Dat kan je dan dus al in een seconde sturen. Dit kon al op USB1.0. De goedkoopste 8bit controllertjes uit het jaar 2000 konden dit al.

Nu kunnen veel betere chips 125hz aan. Daarnaast kan de firmware zoals QMK op dat soort setups ook NKRO doen. Oftewel, er is niet echt een limiet aan het aantal keycodes. Het protocol vereist echter een max van 1 per poll.

Een van meest flexibele en goede bordjes die je momenteel kant en klaar kunt krijgen voor je keyboard is de nice!nano: https://docs.nicekeyboards.com/#/nice!nano/

Deze kunnen bluemicro en ZMK draaien. Deze ondersteunen een 1000hz polling rate. Er zijn vast meerdere borden en controllers die het kunnen, geen idee. 632 polls over multidevice over Bleutooth kan overigens ook met deze set.

Je kunt met zo'n setup, die nog altijd geen USB3.0 is, IEDERE scanbare key sturen in NKRO modus:
Wikipedia: Rollover (key)

Dit betekend dat je gehele keyboard matrix kunt versturen.

https://npx3.wordpress.co...ilding-a-keyboard-part-4/

Op de Elite C 2.3 of de Proton-C of de Nice!nano, is gezien het aantal pins ter beschikking, wat op 24 uit komt, 144 keycodes versturen mogelijk. Maar goed, zonder het onzinnig te maken, een keyboard heeft normaal 6 rijen. Je kunt echter natuurlijk prima op een 120% model met een 7e rij werken. 7* (24-7) = 119 keys.

Je kunt dus met zo'n Elite-C v2 bordje, over USB 2.0 met 1000hz polling en NKRO 119.000 karakters per seconde versturen. Waarschijnlijk loop je tegen andere processing delays aan.

Deze specifieke ATMega32U4 die je op heel erg veel keyboards tegen komt, kan namelijk "maar" 48 maar per seconde z'n buffer versturen van 2500bytes. Ietsje meer, maar er zit wat extra zooi in:

Dat is dus de volgende hoeveelheid tekst, maar dan 48 maal, per seconde
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed bibendum libero turpis, sed eleifend elit pretium at. Proin sit amet faucibus elit. Nunc porttitor volutpat hendrerit. Praesent quis nulla vitae massa volutpat congue a vel leo. Aliquam facilisis dictum ipsum, vel efficitur purus elementum nec. Phasellus consectetur mattis eleifend. Sed tristique gravida volutpat. Curabitur in tortor at lacus aliquam ultricies. Morbi luctus sed ex sit amet facilisis. Donec vel dui eu nisl eleifend elementum et ut nunc.

Cras convallis, turpis ac tristique aliquam, leo tellus vehicula dolor, sed ullamcorper metus nunc sed nibh. Sed a sagittis augue, eget tristique neque. Praesent sit amet ligula eros. Suspendisse sagittis nec tortor et bibendum. Nunc neque ex, dignissim ac lacinia id, dignissim rhoncus odio. Nullam eget maximus nisi. Sed facilisis in nulla id dapibus. Curabitur feugiat libero non quam luctus fringilla. Proin feugiat vel metus vel vehicula.

Suspendisse potenti. Sed congue ligula ante, nec tempor sem ultrices semper. Nunc et nibh in ex porta vestibulum quis vel nibh. Proin id ultrices erat, et mollis lacus. Maecenas mauris velit, suscipit ac enim vel, vestibulum tempus dolor. Nulla vestibulum arcu sed nisl dictum convallis sit amet ut nisi. Etiam non massa condimentum, consequat est ut, commodo massa. Nam iaculis elit eu ornare aliquam.

Ut vel justo et ante bibendum ornare. Phasellus pharetra nibh nibh, a consectetur velit luctus id. Ut nec massa non dolor mattis suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis tristique magna ac eros malesuada, a efficitur mi ornare. Donec at ipsum eget orci imperdiet vestibulum. In at cursus mi. Suspendisse vitae pharetra lectus, id finibus urna.

Suspendisse potenti. Etiam rutrum, erat ac congue aliquam, sem ante tempor arcu, at blandit ante diam quis libero. Cras nibh augue, luctus sit amet gravida ut, bibendum quis elit. Quisque vel ligula vel est ullamcorper efficitur at ut elit. Suspendisse sed ante enim. Duis lacinia sed erat sed convallis. Nullam a nunc nec ex finibus pretium. Vestibulum pretium libero sed suscipit venenatis.

Donec ut justo venenatis, semper ante et, sollicitudin diam. Proin fringilla ultrices elit, laoreet lacinia sapien consequat id. Ut semper neque vel dolor congue congue. Quisque vitae tellus mauris. Morbi vitae dictum magna. Suspendisse tempus ligula viverra condimentum faucibus. Etiam nec felis lacinia, pellentesque diam ut, maximus leo. Nulla ut orci magna. Proin nam.
Generated 6 paragraphs, 383 words, 2500 bytes of Lorem Ipsum
Als je dit werkelijk zou halen, zou je 1.1 miljoen woorden per minuut kunnen typen. Dat is meer dan alle 66 boeken van de Bijbel, wat zo'n 800.000 woorden is in de standaard Nederlandse vertaling. IN 1 MINUUT!
Op USB2.0 8bit.

En daar mag dan nog 15mbit aan data voor een display, ARGB, of andere zooi langs.

Alle reacties


Acties:
  • 0 Henk 'm!

  • Accretion
  • Registratie: April 2014
  • Laatst online: 12:26

Accretion

⭐⭐⭐⭐⭐ (5/5)

Praktisch gezien kun je een heel document van honderden pagina's overzetten in luttele seconden.

Maar je kunt dit bestand niet in dezelfde seconden typen.

-

Echter, een punt wat nog belangrijker is, het toetsenbord zelf heeft geen blauwe connector (geen USB 3.0), de interne chip draait hoogstwaarschijnlijk 2.0, dus het heeft geen nut.

Wat wel nut heeft, is een toetsenbord dat fijn typt.
Maar "scan rare" en "N-key rollover" zijn veel interessanter dan UB 3.0.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 22-05 16:04
Dat je een Chinees karakter met 4-bytes kunt identificeren in een Unicode-codpage, staat volledig los van hoe een toetsenbord aan het OS laat weten wat er is ingetikt.
Als je dit dus echt bij benadering wilt bepalen, moet je kijken hoe HID-devices communiceren.
Kijk dan ook of een toetsenbord daadwerkelijk de maximale bussnelheid wel gebruikt ;)

Acties:
  • 0 Henk 'm!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

Ik denk dat je iets over het hoofd ziet, namelijk de pollingfrequentie van USB.

Het is niet zo dat een toetsenbord een buffertje heeft, daar in de aangeslagen toetsen opslaat en die doorstuurt naar de PC zodra het kan. Voor zo ver ik weet, checkt de computer bij het toetsenbord welke toetsen worden aangeslagen en word dat verwerkt door het OS en het programma wat de focus heeft.

Draai je windows en is het een mediatoets, dan zal windows eerst de mediatoets afhandelen en het signaal doorgeven aan programma's die dat kunnen opvangen. Normale toetsaanslagen gaan door naar het programma wat actief is. In jouw voorbeeld dus een textverwerker. Deze zal het in het document zetten en weergeven.

Terug naar de pollingrate. Wat er gebeurd is dat er word opgevraagd of er toetsen zijn aangeslagen. Dit gebeurd dus door het OS, of eigenlijk de CPU. Er is dus niet per se 1 standaard voor. ArchLinux lijkt standaard op 100 keer per seconde te zitten (of 100Hz). Aangenomen dat elke toetsaanslag of combinatie daarvan maar 1 teken oplevert (shift + letter is immers 1 letter maar dan als hoofdletter), kun je dus niet meer dan 100 tekens per minuut tikken. De pollingrate is afhankelijk van je systeem op te krikken, maar daar is je systeem dus gelimiteerd en de hoogste pollingrates voor USB die ik kan vinden zitten op 1000Hz, dus 1000 tekens per minuut of 4000 bytes. Dus lang niet de volle snelheid van USB2 of 3.

Overigens is de grap dat je juist beter geen USB kan gebruiken, maar PS/2. Je weet wel, die oude paarsige stekker. Die werkt namelijk net iets anders. Elke keer dat je iets typt word er een signaaltje naar de CPU gestuurd: "he, toets $X is ingedrukt" en de CPU moet het maar afhandelen, pronto. Dan word je (volgens mij) eerder belemmerd door de snelheid van de CPU en diens mogelijkheid om de toetsaanslag af te handelen en weer klaar te staan voor de volgende.

Acties:
  • 0 Henk 'm!

  • jeroen3
  • Registratie: Mei 2010
  • Nu online
Alleen USB Human Input Devices (HID) werken niet op de maximale bandbreedte. Verre van.

HID werkt maximaal met een 1 ms polling rate en 64 bytes per pakket.
Scancodes zijn typisch 16 bit, dus theoretisch max 32 karakters per milliseconde. Maar er zit nog wat meer onzin in die pakketjes, dus je verliest nog wat. Plus de meeste toetsenborden doen max 6 toetsen, dat is dan ook de grens in het maximum aantal knoppen tegelijk ingedrukt, dus 6000 karakters per seconde.

USB 3 of USB 2 maakt geen verschil, toetsenborden zijn namelijk USB 1.
Nu spelen sommige toetsenborden wel vals, door meerdere endpoints (virtuele usb apparaten) te gebruiken. Zodat je o.a. om die 6 toetsen tegelijk heen kan komen. Of voor schermpjes en RGB controllers enzo.

De reden dat er geen "USB 3.0" toetsenborden zijn is omdat het compleet zinloos is. Het zou het toetsenbord alleen maar incompatibel maken met oudere systemen en je UEFI/BIOS. En dat is ook ongemakkelijk.

Als je een USB 3.0 stekker wilt hebben op je toetsenbord, dan zit die daar omdat er een HUB in zit.
Of RGB wat meer energie vereist natuurlijk.

Hoe dit met bluetooth zit weet ik niet.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gropah schreef op zaterdag 21 november 2020 @ 23:52:


Terug naar de pollingrate. Wat er gebeurd is dat er word opgevraagd of er toetsen zijn aangeslagen. Dit gebeurd dus door het OS, of eigenlijk de CPU. Er is dus niet per se 1 standaard voor. ArchLinux lijkt standaard op 100 keer per seconde te zitten (of 100Hz). Aangenomen dat elke toetsaanslag of combinatie daarvan maar 1 teken oplevert (shift + letter is immers 1 letter maar dan als hoofdletter), kun je dus niet meer dan 100 tekens per minuut tikken.
Je bedoelt per seconde ;) 100Hz is 100 keer per seconde ;) en dat gaat verderop in je verhaal ook mis ;) En dan nog: 100Hz is eigenlijk "maar" 50 per seconde (je hebt immers een keydown +keyup ;) )
Maar goed dat is allemaal vrij abstract maar de vraag hoe dicht het bij de waarheid licht.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • Beste antwoord
  • +2 Henk 'm!

  • djunicron
  • Registratie: Januari 2009
  • Laatst online: 01-06 11:08

djunicron

*click-swoosh-thud*

Probleem zit niet in de bus, of dat nu USB 1.1, 2.0, 3.0 of 3.2 is...

Een Keyboard moet zich als HID gedragen. Human-input-device. En een keyboard zend naast dat het natuurlijk extra functies kan hebben, in principe alleen maar keycodes.

Ter referentie kan je veel leren uit wat b.v. goede en wat complexere firmwares hiervoor, waarvan een bijzonder populaire QMK is; zie hier alle keycodes:
https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes

Zoals je onder Hardware features ziet, kan je keyboard naast deze keycodes, diverse andere hardware aansturen. Je kunt dus rotary encoders en displays en LED arrays aansturen.

Normaliter kan je met 6KRO 6 keycodes tegelijk sturen. Indien je firmware goed in elkaar zit, kan je dan per poll 6 codes sturen. De grote van de code is irrelevant. Meeste keyboards, of dat nu USB 2.0 is of ouder / nieuwer, USB micro of C, etc. willen niet meer dan 50hz pollen. Je kunt dus technisch gezien 300 tekens per seconde sturen. Iemand die net een paar maanden blind kan typen, typt zo'n 50 woorden per minuut, oftewel zo'n 300 tekens per minuut. Dat kan je dan dus al in een seconde sturen. Dit kon al op USB1.0. De goedkoopste 8bit controllertjes uit het jaar 2000 konden dit al.

Nu kunnen veel betere chips 125hz aan. Daarnaast kan de firmware zoals QMK op dat soort setups ook NKRO doen. Oftewel, er is niet echt een limiet aan het aantal keycodes. Het protocol vereist echter een max van 1 per poll.

Een van meest flexibele en goede bordjes die je momenteel kant en klaar kunt krijgen voor je keyboard is de nice!nano: https://docs.nicekeyboards.com/#/nice!nano/

Deze kunnen bluemicro en ZMK draaien. Deze ondersteunen een 1000hz polling rate. Er zijn vast meerdere borden en controllers die het kunnen, geen idee. 632 polls over multidevice over Bleutooth kan overigens ook met deze set.

Je kunt met zo'n setup, die nog altijd geen USB3.0 is, IEDERE scanbare key sturen in NKRO modus:
Wikipedia: Rollover (key)

Dit betekend dat je gehele keyboard matrix kunt versturen.

https://npx3.wordpress.co...ilding-a-keyboard-part-4/

Op de Elite C 2.3 of de Proton-C of de Nice!nano, is gezien het aantal pins ter beschikking, wat op 24 uit komt, 144 keycodes versturen mogelijk. Maar goed, zonder het onzinnig te maken, een keyboard heeft normaal 6 rijen. Je kunt echter natuurlijk prima op een 120% model met een 7e rij werken. 7* (24-7) = 119 keys.

Je kunt dus met zo'n Elite-C v2 bordje, over USB 2.0 met 1000hz polling en NKRO 119.000 karakters per seconde versturen. Waarschijnlijk loop je tegen andere processing delays aan.

Deze specifieke ATMega32U4 die je op heel erg veel keyboards tegen komt, kan namelijk "maar" 48 maar per seconde z'n buffer versturen van 2500bytes. Ietsje meer, maar er zit wat extra zooi in:

Dat is dus de volgende hoeveelheid tekst, maar dan 48 maal, per seconde
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed bibendum libero turpis, sed eleifend elit pretium at. Proin sit amet faucibus elit. Nunc porttitor volutpat hendrerit. Praesent quis nulla vitae massa volutpat congue a vel leo. Aliquam facilisis dictum ipsum, vel efficitur purus elementum nec. Phasellus consectetur mattis eleifend. Sed tristique gravida volutpat. Curabitur in tortor at lacus aliquam ultricies. Morbi luctus sed ex sit amet facilisis. Donec vel dui eu nisl eleifend elementum et ut nunc.

Cras convallis, turpis ac tristique aliquam, leo tellus vehicula dolor, sed ullamcorper metus nunc sed nibh. Sed a sagittis augue, eget tristique neque. Praesent sit amet ligula eros. Suspendisse sagittis nec tortor et bibendum. Nunc neque ex, dignissim ac lacinia id, dignissim rhoncus odio. Nullam eget maximus nisi. Sed facilisis in nulla id dapibus. Curabitur feugiat libero non quam luctus fringilla. Proin feugiat vel metus vel vehicula.

Suspendisse potenti. Sed congue ligula ante, nec tempor sem ultrices semper. Nunc et nibh in ex porta vestibulum quis vel nibh. Proin id ultrices erat, et mollis lacus. Maecenas mauris velit, suscipit ac enim vel, vestibulum tempus dolor. Nulla vestibulum arcu sed nisl dictum convallis sit amet ut nisi. Etiam non massa condimentum, consequat est ut, commodo massa. Nam iaculis elit eu ornare aliquam.

Ut vel justo et ante bibendum ornare. Phasellus pharetra nibh nibh, a consectetur velit luctus id. Ut nec massa non dolor mattis suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis tristique magna ac eros malesuada, a efficitur mi ornare. Donec at ipsum eget orci imperdiet vestibulum. In at cursus mi. Suspendisse vitae pharetra lectus, id finibus urna.

Suspendisse potenti. Etiam rutrum, erat ac congue aliquam, sem ante tempor arcu, at blandit ante diam quis libero. Cras nibh augue, luctus sit amet gravida ut, bibendum quis elit. Quisque vel ligula vel est ullamcorper efficitur at ut elit. Suspendisse sed ante enim. Duis lacinia sed erat sed convallis. Nullam a nunc nec ex finibus pretium. Vestibulum pretium libero sed suscipit venenatis.

Donec ut justo venenatis, semper ante et, sollicitudin diam. Proin fringilla ultrices elit, laoreet lacinia sapien consequat id. Ut semper neque vel dolor congue congue. Quisque vitae tellus mauris. Morbi vitae dictum magna. Suspendisse tempus ligula viverra condimentum faucibus. Etiam nec felis lacinia, pellentesque diam ut, maximus leo. Nulla ut orci magna. Proin nam.
Generated 6 paragraphs, 383 words, 2500 bytes of Lorem Ipsum
Als je dit werkelijk zou halen, zou je 1.1 miljoen woorden per minuut kunnen typen. Dat is meer dan alle 66 boeken van de Bijbel, wat zo'n 800.000 woorden is in de standaard Nederlandse vertaling. IN 1 MINUUT!
Op USB2.0 8bit.

En daar mag dan nog 15mbit aan data voor een display, ARGB, of andere zooi langs.
Pagina: 1