back to index

USB sound cards
      ALC4040
Ultrasound imaging data
GPIO read on CMedia
CM108AH
CM6202
CM6533, Axagon ADA-17 mods
      pinout
      digital microphone
      SPDIF
      usb ifce
      audio output
      mic input
      USB event device
            /proc/bus/input/devices
      events processing
      evtest
            gpio0
                  down
                  up
            gpio1
                  down
                  up
            gpio2
                  down
                  up
            gpio3
                  down
                  up
            gpio10
                  down
                  up
            gpio11
                  down
                  up
            gpio0, stripped
                  down
                  up
            gpio1
                  down
                  up
            gpio2
                  down
                  up
            gpio3
                  down
                  up
            gpio10
                  down
                  up
            gpio11
                  down
                  up
            gpio0, stripped to scan only
                  down
                  up
            gpio1
                  down
                  up
            gpio2
                  down
                  up
            gpio3
                  down
                  up
            gpio10
                  down
                  up
            gpio11
                  down
                  up
            gpio0, stripped of micmute
                  down
                  up
            gpio1
                  down
                  up
            gpio2
                  down
                  up
            gpio3
                  down
                  up
            gpio10
                  down
                  up
            gpio11
                  down
                  up
      hidraw
            audio jack detection
      HID packets format
            HID interrupt in, HID get input report
            HID set output report
      HID tools
      HID descriptor
      ad-hoc test board
      linux/pulseaudio
      USB HID descriptor
      USB HID/vendor requests
headset connector
            phones, computers
            camcorders
            audio/video
            phone headsets
            various
      android accessory buttons
      color code for motherboard/soundcard jacks

USB sound cards

[ref]

CMedia pin GPIO:
43   gpio1
11   gpio2  not at CM108AH, CM108B
13   gpio3  easily accessible (end of line), most popular for PTT mods
15   gpio4
following only for CM109,CM119,CM119A,CM119B
16   gpio5
17   gpio6
20   gpio7
22   gpio8

https://www.semiconductorstore.com/pages/asp/DownloadDirect.asp?sid=1555512959916
                   boost input
   type      dac adc mic line spi i2c spdif i2s hda gpio headph.amp MCU               speed     chip    firmware
!  HS-100B     2   1   y        y                                 y              44.1/48,16   lqfp48       93c46  HS
   CM102A+/S+  2                        out            1  AB0.5W/4ohm            44.1/48,16 pdip/soic18                     SPK  XEAR
!  CM108B      2   1   y        y       out   y        3          y              44.1/48,16   lqfp48       93c46  HS             XEAR
   CM118B      2   2   y        y   y   out   y        3          y              44.1/48,16   lqfp48       93c46  HS SS MIC      for headsets
   CM119BN     2   1   y        y   y   out            8          y              44.1/48,16    qfn48       93c46  HS             for headsets
   CM6206/LX 8/6   2        y   y       i/o            1                         44.1/48,16   lqfp48       93c46  HS SS          XEAR, dolby
   CM6210      3   2                y   out   y   y    7              y          44.1/48,16   lqfp80   par.flash  HS
   CM6317A         2                y                  8                           8..48,16   lqfp48       24c02        MIC
   CM6327A         1                y                  8                           8..48,16   lqfp48       24c02        MIC
   CM6400      2   2                y                  8                           8..48,16   lqfp48       24c02        MIC
   CM6531N     2   2        y   y   y   i/o   y       12              y            8..96,24    qfn48  512k flash     SS MIC
!  CM6533(N)   2   2            y   y   out           12          y   y            8..96,24 lqfp/qfn48 32k flash  HS SS MIC      5-band param.eq
!  CM6533DH    2   2            y   y   out           12          y   y            8..96,24   lqfp48   32k flash  HS             5-band param.eq
!  CM6533X1    2   2            y   y   out           12          y   y            8..96,24   lqfp48   32k flash  HS             5-band param.eq
   CM6535      2   2        y   y   y   i/o   y       12          y   y            8..96,24   lqfp64  512k flash     SS MIC
   CM6536N     2   2   y    y   y   y         y       16          y   y            8..96,24  aqfn104  512k flash  HS    MIC      5-band param.eq
   CM6571      2   2        y       y   out   y       15          y   y            8..96,24   vqfp88       24c02  HS SS MIC SPK
   CM6610A     2   2        y       y   i/o       y   16                   44.1,48,..192,24   lqfp64   par.flash  HS SS MIC
   CM6620A     2   2        y       y   i/o       y    6              y        44.1..192,24   lqfp64   par.flash     SS
   CM6631A     8   2              M+S   i/o   y   y    9              y        44.1..353,32  lqfp100   par.flash     SS MIC
   CM6632A   8+2 2+2              M+S   i/o   y   y    9              y        44.1..353,32  lqfp100   par.flash     SS
   CM6640      2   3   y    y       y                  2          y   y    44.1,48,..192,24  wlcsp30     16k otp  HS
   CM6642      2   3   y    y   y   y   out           12          y   y    44.1,48,..192,24    qfn48     16k otp  HS SS MIC
   CM6645      2   3   y    y   y   y   out   y       12          y   y        44.1..192,24    qfn48     16k otp     SS
   CM6645X1    2   3   y    y   y   y   out   y       12          y   y    44.1,48,..192,24    qfn48     16k otp  HS             XEAR, mic array

HS=headset
SS=soundstation
MIC=microphone
SPK=speaker
! = common in cheapest sector
24cXX, 93Cxx = config EEPROMs for the chip, see datasheet for layout

http://www.ti.com/audio-ic/converters/usb/products.html (partial)
                   boost input
   type      dac adc mic line spi i2c spdif i2s hda gpio headph.amp MCU               speed     chip    firmware
   PCM2706C    0   0            y       out                                           48,16
   PCM2707C    0   0            y       out                                           48,16
   PCM2704C    0   0                    out                                           48,16
   PCM2705C    0   0            y       out                                           48,16
   PCM2706     0   0            y       out                                           48,16
   PCM2900C    2   2                                                                  48,16
   PCM2901     2   2                                                                  48,16
   PCM2902C    2   2                    i/o                                           48,16
   PCM2903C    2   2                    i/o                                           48,16
   PCM2904     2   2                                                                  48,16
   PCM2906C    2   2                    i/o            3                           8..48,16  ssop28
   PCM2912A    2   1                                                                  48,16


Via (partial)
                boost input
   type      dac adc mic line spi i2c spdif i2s hda gpio headph.amp MCU               speed     chip    firmware
   VT1620A
   VT1630A     2   2                                                                ..96,24
   VT1728A
   VT1729A
   VT1730      6   5                    I/O                                        ..384,32  5in,6out streams, 8xI2S IN, 8xI2S OUT, 
   VT1731
   VT1736

3system
                   boost input
   type      dac adc mic line spi i2c spdif i2s hda gpio headph.amp MCU               speed     chip    firmware
   SSS1629     2   2   ?          M/S   I/O   y        3          y   ?            8..48,16  lqfp48,64  24C02..16    IR remote, 5-band eq

