Compatible ChromeOS - Spécification du microphone USB v1.2

Version : 1.2.1
Dernière mise à jour : 2024-06-21

Légende

Verbe du produit Action de développement
"MUST" Exigence produit obligatoire
"SHOULD" Recommandation facultative
"MAY" Souhaitable

Présentation

Ce document décrit les exigences auxquelles un micro USB compatible avec ChromeOS doit répondre. Cette spécification ne concerne pas les produits WWCB, ni les produits conçus et certifiés avec un Chromebook.

USB

Sécurité

Dongle sans fil 2,4 GHz

  • L'appareil sans fil 2,4 GHz ne s'associe automatiquement qu'au récepteur (dongle) fourni dans la boîte.
  • Une action de l'utilisateur (sur l'appareil ou via une application) est requise pour associer le casque à un autre récepteur ou pour associer un nouveau casque à un récepteur existant.
  • Si une application est nécessaire pour modifier l'association du casque/récepteur, elle doit s'exécuter sur ChromeOS, par exemple via une extension. L'application peut également être une application Web utilisant WebUSB/WebHID.
  • Si l'association est implémentée via une extension, celle-ci ne doit uniquement avoir accès aux ports USB. Les scripts de contenu sont explicitement interdits.

Micrologiciel et connecteur

  • Le casque doit être déclaré comme un appareil audio avec un descripteur d'interface audio (0x01) correct.
    • Un descripteur correspondant doit exister pour les terminaux d'entrée et de sortie.
      • Il est recommandé de signaler le type de terminal USB Audio Class (UAC).
  • Si elle comporte un bouton, elle doit être déclarée comme un HID.
  • Le casque doit répondre aux exigences WWCB concernant le micrologiciel et le connecteur.

Logiciel

Format

Veuillez consulter Format audio.

Pour que l'appareil dispose à la fois d'un descripteur d'interface audio d'entrée et de sortie.

  • Exemple de descripteur d'interface audio

    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
    

Si les taux d'échantillonnage de l'entrée et de la sortie sont différents, l'appareil doit être capable de prendre en charge la lecture et la capture à des taux d'échantillonnage différents en même temps. Sinon, l'appareil doit refléter la même valeur dans le descripteur d'interface AudioStreaming -> tSamFreq.

  • Exemple de taux d'échantillonnage de sortie audio USB à 48 kHz

    AudioStreaming Interface Descriptor:
      bLength                11
      bDescriptorType        36
      bDescriptorSubtype      2 (FORMAT_TYPE)
      bFormatType             1 (FORMAT_TYPE_I)
      bNrChannels             2
      bSubframeSize           2
      bBitResolution         16
      bSamFreqType            1 Discrete
      tSamFreq[ 0]        48000
    Endpoint Descriptor:
      bLength                 9
      bDescriptorType         5
      bEndpointAddress     0x02  EP 2 OUT(Output)
      bmAttributes            9
        Transfer Type            Isochronous
        Synch Type               Adaptive
        Usage Type               Data
    
  • Exemple de taux d'échantillonnage d'entrée audio USB de 44,1 kHz

    AudioStreaming Interface Descriptor:
      bLength                11
      bDescriptorType        36
      bDescriptorSubtype      2 (FORMAT_TYPE)
      bFormatType             1 (FORMAT_TYPE_I)
      bNrChannels             2
      bSubframeSize           2
      bBitResolution         16
      bSamFreqType            1 Discrete
      tSamFreq[ 0]        44100
    Endpoint Descriptor:
      bLength                 9
      bDescriptorType         5
      bEndpointAddress     0x81  EP 1 In(Input)
      bmAttributes            9
        Transfer Type            Isochronous
        Synch Type               Adaptive
        Usage Type               Data
    

Codes HID

  • Pour chaque événement HID, il ne peut transmettre qu'un seul événement à la fois.
  • Le code d'événement correct et le code d'événement correspondant doivent être reçus lorsque l'utilisateur appuie sur le bouton.
    • Par exemple, augmentez le volume. evtest ne peut observer qu'un seul événement d'augmentation du volume et le code doit être KEY_VOLUME_UP.
  • S'il existe une interface conçue pour fournir les fonctionnalités suivantes, le périphérique USB doit être compatible avec l'émission ou la réception des événements HID correspondants, conformément aux spécifications HID de USB.org.
