drowe67 / freedv-gui Goto Github PK
View Code? Open in Web Editor NEWGUI Application for FreeDV – open source digital voice for HF radio
Home Page: https://freedv.org/
License: GNU Lesser General Public License v2.1
GUI Application for FreeDV – open source digital voice for HF radio
Home Page: https://freedv.org/
License: GNU Lesser General Public License v2.1
A user has reported audio coming out of the Tx sound card when in Rx mode, that is triggering Vox.
I have been testing the latest Win 64 build (Version 1,5,1 devel FreeDV git hash 2578d57) via VAC loopback, checking the operation of clipping and found that the unclipped 700D produced overscan on Scatter Screen (the points are outside the black screen and show up in the white border).The indicated SNR was 39dB.
All other modes were OK with 700E showing a SNR of 40dB and still displaying scatter screen correctly,
Peter VK5APR
Sigi dg9bfc writes:
in freedv soft you have ptt out on a comport (to key external rig) ... so far so good
can you add also a PTT IN via CTS on a comport??
reason is ... i now use freedv on qo100 with sdr console ... and in normal ssb i key the sdr radio with usb/serial converter (ftdi chip) with a pullup resistor and pulling the cts pin to ground
Voice keyer will use wave file even if it's format (8 or 16 kHz) is not correct
Configure FreeDV with a radio and headset (two card configuration):
I've taken an initial look at the startRxStream. This is complex code and could use some refactoring. Backing out of any failed function calls is tricky, so many structures to delete/pull down.. To deal specifically with this bug, suggest a sanity check at the top to check the available PortAudio devices and confirm they are as expected, and bail early before everything is allocated.
This is a fairly important issue, as we would like to avoid any circumstances where FreeDV can crash. Messing with USB devices is common, so it would be good to trap this.
A way to run freedv-gui from the command line, put it into a mode (e.g 700D), set up input and output sound cards, and feed a signal through it. This way basic freedv-gui operation can be tested using a GitHub action.
codec2/unittest/tnc*
tests for examples).Requirements:
Registry entries on Windows, ~/.FreeDV on Linux
I think there is a line missing in the User Manual description of the Horus Binary mode.
https://github.com/drowe67/freedv-gui/edit/master/USER_MANUAL.md#L387-390
Either a line of text has been dropped, or the two sentences were meant to be joined as one.
(Also monitoring
should probably be monitor
in the current version.)
If we had a port or 2 that could serve as raw bitstream transfer between 2 freedv apps. Just to recondition the signal without going threw the codec.
Cool app ;)
700D requires you to be +/- 20Hz. Some sort of tuning aid would be useful
This software needs some maintenance and refactoring, any help with the following would be greatly appreciated. In no particular order:
From Mike, G4ABP:
Matt, G6WPJ, has also observed a bug when 2020 is selected, and you switch to analog to transmit SSB. We don't switch to SSB very often, so no one else had observed this. I have however repeated Matt's tests and found the same thing. Usually after a short (but variable) time, a buzzing sound appears on the transmitted audio. Matt's speculation is that a buffer is getting overwritten somewhere. Before Matt's report, I have also observed the same buzzing phenomena when transmitting 2020 tests, which occurred after 10 minutes, but I have not been able to repeat this.
It would be nice if freedv-gui worked out of the box without any audio device config. So for fresh installs:
So the new user could:
A variation for this (especially in Linux) would be a command line option to decode a wave file:
./freedv --mode 2020 all_2020.wav
During testing of FreeDV 1.5.3 Siegfried Jackstien discovered that no text was being decoded by FreeDV in 1600 mode. On further investigation, it looks like Codec2 properly calls my_get_next_tx_char()
to transmit the text but the following if block (freedv_1600.c lines 207-210) never calls my_put_next_rx_char()
:
n_ascii = varicode_decode(&f->varicode_dec_states, &ascii_out, abit, 1, 1);
if (n_ascii && (f->freedv_put_next_rx_char != NULL)) {
(*f->freedv_put_next_rx_char)(f->callback_state, ascii_out);
}
Test procedure:
Expected behavior: Text begins to appear in the text field at the bottom of the main GUI.
Actual behavior: Generally no text. Rarely characters appear in the text field at the bottom due to corruption between TX and RX.
Codec2 branch tested: https://github.com/drowe67/codec2/tree/dr-2020-passthrough
Nice to meet you, I am a Japanese amateur radio
I am JH0PCF Hiro.
Currently testing FreeDV 1.4.0.
Among them, only the 2400B mode does not generate a signal
Do you need any special equipment
First of all thanks for great application.
This feature is probably the same what was allready asked,but..
External serial PTT in would be great improvment.
Wild idea to support ie. "zello" bluetooth mic which would make mobile operation simple.
Audio in /out and ptt on same package.
Thanks for the good work !!
Br,Jarno / OH3GAI
Frank VK5BF reported:
At greater than 2560/1440, we get problems with fonts size on an Ubuntu 18 machine:
title says it all
in 141 devel the mode 800xa just works fine
in 151 devel it locks (signal to noise jumps up and it shows timing and delta frequency) ,, but no audio comes out of my speakers (tested in fullduplex over sat qo100)
all other modes do work fine
settings in both versions are the same
no idea why in 151 i have no audio out in that mode
win10 4 gig ram
greetz sigi dg9bfc
Hello David,
I have just downloaded last release of FreeDV on my RaspberryPI. As you know, till now and since last July, it was possible to compile and use FreeDV on RaspberryPI3 without the FreeDV GUI (freedv_tx and freedv_rx run very well in home-made wrapper).
I was curious to see the effect on the PI of you last adjustments on GUI (with a little attention on RaspberryPI4), but unfortunately today the new version compilation stops in an neverending idle status at this point :
[....]
-- LPCNet version: 0.1
-- Looking for available CPU optimizations on Linux/BSD system...
-- neon processor flags found or enabled.
... stops working here and only CTRL+C solve the issue
Can you help ?
Thnak-you
Ugo
It is not possible to control a radios frequency/VFO's via CAT control.
I think that 4 Steps up and down in Khz from these frequencies as required by the bandwidth of the selected mode with reasonable spacing should be a nice feature.
The frequencies listed serves as "home frequency" it should be possible to "step" up or down from those.
I suggest these, they are directly from the IARU Region 1 bandplans :
3630 kHz - Digital Voice Centre of Activity
7070 kHz - Digital Voice Centre of Activity
10140 kHz - In the digimodes window.
14130 kHz - Digital Voice Centre of Activity
18150 kHz - Digital Voice Centre of Activity
21180 kHz - Digital Voice Centre of Activity
24960 kHz - Digital Voice Centre of Activity
28330 kHz - Digital Voice Centre of Activity
50.630 Digital Voice (DV) calling
70.3125 or
70.3250
It should also follow the proper USB or LSB rules.
The waterfall time resolution doesn't show the effect of Doppler above roughly 1 Hz, e.g. barber poll effects. There is some time averaging in the waterfall code that may be the cause of this.
Just a FYI.
I know this project is rather gcc/MinGW centric. Some #ifdef _MSC_VER
in the code seems to indicate MSVC is supported,
but trying that, it fails miserably.
Trying with clang-cl
instead, also fails on mundane things like of __cpuid()
:
In file included from dlg_audiooptions.cpp:22:
In file included from ./fdmdv2_main.h:68:
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(61,25): error: too few arguments provided to
function-like macro invocation
void __cpuid(int[4], int);
^
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\cpuid.h(223,9): note: macro '__cpuid' defined here
#define __cpuid(__leaf, __eax, __ebx, __ecx, __edx) \
^
In file included from dlg_audiooptions.cpp:22:
In file included from ./fdmdv2_main.h:68:
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(61,6): error: variable has incomplete type 'void'
void __cpuid(int[4], int);
^
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(519,35): error: too few arguments provided to
function-like macro invocation
__cpuid(int __info[4], int __level) {
^
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\cpuid.h(223,9): note: macro '__cpuid' defined here
#define __cpuid(__leaf, __eax, __ebx, __ecx, __edx) \
^
In file included from dlg_audiooptions.cpp:22:
In file included from ./fdmdv2_main.h:68:
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(519,1): error: variable has incomplete type 'void'
__cpuid(int __info[4], int __level) {
^
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(520,3): error: expected expression
__asm__ ("cpuid" : "=a"(__info[0]), "=b" (__info[1]), "=c"(__info[2]), "=d"(__info[3])
^
But patching it into:
--- a/src/fdmdv2_main.h 2020-09-04 12:44:39
+++ b/src/fdmdv2_main.h 2020-09-04 13:29:47
@@ -52,8 +52,10 @@
#include <stdint.h>
#include <speex/speex_preprocess.h>
-#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86)
-#include <cpuid.h>
+#if defined(_MSC_VER)
+ #include <intrin.h> // used for AVX checking
+ #include <cpuid.h>
+#elif defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86)
+ #include <cpuid.h>
#endif
#ifdef _WIN32
#include <windows.h>
@@ -63,11 +65,6 @@
#include <dlfcn.h>
#endif
-#ifdef _MSC_VER
-// used for AVX checking
-#include <intrin.h>
-#endif
-
The dlg_audiooptions.cpp
(and other) files compile fine.
Is it possible using the pilot one on the receive side to either have the software center on the pilot or using frequency control through CAT have the software shift the radio to center the pilot. Asking this for use on EME and satellite.
FreeDV About using Hamlib on Windows
PTT control of transceiver using Hamlib
Set to control and control with Test PTT
Check what you can do and press the start button
Start receiving FreeDV.
Then press PTT to start sending
The transmitter is not a digitally modulated signal
The analog signal from the microphone is used as it is for the transmitter input.
It is input and the radio wave of analog SSB is emitted.
The version I am currently using is the Windows version.
The sound device uses two sets of USB audio devices.
This issue may be occurring in my own environment
FreeDV1.5.1 Ver1.4.1 had the same symptom.
A few people have requested pulse audio support on Linux.
the latest commit requires
:info:build /opt/local/var/macports/build/ports_science_freedv-gui/freedv-gui/work/freedv-gui-ee194ba1eb944c2de17b0c829e0b6ee53b109c8e/src/callsign_encoder.h:28:10: fatal error: 'golay23.h' file not found
:info:build #include "golay23.h"
:info:build ^~~~~~~~~~~
FreeDV1.5.1 source code
Using fedora cross-compilation
Create an executable program for Windows
Install on Windows 10
When I try to run it, I get an error and cannot run it
The error message is as follows.
It worked fine with FreeDV 1.5.0
Is there anything unusual?
Mismath bitween the program and libraly build versions detected
The Library Used 3.0 (wchar_t,compiler with C++ ABI 1013,wxcontainers.compatible with 2.8),
and your program Used 3.0 (wchar_t,compiler with C++ ABI 1014,wxcontainers.compatible with 2.8)
horus_open and horus_rx in codec2 were recently modified to require additional arguments. This causes compile to fail for both git and the released tar.gz source file.
/home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp: In member function ‘virtual void MainFrame::OnTogBtnOnOff(wxCommandEvent&)’: /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp:2684:51: error: too few arguments to function ‘horus* horus_open(int, int)’ 2684 | g_horus = horus_open(HORUS_MODE_BINARY); | ^ In file included from /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.h:72, from /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp:23: /home/digger/src/freedv-gui-1.4/codec2/src/horus_api.h:44:15: note: declared here 44 | struct horus *horus_open (int mode, int Rs); | ^~~~~~~~~~ /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp: In function ‘void per_frame_rx_processing(FIFO*, FIFO*)’: /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp:4139:55: error: too few arguments to function ‘int horus_rx(horus*, char*, short int*, int)’ 4139 | if (horus_rx(g_horus, ascii_out, input_buf)) { | ^ In file included from /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.h:72, from /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp:23: /home/digger/src/freedv-gui-1.4/codec2/src/horus_api.h:53:15: note: declared here 53 | int horus_rx (struct horus *hstates, char ascii_out[], short demod_in[], int quadrature); | ^~~~~~~~
Hi,
i tried to build the latest freedv on an Raspberry Pi 3 on Raspbian "Buster".
Codec2 and LPCNet seems to build well, but when compiling freedv-gui, the build process stops at about 25% with the following error:
/home/pi/projects/freedv-gui/src/fdmdv2_main.cpp: In function ‘void __cpuid(int*, int)’:
/home/pi/projects/freedv-gui/src/fdmdv2_main.cpp:4490:6: error: impossible constraint in ‘asm’
);
^
make[2]: *** [src/CMakeFiles/freedv.dir/build.make:128: src/CMakeFiles/freedv.dir/fdmdv2_main.cpp.o] Fehler 1
Maybe this part of code isn't supported on ARM targets.
Any solutions how to solve?
Thanks in advance.
Regards, Thorsten
A common trap for PTT using a serial port (HamLib or Serial PTT) is lack of permissions. This fix is usually adding your user to the dialout
group. It would be nice to automatically detect permissions issues and report by a pop up window during serial port configuration/testing.
This inline asm, while ok in 32-bit, corrupts the state of the RDI register in 64-bit mode:
freedv-gui/src/fdmdv2_main.cpp
Lines 4498 to 4503 in b097ce7
isAvxPresent
:freedv-gui/src/fdmdv2_main.cpp
Line 323 in b097ce7
Rewriting to use __cpuid()
as provided by cpuid.h
solves the issue.
@drowe67, I'm creating this issue to brainstorm some thoughts I had for improving the PSK Reporter functionality. As of now, it uses Golay(23,12) for encoding, which falls hard on its face with channel noise other than 0dB (per local full duplex testing). I'm considering the following possibilities:
Anyway, I haven't fully fleshed these out yet, so I'd be interested in suggestions or thoughts about the above.
Expression 'err' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3355
Expression 'ContinuePoll( self, StreamDirection_In, &pollTimeout, &pollCapture )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3907
Expression 'PaAlsaStream_WaitForFrames( stream, &framesAvail, &xrun )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 4285
(all modes)
Ok, I always do all my devel work on a separate login so this morning I cloned freedv-gui/brad-2020 from my regular account and did a build using the internal build method and got:
freedv: /home/richard/git/freedv-gui/src/fdmdv2_main.cpp:4082: void txRxProcessing(): Assertion `ret != -1' failed.
as soon as I clicked "Start"
Does it make sense to add a 2400B sample to the wav
directory for completeness?
Per Siegfried Jackstien from the digitalvoice list, FreeDV should have a way to support PTT with foot switches, etc. (via CTS pin on serial port?)
I was resetting my FreeDV configuration back to my "home" setup (Hermes Lite 2 SDR via a virtual sound card) after operating portable this past weekend and realized that this would be something that might be useful for others as well. Figured I'd put it here as a TODO for me (or someone else) to get to eventually. :)
Anyway, here's what I'm thinking so far. Feel free to update as needed.
Configuration options that should be updated on a per-location basis:
Configuration options that should remain the same regardless of location:
From Steve:
One thing I noticed is the Mouse frequency centering is very course.
You can't finesse it to ± values around the center.
Maybe needs a zoom feature added for OFDM.
I'd suggest just scaling, e.g. if the centre is 1500 Hz, clicking on -1400Hz will shift -10Hz rather than -100.
I am trying to update the port on macports but unfortunately the build fail with error: templates must have C++ linkage
using clang. Full log at this gist.
Versions used:
Software used:
codec2 and lpcnetfreedv build correctly from macports. Just a mismatch on the name of lpcnetfreedv on cmake find_package
but this is another story.
There is some placement errors on CMakeLists.txt
and Info.plist
but I will make a PR after this issue.
There is a recommendation from the UK user group that the 700D squelch be improved, Mike G4ABP writes: "We are all finding that we need to switch it off to get unbroken audio." I (David) have also found the same thing.
I think it's due to muting when LDPC FEC fails to decode https://github.com/drowe67/codec2/blob/master/src/freedv_api.c#L2211
FreeDV 2020 may also works the same way https://github.com/drowe67/codec2/blob/master/src/freedv_api.c#L2413, and may also benefit from removing the LDPC decode condition.
Tom, N4FWD, has requested an output volume control for driving his radio from FreeDV:
there is no "volume" control for the transmit output of
FreeDV. That shortcoming would be mitigated if FreeDV used PulseAudio.
Honestly, I should not be forced to modify the radio's internal
settings just to accommodate FreeDV. The audio drive should be set in
software and not in the rig.
Tom, N4FWD, reports:
I set up FreeDV and the Icom to listen to the incoming signals. The
intent is to see if there are any other users of FreeDV. So, I have
FreeDV in decode/monitoring mode as I work through the various bands.
After around a minute (or maybe 2), FreeDV stops monitoring. The
spectrum display goes blank. I have to manually stop the listening
mode and restart it to get the spectrum display activated again. It is
annoying to have to restart the decode session.
freedv: /home/martin/temp/freedv-gui/codec2/src/freedv_api.c:823: freedv_bits_to_speech: Assertion `nout <= freedv_get_n_max_speech_samples(f)' failed.
Aborted (core dumped)
(Running 2020. It comes often, Ubuntu 20.10. FreeDV 1.5.2 dev.)
The record time field (e.g. Tools - Start/Stop record from radio) doesn't appear on the Windows build.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.