Bird modem

The 'bird modem' is a utility for transmitting data over an audio channel using standard PC sound hardware. It can be used as a drop-in replacement for the minimodem program, including when sending the audio signal over a radio channel. Using a modified form of phase-shift keying is can achieve a raw bit rate of 2450bps. After the overheads of HDLC framing and forward error correction, the usable performance is approximately twice that of minimodem while providing comparable noise tolerance. The audio signal fits within a 3KHz channel and is DC-free, suitable for immediate transmission over an unmodified FM voice radio. It is not, however, suitable for SSB channels due to a high level of sensitivity to phase distortion.

As well as a demonstration program which can be used for file transmission, 'minibird,' the Bird Modem code can also be incorporated easily into any C++ program. It accepts cells for transmission and receives with cell boundries preserved. Every frame will be either received intact or not received at all. The maximum cell size recormended is 160 bytes, so larges frames must be broken into a series of cells.

The minibird program itsself is used in the same manner as minimodem: -t to transmit, -r to receive. Unlike minimodem, it is capable of full duplex operation. It could easily be modified for half-duplex or even CSMA on a common channel, but I have not implimeted this functionality.

The detailed protocol documentation is included along with the source. It has been written to compile under linux, and will need extensive modification under windows to use the Windows down API.