Realtek
                   boost input
   type      dac adc mic line spi i2c spdif i2s hda gpio headph.amp MCU               speed     chip    firmware
   ALC4040     2   2   ?    ?   ?   ?     ?   y                   y   ?  ..192,24 out,..96,24 in  qfn48,csp28   Tensilica USB Audio Core    
   ALC5662     2   1   ?                                          y   ?    192,32               qfn48      like ALC5663, only chip form differs   [ref]
   ALC5663     2   1   ?                                          y   ?    192,32              wlcsp56     inline buttons for Android Wired Audio Headset Specification v1.1, intelligent headphones detection

usbid 0bda:481a

HS-100:   Axagon ADA-10   200czk@alza
VT1630A:  Axagon ADA-15
!!!CM6533:   Axagon ADA-17   240czk@alza    96kHz/24bit,2ch
CM6533:   UGREEN Audio Sound Card Adapter USB 2.0 Channel 5.1 3D Virtual For Laptop PC - ebay $10
CM6206:   Axagon ADA-71   800czk@alza    48kHz/16bit,6-8ch
SSS1629:  Ugreen USB Sound Card External Audio Adapter 3.5mm Stereo for Headset Mic PS4 - ebay $8, large volume wheel, 3 3.5mm jacks on bottom, mute/mic buttons on top

GL3520/CM100B:  Ugreen USB Sound Card +3 Port USB 3.0 Hub Adapter Fr Macbook PC Laptop Mac Mini - ebay $13, 2 jacks
ALC4040:  Ugreen USB Sound Card External Converter USB Audio Adapter 3.5mm for Headset PS4 - ebay $12, 1 trrs jack, 192k/24b







ALC4040

Realtek
usbid 0bda:481a
https://tinkerboarding.co.uk/forum/thread-244.html
https://www.wpgholdings.com/yosung/news_detail/zhtw/program/21388

   Interface Descriptor:
       bEndpointAddress     0x87  EP 7 IN
   Interface Descriptor:
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]         8000
       bEndpointAddress     0x81  EP 1 IN
   Interface Descriptor:
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        44100
       bEndpointAddress     0x83  EP 3 IN
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        44100
       bEndpointAddress     0x83  EP 3 IN
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        48000
       bEndpointAddress     0x83  EP 3 IN
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        48000
       bEndpointAddress     0x83  EP 3 IN
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        96000
       bEndpointAddress     0x83  EP 3 IN
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        96000
       bEndpointAddress     0x83  EP 3 IN
   Interface Descriptor:
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]         8000
       bEndpointAddress     0x04  EP 4 OUT
   Interface Descriptor:
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        44100
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        44100
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        48000
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        48000
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        96000
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        96000
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]       176400
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]       176400
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]       192000
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]       192000
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        48000
       bEndpointAddress     0x05  EP 5 OUT
   Interface Descriptor:
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        44100
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        44100
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        48000
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        48000
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]        96000
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]        96000
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]       176400
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]       176400
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         16
       tSamFreq[ 0]       192000
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bBitResolution         24
       tSamFreq[ 0]       192000
       bEndpointAddress     0x06  EP 6 OUT
   Interface Descriptor:
       bEndpointAddress     0x88  EP 8 IN



Ultrasound imaging data

                                 distance per sample [mm] (ideal)
material      speed of sound      48kHz   96kHz   192kHz     1MHz  2.7MHz  5MHz
    Rubber          60 m/s         1.25   0.625   0.313      0.06   0.02   0.01
 Air at 20 °C      343 m/s         7.15   3.57    1.79       0.34   0.13   0.07
 Air at 40 °C      355 m/s         7.40   3.70    1.85       0.36   0.13   0.07
     Lead         1210 m/s        25.2   12.6     6.3        1.21   0.45   0.24
     Gold         3240 m/s        67.5   33.8    16.9        3.24   1.20   0.65
     Glass        4540 m/s        94.6   47.3    23.7        4.54   1.68   0.91
    Copper        4600 m/s        95.8   47.9    24.0        4.60   1.70   0.92
   Aluminum       6320 m/s       132     66.0    33.0        6.32   2.34   1.26



GPIO read on CMedia

Q15: 	How to detect GPIO from USB Host?

1. Use Set report out command( 21 09 01 02 03 00 10 00) to send 16 Byte data
01 00 00 00 00 48 01 0C 00 00 00 00 00 00 00 00
01 00 00 00 00 A5 01 1D 00 00 00 00 00 00 00 00
01 00 00 00 00 FF 01 4B 00 00 00 00 00 00 00 00

2. Read key states from End point 7 (Byte 8) :
Bit 0: GPIO1
Bit 1: GPIO2
Bit 2: GPIO3
Bit 3: GPIO4
Bit 6: GPIO6
Bit 7: GPIO7

