J-QAM
User
Manual
Installation:
To install
the program extract the zip file jqamv?.zip
to a directory of your choice. For the rest of this manual I’ll assume that you
have extracted it to C:\QAM.
Running the program:
Use windows
explorer to open C:\QAM and double click QAM.exe. Alternatively you could make
a short cut to the desktop.
Configuring the program:
Upon
running the program an icon will be added to the system tray.
Double
click the icon in the system tray to bring up the program’s main window.
To minimize
the window to the system tray again just click on the minimize button.
Select the
settings tab, and you will see something similar to the following.
First,
configure “sound card settings”. Choose the “sample rate” for your sound card,
I recommend 96000 but if your computer does not work well with this setting try
something lower like 48000. The “buffer size” controls the size of the audio
buffer and the value of 4096 should be adequate. Both “input device” and “output
device” must be set to valid entries when the program is used
as a modulator, when in demodulation mode only the “input device” needs to be
set.
Next,
configure “QAM settings”. Decide which checkboxes you want to activate.
- Modulator on
Select this if you want the program to be used as a modulator (makes the sound)
- Demodulation on
Select this if you want the program to be used as a demodulator (decodes the sound)
- Enable packet mode
If this option is selected the program sends data as packets. If this option is not selected the program sends raw data and only RS232 data (serial port connection) can be used. If in doubt, have this option selected.
- Start when program is run
This option will press the start button when the program is run.
- UnReal streaming
Check this option if you want to stream UnReal media (see later for details)
- Enable RS232
If this option is checked then the designated serial port can be used to send and receive data from the program.
- Enabled WebServer
This option needs to be selected if you want to have a station ID sent at regular intervals, or if you want to send or receive files via the program. It also runs a web server on the local computer, which is convenient, so if in doubt have this option selected as well. (see later for details)
Now you
must decide what frequency to use for the transmitter. This will depend on what
sample rate your sound card is set to, how much bandwidth you have on your
transmission line, and alpha and gamma. Frequency is in Hertz.
Alpha is a
setting that tells the program what sort of filters to use. Small values
produce a signal output that uses less bandwidth, but the “FIR size” of the
modulation and at the modulator must be bigger. You should choose a value
between 0.1 and 1.
Gamma is a setting
that controls the number of symbols sent for each oscillation of the frequency.
A value of 0.75 means that one symbol is sent every 75% of an oscillation
cycle. This means that smaller values allow you to get a higher throughput, but
the program finds it harder to determine what symbol was sent
when gamma is small, also the smaller gamma is the smaller alpha must be. For
example, if you want gamma to be equal to 0.56, alpha must be no bigger than
about 0.1. You should choose a value between 0.56 and 1. I suggest you use a
program like “spectrum lab” to see what difference alpha and gamma have on the
audio output spectrum.
Mod FIR size and DeMod FIR size. These settings control the number
of calculations the filters must perform. Generally speaking
bigger is better, although this has to be taken with a pinch of salt.
Mod FIR size does not use a great deal of CPU and can be set to a value of 300
without any problem. The smaller alpha is the larger Mod and DeMod FIR sizes must be. DeMod
FIR size uses most of the CPU time that the program receives. At lower
frequencies, DeMod FIR size can be 300 without any
problem but at higher frequencies, say 11000Hz one might only be able to push
the computer up to 30. Mod FIR size will change the frequency output and can be sent using a program like a “spectrum lab”. DeMod FIR size will manifest itself when decoding a signal
and can be chosen by looking at the “constellation”
tab to see what looks acceptable.
Acqui
timeout specifies the number of seconds before the program tries to reinitiate
a lock. Its main use is to be sure that if the program does not acquire a lock
it will reset itself. The value of 120 should be fine for most situations.
Tx char buf size
specifies the size of the transmit buffer. When data is received by the program
before modulation its stores it in this buffer. To prevent overflow this buffer
has to be of adequate size. A value of 10000 or 20000 should be fine.
Constellation
size chooses what constellation size you want. Either 16 or
64. 64 will allow 67% more throughput given the
same bandwidth as 16. The catch is that 64 is more likely to not lock and will
receive more errors than 16.
RS232 settings. If you want to send data to and from the program via serial port
connector, you must specify these settings. As well as enable
RS232 must be checked you must specify what port and what speed you want the
serial port connected to operate at.
Next, if
you have checked enable packet mode then configure TCP/IP settings.
J-QAM
allows you to send and receive UDP packets. If you know what you are doing,
this could be useful. For using the program as a demodulator, set the port you
want sends data to (UDP send port) and the address you want to send data to
(UDP send addr). For using the program as a modulator,
set the port you want to listen to (UDP listen port).
If you have
checked enable UnReal
streaming then you need to configure it. If you are using the program to
modulate UnReal media, then set the address the UnReal media server is running on (UnReal
Server Addr), the port it is running on (UnReal Server Port), and the live alias of the content you
wish to send on the server (UnReal alias). Also you need to set how often my program will send a header
(URH Send Period), 20 seconds should suffice. If you are using the program to
demodulate UnReal media, than just put some free port
in “
Next, if
you have checked enable WebServer then click on the WebServer tab.
First enter
the station ID you want to call your station. This will be
sent every “ID send period”. Enter the size of the packet’s you wish to
send, 512 should be adequate. The program only sends files when the program is
not sending anything else, to do this you must specify the idle threshold. A
small idle threshold means the program waits for very little activity before
sending a packet of a file. Setting this
value to 5% or 10% should be fine. To allow you to change files while the
program is still sending files I have added an FTP server to my program. To have access to this FTP server you have to
enter a port you want (normally “ftp” is used), what username, and what
password you want. Click on the little yellow folder and browse for the file
directory that you wish to be sent, all files in this
directory can be sent but no directories of this directory. Because files are sent continuously in rotation, “Resends” allow you to
specify on average how many times you send a particular file for each rotation.
Zero means the file will never be sent and larger
values will be sent more regularly.
Received
files are stored in a folder named after the station ID where QAM.exe resides.
In our example there would be a folder created called “C:\QAM\My Station\” and
all receive files are stored there. The program allows easy access to these
stored files by running a Web server which runs on the
port “web server port”. To access it open Internet explorer
or Firefox or what ever else and go to the address http://127.0.0.1 . if
you have changed the “web server port” setting then you will have to type in
something like http://127.0.0.1:?? where ?? is the value you have chosen for “web server port”. The web
server interface looks like the picture below.
Sending
and receiving unreal media: (requires
“unreal streaming” to be checked in the settings tab)
If you want
to send unreal media you must first install UnReal media server, and UnReal
live server. My program will only allow you to send live content. You must
create a live content with a certain live alias. (The UnReal
media manual should tell you how to do this). To receive UnReal
media you only need UnReal streaming media player.
Setting up my program for sending unreal media content has
already been described above, and consists of changing the TCP/IP
settings in the settings tab. To receive unreal media go to the web server http://127.0.0.1 or whatever port you have chosen,
when the media is ready to be received, a note icon will appear that can be
clicked on and will play the media.
What all the things mean.
- Level
shows the amplitude of the received signal
- URH
lights up when the program receives and unreal header packet.
- DD
lights up when the program is in fine tuning mode for equalization, and uses a direct decision algorithm.
- AMA
lights up when the program uses many moduli for equalization.
- OverF
lights up when data is wishing to be sent faster than the program can actually send it. If you get this lighting up you have to do something about it.
- URS
lights up when an UnReal media player connects to my program.
- URC
lights up when my program connects to an unreal media server.
- Mod
lights up when the program is modulating (making sound)
- DeMod
lights up when the program is demodulating (decoding sound)
- MSE
mean square error. Gives a value for the quality of the received signal. The smaller the value the better.
- Rx frequency
the frequency of the received signal.
The numbers that appear at the bottom left when
transmitting is the number of characters waiting to be sent
at any one time.
Constellation:
The
constellation tab gives a visual output of the received symbols.
Console:
The console
tab gives a display of any RS232 data or text packets. It also allows you to
send text packets. Its main use is for testing purposes.
Calculating throughput:
To
calculate throughput the following formula is what you use. for
QAM16 3*frequency/gamma=speed(bits/sec)
and for QAM64 5*frequency/gamma=speed(bits/sec).
Starting the modulator/demodulator:
To start
the modulator/demodulator simply click the start
button in the settings tab. To stop the modulator/demodulator simply click the stop button in the settings tab.
Jonti Olds
Email jontio@i4free.co.nz
Home Page https://jontio.zapto.org
Product
Page https://jontio.zapto.org/hda1/paradise/QAM.htm
18/7/2007