I2S#
Inter-IC Sound. A three-wire synchronous bus that carries digital audio between a codec (ADC or DAC) and a processor; nothing else. Bit clock, word-select clock, and serial data; an optional master clock for ICs that need an oversampling reference. Not a hacker’s attack surface by itself, but the wire between every embedded microphone and its CPU; the operator who can tap I2S pulls audio off a target in raw PCM before any application-layer encoding.
Wires#
Signal |
Direction |
Purpose |
|---|---|---|
|
Master out |
Serial bit clock; equals
|
|
Master out |
Word select; left channel when low, right channel when high. Frequency equals the sample rate. |
|
Transmitter out |
Serial audio data; one line per direction. |
|
Master out |
Master clock; typically 256× or 384× the sample rate. |
|
Reference |
Ground. |
Wire format#
The transmitter shifts samples MSB-first on the falling edge of
SCK. The receiver samples on the rising edge.
On
WSfalling edge, the nextSCKcycle starts the left channel sample.On
WSrising edge, the right channel sample starts.The MSB of each sample is delayed by one
SCKcycle after theWStransition (this one-cycle offset is what distinguishes I2S from “left-justified” and “right-justified” variants).
Common sample rates: 8, 16, 22.05, 32, 44.1, 48, 96, 192 kHz. Common sample widths: 16, 24, 32 bits.
sequenceDiagram
participant M as Master
participant TX as Transmitter
participant RX as Receiver
M->>TX: SCK + WS
M->>RX: SCK + WS
TX->>RX: SD (Left sample, MSB first)
Note over M,RX: WS toggles, next sample on the other channel
TX->>RX: SD (Right sample, MSB first)
Pads#
I2S signals usually live on the codec’s own pins; finding them on
a board means tracing from a known audio chip (WM8960,
ES8311, MAX9814-style mic preamps, SGTL5000,
TLV320AIC3204). Some boards expose I2S on a header for an
external microphone (MEMS digital mics like the ICS-43434 or
SPH0645 are I2S-native).
Tools#
Tool |
Effect |
|---|---|
Logic analyzer with I2S decoder ( |
Decode the stream; export to |
|
Same, scriptable from the command line. |
|
Drive an I2S codec exposed by a Linux ALSA driver. |
|
Sniff or generate I2S in firmware; useful as a cheap I2S-to-Wi-Fi exfil bridge in a lab setup. |
References#
Philips Semiconductors, I2S Bus Specification, 1986 (revised 1996).
SPI for the synchronous-serial cousin.