USB sound card

Background

There are many types of simple household protocols that are interesting to decode. Typical examples are IR-signals used by remote controls and RF-signals used by remote switches. The problem is that you usually need special hardware to decode the signals. A normal PC has more than enough computing power to decode these types of protocols in the background, but the problem is to have an interface that can manage a real time data stream.

Linux and Windows are not real time operating systems, and to decode data streams in real time usually requires both kernel mode drivers and specific hardware.

But there is one real time interface that is often forgotten - the microphone input! This is a real time data sampling interface which can sample analog data streams with up to 44KHz and handle buffering to the operating system. If the digital data stream have pulse lengths over 100uS, we can sample the data stream with the microphone port and decode the digital pulses with software. On a normal PC this takes under 3% of the CPU capacity.

I built this program specifically for analyzing remote control protocols for a computer controlled IR-sender I was building, but I discovered that it was useful also for decoding RF-based protocols with the right hardware.