3. The key states can also read from get report feature command((A1 01 01 01 03 00 10 00)



CM108AH

https://www.cmedia.com.tw/support/faq
"Mode" pin: always playback, recording only when Mode == L ("Headset"), playback only when Mode == H ("Speaker")
"Mixer" pin: enables presence of microphone-direct-to-output path in the mixer


CM6202

stereo microphone input, needs diodes on MIC BIAS output to avoid crosstalk



CM6533, Axagon ADA-17 mods


pinout

 pwr out, no drive AV36_DAR  ------------------.   .------------------  LOUTR       line out right
(headph jack detect) gpio11  ---------------.  |   |  .---------------  AGND_DAR
(mic jack detect)    gpio10  ------------.  |  |   |  |  .------------  LOCOM       line out common reference for capless drive, float if not used
(rec clip LED)        gpio9  ---------.  |  |  |   |  |  |  .---------  AGND_DAL
(EQ select 2)         gpio8  ------.  |  |  |  |   |  |  |  |  .------  LOUTL       line out left
tristate output     SPDIF_O  ---.  |  |  |  |  |   |  |  |  |  |  .---  AV36_DAL    ADC left power out, no drive
                                36 35 34 33 32 31 30 29 28 27 26 25
                                o  o  o  o  o  o   o  o  o  o  o  o
(PWM LED Green)  gpio5   37  o                                       o  24   AV42_DA        power out, no drive - pre-reg for AV36 for DACs
(PWM LED Blue)   gpio4   38  o                                       o  23   5v analog      power input, for AVxx
(rec mute)       gpio3   39  o                                       o  22   3.6v analog    power out, no drive
(EQ select 1)    gpio7   40  o                                       o  21   AGND
(PWM LED Red)    gpio6   41  o                                       o  20   MBIAS_R/SLEEVE mic bias 2.75v for right channel or combo jack sleeve
                   GND   42  o                CM6533                 o  19   MIC_R/RING2    mic input right or combo jack ring2 pin input
              SPI MISO   43  o                                       o  18   MIC SWOUT      combo jack detection, switch to MICR RING2 or MBIASR SLEEVE
              SPI MOSI   44  o                                       o  17   VAG            voltage reference capacitor
              SPI  CS0   45  o                                       o  16   MBIAS_L        mic bias 2.75v for left channel
              SPI  SCK   46  o                                       o  15   MIC_L          mic input left
(play/mute)      gpio2   47  o                                       o  14   vol.adj        analog input voltage for volume control, max=27.3mV, min=1.75V - input for a 6-bit ADC
(vol.down)       gpio1   48  o                                       o  13   AGND
                                o  o  o  o  o  o   o  o  o  o  o  o
                                1  2  3  4  5  6   7  8  9 10 11 12
(vol.up)              gpio0  ---'  |  |  |  |  |   |  |  |  |  |  '---  GND
powerdown output       PDSW  ------'  |  |  |  |   |  |  |  |  '------  +5v   power input
                       test  ---------'  |  |  |   |  |  |  '---------  +1.8v out, no-drive
                    I2C CLK  ------------'  |  |   |  |  '------------  +3.3v out, 10mA
                    I2C DTA  ---------------'  |   |  '---------------  USB D-
                        GND  ------------------'   '------------------  USB D+

digital pins (GPIO, I2C, SPI) are 3.3v, 5v-tolerant, 8mA drive
test(3) = floating or GND normally, force to H to enable bootloader
PDSW = H when in power suspend, L when running


digital microphone

GPIO 10 = MCU TxD UART, digital microphone CLOCK output
GPIO 11 = MCU RxD UART, digital microphone DATA input

microphones provide data as bit-density modulation, left mic on high clock, right on low (or vice versa)

SPDIF

SPDIF output bitrate 2,2.8,3.1MHz (32,44.1,48kHz)
linear 16bit coding
64 bits per sample (2x 16, doubled by the biphase mark encoding - 1 encodes to 01 or 10, 0 encodes to 11 or 00)



usb ifce

usb ifce:
0               audio ctrl
1  endp.0x01    audio stream playback
2  endp.0x82    audio stream record
3  endp.0x87    USB HID (16byte interrupt)

EQ bands (kHz): 0.1, 0.35, 1, 3.5, 13
direct control or hw presets via gpio7,8


audio output

2.828 volts peak-to-peak
32 ohm headphones impedance

spdif active by default? 3.26v, 3.077 MHz==3.1MHz==48kHz

mic input

output bias voltage: 2.55..2.95v open-circuit
output bias impedance: 600..700 ohm
output bias current: 1.25mA to 2.2kohm load



USB event device

  + usb-3f980000.usb-1.3.4/input3  == /dev/input/event2 (C-Media Electronics Inc. USB Advanced Audio Device)
Y_PREVIOUSSONG', 165L), ('KEY_STOPCD', 166L), ('KEY_MICMUTE', 248L)], ('EV_REL', 2L): [('REL_MISC', 9L), ('?', 10L), ('?', 11L), ('?', 12L), ('?', 13L), ('?', 14L), ('REL_MAX', 15L)], ('EV_SYN', 0L): [(
'SYN_REPORT', 0L), ('SYN_CONFIG', 1L), ('SYN_MT_REPORT', 2L), ('?', 4L), ('?', 20L)]}
                  ('KEY_VOLUMEDOWN', 114L),
                  ('KEY_VOLUMEUP', 115L),
                  ('KEY_NEXTSONG', 163L),
                  ('KEY_PLAYPAUSE', 164L),
                  ('KEY_PREVIOUSSONG', 165L),
                  ('KEY_STOPCD', 166L),
                  ('KEY_MICMUTE', 248L)],
 ('EV_MSC', 4L): [('MSC_SCAN', 4L)],
 ('EV_REL', 2L): [('REL_MISC', 9L),
                  ('?', 10L),
                  ('?', 11L),
                  ('?', 12L),
                  ('?', 13L),
                  ('?', 14L),
                  ('REL_MAX', 15L)],
 ('EV_SYN', 0L): [('SYN_REPORT', 0L),
                  ('SYN_CONFIG', 1L),
                  ('SYN_MT_REPORT', 2L),
                  ('?', 4L),
                  ('?', 20L)]}

events:
gpio0:  (vol.up)
gpio1:  (vol.down)
gpio2:  (play mute)
gpio3:  (rec mute)
gpio10: (jack mic)
gpio11: (jack headphone)

outputs:
gpio4: PWM LED B    PWM 10.9ms/91.7Hz 62.4% duty
gpio5: PWM LED G    L                              ... connected to green LED on the board
gpio6: PWM LED R    PWM 62.4%
gpio7: EQ SEL 1     L
gpio8: EQ SEL 2     L
gpio9: REC clip LED H


/proc/bus/input/devices

I: Bus=0003 Vendor=0d8c Product=0043 Version=0100
N: Name="C-Media Electronics Inc. USB Advanced Audio Device"
P: Phys=usb-3f980000.usb-1.3.4/input3
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3.4/1-1.3.4:1.3/0003:0D8C:0043.0028/input/input39
U: Uniq=
H: Handlers=kbd event2
B: PROP=0
B: EV=100017
B: KEY=1000000 0 78 0 e0000 0 0 0
B: REL=fe00
B: MSC=10


events processing

Traceback (most recent call last):
  File "./evdev_readkeyboard.py", line 438, in 
    if (mainmain()==1): break
  File "./evdev_readkeyboard.py", line 347, in mainmain
    print(categorize(event))
  File "/usr/local/lib/python2.7/dist-packages/evdev/events.py", line 128, in __str__
    return msg.format(self.event.timestamp(), REL[self.event.code])
KeyError: 11


evtest

No device specified, trying to scan all of /dev/input/event*
Available devices:
Select the device event number [0-2]: 2
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0xd8c product 0x43 version 0x100
Input device name: "C-Media Electronics Inc. USB Advanced Audio Device"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 248 (KEY_MICMUTE)
  Event type 2 (EV_REL)
    Event code 9 (REL_MISC)
    Event code 10 (?)
    Event code 11 (?)
    Event code 12 (?)
    Event code 13 (?)
    Event code 14 (?)
    Event code 15 (?)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
Properties:
Testing ... (interrupt to exit)

gpio0


down
Event: time 1559053251.180326, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1559053251.180326, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
Event: time 1559053251.180326, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053251.180326, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053251.180326, -------------- SYN_REPORT ------------
Event: time 1559053251.180354, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053251.180354, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053251.180354, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053251.180354, -------------- SYN_REPORT ------------
Event: time 1559053251.180393, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053251.180393, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053251.180393, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053251.180393, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053251.180393, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053251.180393, -------------- SYN_REPORT ------------
up
Event: time 1559053253.740326, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1559053253.740326, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Event: time 1559053253.740326, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053253.740326, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053253.740326, -------------- SYN_REPORT ------------
Event: time 1559053253.740355, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053253.740355, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053253.740355, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053253.740355, -------------- SYN_REPORT ------------
Event: time 1559053253.740393, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053253.740393, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053253.740393, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053253.740393, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053253.740393, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053253.740393, -------------- SYN_REPORT ------------

gpio1


down
Event: time 1559053291.788164, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1559053291.788164, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
Event: time 1559053291.788164, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053291.788164, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053291.788164, -------------- SYN_REPORT ------------
Event: time 1559053291.788192, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053291.788192, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053291.788192, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053291.788192, -------------- SYN_REPORT ------------
Event: time 1559053291.788230, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053291.788230, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053291.788230, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053291.788230, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053291.788230, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053291.788230, -------------- SYN_REPORT ------------
up
Event: time 1559053293.516153, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1559053293.516153, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0
Event: time 1559053293.516153, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053293.516153, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053293.516153, -------------- SYN_REPORT ------------
Event: time 1559053293.516181, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053293.516181, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053293.516181, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053293.516181, -------------- SYN_REPORT ------------
Event: time 1559053293.516219, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053293.516219, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053293.516219, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053293.516219, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053293.516219, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053293.516219, -------------- SYN_REPORT ------------

