User Tools

Site Tools


wifiaudio:start

Sending Microphone Input to another device over TCP

How it Works

  • Essentially we are using NETCAT to pipe audio from a mic input on one computer to the audio output of another computer.
  • It appears that ssh adds a lot of latency around 1-2 secs which is not acceptable more most instances
  • Netcat on the receiver need to starts before the transmitter starts to send otherwise the transmitter script will exit with a connection refused.

Requirements

  • Alsa needs to be working on both computers and alsa-utils should be installed to save mixer settings
  • aplay/arecord also need to be installed along with netcat. In most distributions they are installed as base packages
  • Obviously some sort of tcp/ip must be running to for the netcat communication to work.

Wifi Setup

/etc/network/interfaces
...
auto wlan0
iface wlan0 inet dhcp
        wpa-ssid ssid
        wpa-psk ####
 
...

Audio setup

  • By default the usb audio adapter is detected as card 1 not card 0(default). I tried disable the bcm sound module but for some reason that disables the mixer of the usb audio adapter.
  • I was able to set the default card using asound.conf
/etc/asound.conf
pcm.!default {
    type hw
    card 1
}
 
ctl.!default {
    type hw
    card 1
}

Receiver

wifi_audio_recv.sh
#!/bin/sh
 
PORT="8080"
RATE="2"
BUFFER="10"
FORMAT="cd"
 
while [ true ]
do
        netcat -l -p ${PORT} | aplay -B ${BUFFER} -r ${RATE} -f ${FORMAT}
done

Transmitter

  • RECV_ADDR will need to changed to something valid like a ip address or a hostname/fqdn.
wifi_audo_send.sh
#!/bin/sh
 
PORT="8080"
RATE="2"
BUFFER="10"
FORMAT="cd"
 
RECV_ADDR="<IP>"
RECV_PORT="8080"
 
arecord -B ${BUFFER} -r ${RATE} -f ${FORMAT} | netcat ${RECV_ADDR} ${RECV_PORT}

Audio Passtrough

  • Check mixer controls for input ampifcation if clipping occurs
arecord  -f S16_LE -c2 -r48000 -f dat | aplay -f S16_LE -c2 -r48000 -f dat

Price List

Parts List

  • Arm Computer
  • Wifi Adapter
  • Audio Adapter
  • Power Supply
  • Flash Card (Storage)

Raspberry Pi Issues

  • I get this error whenever I try to change either the buffer size, buffer time, or interrupt period on both the R Pi 1 and R Pi 2
    aplay: set_params:1305: Can't use period equal to buffer size (256 == 256)
  • I picked up a C-Media CM108 Chipset usb audio adapter and it fixed the problem. I able to adjust the sample and buffer size Link

Other Notes

  • The “Chip” microcomputer looks really promising it includes storage, wifi, and audio all on board and is selling for $9. Their website says they will be shipping in June 2016 http://getchip.com/
wifiaudio/start.txt · Last modified: 2018/11/12 14:01 by tschulz