Skip to main content


Breakthrough: Transmitting digital data to a cassette and back

In my attempt to build open hardware and free software to store digital music on compact cassettes, I managed to achieve the first breakthrough in the software part: Transferring data from the computer to a cassette and back using GNURadio, a sound card and a tape deck. There are still a lot of errors in the received data with the current modem setup, but there is probably a lot of room for improvements.

The GNURadio flowgraphs are in the open-system-compact-cassette repository at in the subfolder "gnuradio-modem":

The transferred data contain a raw RGB image with 320x180 Pixels, 24 bits per pixel. The modulation method was BPSK resulting in a data transfer rate of 11,6 kbit/s. No error correction was used. The tape used in this experiment is a good chrome dioxide (type II) tape.

The images in this post show the original image (no distortions), the result when the image data is modulated and demodulated completely in GNURadio (some distortions) and the result of the data transferred to tape and back (lots of distortions).

# # # # #


GNURadio QPSK modem result

The following pictures display a norwegian river (in Åmot, Telemark) and the result of modulating and demodulating the raw RGB data of the image using QPSK in GNURadio. Some information from the picture is missing. This may be a symbol mapping issue or a phase shift... I still need to figure out how to use the constellation modulator/demodulator correctly.

# # #

Now I can break up the „direct“ complex number path between modulator and demodulator to simulate a data transfer via sound card.
The problem creating so much information loss was caused by a wrong sample per symbol setting in the constellation modulator and the polyphase clock sync modules. Maybe one can only have (constellation points / 2) samples per symbol. It would make sense: You must represent four states for the two samples (bits) that are transmitted / received.


GNURadio beginner modem question

I'm trying to get started with GNURadio usind GNURadio companion. The problem is that I don't get a simple modulation/demodulation working. All I receive after the demodulation are bytes with a value of zero. How can I receive the data I encoded?

This is the setup:

I have selected the parts using trial and error: If I couldn't figure out how to configure part X, I used part Y instead.

# # #