gpio2


down
Event: time 1559053338.667964, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1559053338.667964, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1559053338.667964, -------------- SYN_REPORT ------------
Event: time 1559053338.668000, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1559053338.668000, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053338.668000, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053338.668000, -------------- SYN_REPORT ------------
Event: time 1559053338.668017, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053338.668017, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053338.668017, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053338.668017, -------------- SYN_REPORT ------------
Event: time 1559053338.668053, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053338.668053, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053338.668053, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053338.668053, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053338.668053, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053338.668053, -------------- SYN_REPORT ------------
up
Event: time 1559053341.099961, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053341.099961, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053341.099961, -------------- SYN_REPORT ------------
Event: time 1559053341.099989, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053341.099989, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053341.099989, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053341.099989, -------------- SYN_REPORT ------------
Event: time 1559053341.100027, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053341.100027, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053341.100027, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053341.100027, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053341.100027, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053341.100027, -------------- SYN_REPORT ------------

gpio3


down
Event: time 1559053362.219865, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053362.219865, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053362.219865, -------------- SYN_REPORT ------------
Event: time 1559053362.219896, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053362.219896, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053362.219896, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053362.219896, -------------- SYN_REPORT ------------
Event: time 1559053362.219913, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053362.219913, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053362.219913, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053362.219913, -------------- SYN_REPORT ------------
Event: time 1559053362.219949, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053362.219949, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053362.219949, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053362.219949, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053362.219949, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053362.219949, -------------- SYN_REPORT ------------
up
Event: time 1559053363.979866, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053363.979866, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053363.979866, -------------- SYN_REPORT ------------
Event: time 1559053363.979895, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053363.979895, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053363.979895, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053363.979895, -------------- SYN_REPORT ------------
Event: time 1559053363.979933, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053363.979933, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053363.979933, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053363.979933, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053363.979933, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053363.979933, -------------- SYN_REPORT ------------

gpio10


down
Event: time 1559053389.931760, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053389.931760, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053389.931760, -------------- SYN_REPORT ------------
Event: time 1559053389.931801, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053389.931801, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053389.931801, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053389.931801, -------------- SYN_REPORT ------------
Event: time 1559053389.931818, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053389.931818, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053389.931818, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053389.931818, -------------- SYN_REPORT ------------
Event: time 1559053389.931852, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053389.931852, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053389.931852, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053389.931852, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053389.931852, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053389.931852, -------------- SYN_REPORT ------------
up
Event: time 1559053391.435748, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053391.435748, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053391.435748, -------------- SYN_REPORT ------------
Event: time 1559053391.435788, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053391.435788, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053391.435788, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053391.435788, -------------- SYN_REPORT ------------
Event: time 1559053391.435826, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053391.435826, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053391.435826, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053391.435826, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053391.435826, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053391.435826, -------------- SYN_REPORT ------------

gpio11


down
Event: time 1559053415.147658, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053415.147658, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053415.147658, -------------- SYN_REPORT ------------
Event: time 1559053415.147686, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053415.147686, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053415.147686, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053415.147686, -------------- SYN_REPORT ------------
Event: time 1559053415.147704, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053415.147704, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053415.147704, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053415.147704, -------------- SYN_REPORT ------------
Event: time 1559053415.147737, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053415.147737, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053415.147737, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053415.147737, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053415.147737, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053415.147737, -------------- SYN_REPORT ------------
up
Event: time 1559053416.587645, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053416.587645, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053416.587645, -------------- SYN_REPORT ------------
Event: time 1559053416.587697, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053416.587697, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053416.587697, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053416.587697, -------------- SYN_REPORT ------------
Event: time 1559053416.587735, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053416.587735, type 2 (EV_REL), code 11 (?), value 1
Event: time 1559053416.587735, type 2 (EV_REL), code 12 (?), value 1
Event: time 1559053416.587735, type 2 (EV_REL), code 13 (?), value 1
Event: time 1559053416.587735, type 2 (EV_REL), code 14 (?), value 1
Event: time 1559053416.587735, -------------- SYN_REPORT ------------



gpio0, stripped


down
Event: time 1559053251.180326, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1559053251.180326, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
Event: time 1559053251.180326, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053251.180326, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053251.180354, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053251.180354, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053251.180354, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053251.180393, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
up
Event: time 1559053253.740326, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1559053253.740326, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Event: time 1559053253.740326, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053253.740326, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053253.740355, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053253.740355, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053253.740355, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053253.740355, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0

gpio1


down
Event: time 1559053291.788164, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1559053291.788164, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
Event: time 1559053291.788164, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053291.788164, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053291.788192, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053291.788192, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053291.788192, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053291.788192, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
up
Event: time 1559053293.516153, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1559053293.516153, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0
Event: time 1559053293.516153, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053293.516153, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053293.516181, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053293.516181, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053293.516181, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053293.516181, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0

gpio2


down
Event: time 1559053338.667964, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1559053338.667964, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1559053338.668000, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
Event: time 1559053338.668000, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053338.668000, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053338.668017, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053338.668017, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053338.668017, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053338.668017, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
up
Event: time 1559053341.099961, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053341.099961, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053341.099989, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053341.099989, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053341.099989, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053341.100027, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0

gpio3


down
Event: time 1559053362.219865, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053362.219865, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053362.219896, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053362.219896, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053362.219896, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053362.219913, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053362.219913, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053362.219913, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053362.219913, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
up
Event: time 1559053363.979866, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053363.979866, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053363.979895, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053363.979895, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053363.979895, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053363.979895, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0

gpio10


down
Event: time 1559053389.931760, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053389.931760, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053389.931801, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053389.931801, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053389.931801, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053389.931818, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053389.931818, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053389.931818, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053389.931818, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
up
Event: time 1559053391.435748, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053391.435748, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053391.435788, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053391.435788, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053391.435788, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053391.435826, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0

gpio11


down
Event: time 1559053415.147658, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053415.147658, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053415.147686, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053415.147686, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053415.147686, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053415.147704, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053415.147704, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053415.147704, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053415.147737, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
up
Event: time 1559053416.587645, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053416.587645, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053416.587697, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0
Event: time 1559053416.587697, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053416.587697, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 1
Event: time 1559053416.587735, type 1 (EV_KEY), code 248 (KEY_MICMUTE), value 0


gpio0, stripped to scan only


down
Event: time 1559053251.180326, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1559053251.180326, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053251.180354, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
up
Event: time 1559053253.740326, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1559053253.740326, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053253.740355, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001

gpio1


down
Event: time 1559053291.788164, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1559053291.788164, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053291.788192, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
up
Event: time 1559053293.516153, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1559053293.516153, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053293.516181, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001

gpio2


down
Event: time 1559053338.667964, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1559053338.668000, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053338.668017, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
up
Event: time 1559053341.099961, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053341.099989, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001

gpio3


down
Event: time 1559053362.219865, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053362.219913, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053362.219913, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
up
Event: time 1559053363.979866, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053363.979895, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001

gpio10


down
Event: time 1559053389.931760, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053389.931801, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053389.931818, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
up
Event: time 1559053391.435748, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053391.435788, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001

gpio11


down
Event: time 1559053415.147658, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053415.147686, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053415.147704, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
up
Event: time 1559053416.587645, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001
Event: time 1559053416.587697, type 4 (EV_MSC), code 4 (MSC_SCAN), value ff010001


