copy_paste - 2006-04-13

Hi,

I setup cygwin esd on windows and mpg123-esd on colinux using the instructions in the faq (http://wiki.colinux.org/cgi-bin/SoundSupportInColinux), but all the audio apps I've tried seem to disconnect from esd without playing anything.

I start the esd server from a cmd prompt in windows like this...

esd -tcp -public -port 16001

Then, I hear the esd beeps, which indicates it's driving the sound card successfully, and it displays...

- accepting connections on port 16001

At this point, I can get a connection with telnet from colinux to esd. Then, I set the ESPEAKER env variable and try using esdplay to play an mp3. I've also tried some other apps that I setup to use esd, like kontrol, xmms, and mpg123-esd. Some display an error that says they can't connect to the sound server. XMMS displays this...

Error id3.c, line 286: fread() failed

I captured the output from TCP Spy. Maybe someone can figure it out from this.

This is what I get when I start esd on Windows...

the next process to start and make a socket call will be spyed
process attached, command line='esd -tcp -public -port 16001'
socket (1740) created [family=AF_INET, type=SOCK_STREAM, protocol=IPPROTO_IP, dwFlags=WSA_FLAG_OVERLAPPED]
socket (1740) enabled its nonblocking mode
socket (1740) set one of its options [level=SOL_SOCKET, optname=SO_LINGER, l_onoff=1, l_linger=100]
socket (1740) set one of its options [level=SOL_SOCKET, optname=SO_REUSEADDR, optval=true]
socket (1740) bound [name=0.0.0.0:16001]
socket (1740) established for listening [backlog=16]
socket (1548) created [family=AF_INET, type=SOCK_DGRAM, protocol=IPPROTO_UDP, dwFlags=WSA_FLAG_OVERLAPPED]
socket (1548) bound [name=127.0.0.1]
socket (1548) determined its local name [name=127.0.0.1:1308]
socket (1548) sending a datagram synchronously [len=1, to=127.0.0.1:1308]
socket (1548) sent a datagram that is 1 bytes
0000  00                                                .              
socket (1548) receiving a datagram synchronously from its default address [len=1]
socket (1548) received a datagram that is 1 bytes
0000  00                                                .              
socket (1740) accepting a connection synchronously without blocking
socket (1740) could not accept a connection - WSAEWOULDBLOCK (A non-blocking socket operation could not be completed immediately)

This is what I get when I invoke esdplay from colinux...

socket (1548) sending a datagram synchronously [len=1, to=127.0.0.1:1308]
socket (1548) sent a datagram that is 1 bytes
0000  00                                                .              
socket (1548) receiving a datagram synchronously from its default address [len=1]
socket (1548) received a datagram that is 1 bytes
0000  00                                                .              
socket (1740) accepting a connection synchronously without blocking
socket (1740) accepted a connection on new socket (1580) [addr=192.168.1.107:53408]
socket (1580) disabled its nonblocking mode
socket (1580) set one of its options [level=SOL_SOCKET, optname=SO_SNDBUF, optval=16384]
socket (1580) set one of its options [level=SOL_SOCKET, optname=SO_RCVBUF, optval=16384]
socket (1740) accepting a connection synchronously without blocking
socket (1740) could not accept a connection - WSAEWOULDBLOCK (A non-blocking socket operation could not be completed immediately)
socket (1580) specified an event object to be associated with the supplied set of network events and enabled its nonblocking mode [hEventObject=668, lEvent=FD_READ|FD_CLOSE]
socket (1580) receiving data synchronously without blocking [len=20]
socket (1580) did not receive any data, closed gracefully by peer
socket (1580) specified an event object to be associated with the supplied set of network events and enabled its nonblocking mode [hEventObject=0, lEvent==0]
socket (1580) disabled its nonblocking mode
socket (1580) set one of its options [level=SOL_SOCKET, optname=SO_LINGER, l_onoff=1, l_linger=240]
socket (1580) closed; bytes received=0, bytes sent=0
socket (1548) sending a datagram synchronously [len=1, to=127.0.0.1:1308]
socket (1548) sent a datagram that is 1 bytes
0000  00                                                .              
socket (1548) receiving a datagram synchronously from its default address [len=1]
socket (1548) received a datagram that is 1 bytes
0000  00                                                .              
socket (1740) accepting a connection synchronously without blocking
socket (1740) accepted a connection on new socket (1604) [addr=192.168.1.107:53409]
socket (1604) disabled its nonblocking mode
socket (1604) set one of its options [level=SOL_SOCKET, optname=SO_SNDBUF, optval=16384]
socket (1604) set one of its options [level=SOL_SOCKET, optname=SO_RCVBUF, optval=16384]
socket (1740) accepting a connection synchronously without blocking
socket (1740) could not accept a connection - WSAEWOULDBLOCK (A non-blocking socket operation could not be completed immediately)
socket (1604) specified an event object to be associated with the supplied set of network events and enabled its nonblocking mode [hEventObject=668, lEvent=FD_READ|FD_CLOSE]
socket (1604) receiving data synchronously without blocking [len=20]
socket (1604) did not receive any data, closed gracefully by peer
socket (1604) specified an event object to be associated with the supplied set of network events and enabled its nonblocking mode [hEventObject=0, lEvent==0]
socket (1604) disabled its nonblocking mode
socket (1604) set one of its options [level=SOL_SOCKET, optname=SO_LINGER, l_onoff=1, l_linger=240]
socket (1604) closed; bytes received=0, bytes sent=0
socket (1548) sending a datagram synchronously [len=1, to=127.0.0.1:1308]
socket (1548) sent a datagram that is 1 bytes
0000  00                                                .              
socket (1548) receiving a datagram synchronously from its default address [len=1]
socket (1548) received a datagram that is 1 bytes
0000  00                                                .              
socket (1740) accepting a connection synchronously without blocking
socket (1740) could not accept a connection - WSAEWOULDBLOCK (A non-blocking socket operation could not be completed immediately)

I also tried using esdplay from windows to windows and captured this traffic with TCP Spy. This works and I get LOTS of data in the log.

As I last resort, thinking it may have something to do with the TAP adapter being on a different subnet from windows, I converted from internet connection sharing to a network bridge and installed a dchp client on colinux so it could get an ip from the router like windows does. This all worked, but the same thing still happens with esd.

Can anyone think of what may be happening or something I can try to figure this out?

Thanks,
Scott