Basic information taken from https://github.com/drowe67/freedv-gui/blob/master/USER_MANUAL.md and adjusted to FreeDATAs needs
Sound card levels are generally adjusted in the computer's Control Panel or Settings, or in some cases via controls on your rig interface hardware or menus on your radio.
On receive, FreeDATA is not very sensitive to the From Radio level, adjust so it is mid-range and not clipping. FreeDATA (codec2) uses phase shift keying (PSK) so is not sensitive to amplitude.
The transmit level from your computer to your radio is important. On transmit, adjust your level so that the ALC is just being nudged. More is not better with the FreeDATA transmit signal. Overdriving your transmitter will lead to a distorted transmit signal, and a poor SNR at the receiver. This is a very common problem.
FreeDATA likes a clean path through your radio. Turn all audio processing OFF on transmit and receive:
On receive, DSP noise reduction should be off.
On transmit, speech compression should be off.
Keep the receive audio path as "flat" as possible, no special filters.
FreeDATA will not work any better if you band pass filter the off air received signals. It has its own, very tight filters in the demodulator.
Normally codec2 decodes in a range of +/- 50Hz with a center decoding frequency of 1500Hz. If you want to increase this for decoding in a wider range, you need to change the source code of codec2 and recompile it: https://github.com/drowe67/codec2/blob/master/src/ofdm.c#L1163