gpio0, stripped of micmute


down
Event: time 1559053251.180326, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1559053251.180326, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
up
Event: time 1559053253.740326, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9
Event: time 1559053253.740326, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0

gpio1


down
Event: time 1559053291.788164, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1559053291.788164, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
up
Event: time 1559053293.516153, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00ea
Event: time 1559053293.516153, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0

gpio2


down
Event: time 1559053338.667964, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e2
Event: time 1559053338.667964, type 1 (EV_KEY), code 113 (KEY_MUTE), value 1
Event: time 1559053338.668000, type 1 (EV_KEY), code 113 (KEY_MUTE), value 0
up

gpio3


down

up

gpio10


down

up

gpio11


down

up

hidraw

 01 81 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 80 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 82 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 80 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 84 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 80 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 88 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 80 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 80 05 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 80 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 80 09 00 00 20 83 fe 08 00 03 80 00 00 00 00
 01 80 01 00 00 20 83 fe 08 00 03 80 00 00 00 00
...do hexdump, byte by byte, without the offset prefix, just raw dump

1 0 0 0 - [g3] [g2] [g1] [g0] -- 0 0 0 0 - [g11] [g10] 0 1 bytes 01 02, in order 02 01: gpio0..15 byte 01: gpio7..gpio0 byte 02: gpio15..gpio8 xx 01 02 xx xx xx xx ... gpio0  down 01 81 01 00  00 20 83 fe 08 00 03 80  00 00 00 00 gpio1  down 01 82 01 00  00 20 83 fe 08 00 03 80  00 00 00 00 gpio2  down 01 84 01 00  00 20 83 fe 08 00 03 80  00 00 00 00 gpio3  down 01 88 01 00  00 20 83 fe 08 00 03 80  00 00 00 00 gpio10 down 01 80 05 00  00 20 83 fe 08 00 03 80  00 00 00 00 gpio11 down 01 80 09 00  00 20 83 fe 08 00 03 80  00 00 00 00 all up 01 80 01 00  00 20 83 fe 08 00 03 80  00 00 00 00 byte 00 is the Report ID

audio jack detection

HID packets format

endpoint 0x80

HID interrupt in, HID get input report

endpoint: 0x87 (URB_INTERRUPT data)
endpoint: 0x80 (sending the requests)

get_input_report:
bmRequestType: u08 0xA1   b 1010 0001  == ABBC CCCC == A:direction (1=device-to-host), BB:type:01==class, CCCCC:recipient:interface
bRequest:      u08 0x01   (Get Report)
wValue:        u16 0x0101 (RptType+RptId) (Type=0x01, ID=0x01)
wIndex:        u16 0x0003 (interface)
wLength:       u16 0x0010 (16 byte payload)
Data:          u08[16]
  0:     0x01
  1,2:   gpio7..gpio0, gpio15..gpio8
  3,4:   addrH, addrL of returned data
  5:     flags: 7:0, 6:UART_INT, 5:GPI_INT, 4:SPIS_INT(slave), 3:SPIM_INT(master), 2:I2CS_INT(slave), 1:I2CM_INT(master), 0:IR_INT; usually 0x20 == GPI_INT
  6..15: memory dump from [addr] to [addr+9]

HID set output report

endpoint: 0x00

set_output_report:
bmRequestType: u08 0x21   b 0010 0001
bRequest:      u08 0x09   (Set Report)
wValue:        u16 0x0201 (RptType+RptId)
wIndex:        u16 0x0003 (interface)
wLength:       u16 0x0010 (16 byte payload)
Data:          u08[16]
  0:     0x01
  1,2:   addrH,addrL of data to write
  3:     length of data to write (max.12, or 0x0C)
  4..15: byte array to write to [addr]..[addr+(lengh)]


HID tools

...aiming for the set output report ending

Writing: 01 01 17 00 00 00 00 00 00 00 00 00 00 00 00 00 ERROR: Incorrect response from device: 0, should be 16 ...and the device dies, seized hard; so it Does Something

HID descriptor

05 0c 09 01 a1 01 85 01 15 00 25 01 09 e9 09 ea 75 01 95 02 81 42 09 e2 95 01 81 06 06 01 ff 09 01 95 09 81 06 05 0c 09 cd 09 b7 09 b5 09 b6 95 04 81 06 06 07 ff 09 01 75 08 95 0d 81 06 09 00 95 0f 91 02 c0

  INPUT(1)[INPUT]
    Field(0)
      Application(Consumer.0001)
      Usage(2)
        Consumer.00e9
        Consumer.00ea
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute NullState )
    Field(1)
      Application(Consumer.0001)
      Usage(1)
        Consumer.00e2
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(1)
      Report Offset(2)
      Flags( Variable Relative )
    Field(2)
      Application(Consumer.0001)
      Usage(9)
        ff01.0001
        ff01.0001
        ff01.0001
        ff01.0001
        ff01.0001
        ff01.0001
        ff01.0001
        ff01.0001
        ff01.0001
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(9)
      Report Offset(3)
      Flags( Variable Relative )
    Field(3)
      Application(Consumer.0001)
      Usage(4)
        Consumer.00cd
        Consumer.00b7
        Consumer.00b5
        Consumer.00b6
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(4)
      Report Offset(12)
      Flags( Variable Relative )
    Field(4)
      Application(Consumer.0001)
      Usage(13)
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
        ff07.0001
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(13)
      Report Offset(16)
      Flags( Variable Relative )
  OUTPUT(1)[OUTPUT]
    Field(0)
      Application(Consumer.0001)
      Usage(15)
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
        ff07.0000
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(15)
      Report Offset(0)
      Flags( Variable Absolute )

Consumer.00e9 ---> Key.VolumeUp
Consumer.00ea ---> Key.VolumeDown
Consumer.00e2 ---> Key.Mute
ff01.0001 ---> Key.?
ff01.0001 ---> Key.?
ff01.0001 ---> Key.?
ff01.0001 ---> Key.?
ff01.0001 ---> Key.?
ff01.0001 ---> Key.?
ff01.0001 ---> Key.?
ff01.0001 ---> Key.?
ff01.0001 ---> Key.?
Consumer.00cd ---> Key.PlayPause
Consumer.00b7 ---> Key.StopCD
Consumer.00b5 ---> Key.NextSong
Consumer.00b6 ---> Key.PreviousSong
ff07.0001 ---> Relative.Misc
ff07.0001 ---> Relative.?
ff07.0001 ---> Relative.?
ff07.0001 ---> Relative.?
ff07.0001 ---> Relative.?
ff07.0001 ---> Relative.?
ff07.0001 ---> Relative.?
ff07.0001 ---> Relative.Reserved
ff07.0001 ---> Relative.Reserved
ff07.0001 ---> Relative.Reserved
ff07.0001 ---> Relative.Reserved
ff07.0001 ---> Relative.Reserved
ff07.0001 ---> Relative.Reserved
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report
ff07.0000 ---> Sync.Report


