# The 'bird' modem The 'bird modem' is a utility for transmitting data over an audio channel using standard PC sound hardware. It was originally intended as part of a larger project involving a bird-themed naming convention, but this failed due to a lack of local collaboratoes in radio range. 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 it 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 sensitivity to phase distortion. The key to this performance is that the protocol does not need any form of clocking or clock recovery. There is no overhead for a sync preamble before a frame, and no need to ensure a maximum interval between transmissions. Instead the modem uses a brute force approach: Twelve receivers are run in parallal, each at equally-spaced phase offsets, and so over the short duration of a frame it is certain that at least one of these will be close enough to the correct timing to decode the signal. The correct output is identified just by looking for a valid frame with correct checksum. This decode approach is computationally inefficient, but highly reliable and resilient against noise. There is zero lock-on delay if the signal is interrupted. 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 cell 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. It has been written to compile under linux, and will need extensive modification under windows to use the Windows audio API. => BirdModem.zip Source and detailed documentation.