NOTES for Express_DVB-S/S2/T_Transmitter software for Windows - v1.25LP14
Revised 2019-04-02

The Express_DVB_Transmitter software can now run four different DATV exciter boards
using the DVB-S and now also DVB-S2 and DVB-T DATV protocols in a Windows OS environment:
   1) the DATV-Express hardware board 
   2) the LimeSDR board
   3) the LimeSDR-mini board
   4) the PLUTO-ADLM board
* There is currently a beta Users Guide for Windows (Draft 14) for the v1.25LP11 software.  
* Windows 7, 8, or 10.
* DVB-S protocol is encoded inside FPGA
* DVB-S2 protocol is encoded on the Windows PC because FPGA is too small
* An experimental version of DVB-T protocol is encoded on the Windows PC because FPGA is too small for encoding
* The experimental version of DVB-T protocol will support 2K mode and 2 MHz and 1 MHz Channel-bandwidths.
* Video payload can be H.262 (MPEG-2), H.264 (MPEG-4), or H.265
* Software CODECs for encoding are installed automatically with the software (no more Hauppauge).
* Audio payload bit rate can now be as low as 64Kbps
* A DVB-S2 noise tool added. Allows the addition of Gaussian noise to the DVB-S2 (only) output.
* A large selection of camera models are available from built in notebook-cam to web-cams and HD hand-cams
* DATV-Express hardware board frequency range remains the same (70 MHz to 2450 MHz ham bands)
* See PLUTO and LimeSDR spec sheets for frequency range of those boards.
* A simple CALL LETTERS overlay (called VIDEO IDENT) can be selected to be inserted into the transmitted video.
* The Symbol Rate supported by the four exciter boards varies and all rates show below are dependent of how fast is the CPU and the USB-architecture on your computer.  The approximate SR maximums (or achievable channel-RFbandwidth for DVB-T protocol) are shown below:
	EXCITER			DVB-S		DVB-S2		DVB-T
	DATV-Express (USB-2)	175K-20M S/sec	175K-20M S/sec	2 MHz-7 MHz RFbw
	LimeSDR (USB-3 or -2)	175K-20M S/sec	175K-20M S/sec	2 MHz-7 MHz RFbw
	LimeSDR-mini (USB-3/2)	175K-20M S/sec	175K-20M S/sec	2 MHz-7 MHz RFbw
	PLUTO (USB-2)		175K-2M S/sec	175K-~2M S/sec	2 MHz RFbw
	(NOTE - currently the LimeSDR-Mini board emits a 20 MHz wide burst of calibration noise, whenever transmitter parameter changes are made, 
	 like frequency, power level, etc. The owner has to assure that the RF Power Amplifier is NOT enabled while parameters are changed.)

IF you are installing software for a DATV-Express board, then:
First, install the Driver for DATV-Express boardsec
There is a program called  Zadig    http://zadig.akeo.ie/  which makes loading drivers easy.
NOTE - If you already have the DatvExpressServerApp installed on your machine then the Windows 
DATV-Express hardware driver needed for Express_DVB-S_Transmitter has already been installed 
and there will be nothing further to do for the windows HW driver..
(1) You need to have ADMIN privileges to change drivers.
(2) Next, have the hardware board installed as Unknown Device in the Windows-CONTROL-PANEL 
DEVICE MANAGER mode of the Windows Control Panel.
    - Attach the DATV-Express board powered-up into Windows machine
    - DO NOT RUN inf wizard exe  for  libusb ****(does not show correct usb device, yet...JUST ABORT)
    - When you insert the USB cable to the Board from Windows...you will see "unknown hardware 
do you want to find driver" say NO
   - now go to CONTROL PANEL -> DEVICE DRIVER -> OTHER DEVICES -> UNKNOWN DEVICE
(3) Then start up ZADIG in libusb-win32 mode and it will then fill in USB ID automatically?and installed 
the drivers as Unknown Device #1
(4) Then I edited ZADIG device name to "DATV-Express" and reinstalled driver with ZADIG.
    - double click on UNKNOWN DEVICE
    - click on UPDATE DRIVER...choose "browser my computer"
For further information please consult the Zadig webpage and instructions.
Second, run the SETUP installer program for Express_DVB-S_Transmitter software package. Allow 
the installer to place the program in the root directory (default).

IF you are installing software for a ADALM-PLUTO board, then:
Follow driver instructions described with v1.25p software release notes below.