ad-hoc test board

                     GPIO                        POWER
  .------ 1 -- 3 -- 5 -- 7 -- 9 -- 11 -----.  .----------.
  |  G    o    o    o    o    o    o    G  |  |  G   (+) |
  |  |                                  |  |  |  |    |  |
  |  G    o    o    o    o    o    o    G  |  |  G   (+) |
  '------ 0 -- 2 -- 4 -- 6 -- 8 -- 10 -----'  |  |    |  |
                                              |  G   (+) |
  .-----.   .----------.                      '----------'
  |  G  |   |  G----G  |
  |     |   |          |   .----------.
  |  o  |  SCK o----o  |   |  G    o  |
  |     |   |          |   |          |  .----------.
  |  o  |  DTA o----o  |   |  o    o  |  |  o    G  |
  |     |   |          |   |          |  |          |
  |  +  |   | (+)--(+) |   | (+)   o  |  |  o    o  |
  '-----'   '----------'   '----------'  '----------'
    MIC         I2c            SPI           AUX


linux/pulseaudio

[1218127.068812] usb 1-1.3.4: new full-speed USB device number 119 using dwc_otg
[1218127.303519] usb 1-1.3.4: New USB device found, idVendor=0d8c, idProduct=0043
[1218127.303533] usb 1-1.3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[1218127.303542] usb 1-1.3.4: Product: USB Advanced Audio Device
[1218127.303551] usb 1-1.3.4: Manufacturer: C-Media Electronics Inc.
[1218127.323336] input: C-Media Electronics Inc. USB Advanced Audio Device as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3.4/1-1.3.4:1.3/0003:0D8C:0043.001A/input/input27
[1218127.389361] hid-generic 0003:0D8C:0043.001A: input,hidraw1: USB HID v1.00 Device [C-Media Electronics Inc. USB Advanced Audio Device] on usb-3f980000.usb-1.3.4/input3
[1218127.668379] usbcore: registered new interface driver snd-usb-audio

Bus 001 Device 119: ID 0d8c:0043 C-Media Electronics, Inc.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        16
  idVendor           0x0d8c C-Media Electronics, Inc.
  idProduct          0x0043
  bcdDevice            1.05
  iManufacturer           1 C-Media Electronics Inc.
  iProduct                2 USB Advanced Audio Device
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          431
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0
      iInterface              0
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength           95
        bInCollection           2
        baInterfaceNr( 0)       1
        baInterfaceNr( 1)       2
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             3
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID               5
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             4
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               6
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 5
        bSourceID               8
        bControlSize            1
        bmaControls( 0)      0x01
          Mute Control
        bmaControls( 1)      0x02
          Volume Control
        bmaControls( 2)      0x02
          Volume Control
        iFeature                0
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 6
        bSourceID               2
        bControlSize            1
        bmaControls( 0)      0x01
          Mute Control
        bmaControls( 1)      0x02
          Volume Control
        bmaControls( 2)      0x02
          Volume Control
        iFeature                0
      AudioControl Interface Descriptor:
        bLength                10
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 7
        bSourceID               2
        bControlSize            1
        bmaControls( 0)      0x01
          Mute Control
        bmaControls( 1)      0x02
          Volume Control
        bmaControls( 2)      0x02
          Volume Control
        iFeature                0
      AudioControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      4 (MIXER_UNIT)
        bUnitID                 8
        bNrInPins               2
        baSourceID( 0)          1
        baSourceID( 1)          7
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0
        bmControls         0x00
        iMixer                  0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           1
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                29
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            7 Discrete
        tSamFreq[ 0]         8000
        tSamFreq[ 1]        11025
        tSamFreq[ 2]        16000
        tSamFreq[ 3]        22050
        tSamFreq[ 4]        32000
        tSamFreq[ 5]        44100
        tSamFreq[ 6]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes           13
          Transfer Type            Isochronous
          Synch Type               Synchronous
          Usage Type               Data
        wMaxPacketSize     0x00c4  1x 196 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           1
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                14
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            2 Discrete
        tSamFreq[ 0]        88200
        tSamFreq[ 1]        96000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes           13
          Transfer Type            Isochronous
          Synch Type               Synchronous
          Usage Type               Data
        wMaxPacketSize     0x0184  1x 388 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           1
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                14
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            2 Discrete
        tSamFreq[ 0]        88200
        tSamFreq[ 1]        96000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes           13
          Transfer Type            Isochronous
          Synch Type               Synchronous
          Usage Type               Data
        wMaxPacketSize     0x0246  1x 582 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           4
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                29
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            7 Discrete
        tSamFreq[ 0]         8000
        tSamFreq[ 1]        11025
        tSamFreq[ 2]        16000
        tSamFreq[ 3]        22050
        tSamFreq[ 4]        32000
        tSamFreq[ 5]        44100
        tSamFreq[ 6]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes           13
          Transfer Type            Isochronous
          Synch Type               Synchronous
          Usage Type               Data
        wMaxPacketSize     0x00c4  1x 196 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      69
          Report Descriptor: (length is 69)
            Item(Global): Usage Page, data= [ 0x0c ] 12
                            Consumer
            Item(Local ): Usage, data= [ 0x01 ] 1
                            Consumer Control
            Item(Main  ): Collection, data= [ 0x01 ] 1
                            Application
            Item(Global): Report ID, data= [ 0x01 ] 1
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0x01 ] 1
            Item(Local ): Usage, data= [ 0xe9 ] 233
                            Volume Increment
            Item(Local ): Usage, data= [ 0xea ] 234
                            Volume Decrement
            Item(Global): Report Size, data= [ 0x01 ] 1
            Item(Global): Report Count, data= [ 0x02 ] 2
            Item(Main  ): Input, data= [ 0x42 ] 66
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State Null_State Non_Volatile Bitfield
            Item(Local ): Usage, data= [ 0xe2 ] 226
                            Mute
            Item(Global): Report Count, data= [ 0x01 ] 1
            Item(Main  ): Input, data= [ 0x06 ] 6
                            Data Variable Relative No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Global): Usage Page, data= [ 0x01 0xff ] 65281
                            (null)
            Item(Local ): Usage, data= [ 0x01 ] 1
                            (null)
            Item(Global): Report Count, data= [ 0x09 ] 9
            Item(Main  ): Input, data= [ 0x06 ] 6
                            Data Variable Relative No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Global): Usage Page, data= [ 0x0c ] 12
                            Consumer
            Item(Local ): Usage, data= [ 0xcd ] 205
                            Play/Pause
            Item(Local ): Usage, data= [ 0xb7 ] 183
                            Stop
            Item(Local ): Usage, data= [ 0xb5 ] 181
                            Scan Next Track
            Item(Local ): Usage, data= [ 0xb6 ] 182
                            Scan Previous Track
            Item(Global): Report Count, data= [ 0x04 ] 4
            Item(Main  ): Input, data= [ 0x06 ] 6
                            Data Variable Relative No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Global): Usage Page, data= [ 0x07 0xff ] 65287
                            (null)
            Item(Local ): Usage, data= [ 0x01 ] 1
                            (null)
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Global): Report Count, data= [ 0x0d ] 13
            Item(Main  ): Input, data= [ 0x06 ] 6
                            Data Variable Relative No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Local ): Usage, data= [ 0x00 ] 0
                            (null)
            Item(Global): Report Count, data= [ 0x0f ] 15
            Item(Main  ): Output, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Main  ): End Collection, data=none
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x87  EP 7 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)

USB HID descriptor

(using HIDRDD)
(requires rexx: apt-get install regina-rexx )



