GithubHelp home page GithubHelp logo

on4qz / qsstv Goto Github PK

View Code? Open in Web Editor NEW
81.0 10.0 10.0 7.32 MB

Receive and transmit images over radio using analog SSTV or digital DRM

License: GNU General Public License v3.0

C++ 95.44% C 3.62% QMake 0.94%

qsstv's Introduction

QSSTV

QSSTV is a program for receiving and transmitting SSTV and HAMDRM (sometimes called DSSTV). It is compatible with most of MMSSTV and EasyPal

Installation

Dependencies

For Ubuntu 20 you can install dependencies as follows:

apt install pkg-config g++ libfftw3-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libhamlib++-dev libasound2-dev libpulse-dev libopenjp2-7 libopenjp2-7-dev libv4l-dev build-essential

Compile and Install

mkdir src/build
cd src/build
qmake ..
make -j2
sudo make install

Note: make -j2, 2 is the number of cores to be used for parallel compiling. If you have more cores, use a higher number.

Debug Compile

If you have problems compiling the software, please give as much information as possible but at least:

  • Linux Distribution and Version (e.g. Ubuntu 18.04)
  • QT Version (e.g. Qt 5.4.1)
  • Screen dump of the compile process showing the error

If you want to be able to debug the program, the simplest way is to install QtCreator and from within QtCreator open a new project and point to the qsstv.pro file. Note: you will need to install doxygen and libqwt

sudo apt-get install doxygen libqwt-qt5-dev

You can also run qmake with the following atributes:

qmake CONFIG+=debug

and use an external debugger (such as gdb)

qsstv's People

Contributors

dl8dtl avatar on4qz avatar hspil avatar ruxton avatar barrydegraaff avatar

Stargazers

Aptura avatar Renan Rocha avatar Risheng Zhou avatar Amurru Zerouk avatar Joshua Jerred avatar  avatar  avatar $ilverX avatar Peter H. Li avatar  avatar atvfool avatar Andy Shevchenko avatar 孟古一 avatar Boris avatar Colin Wong avatar  avatar  avatar Josh Moore avatar Joseph Hancock avatar  avatar  avatar Gre3nStars avatar Vitold S. avatar 立言 Li Yan avatar Edward Raybould avatar EnderAvaritia avatar Antonio avatar Lee T avatar Joao Socio avatar  avatar Sebastian avatar the42game@code avatar Jason Todd avatar Kartik Jha avatar Chris Thompson G0KLA / VE2TCP avatar Zaid Taha avatar  avatar Windsor Schmidt avatar Andhow avatar  avatar Bemmy avatar A avatar Anoduck avatar Marin Atanasov Nikolov avatar 1d10t avatar  avatar Roger Pettett avatar Joe Schroedl avatar  avatar Dave avatar Paul Chvostek avatar iAmInAction avatar Didier A avatar Nezume Ratgirl avatar Brendan Leber avatar  avatar Gerad Munsch avatar Bruce Young avatar Brayden Regis - CTCL avatar Gulshan Yadav avatar Douglas Heriot avatar Diego Fernández avatar Frode Okkenhaug avatar Devin Berg avatar  avatar Daryl avatar xtex avatar Dimitrios Ntoulas avatar SLC avatar  avatar 吾爱吾王 avatar Kevin Vicente avatar  avatar  avatar Lee Donaghy avatar  avatar  avatar Kelly avatar Dave Slotter avatar Precise avatar  avatar

Watchers

 avatar Gerad Munsch avatar  avatar Thomas Copper avatar Precise avatar Renan Rocha avatar  avatar Bruce Young avatar  avatar  avatar

qsstv's Issues

EasyPal Source Code

Sorry if this is off-topic. Please advise (gently) if there is a better place to put the query.

I would very much like to get hold of the Easypal source code with a view to at least doing some small fixes until a better pathway forward exists for SSTV on the Windows platform. Whilst linux is great for some of us, there are a lot of hams out there who will only ever use Windows and, unfortuntately, they are hurting with the lack of an up-to-date windows program.

I understand Eric lost the source after some accident (?a fire) but was wondering if anyone else ever had a copy, even if it wasn't the latest version.

Chris vk3dnh, who was involved in some capacity, has suggested that someone from this qsstv group might have it, hence the query here.

If no one here can help, any suggestions on anyone else we could ask would be appreciated.

Thx

Use network rigctld

Consider add Rig control by using TCP socket of external rigctld. For now calling own instance conflicts with other HAM programs, which also want to use hamlib/rigctl as they sits on same serial port.

wavio error

I use sound input from file modle,but when i choice wav file,it's have a error
image

Transmit default background is grey (was black)