IF you are installing software for a LimeSDR board (or mini), then:
Connect the LimeSDR-mini to a USB port (I use USB-3) on Windows PC that is connected to the internet.
Plug-in LimeSDR-mini and wait a few minutes for the LimeSDR to find the drivers and automatically install. If successful, you should see a device called "FTDI FT601 USB 3.0 Bridge Device" in Windows Device Manager under USB controllers. Note that you may need to install Microsoft Redistribuable Visual C++ (32-bits) if claims of "missing dlls" appear when starting the DATV-Express software.

The Express_DVB_Transmitter software program is fairly easy to use
After changing a parameter hit OK 
Then go to the file menu and click on save.
Then go to the file menu and click on restart.
The program should then be ready to use the new parameters.
If you already have a profile you want to use then select Open.
If you want to save a new profile use Save As.

Profiles (.CFG files) will always be stored in the installed base directory. The default is
 C:\DatvExpress\Express DVB-S Transmitter\
There is also a file called onairformats.txt you can manually add a new on air transmission format.
Please remember the FPS for the output must be less than or equal to the capture format.
Also some frame rates will not be supported by your capture device.  

If you are only changing the frequency or power output level then there is no reason to restart the 
program.

At both high and low symbol rates the program does not correctly estimate the available bit rate and it 
may be necessary to adjust the VBITRATE twiddle factor. It simply multiplies it's estimate by the 
twiddle factor.

When selecting a Video capture device, make sure you select a format.
Only analogue formats can be used YUV, RGB, etc. I have included all the formats for debugging.

This program is very CPU intensive all the video and audio compression is done in software.
In the Video Codec option dialog there is a field called PERFORMANCE that allows you to tell the 
codec how much effort to make when analysing the frame. The faster the option the less CPU required. 
There commands are sent directly to the Codecs themselves. If you set the performance too high the 
software will crash.

This is a Beta-release so I would appreciate any feedback good or bad.
If possible please use the BATC forum or DATV-Express yahoo group so information can be shared 
with others. If you are shy you can email me. I will then probably anonymise the comment and then 
post it along with a response if I believe it would help others.

I am still expecting you to break it!

- Charles G4GUO


Version 1.25LP14
Improved the software timing of the PCR/PTS/DTS timestamps for H.262 and H.264 CODECs. 
When transmitting, make sure the TX queue level remains below 10% (if it starts to climb, your transport stream will become non-compliant).
----------------------- KNOWN ISSUE ---------
* This latest revision created a new issue for H.265 dropping video frames. This new H.265 problem is understood…and G4GUO will try to fix the software.
* The RF-power-level-slider in the display GUI can not successfully use curser keys to move/change the power-out level. The slider moves position with the cursor-keys. but the actual RF power out does NOT change. This possible user-issue is the way the transmitter software is designed and affects all of the exciters: DATV-Express, LimeSDR and PLUTO. The work-around is easy, grab-and-move the slider bar with your mouse.


Version 1.25LP13
CODECs refreshed
Null buffer display added
UDP interface added
Codec buffer configurable
External reference (Express HW) configurable


Version 1.25LP12 - one upgrade made
Upgraded V1.25LP12 software to be compatible with the latest Lime MicroSystems firmware.
----------------------- KNOWN ISSUE ---------
* The RF-power-level-slider in the display GUI can not successfully use curser keys to move/change the power-out level. The slider moves position with the cursor-keys. but the actual RF power out does NOT change. This possible user-issue is the way the transmitter software is designed and affects all of the exciters: DATV-Express, LimeSDR and PLUTO. The work-around is easy, grab-and-move the slider bar with your mouse.


Version 1.25LP11 - one fix made
LimeSDR-USB and LimeSDR-mini now use the correct frequency selective output ports
----------------------- KNOWN PROBLEMS ---------
* The RF-power-level-slider in the display GUI can not successfully use curser keys to move/change the power-out level. The slider moves position with the cursor-keys. but the actual RF power out does NOT change. This possible user-issue is the way the transmitter software is designed and affects all of the exciters: DATV-Express, LimeSDR and PLUTO. The work-around is easy, grab-and-move the slider bar with your mouse.
* Lime Microsystems support changed their firmware.  Recommend upgrading to V1.25LP12 software to be compatible.