Page de consommateur (0x0c)
Nom de la clé ID d'utilisation HID Type d'utilisation
KEY_PLAY 0x0b0 OOC
KEY_PAUSE 0x0b1 OOC
KEY_NEXTSONG 0x0b5 OSC
KEY_PREVIOUSSONG 0x0b6 OSC
KEY_STOPCD 0x0b7 OSC
KEY_PLAYPAUSE 0x0cd OSC
KEY_PREVIOUSSONG 0x0b6 OSC
KEY_MUTE 0x0e2 OOC
KEY_VOLUMEUP 0x0e9 RTC
KEY_VOLUMEDOWN 0x0ea RTC
Page de téléphonie (0x0b)
Nom de la clé ID d'utilisation HID Type d'utilisation
Bouton du combiné 0x20 OOC
Sonnerie 0x9e OOC
Page LED (0x08)
Nom de la clé ID d'utilisation HID Type d'utilisation
Couper le son 0x09 OOC
Décroché 0x17 OOC
Faire sonner 0x18 OOC

Détection de la prise

Si un périphérique USB n'est pas compatible avec la classe audio USB (UAC), il affichera toujours un nœud de sortie dans la barre d'état système de ChromeOS. Toutefois, si le périphérique USB est compatible avec UAC, le système pourra détecter correctement une prise audio de 3,5 mm lorsque le périphérique est inséré.

  • CrOS doit utiliser la détection de présence pour les connecteurs 3,5 mm
    • La détection d'insertion doit être effectuée par l'un des éléments suivants :

Format audio

Lecture Enregistrement
Taux d'échantillonnage ≥ 16 kHz ≥ 16 kHz
Format S16_LE S16_LE
  • Le numéro et la configuration de la chaîne doivent être corrects.
  • Tous les taux d'échantillonnage déclarés comme compatibles par le casque doivent fonctionner correctement.
    • L'écart entre le taux mesuré et le taux d'échantillonnage doit être inférieur ou égal à 0,1 %.
    • L'erreur-type pour la régression linéaire du taux mesuré doit être inférieure à 30.
  • Le casque doit être compatible avec la lecture ou la capture à différentes fréquences d'échantillonnage qu'il affirme prendre en charge.

    Par exemple, vous pouvez lire de l'audio à une fréquence inférieure à 44,1 kHz tout en capturant simultanément la voix à une fréquence inférieure à 48 kHz.

    • Sinon, ChromeOS doit ajouter un fichier de configuration spécifique pour l'empêcher côté système.

Qualité audio

Chemin de capture : désactiver le son

  • Si une interface permet aux utilisateurs de couper le son de l'appareil audio, elle doit
    • Conservez l'état de mise en sourdine d'une manière qui n'est pas affectée par :
      • Ouvrir et fermer l'appareil
      • Vous passez à un autre périphérique d'entrée.
  • Si l'utilisateur appuie sur le bouton de désactivation du micro du casque ou de ChromeOS, l'état de désactivation du micro doit changer.
  • Si l'état du micro change, l'indicateur d'état du micro (par exemple, le voyant) sur le casque doit changer.

Latence audio

Latence

  • Latence de sortie
    • La lecture audio doit commencer dans un délai de 500 ms maximum après une action de l'utilisateur qui lance la lecture.
      • Le fabricant de l'appareil peut demander une dérogation s'il peut prouver qu'aucun écho n'est introduit lorsqu'il ne respecte pas cette exigence.

Synchronisation audio/vidéo

  • La lecture audio doit être synchronisée avec la lecture vidéo. La lecture audio peut être en avance sur la vidéo de 25 ms maximum ou en retard de 95 ms maximum.

Historique des révisions

Date Version Remarques
2024-06-21 1.2.1 Spécifications compatibles avec ChromeOS obtenues. Publication initiale du site partenaire.
2022-09-01 1.2 Spécification WWCB associée v1.2
2022-02-05 1.1 Spécification WWCB associée v1.1
2021-01-12 1.0 Spécification WWCB associée créée.