Transmit pane, right-click, Load background. select [fit]. Image area not covered by the background image is grey. It was black in previous releases. Can we revert this easily back to black? Black uses a more narrow bandwidth, gets through better imho. thanks!

where is stored config file?

hi, i recently tried to activate qsstv on my arch linux distro with a FT991A radio using rigctl. after setting up a seemingly broken configuration, i closed the app and restarted. when restarting it is very slow and you do practically nothing, including entering and changing the configuration from the appropriate menu. so I started looking for the configuration file, hoping it was an ascii format. I would like to delete it or modify it by hand in order to restart the application. but i can't find it. where is it?

qsstv not keying radio icom 7100

good day
i have loaded/installed latest qsstv for 64 and for 32 bit on different rpi's 4b8GB

i setup config for cat
i selected icom 7100 etc
it does not change cat test to green it stay red
i change to flrig
yes i have started flrig
cat test now turn green and when i start qsstv it show no rig and tx is setup correct it shows on start up

now if i tx it does not tx the radio through flrig
it shows that it is tx'ing
but no keying of radio

please advice
de v51pj
pieter jacobs

Versions ?

I package qsstv for Mageia.
Our last version was 9.5.8 from Bitbucket which has now vanished.
Please continue to make releases in github that continue on from the original version series.
There seem to be recent commits, but I can't update our package without a version to update to.
If there are no versions, distros will start to invent their own and then we will be comparing apples
with pears and nobody will know what is going on.
Thanks,
Barry
G4MKT

Interleave logic seems to be inverted…

Hi,

I'm new to SSTV, but have been playing around with QSSTV… using a Raspberry Pi 3 + UDRC-II board for the interface. Tonight I was doing some experiments, with a KiwiSDR receiver operated remotely receiving my own signal back (in Firefox…via pipewire), passing to a second instance of QSSTV.

I noticed a discrepancy between requested and sent parameters:

qsstv-interleave-bug

If I request "Interleave: Long", the receiving station reports "Short" interleave… and vice versa.

The build on the Raspberry Pi is the standard Debian build.
The build on my laptop is self-built (Gentoo ebuild).
Both report version 9.5.8.

QSSTV do not recognize correct USB serial port using ICOM7100 on Lenovo ThinkPad e550

Hello. My call sign is YI1YJK. I'm Linux user, using Fedora Linux installed on Lenovo ThinkPad e550.

I tried QSSTV with my transceiver ICOM7100 connected to my laptop, but program failed because it does not recognize USB that connected to transceiver inspite the fact that I enter all needed setting of QSSTV & OS of radio !

The program should recognize dev/tty/USB0 serial port, but it does not see it ! It select by default dev/tty/SO0 which is not correct ! I tried to see other options in list, but never saw dev/tty/USB0 at all ! I tried to edit manually & set dev/tty/USB0 instead of dev/tty/SO0 but result was freezing of program !

dev/tty/USB0 is the correct choice & already I'm using it with JS8Call & FreeDV & WSJTX without any problem & these 3 programs selected it by default when I installed them .....

I used both packages from official Fedora repositories & from FlatHub as flatpak with same error !

Icom 7300 not keying up

I compiled latest QSSTV (see screenshot) but it stopped keying 7300 PTT

image

I tried FLrig with it and it does not work either.
I tried several settings on radio and in QSSTV, nothing seems to make it work. If I key up FLrig by hand, audio is sent to radio.

Yaesu FT991a CAT error with 9.5.x builds

Compiling the recent 9.5 builds, my yaesu ft991a no longer works with cat control via hamlib. Works fine with the 9.4.4 .deb package bundled with ubuntu but when I compile the latest, no rig found.

Bug? Rx Notifications

Environment: LM21.1
QSSTV: 9.5.8
RX notifications work sometimes. I can see them uploaded in the ftp folder (RxOkNotifications1).
Then the stop working after receiving a picture.
On one occasion it stopped working after a picture failed to decode, but I think on other occasions it stopped working without a failure.
Once it stops working, it doesn't seem to start again until restarting qsstv.
Hybrid settings are correct as it has times when it works.

Is this a known bug?
Has it been fixed already?
Is there something else (ie not qsstv) that causes this issue?
If this is an outstanding issue, Im happy to have a look at it once I get my development builds working

RS Encoding/Decoding only allows for three letter extensions

The current version of this software only allows for sending three letter file extensions, which causes the receiving software to get a truncated file name.

image.avif => image.avi

With my local nets increasingly switching to AVIF image format to send high-definition images in 50kb, this causes issues as the files end up needing to be renamed, which is a hassle for some people on Windows who cannot see the extension and get very confused.