Version 1.25LP10 - one small fix made
* Pluto no longer emits a carrier on receive (after transmit startup [ PTT ] is released).
----------------------- KNOWN PROBLEMS ---------
* The RF-power-level-slider in the display GUI can not successfully use curser keys to move/change the power-out level. The slider moves position with the cursor-keys. but the actual RF power out does NOT change. This bug affects all of the exciters: DATV-Express, LimeSDR and PLUTO. The work-around is easy, grab-and-move the slider bar with your mouse.
* For LimeSDR-USB units, if frequency selected is <2.0 GHz, then then code did not select the correct output port and the RF power output was too low. For LimeSDR-mini units, if frequency selected is >2.0 GHz, then the code did not select the correct output port and the RF power output was too low.


Version 1.25LP9 - three small fixes made
* the problem of transmitting 100% RF power on transmit startup (PTT) is fixed.
* a NULL packet is now sent after PTT pressed (fixes issues with long GOP).
* Reconfiguration message tidied up (no need to click on OK).
* You will probably need to install Microsoft Redistribuable Visual C++ (32-bits) if claims of "missing dlls" appear when starting the DATV-Express software.
----------------------- KNOWN PROBLEMS ---------
* The RF-power-level-slider can not successfully use curser keys to move/change the power-out level. The slider moves position with the cursor-keys. but the actual RF power out does NOT change. This bug affects all of the exciters: DATV-Express, LimeSDR and PLUTO. The work-around is easy, grab-and-move the slider bar with your mouse.
* When using the PLUTO exciter, clicking PTT on the software GUI to turn off a transmission leaves a "same level" RF carrier being emitted. This v1.25LP9 software bug does NOT affect the DATV-Express or LimeSDR-mini boards.


Version 1.25LP8
* Queue size reduced
* Changed 16APSK and 32APSK constellation option to use average symbol
energy rather than setting outside constellation ring to 1. This 
improves MER on APSK modes.


Version 1.25LP7
* LimeSDR and LimeSDR-mini support now working
* Device initiation partially re-written


Version 1.25p6
* LimeSDR support added (but is broken).
* DTS/PTS/PCR modules re-written to correct the audio drop-out issue after 10 seconds on some receivers.
This audio drop-out problem was first reported in v1.23 and v1.25 releases.


Version 1.25p5
* PTS/DTS fix
* DVB-S2 Constellation changed
* S2 Reset after parameter change.


Version 1.25p
* Initial support for ADALM-PLUTO
* Before running the software you will need to perform the following steps

(1) Install the Windows drivers for the ADALM-PLUTO which are here
https://wiki.analog.com/university/tools/pluto/drivers/windows

(2) Extend the frequency range of the ADALM-PLUTO notes on how to do this are here
https://wiki.analog.com/university/tools/pluto/users/customizing

(3) You will also probably have to install the VC++ 2015 re-distributable (32 bit version)
https://www.microsoft.com/en-gb/download/details.aspx?id=48145
This is a very preliminary release. I have still a lot to learn about this new PLUTO radio


Version 1.25 - made three small feature improvements (clean-up) and fixed three bugs
* The text overlay for VIDEO INDENTIFICATION field no longer requires a restart to force it to change
* You can change transmitter frequency without disturbing the transmission. As soon as you click on OK it will change frequency,
* error checking for video formats has been removed...so more formats will appear in the list (not all of them will work).
* Should now work with International language versions of Windows....like Italian
* Should now work with Japanese language versions of Windows, but not tested....need Japanese beta testers
* Not all FEC rates are permitted for each type of modulation. The GUI had been trying to set illegal values (or no values at all).
----------------------- KNOWN PROBLEMS ---------
* The MER readings using MiniTiouner receiver for DVB-S2 transmissions appear to read "lower" in value than when using the 
DVB-S protocol. Due to an "unknown reason", the 32APSK modulation will not decode on a SatLink Analyzer unless the DATV-Express 
software has modified the 90 symbol preamble magnitude on the DVB-S2 frame.  G4GUO had to reduce that preample amplitude 
as it was the only way he could get the Satlink to receive 32APSK. The transmitted DVB-S2 signals appear to still be robust. 
G4GUO has not been able to figure out yet why the Satlink does not decode 32ApSK when the DVB-S2 preamble is set to the 
correct level.
* On v1.23 and v1.25, the TS timing between audio and video is not well synchronized, and with some transmitting conditions with MiniTioune 
 after 10sec you will get freeze and audio stops being decoded....or may experience slow Frames Per Second (FPS) at receiver. TS timing
 works fine on receivers that don't check the timing...could try streaming the output of MiniTioune/Tutioune to VLC via UDP.