05 0C        (GLOBAL) USAGE_PAGE         0x000C Consumer Device Page
09 01        (LOCAL)  USAGE              0x000C0001 Consumer Control (Application Collection)
A1 01        (MAIN)   COLLECTION         0x01 Application (Usage=0x000C0001: Page=Consumer Device Page, Usage=Consumer Control, Type=Application Collection)
85 01          (GLOBAL) REPORT_ID          0x01 (1)
15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0)  <-- Info: Consider replacing 15 00 with 14
25 01          (GLOBAL) LOGICAL_MAXIMUM    0x01 (1)
09 E9          (LOCAL)  USAGE              0x000C00E9 Volume Increment (Re-trigger Control)
09 EA          (LOCAL)  USAGE              0x000C00EA Volume Decrement (Re-trigger Control)
75 01          (GLOBAL) REPORT_SIZE        0x01 (1) Number of bits per field
95 02          (GLOBAL) REPORT_COUNT       0x02 (2) Number of fields
81 42          (MAIN)   INPUT              0x00000042 (2 fields x 1 bit) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 1=Null 0=NonVolatile 0=Bitmap
09 E2          (LOCAL)  USAGE              0x000C00E2 Mute (On/Off Control)
95 01          (GLOBAL) REPORT_COUNT       0x01 (1) Number of fields
81 06          (MAIN)   INPUT              0x00000006 (1 field x 1 bit) 0=Data 1=Variable 1=Relative 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
06 01FF        (GLOBAL) USAGE_PAGE         0xFF01 Vendor-defined
09 01          (LOCAL)  USAGE              0xFF010001 <-- Warning: Undocumented usage (document it by inserting 0001 into file FF01.conf)
95 09          (GLOBAL) REPORT_COUNT       0x09 (9) Number of fields
81 06          (MAIN)   INPUT              0x00000006 (9 fields x 1 bit) 0=Data 1=Variable 1=Relative 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
05 0C          (GLOBAL) USAGE_PAGE         0x000C Consumer Device Page
09 CD          (LOCAL)  USAGE              0x000C00CD Play/Pause (One Shot Control)
09 B7          (LOCAL)  USAGE              0x000C00B7 Stop (One Shot Control)
09 B5          (LOCAL)  USAGE              0x000C00B5 Scan Next Track (One Shot Control)
09 B6          (LOCAL)  USAGE              0x000C00B6 Scan Previous Track (One Shot Control)
95 04          (GLOBAL) REPORT_COUNT       0x04 (4) Number of fields
81 06          (MAIN)   INPUT              0x00000006 (4 fields x 1 bit) 0=Data 1=Variable 1=Relative 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
06 07FF        (GLOBAL) USAGE_PAGE         0xFF07 Vendor-defined
09 01          (LOCAL)  USAGE              0xFF070001 <-- Warning: Undocumented usage (document it by inserting 0001 into file FF07.conf)
75 08          (GLOBAL) REPORT_SIZE        0x08 (8) Number of bits per field
95 0D          (GLOBAL) REPORT_COUNT       0x0D (13) Number of fields
81 06          (MAIN)   INPUT              0x00000006 (13 fields x 8 bits) 0=Data 1=Variable 1=Relative 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
09 00          (LOCAL)  USAGE              0xFF070000   <-- Info: Consider replacing 09 00 with 08
95 0F          (GLOBAL) REPORT_COUNT       0x0F (15) Number of fields
91 02          (MAIN)   OUTPUT             0x00000002 (15 fields x 8 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap
C0           (MAIN)   END_COLLECTION     Application
typedef struct
  uint8_t  reportId;                                 // Report ID = 0x01 (1)
                                                     // Collection: CA:ConsumerControl
  uint8_t  CD_ConsumerControlVolumeIncrement : 1;    // Usage 0x000C00E9: Volume Increment, Value = 0 to 1
  uint8_t  CD_ConsumerControlVolumeDecrement : 1;    // Usage 0x000C00EA: Volume Decrement, Value = 0 to 1
  uint8_t  CD_ConsumerControlMute : 1;               // Usage 0x000C00E2: Mute, Value = 0 to 1
  uint8_t  VEN_ConsumerControl0001 : 1;              // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  VEN_ConsumerControl00011 : 1;             // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  VEN_ConsumerControl00012 : 1;             // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  VEN_ConsumerControl00013 : 1;             // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  VEN_ConsumerControl00014 : 1;             // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  VEN_ConsumerControl00015 : 1;             // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  VEN_ConsumerControl00016 : 1;             // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  VEN_ConsumerControl00017 : 1;             // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  VEN_ConsumerControl00018 : 1;             // Usage 0xFF010001: , Value = 0 to 1
  uint8_t  CD_ConsumerControlPlayPause : 1;          // Usage 0x000C00CD: Play/Pause, Value = 0 to 1
  uint8_t  CD_ConsumerControlStop : 1;               // Usage 0x000C00B7: Stop, Value = 0 to 1
  uint8_t  CD_ConsumerControlScanNextTrack : 1;      // Usage 0x000C00B5: Scan Next Track, Value = 0 to 1
  uint8_t  CD_ConsumerControlScanPreviousTrack : 1;  // Usage 0x000C00B6: Scan Previous Track, Value = 0 to 1
  uint8_t  VEN_ConsumerControl0001_1[13];            // Usage 0xFF070001: , Value = 0 to 1
} inputReport01_t;



typedef struct
  uint8_t  reportId;                                 // Report ID = 0x01 (1)
                                                     // Collection: CA:ConsumerControl
  uint8_t  VEN_ConsumerControl0000[15];              // Usage 0xFF070000: , Value = 0 to 1
} outputReport01_t;




USB HID/vendor requests

USB requests:

HID get input report:
bmRequestType=0xA1 (device to host, class, interface)
bRequest=0x01
wValue=0x0101 (rpt.type+rpt.id)
wIndex=0x0003 (interface)
wLength=16

HID set output report:
bmRequestType=0x21 (host to device, class, interface)
bRequest=0x01
wValue=0x0201 (rpt.type+rpt.id)
wIndex=0x0003 (interface)
wLength=16

vendor request register read:
bmRequestType=0xC3 (device to host, vendor, other)
bRequest=0x02 (command 2)
wValue=0xAAAA (start address)
wIndex=0x0000 (interface)
wLength=0..64

vendor request register write:
bmRequestType=0x43 (host to device, vendor, other)
bRequest=0x01 (command 1)
wValue=0xAAAA (start address)
wIndex=0x0000 (interface)
wLength=0..64

other commands: 0x03=flash write, 0x04=flash read, 0x05=flash control (erase), 0x06=flash status

bmRequestType:
DIR Type.Type Rcpt.Rcpt.Rcpt.Rcpt.Rcpt
DIR=0: host to device, 1=device to host
type: 0=standard, 1=class, 2=vendor, 3=reserved
rcpt: 0=device, 1=interface, 2=endpoint, 3=other, 4..31=reserved


reading from registers:
        vol.up -----------.
        vol.down --------.|
        play mute ------.||
        rec mute ------.|||
        PWMLED B-----. ||||       .------ jack headphoe in
        PWMLED G----.| ||||       |.----- jack mic in
        PWMLED R---.|| ||||       ||.---- REC clip LED
        eqsel 1---.||| ||||       |||.--- eqsel 2