reedSolomonCoder::encode seems hardcoded to pad to three characters only, truncating anything longer.

Add the possibility to add call sign in the filename if exist ?

Hello,

Thanks for this great app!

Can you add the possibility to add the "call sign" in the file name if exist ?

Because when the callsign is not present in the picture, it's impossible to know who as send this picture.

Thanks in advance !

Regards,
Mathieu

Branch confusion: "main" vs. "development"

I am confused about the "main" and "development" branches in this repository now.

Both branches have been in sync until commit c5be1e3 (October, 2022).
Johan then started the "development" branch, while "main" has got PR #17 merged now.
However, I can see PRs now also against the "development" branch, yet that branch meanwhile fell behind.

Question now: how and where to continue?

Required Plugins To Run Build??

(sorry if this is a newbie question!!:( )

LM21.1 (clean install)
Using Qt6.5.0
No QtCreator installed
Both Main and development branch build successfully.
Attempting to run qsstv results in

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: wayland-egl, vkkhrdisplay, eglfs, linuxfb, offscreen, xcb, minimalegl, vnc, minimal, wayland.

Aborted (core dumped)

If I set QT_DEBUG_PLUGINS=1, the output is in the following file
RunOutput.txt

QSSTV Main Branch Testing Feedback

Environment: LM21.1
QSSTV: CLI build from main branch, labelled as 9.5.11
Done some testing on code.
Main finding is SSTV decodes fine, but DRM (either standard or hybrid) does not decode correctly.
MSC indicator cycles between red, yellow green.
Reverting to 9.5.8 decodes successfully. Back to 9.5.11 does not decode.
Any more info I can provide?
More results of testing to come ...

QSSTV broken with latest hamlib

Hi,

I've been debugging an issue with Hamlib where it intermittently toggles the VFO, which wears out relays in the transceiver and causes quite a lot of pain with receiving SSTV transmissions unless both VFOs happen to be on the same frequency.

Hamlib/Hamlib#1576 has the background, I'm experiencing this with a Yaesu FT-897D. Hence I updated to the latest release, that seems to have cured the VFO switching issue, but has broken QSSTV.

Platform is Debian Linux (Raspbian) Bookworm on armhf. Hardware is a Raspberry Pi 4 8GB + NWDR DRAWS radio interface, with a USB pl2303-based CAT transceiver cable for the CAT connection. I am not able to access DTR/RTS pins on said CAT transceiver cable.

When I compile QSSTV against the current latest Hamlib master branch (commit 8b9c768), either QSSTV 9.5.8 (from Debian's source tree) or master branch, QSSTV reports "No Rig" in the frequency display, and fails to engage PTT on the transceiver when transmitting.

The only other way I can key the transceiver, is via /sys/class/gpio, which QSSTV does not support.

I am able to successfully engage PTT with the command rigctl -m 2 -r localhost:4532 --skipinit T 1 and release it with rigctl -m 2 -r localhost:4532 --skipinit T 0. (as well as values 2 and 3, these all engage PTT as well.)

I've tried running rigctld with and without --vfo.

I suspect Hamlib is failing to initialise with the new release, and this is therefore why PTT is not working.

Compiling Issue, Linux Mint 21.1, Qt 6.0.2

Having probs compiling the QSSTV code taken from main branch today 2May2023.
Using QtCreator (6.0.2) installed on LinuxMint Mate v21.1 with all updates as of today.
Library qt5-default is not available (E: Package 'qt5-default' has no installation candidate) but other libraries installed OK as per dependency list.
Lots of compile warnings (mainly old/deprecatated call messages) I cant seem to identify the cause of one error which appears that CDRMTransmitter methods have "multiple defines", then drmTransmitter methods have undefined references.
Have attached the output from the build.
Anything else you want, please ask.
Have lots of C experience, but C++ is more limited.
Initially was looking at seeing if I could get Easypal going again, but I understand the source code is entirely lost.
Am hoping might be able to get on top of qsstv, maybe make some contributions here, then maybe even look at porting this code to a windows based app (big job I know).
Thx
Dave vk6mo

Bug ? ONAIR Status Of Others

Environment: LM21.1
QSSTV: 9.5.8
This may be a user error, as I've not ever seen it work and I'm not sure if I'm using it correctly.
Situation:
Qsstv outputs ONAIR status which can be viewed directly in the remote ftp server directory.
Others can see the status correctly.
However, qsstv does not show ONAIR status of others.
I'm assuming the way to get the onair status is just to push the button "Who is On?" and the list should appear in the box immediately below.

Is this a known bug?
Has it been fixed already?
Is there something else (ie not qsstv) that causes this issue?
If this is an outstanding issue, Im happy to have a look at it once I get my development builds working

PTT on RTS or DTR does not work

If there is a PTT attached to the RTS or DTR line of the CAT serial device, it does not work at all.

rigctl … -P RTS however works, so it is clear that hamlib does handle it.

How To Use lwt-dev with QT6? Please help

Hi Guys
Installed Qt6.5.0 with latest QTCreator(v10.0.1)
Attempting build of sstv-development branch.
Build fails as it can't see qwt_plot.h (ie lwt-dev).
libqwt-qt5-dev is installed correctly but headers are not where Qt6 is expecting to find
Questions

  1. Is libqwt-qt5-dev still the appropriate dev library to use with Qt6?
  2. If not, which library should I be using - I can't find any libqwt-dev for Qt6 on any of the qt discussions
    If it is, should I just add appropriate includes directories? Or better solution?
    You guys that are build Qt6 already, how have you set up??

I think this is my last problem to building qsstv under QtCreator so hopefully I can get this one sorted!! :)

qmake .. why?

qmake: could not exec '/usr/lib/qt5/bin/qmake': No such file or directory

Query: template file format documentation

Hi,

A silly question, is there some documentation on how the template files are constructed?
I have a number of stock images and I'd like to mass-create different templates based on those stock images.

I already have a netpbm-based pipeline orchestrated with make that can take those stock images, pad or crop images to 4:3 aspect ratio, scale to 320×240px, add a 16px header and apply a call-sign watermark.

There are two call-signs I use: my normal one VK4MSL, but 3 days a year, ACMA's class license permits us to substitute VK with AX, and so I've got watermarks and headers with AX4MSL.

The challenge is creating the templates is a manual process. At best I can open up a template based on one of the VK-watermarked stock images, delete the background image, insert an AX-watermarked image, send it to the back, expand it, then save the resulting template as a new file. This is tedious.

Pixel-positions of text fields in the template do not change between the VK and AX variants. Assuming the positioning and font selection information of each text field and replay field is known, how would one go about constructing a template file?

Using QSSTV with CW ID and FSKID for legal reasons (proposal)

I do not know what the requirements are in various countries for sending your HAM call sign, in The Netherlands one is required to send it at the beginning and the end of a transmission. (keeping it short here for the case of SSTV)

https://wetten.overheid.nl/BWBR0036375/2021-06-18

image

I want to use the FSKID, which makes the repeater understand my callsign (and relay the image). But I also want to adhere to regulations.

The only way to do this in QSSTV is to uncheck the CW-ID option, then QSSTV will send the FSKID at the end of the transmission, this means I have to click the CW ID button manually for TX-ing my call sign every time I transmit an image.

So the problem is QSSTV can only send the CW ID OR the FSKID at the end of the transmission... what I would like is the CW-ID at the beginning and the FSKID at the end.

A fix would be as follows:

Change txfunctions.cpp:

        case TXSSTVIMAGE:
          waitTxOn();
          addToLog("Entered SSTVTXIMAGE",LOGTXFUNC);
          startProgress(sstvTxPtr->calcTxTime(0));
          addToLog("Entered before SSTVTXIMAGE",LOGTXFUNC);
          if(sstvTxPtr->sendImage(txWidgetPtr->getImageViewerPtr()))
            {
              switchTxState(TXSSTVPOST);
            }
          else
            {
              switchTxState(TXIDLE);
            }
          break;
        case TXSSTVPOST:
          addToLog("Entered TXSSTVPOST ",LOGTXFUNC);
          if (useCW)
            {
              sendCW();
            }
          else
            {
              sendFSKID();
            }
          waitEnd();
          switchTxState(TXRESTART);
          break;

to:

        case TXSSTVIMAGE:
          waitTxOn();
          if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
          if (useCW)
          {
             sendCW();
          }
          addToLog("Entered SSTVTXIMAGE",LOGTXFUNC);
          startProgress(sstvTxPtr->calcTxTime(0));
          addToLog("Entered before SSTVTXIMAGE",LOGTXFUNC);
          if(sstvTxPtr->sendImage(txWidgetPtr->getImageViewerPtr()))
            {
              switchTxState(TXSSTVPOST);
            }
          else
            {
              switchTxState(TXIDLE);
            }
          break;
        case TXSSTVPOST:
          addToLog("Entered TXSSTVPOST ",LOGTXFUNC);
          sendFSKID();
          waitEnd();
          switchTxState(TXRESTART);
          break;

In sstvtx.cpp in method bool sstvTx::sendImage(imageViewer *ivPtr) remove the line:

if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);

Please let me know if there are any drawbacks of sending the FSKID always, thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.