Version 1.23 - added DVB-S2 and DVB-T and fixed two bugs and added features
DVB-S2 support was added (beta-release condition)
Final tweak on several earlier experimental versions has added RB-DATV filtering improved for DVB-S2 to match that of DVB-S
A DVB-S2 filter now only supports 0.35 roll off (ran out of FPGA space).
Interpolator error in early DVB-S2 experimental builds is now fixed for x32 and x64
The state in fpga ifir no longer buffered...significant speed increase in both DVB-S and DVB-S2 
Restarts forced after more parameter changes.
SI tables updated without a restart.
Mouse wheel can now control the TX power level.
Tx power level now changes with slider control no need to release the mouse button.
An DVB-S2 noise tool added. This tool allows the addition of Gaussian noise to the DVB-S2 (only) output. The noise is generated in the PC and then filtered on the Express board so it is not an exact measure. Currently it uses a lot of CPU, be warned.
IQ DC offset correction dialog has been added.
Should now work with French language versions of Windows.
----------------------- KNOWN PROBLEMS ---------
* Windows-for-Italian OS does not select capture-camera properly because of use of a "Italian-friendly" setting name. Using vMix should be a work-around.
* Windows-for-Japanese OS does not select capture-camera properly because of use of a "Japanese-friendly" setting name. Using vMix should be a work-around.
* The MER readings using MiniTiouner receiver for DVB-S2 transmissions appear to read "lower" in value than when using the DVB-S protocol. Due to an "unknown reason", the 32APSK modulation will not decode on a SatLink Analyzer unless the DATV-Express software has modified the 90 symbol preamble magnitude on the DVB-S2 frame.  G4GUO had to reduce that preample amplitude as it was the only way he could get the Satlink to receive 32APSK. The transmitted DVB-S2 signals appear to still be robust. G4GUO has not been able to figure out yet why the Satlink does not decode 32A{SK when the DVB-S2 preamble is set to the correct level.
* Some FEC settings that were not permitted in some modulation types...the GUI allows illegal values (or no values at all).
* the TS timing between audio and video is not well synchronized, and with some transmitting conditions with MiniTioune 
  after 10sec you will get freeze and audio stop being decoded....or may experience slow Frames Per Second (FPS) at receiver. TS timing
  works fine on receivers that don't check the timing...could try streaming the output of MiniTioune/Tutioune to VLC via UDP.



version 1.11 - Fixed two additional bugs
The line of code in the FPGA code that drives the PTT output line on J4 had been inadventantly left commented-out
The file-name of the primary .EXE was correctly changed to "DatvExpressTransmitter.exe". 
(previously it had been inadvertantly named "ExpressCaptureServer.exe"...a bit confusing.)
----------------------- KNOWN PROBLEMS ---------
* Windows-for-French OS did not select capture-camera properly because of use of a "French-friendly" setting name.

version 1.10 - Fixed two bugs
Corrects wrong error messages being reported when capture-device is incorrectly configured.
Strings not being terminated when reading from .cfg file
----------------------- KNOWN PROBLEMS ---------
* non-sequenced-PTT out line on connector J4 - pin 2 was disabled by FPGA code that was commented out.
* The name of the primary .EXE file that is installed is a bit misleading and is currently called 
"ExpressCaptureServer.exe" instead of the expected "Express_DVB-S_Transmitter.exe" file name.

version 1.09 - Added sequenced PTT on hardware board J6 connector
J6 pin 3 sequenced-PTT line (output signal)
J6 pin 4 C/O (change/over) Relay Line (output signal)
There is a 200 ms delay between sequenced-PTT and C/O
NOTE - there has always been a non-sequenced-PTT output line on J4 - pin 2 (See Users Guide for Windows)

version 1.08 -  Added Port output signals selection in MODULATOR menu to select/drive amplifiers or 
relays
PTT Port A = J6 pin 5, 
    Port B = J6 pin 6, 
    Port C = J6 pin 7, 
    Port D = J6 pin 10
Pin 1 is the pin closest to the J6 label and is a ground pin.
These pins are connected directly to the FPGA with no protection - you have been warned.
Pins are active high on both transmit and receive. The output must not exceed 20 mA and is at 3v3 
logic