GPIO:             7654 3210  fedc ba98
c0,c1: 0x0000     0000-0000--0000-0000   GPO data register
c2,c3: 0x0ffc     0000-1111--1111-1100   GPI data register
c4,c5: 0x7002     0111-0000--0000-0010   GPIO dir (1=out, 0=in)
c6,c7: 0x8ffd     1000-1111--1111-1101   GPIO int mask (1=enable, 0=disable)
c8,c9: 0x8ffd     1000-1111--1111-1101   GPIO debouncing (1=enable)
e2,e3: 0x0000     0000-0000--0000-0000   GPIO wakeup (1=enable)
e4,e5: 0x7002     0111-0000--0000-0010   GPIO pullup PD0,PD1 (1=disable, 0=75kOhm pullup) (enabled on all inputs)
e6     0x2f       0010-1111              GPIO pullup PD2

register map wraps around, 0x00..0xff == 0x100..0x1ff...

events:
gpio0:  (vol.up)
gpio1:  (vol.down)
gpio2:  (play mute)
gpio3:  (rec mute)
gpio10: (jack mic)
gpio11: (jack headphone)

outputs:
gpio4: PWM LED B    PWM 10.9ms/91.7Hz 62.4% duty
gpio5: PWM LED G    L                              ... connected to green LED on the board
gpio6: PWM LED R    PWM 62.4%
gpio7: EQ SEL 1     L
gpio8: EQ SEL 2     L
gpio9: REC clip LED H









headset connector

https://www.cablechick.com.au/blog/understanding-trrs-and-audio-jacks/
                    tip        ring       ring      sleeve

phones, computers

audio mono          left        -          -         GND
audio stereo        left       right       -         GND
PC headset          left       right      GND        mic
CTIA/Apple          left       right      GND        mic/video
OMTP/Nokia          left       right      mic/video  GND
MP3 players         left       right      video      GND
Raspi/Zune/Apple    left       right      GND        video
ip phone headsets   mic        audio       -         GND

mono mic            mic         -          -         GND
dual mono mic       mic ...... mic         -         GND
  ...card side:     mic_in     mic_bias    -         GND       useful to bias electret mics, not bias dynamic ones
stereo mic          mic_L      mic_R       -         GND
Canon camcorder mic mic_L      mic_R      GND/shield mic_power  https://cdn.instructables.com/FMO/9UV9/HF23QD2V/FMO9UV9HF23QD2V.LARGE.jpg

camcorders

Sony                left       video      GND        right
Panasonic           right      GND        video      left
Aiwa VCD, Bluetech  video      audio_L    audio_R    GND       analog signals bidirectional
Philips port. DVD   audio_R    audio_L    video      GND       analog signals bidirectional
Creative Digital    center     rear       cent+lfe   GND       SPDIF digital bitstreams
various players     audio_L    audio_R    video      GND

audio/video

compos.video+audio  video      audio_R    audio_L    GND       http://www.akman.com/support/wiring/MV720pHDYPbPrTripleminijack.jpg
video RGB           video_R    video_B    video_G    GND       MV720pHDYPbPrTripleminijack.jpg
video YPbPr         video_Pr   video_Pb   video_Y    GND       MV720pHDYPbPrTripleminijack.jpg
balanced TRRS       left+      right+     left-      right-    Geek Wave headphone jack, https://support.lhlabs.com/support/solutions/articles/5000562879-what-is-the-pinout-for-the-balanced-output-of-the-geek-wave-headphone-jack-
Sennheiser EW       mic        line        -         GND       https://sennheiserusa.happyfox.com/kb/article/551-wiring-configuration-for-the-ew-plug-35-mm

phone headsets

SPA942 IP phone     mic        audio       -         GND       Linksys IP phone headset
MRLG                mic+       speaker_R  speaker_L  GND       2.5mm jack
Cisco SX20 ext mic  audio_hot  audio_cold mic_ctrl   GND       3.5mm jack, balanced audio signal; XLR 1=sleeve, 3=ring1, 2=tip; http://conftech.blogspot.com/2013/06/connect-third-party-microphone-to-cisco.html

unbalanced XLR      hot(1) ... hot(3)      -         GND(2)   (also tip to 2, sleeve to 1,3)
unbalanced XLR      hot(1,3)    -          -         GND(2)

various

cable releases      Shoot       Focus      -         GND       2.5mm,3.5mm jacks  https://leancrew.com/all-this/2009/07/poor-mans-cable-release/
cable releases      Shoot       common     -         Focus     Canon EOS Rebel XS, Xsi, T1i etc., https://i.ytimg.com/vi/AvyMHXW_tb4/maxresdefault.jpg
Baofeng transceivers, two jacks 12.5mm apart
  2.5mm             speaker     GND                  GND
  3.5mm             +5V         mic+                 GND via PTT switch
RS232               Rx          Tx                   GND
UART                Tx          Tx                   GND       ...if there are two ways to do it, there will be two standards!

Ipod Shufle USB     USB:D+      USB:D-     USB:GND   USB:+5V   
Android/IOS USB     USB:+5      USB:D-     USB:D+    GND       
stereo amp switch   +12V        -          -         GND                  12V 160ohm relay with a diode across the coil

android accessory buttons

https://source.android.com/devices/accessories/headset/plug-headset-spec
https://source.android.com/devices/accessories/headset/jack-headset-spec

switch parallel to microphone, 1%-tolerance resistors mapped to functions

0 ohm     under 70 ohm      A  play/pause (short), assist (long), next (double)   - event KEY_MEDIA
240 ohm   210..290 ohm      B  vol.+            event KEY_VOLUMEUP
470 ohm   360..680 ohm      C  vol.-            event KEY_VOLUMEDOWN
135 ohm   110..180 ohm      D  something-else   event KEY_VOICECOMMAND
   ...headset insertion: generate   event SW_JACK_PHYSICAL_INSERT
   ...headset/headphones detection  event SW_MICROPHONE_INSERT or SW_HEADPHONE_INSERT
   ...high impedance output         event SW_LINEOUT_INSERT

one button:     A
two buttons:    A+D
three buttons:  A+B+C
four buttons:   A+B+C+D

resistance takes in the microphone capsule resistance too; for a 5kOhm mic we need 139 ohm resistor to get 135 ohm

mic bias 1.8..2.9 volts
mic bias resistance needed to detect microphone presence; 10kohm is used often

line vs phones discrimination by output impedance: under 1 kΩ it is phones, over 1 kΩ it is line

TRS vs TRRS detection: if RS resistance under 100 ohms assume TRS, otherwise assume TRRS


color code for motherboard/soundcard jacks

Lime Green   out   Line-Out, Front Speakers, Headphones
Pink         in    Microphone
Light Blue   in    Stereo Line In
Orange       out   Subwoofer and Center out
Black        out   Rear Surround Speakers for 5.1 and 7.1 systems
Gray         out   Middle Surround Speakers for 7.1 systems
Gold         out   D-sub 15, Midi / Game port (Joystick)





AMA RS485: RJ11,  +12V : Tx+ : Tx- : GND : nc : nc            http://www.akman.com/support/wiring/AMARS485Rear.pdf




If you have any comments or questions about the topic, please let me know here:
Your name:
Your email:
Spambait
Leave this empty!
Only spambots enter stuff here.
Feedback: