I'm trying to write my own decoder for the time broadcast of [CHU](https://www.sigidwiki.com/wiki/CHU), the Canadian version of the NIST Time signal broadcast station. To do that I need to decode Bell 103 modem signal. ## Signal Specification Audio Frequency Shift Keying with 2 sets of 2 tones (transmit and receive). - Transmit: `1070Hz` (space or 0) and `1270Hz` (mark or 1) - Receive: `2025Hz` (space or 0) and `2225Hz` (mark or 1) Signal is transmitted at 300 baud, so each bit is 3.33ms long ## Bitstream Specification Each 'symbol' is 10 bits long. The first bit is a start bit and I don't currently know what the value will be. The next 7 bits are data. Finally, there are 2 stop bits. **Problem: there's some disagreement if there are 2 stop bits, or a parity bit and a stop bit.** ## External Definitions > The modulation is a binary modulation obtained by frequency shift, resulting in a modulation rate being equal to the data signalling rate. For channel No. 1, the nominal mean frequency is 1170 Hz; for channel No. 2, it is 2125 Hz. The frequency deviation is ±100 Hz. In each channel, the higher characteristic frequency (FA) corresponds to a binary 1 [i.e. channel No. 1 (FA = 1270 Hz and Fz = 1070 Hz); channel No. 2 (FA = 2225 Hz and Fz = 2025 Hz)] > Characters shall be coded in the US 7-bit national character set according to ITU-T T.50. Characters are framed by one start bit, 7-bit data, with one even parity bit and one stop bit. Received parity should be ignored. [ITU Recommendation V.18 Appendix D, retrieved 2023/12/26](https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-V.18-200011-I!!PDF-E&type=items) ## Links - [wikipedia](https://en.wikipedia.org/wiki/Bell_103_modem) - [Why did the Bell 103 modem specification use 1070Hz, 1270Hz, 2025Hz and 2225Hz?](https://retrocomputing.stackexchange.com/questions/19699/why-did-the-bell-103-modem-specification-use-1070hz-1270hz-2025hz-and-2225hz) - [CHU Broadcast codes](https://nrc.canada.ca/en/certifications-evaluations-standards/canadas-official-time/chu-broadcast-codes) - [gr-ham](https://github.com/argilo/gr-ham/) includes a CHU decoder and thus a Bell 103 Decoder