NAME fodtmf - Transfer files over audio. ETYMOLOGY File over DTMF (dual-tone multi-frequency signaling) ~ ~ ~~~~ ~ ~ ~ ~ SYNOPSIS fodtmf-send [OPTIONS] [< FILE] fodtmf-recv [OPTIONS] [> FILE] DESCRIPTION fodtmf-send shall send the file FILE over audio encoded with dual-tone multi-frequency signaling. The message will be enhanced with hamming code for error correction, and optionally with redundant frequencies to help combat noice in the environment. At the end of the transfer, an 'end of transmission' byte will be send. If the message is cancelled, a 'cancel' byte will be send. The end of the message will be padded with this byte until a full error correcting code has been constructed. For any 'data link escape' byte, any 'end of transmission' byte, and any 'cancel' byte in the transmitted file, a 'data link escape' byte will be inserted directly before it. fodtmf-recv shall receive a file sent using fodtmf-send. OPTIONS -f MULTIPLE In addition to any tone with the frequency F, also send, simultaneously a tone with the frquencies F times MULTIPLE. This is adds redundancy to improve the reliability of the transfer. Redundant tones are not added by default because they make the tones less pleasant. -r N In each error correcting code, include N parity bytes. By default, this is three. The higher this value is, the less redundancy the code will have. The number of bytes per code is calculated by 2^N - 1, and the number of data bytes per code is calculated by 2^N - N - 1. There are two exceptional values, that cases the message to be transferred without any hamming code for error correction: 0 Do not include any redundancy at all, apart from any specified using the flag -p. 1 Only one redundancy byte per code, apart from any specified using the flag -p. This value must be non-negative. If this value, plus 1 if -p is used, equals 1, the receiver may be able to spot errors, but has no chance of repairing them, unless additional error correction mechanisms are added. If it equals 0, the receiver will be unable to spot errors unless additional error correction mechanisms are added. -p Include one extra parity byte per error correcting code. This byte will be the parity of all data bytes. -o FD For fodtmf-send: Write the audio to file descriptor FD rather than playing it back. This is intended for development purposes only. The written file will not contain any metadata to hint how it is encoded and how it should be played back. For fodtmf-recv: Write a list, of all codes (by index) that where not properly received and could not be corrected, to file descriptor FD. -s FD Read input from file descriptor FD rather than from the microphone. This is intended for development purposes only. Only available for fodtmf-recv. Each option can only be used once. NOTES It may be a good idea to compress the file before transmitting it. For example xz -e9 < your-file | fodtmf-send ## sender fodtmf-recv | xz -d > your-file ## receiver But note well, which compresion algorithm is most efficient depends on the file. FUTURE DIRECTIONS afodtmf (Advanced File over DTMF) will be written. It will make the computers communicate with each other bidirectionally (limited to one-to-one communication) to repair errors that could not be correct using the error-correcting code. RATIONALE I really don't know precisely why. But it sounded fun. SEE ALSO scp(1), nc(1)