USB sound cards
- most common:
- CM108 - LQFP48, one mic input w/ optional 20dB boost, 4 GPIO w/ HID
- CM119 - LQFP48, optimized for VoIP, one mic w/opt. 20dB boost, 8 GPIO w/ HID, 400kHz I2C slave, buzzer, keypad
- CM109, CM112 - datasheet mentions 5x4 keypad matrix
- CM6533/X1/DH - 2 inputs, 2 outputs, RGB PWM LED driver, 8..96kHz samplerate, 16/24 bits, built-in 8051 microcontroller w/ 32kB flash
- CM6632A - LQFP100, HDA, I2S, 4 inputs 10 outputs (2 and 5 pairs of I2S or left-justified) to 44.1K/48K/88.2K/ 96K/176.4K/192KHz and 16/24/32 bits, SPDIF to 192kHz/24bit
[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
-
- CM6533 audio jack HID raw events:
-
- Plug in:
- 01000600 002083xx 080008c0 10000000 ... 0000 0000 0000 0110
- about 3 seconds later...
- 01000a00 002083xx 08000380 10000000 ... 0000 0000 0000 1010
- 01000600 002083xx 08000380 10000000 ... 0000 0000 0000 0110
-
- Plug out:
- 01000400 002083xx 080008c0 x0000000 ... 0000 0000 0000 0100 ... GPIO 11,10,9,8 ... headphones detect, mic jack detect, mic clip LED, 0 (EQ select)
- /
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: |