From d4a7a292c0e8da72b63f92fc1d1ca38d2be9b0e6 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Thu, 6 Jun 2019 10:29:58 -0400 Subject: [PATCH 1/8] Implement message type i3=5 (for WWROF contest exchange) in packjt77. --- lib/77bit/77bit.txt | 7 +--- lib/77bit/messages.txt | 13 ++++++- lib/77bit/packjt77.f90 | 87 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 97 insertions(+), 10 deletions(-) diff --git a/lib/77bit/77bit.txt b/lib/77bit/77bit.txt index ef370c111..89b481b6c 100644 --- a/lib/77bit/77bit.txt +++ b/lib/77bit/77bit.txt @@ -22,15 +22,10 @@ i3.n3 Example message Bits Total Purpose 2 PA3XYZ/P GM4ABC/P R JO22 28 1 28 1 1 15 74 EU VHF contest 3 TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 ARRL RTTY Roundup 4 PJ4/KA1ABC RR73 12 58 1 2 1 74 Nonstandard calls -5 ... tbd +5 TU; W9XYZ K1ABC R-07 FN 1 28 28 1 7 9 74 WWROF contest ? 6 ... tbd 7 ... tbd ---------------------------------------------------------------------------------- -In case we need them, later: - -5 TU; W9XYZ K1ABC R 579 8 MA 1 28 28 1 3 6 7 74 CQ WW RTTY -6 TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74 CQ WPX RTTY ----------------------------------------------------------------------------------- NB: three 74-bit message types and two 71-bit message subtypes are still TBD. ---------------------------------------------------------------------------------- diff --git a/lib/77bit/messages.txt b/lib/77bit/messages.txt index 54fd44b05..aa4ab0789 100644 --- a/lib/77bit/messages.txt +++ b/lib/77bit/messages.txt @@ -72,7 +72,18 @@ CQ W9XYZ EN37 W9XYZ R-09 YW18FIFA RRR YW18FIFA 73 -10. Other stuff + +10. WWROF FT8/FT4 contest +----------------------------------------------------------- +CQ TEST K1ABC FN42 + K1ABC W9XYZ -16 EN +W9XYZ K1ABC R-07 FN + K1ABC W9XYZ RR73 + K1ABC G3AAA -11 IO +TU; G3AAA K1ABC R-09 FN + K1ABC G3AAA RR73 + +11. Other stuff ----------------------------------------------------------- TNX BOB 73 GL CQ YW18FIFA diff --git a/lib/77bit/packjt77.f90 b/lib/77bit/packjt77.f90 index 1ee37f5c1..1f9ed9a19 100644 --- a/lib/77bit/packjt77.f90 +++ b/lib/77bit/packjt77.f90 @@ -172,6 +172,10 @@ subroutine pack77(msg0,i3,n3,c77) call pack77_4(nwords,w,i3,n3,c77) if(i3.ge.0) go to 900 +! Check Type 5 (WWROF contest exchange) + call pack77_5(nwords,w,i3,n3,c77) + if(i3.ge.0) go to 900 + ! It defaults to free text 800 i3=0 n3=0 @@ -204,6 +208,7 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) character*6 cexch,grid6 character*4 grid4,cserial character*3 csec(NSEC) + character*2 cfield character*38 c integer hashmy10,hashmy12,hashmy22,hashdx10,hashdx12,hashdx22 logical unpk28_success,unpk77_success @@ -491,8 +496,31 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) else msg='CQ '//trim(call_2) endif + + else if(i3.eq.5) then +! 5 TU; W9XYZ K1ABC R-09 FN 1 28 28 1 7 9 74 WWROF contest + read(c77,1041) itu,n28a,n28b,ir,irpt,nexch,i3 +1041 format(b1,2b28.28,b1,b7.7,b9.9,b3.3) + call unpack28(n28a,call_1,unpk28_success) + if(.not.unpk28_success) unpk77_success=.false. + call unpack28(n28b,call_2,unpk28_success) + if(.not.unpk28_success) unpk77_success=.false. + write(crpt,'(i3.2)') irpt-35 + if(crpt(1:1).eq.' ') crpt(1:1)='+' + n1=nexch/18 + n2=nexch - 18*n1 + cfield(1:1)=char(ichar('A')+n1) + cfield(2:2)=char(ichar('A')+n2) + if(itu.eq.0 .and. ir.eq.0) msg=trim(call_1)//' '//trim(call_2)// & + ' '//crpt//' '//cfield + if(itu.eq.1 .and. ir.eq.0) msg='TU; '//trim(call_1)//' '//trim(call_2)// & + ' '//crpt//' '//cfield + if(itu.eq.0 .and. ir.eq.1) msg=trim(call_1)//' '//trim(call_2)// & + ' R'//crpt//' '//cfield + if(itu.eq.1 .and. ir.eq.1) msg='TU; '//trim(call_1)//' '//trim(call_2)// & + ' R'//crpt//' '//cfield endif - if(msg(1:4).eq.'CQ <') unpk77_success=.false. +! if(msg(1:4).eq.'CQ <') unpk77_success=.false. return end subroutine unpack77 @@ -1040,12 +1068,11 @@ subroutine pack77_3(nwords,w,i3,n3,c77) call chkcall(w(i1+1),bcall_2,ok2) if(.not.ok1 .or. .not.ok2) go to 900 crpt=w(nwords-1)(1:3) + if(index(crpt,'-').ge.1 .or. index(crpt,'+').ge.1) go to 900 if(crpt(1:1).eq.'5' .and. crpt(2:2).ge.'2' .and. crpt(2:2).le.'9' .and. & crpt(3:3).eq.'9') then nserial=0 read(w(nwords),*,err=1) nserial -!1 i3=3 -! n3=0 endif 1 mult=' ' imult=-1 @@ -1150,6 +1177,60 @@ subroutine pack77_4(nwords,w,i3,n3,c77) 900 return end subroutine pack77_4 +subroutine pack77_5(nwords,w,i3,n3,c77) +! Check Type 5 (WWROF contest exchange) + + character*13 w(19) + character*77 c77 + character*6 bcall_1,bcall_2 + character*3 mult + character crpt*4 + character c1*1,c2*2 + logical ok1,ok2 + + if(nwords.eq.4 .or. nwords.eq.5 .or. nwords.eq.6) then + i1=1 + if(trim(w(1)).eq.'TU;') i1=2 + call chkcall(w(i1),bcall_1,ok1) + call chkcall(w(i1+1),bcall_2,ok2) + if(.not.ok1 .or. .not.ok2) go to 900 + crpt=w(nwords-1)(1:4) + if(index(crpt,'-').lt.1 .and. index(crpt,'+').lt.1) go to 900 + + c1=crpt(1:1) + c2=crpt(1:2) + irpt=-1 + if(c1.eq.'+' .or. c1.eq.'-') then + ir=0 + read(w(nwords-1),*,err=900) irpt + irpt=irpt+35 + else if(c2.eq.'R+' .or. c2.eq.'R-') then + ir=1 + read(w(nwords-1)(2:),*) irpt + irpt=irpt+35 + endif + if(irpt.eq.-1 .or. len(trim(w(nwords))).ne.2) go to 900 + c2=w(nwords)(1:2) + n1=ichar(c2(1:1)) - ichar('A') + n2=ichar(c2(2:2)) - ichar('A') + if(n1.lt.0 .or. n1.gt.17) go to 900 + if(n2.lt.0 .or. n2.gt.17) go to 900 + nexch=18*n1 + n2 + i3=5 + n3=0 + itu=0 + if(trim(w(1)).eq.'TU;') itu=1 + call pack28(w(1+itu),n28a) + call pack28(w(2+itu),n28b) +! 5 TU; W9XYZ K1ABC R-09 FN 1 28 28 1 7 9 74 WWROF contest + write(c77,1010) itu,n28a,n28b,ir,irpt,nexch,i3 +1010 format(b1,2b28.28,b1,b7.7,b9.9,b3.3) + + end if + +900 return +end subroutine pack77_5 + subroutine packtext77(c13,c71) character*13 c13,w From 9c3c5d6b3c9c903e66d91323b6ee70e39fc34465 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Thu, 6 Jun 2019 11:58:52 -0400 Subject: [PATCH 2/8] Turn Tx Enable to OFF after logging a QSO, even if "Clear DX call and grid after logging" is not checked. --- widgets/mainwindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index f5c5cff41..7c0d178a8 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -5559,6 +5559,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, } if(m_config.clear_DX () and SpecOp::HOUND != m_config.special_op_id()) clearDX (); + auto_tx_mode (false); m_dateTimeQSOOn = QDateTime {}; auto special_op = m_config.special_op_id (); if (SpecOp::NONE < special_op && special_op < SpecOp::FOX && From e3c73def7ae4fbb947c72b1285979ccf97e6c6f1 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Thu, 6 Jun 2019 13:44:32 -0400 Subject: [PATCH 3/8] Updates to the User Guide, mostly related to addition of the FT4 mode. --- doc/common/links.adoc | 1 + doc/user_guide/en/install-windows.adoc | 7 +++-- doc/user_guide/en/introduction.adoc | 31 +++++++++++-------- doc/user_guide/en/new_features.adoc | 35 ++++------------------ doc/user_guide/en/protocols.adoc | 41 +++++++++++++++++--------- 5 files changed, 56 insertions(+), 59 deletions(-) diff --git a/doc/common/links.adoc b/doc/common/links.adoc index e886f551f..58ad60476 100644 --- a/doc/common/links.adoc +++ b/doc/common/links.adoc @@ -116,6 +116,7 @@ d). Edit lines as needed. Keeping them in alphabetic order help see dupes. :QRA64_EME: http://physics.princeton.edu/pulsar/K1JT/QRA64_EME.pdf[QRA64 for microwave EME] :svn: http://subversion.apache.org/packages.html#windows[Subversion] :win32: http://physics.princeton.edu/pulsar/K1JT/wsjtx-{VERSION}-win32.exe[wsjtx-{VERSION}-win32.exe] +:win64: http://physics.princeton.edu/pulsar/K1JT/wsjtx-{VERSION}-win64.exe[wsjtx-{VERSION}-win64.exe] :wsjt-devel: https://lists.sourceforge.net/lists/listinfo/wsjt-devel[here] :wsjt_repo: https://sourceforge.net/p/wsjt/wsjt_orig/ci/master/tree/[WSJT Source Repository] :wspr_code: http://physics.princeton.edu/pulsar/K1JT/WSPRcode.exe[WSPRcode.exe] diff --git a/doc/user_guide/en/install-windows.adoc b/doc/user_guide/en/install-windows.adoc index 5b8e06834..786e9a294 100644 --- a/doc/user_guide/en/install-windows.adoc +++ b/doc/user_guide/en/install-windows.adoc @@ -1,11 +1,12 @@ // Status=review -Download and execute the package file {win32}, following these -instructions: +Download and execute the package file {win32} (WinXP, Vista, Win 7, +Win 8, Win10, 32-bit) or {win64} (Vista, Win 7, Win 8, Win10, 64-bit) +following these instructions: * Install _WSJT-X_ into its own directory, for example `C:\WSJTX` or ` C:\WSJT\WSJTX`, rather than the conventional location `C:\Program - Files (x86)\WSJTX`. + Files ...\WSJTX`. * All program files relating to _WSJT-X_ will be stored in the chosen installation directory and its subdirectories. diff --git a/doc/user_guide/en/introduction.adoc b/doc/user_guide/en/introduction.adoc index b48738190..6da0f7936 100644 --- a/doc/user_guide/en/introduction.adoc +++ b/doc/user_guide/en/introduction.adoc @@ -7,10 +7,10 @@ K1**JT**,`" while the suffix "`-X`" indicates that _WSJT-X_ started as an extended and experimental branch of the program _WSJT_. -_WSJT-X_ Version {VERSION_MAJOR}.{VERSION_MINOR} offers nine different -protocols or modes: *FT8*, *JT4*, *JT9*, *JT65*, *QRA64*, *ISCAT*, -*MSK144*, *WSPR*, and *Echo*. The first five are designed for making -reliable QSOs under extreme weak-signal conditions. They use nearly +_WSJT-X_ Version {VERSION_MAJOR}.{VERSION_MINOR} offers ten different +protocols or modes: *FT4*, *FT8*, *JT4*, *JT9*, *JT65*, *QRA64*, +*ISCAT*, *MSK144*, *WSPR*, and *Echo*. The first six are designed for +making reliable QSOs under weak-signal conditions. They use nearly identical message structure and source encoding. JT65 and QRA64 were designed for EME ("`moonbounce`") on the VHF/UHF bands and have also proven very effective for worldwide QRP communication on the HF bands. @@ -25,12 +25,17 @@ one-minute timed sequences of alternating transmission and reception, so a minimal QSO takes four to six minutes — two or three transmissions by each station, one sending in odd UTC minutes and the other even. FT8 is operationally similar but four times faster -(15-second T/R sequences) and less sensitive by a few dB. On the HF -bands, world-wide QSOs are possible with any of these modes using -power levels of a few watts (or even milliwatts) and compromise -antennas. On VHF bands and higher, QSOs are possible (by EME and -other propagation types) at signal levels 10 to 15 dB below those -required for CW. +(15-second T/R sequences) and less sensitive by a few dB. FT4 is +faster still (7.5 s T/R sequences) and especially well suited for +radio contesting. On the HF bands, world-wide QSOs are possible with +any of these modes using power levels of a few watts (or even +milliwatts) and compromise antennas. On VHF bands and higher, QSOs +are possible (by EME and other propagation types) at signal levels 10 +to 15 dB below those required for CW. + +Note that even though their T/R sequences are short, FT4 and FT8 are +classified as slow modes because their message frames are sent +only once per transmission. *ISCAT*, *MSK144*, and optionally submodes *JT9E-H* are "`fast`" protocols designed to take advantage of brief signal enhancements from @@ -65,10 +70,10 @@ are available for all three platforms. *Version Numbers:* _WSJT-X_ release numbers have major, minor, and patch numbers separated by periods: for example, _WSJT-X_ Version -1.9.0. Temporary "`beta`" release candidates are sometimes made in +2.1.0. Temporary _beta release_ candidates are sometimes made in advance of a new general-availability release, in order to obtain user -feedback. For example, version 1.9.0-rc1, 1.9.0-rc2, etc., would -be beta releases leading up to the final release of v1.9.0. +feedback. For example, version 2.1.0-rc1, 2.1.0-rc2, etc., would +be beta releases leading up to the final release of v2.1.0. Release candidates should be used _only_ during a short testing period. They carry an implied obligation to provide feedback to the program development group. Candidate releases should not be used on diff --git a/doc/user_guide/en/new_features.adoc b/doc/user_guide/en/new_features.adoc index a90b52182..496bef16b 100644 --- a/doc/user_guide/en/new_features.adoc +++ b/doc/user_guide/en/new_features.adoc @@ -1,40 +1,17 @@ === New in Version {VERSION} For quick reference, here's a short list of features and capabilities -added to _WSJT-X_ since Version 1.9.1: +added to _WSJT-X_ since Version 2.0.1: -- New FT8 and MSK144 protocols with 77-bit payloads permit these enhancements: +- New FT4 protocol, designed especially for radio contesting -* Optimized contest messages for NA VHF, EU VHF, Field Day, RTTY Roundup +* T/R sequence length 7.5 s -* Full support for "/R" and "/P" calls in relevant contests +* Bandwidth 80 Hz -* New logging features for contesting - -* Integration with {n1mm_logger} and {writelog} for contesting - -* Improved support for compound and nonstandard callsigns - -* Nearly equal (or better) sensitivity compared to old protocols - -* Lower false decode rates - -- Improved color highlighting of received messages - -- Improved WSPR sensitivity - -- Expanded and improved UDP messages sent to companion programs - -- Bug fixes and other minor tweaks to user interface - -IMPORTANT: Note that for FT8 and MSK144 there is no backward -compatibility with WSJT-X 1.9.1 and earlier. Everyone using these -modes should upgrade to WSJT-X 2.0 by January 1, 2019. - -IMPORTANT: _WSJT-X_ Version 2.0 drops support for Apple Mac OS X 10.9 -(Mavericks). It is possible to build from source for this operating -system version but the DMG installer package requires 10.10 or later. +* Threshold sensitivity -17.5 dB +- Improvements to accessibility === Documentation Conventions diff --git a/doc/user_guide/en/protocols.adoc b/doc/user_guide/en/protocols.adoc index f50096097..fc0dad266 100644 --- a/doc/user_guide/en/protocols.adoc +++ b/doc/user_guide/en/protocols.adoc @@ -12,10 +12,10 @@ Special cases allow other information such as add-on callsign prefixes aim is to compress the most common messages used for minimally valid QSOs into a fixed 72-bit length. -The information payload for FT8 and MSK144 contains 77 bits. The 5 -additional bits are used to flag special message types used for FT8 -DXpedition Mode, contesting, nonstandard callsigns, and a few other -special types. +The information payload for FT4, FT8, and MSK144 contains 77 bits. +The 5 additional bits are used to flag special message types used for +FT8 DXpedition Mode, contesting, nonstandard callsigns, and a few +other special types. A standard amateur callsign consists of a one- or two-character prefix, at least one of which must be a letter, followed by a digit @@ -67,18 +67,29 @@ _WSJT-X_ modes have continuous phase and constant envelope. [[SLOW_MODES]] === Slow Modes +[[FT4PRO]] +==== FT4 + +Forward error correction (FEC) in FT4 uses a low-density parity check +(LDPC) code with 77 information bits, a 14-bit cyclic redundancy check +(CRC), and 83 parity bits making a 174-bit codeword. It is thus +called an LDPC (174,91) code. Synchronization uses four 4×4 Costas +arrays, and ramp-up and ramp-down symbols are inserted at the start +and end of each transmission. Modulation is 4-tone frequency-shift +keying with Gaussian smoothing of frequency transitions (4-GFSK). The +keying rate is 12000/576 = 20.8333 baud. Each transmitted symbol +conveys two bits, so the total number of channel symbols is 174/2 + 16 ++ 2 = 105. The total bandwidth is 4 × 20.8333 = 83.3 Hz. + [[FT8PRO]] ==== FT8 -Forward error correction (FEC) in FT8 uses a low-density parity check -(LDPC) code with 77 information bits, a 14-bit cyclic redundancy check -(CRC), and 83 parity bits making a 174-bit codeword. It is thus -called an LDPC (174,91) code. Synchronization uses 7×7 Costas arrays -at the beginning, middle, and end of each transmission. Modulation is -8-tone frequency-shift keying (8-FSK) at 12000/1920 = 6.25 baud. Each -transmitted symbol carries three bits, so the total number of channel -symbols is 174/3 + 21 = 79. The total occupied bandwidth is 8 × 6.25 -= 50 Hz. +FT8 uses the same LDPC (174,91) code as FT4. Modulation is 8-tone +frequency-shift keying (8-GFSK) at 12000/1920 = 6.25 baud. +Synchronization uses 7×7 Costas arrays at the beginning, middle, and +end of each transmission. Transmitted symbols carry three bits, so +the total number of channel symbols is 174/3 + 21 = 79. The total +occupied bandwidth is 8 × 6.25 = 50 Hz. [[JT4PRO]] ==== JT4 @@ -227,7 +238,8 @@ which the probability of decoding is 50% or higher. |=============================================================================== |Mode |FEC Type |(n,k) | Q|Modulation type|Keying rate (Baud)|Bandwidth (Hz) |Sync Energy|Tx Duration (s)|S/N Threshold (dB) -|FT8 |LDPC, r=1/2|(174,91)| 8| 8-FSK| 6.25 | 50.0 | 0.27| 12.6 | -21 +|FT4 |LDPC, r=1/2|(174,91)| 4| 4-GFSK| 20.8333 | 83.3 | 0.15| 5.04 | -17.5 +|FT8 |LDPC, r=1/2|(174,91)| 8| 8-GFSK| 6.25 | 50.0 | 0.27| 12.6 | -21 |JT4A |K=32, r=1/2|(206,72)| 2| 4-FSK| 4.375| 17.5 | 0.50| 47.1 | -23 |JT9A |K=32, r=1/2|(206,72)| 8| 9-FSK| 1.736| 15.6 | 0.19| 49.0 | -27 |JT65A |Reed Solomon|(63,12) |64|65-FSK| 2.692| 177.6 | 0.50| 46.8 | -25 @@ -246,6 +258,7 @@ comparable to tone spacing. [width="50%",cols="h,3*^",frame=topbot,options="header"] |===================================== |Mode |Tone Spacing |BW (Hz)|S/N (dB) +|FT4 |20.8333 | 83.3 |-17.5 |FT8 |6.25 | 50.0 |-21 |JT4A |4.375| 17.5 |-23 |JT4B |8.75 | 30.6 |-22 From 3ff672705fa78fdbfbf67a3c6d0e6cb861f3d23e Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Thu, 6 Jun 2019 14:14:11 -0400 Subject: [PATCH 4/8] Change the F11/F12 frequency increments for FT4 to +/- 90 Hz. --- widgets/mainwindow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 7c0d178a8..2d3964efa 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -1991,7 +1991,7 @@ void MainWindow::keyPressEvent (QKeyEvent * e) if(e->modifiers() & Qt::ControlModifier) n+=100; if(e->modifiers() & Qt::ShiftModifier) { int offset=60; - if(m_mode=="FT4") offset=100; + if(m_mode=="FT4") offset=90; ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()-offset); } else{ bumpFqso(n); @@ -2007,7 +2007,7 @@ void MainWindow::keyPressEvent (QKeyEvent * e) if(e->modifiers() & Qt::ControlModifier) n+=100; if(e->modifiers() & Qt::ShiftModifier) { int offset=60; - if(m_mode=="FT4") offset=100; + if(m_mode=="FT4") offset=90; ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()+offset); } else { bumpFqso(n); From 3b777860ca742e761274850f92d0c9d6a5ec053a Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Thu, 6 Jun 2019 14:15:12 -0400 Subject: [PATCH 5/8] Add a User Guide tutorial section for FT4. --- doc/CMakeLists.txt | 3 ++ doc/user_guide/en/images/ft4_decodes.png | Bin 0 -> 23112 bytes doc/user_guide/en/images/ft4_waterfall.png | Bin 0 -> 35788 bytes doc/user_guide/en/tutorial-example4.adoc | 51 +++++++++++++++++++++ doc/user_guide/en/wsjtx-main.adoc | 4 ++ 5 files changed, 58 insertions(+) create mode 100644 doc/user_guide/en/images/ft4_decodes.png create mode 100644 doc/user_guide/en/images/ft4_waterfall.png create mode 100644 doc/user_guide/en/tutorial-example4.adoc diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index e81160575..bc333dd8c 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -52,6 +52,7 @@ set (UG_SRCS tutorial-example1.adoc tutorial-example2.adoc tutorial-example3.adoc + tutorial-example4.adoc tutorial-main-window.adoc tutorial-wide-graph-settings.adoc utilities.adoc @@ -77,6 +78,8 @@ set (UG_IMGS images/FreqCal_Graph.png images/FreqCal_Results.png images/freemsg.png + images/ft4_decodes.png + images/ft4_waterfall.png images/ft8_decodes.png images/FT8_waterfall.png images/help-menu.png diff --git a/doc/user_guide/en/images/ft4_decodes.png b/doc/user_guide/en/images/ft4_decodes.png new file mode 100644 index 0000000000000000000000000000000000000000..05d2083fd182c77e065cd09cf6af06fce037d8e0 GIT binary patch literal 23112 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 literal 0 HcmV?d00001 diff --git a/doc/user_guide/en/images/ft4_waterfall.png b/doc/user_guide/en/images/ft4_waterfall.png new file mode 100644 index 0000000000000000000000000000000000000000..07ed6398a134587d5234f5714e7732d289166737 GIT binary patch literal 35788 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 Date: Thu, 6 Jun 2019 14:21:12 -0400 Subject: [PATCH 6/8] Update the shortcuts.txt file. --- shortcuts.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shortcuts.txt b/shortcuts.txt index 10276a269..93c75585b 100644 --- a/shortcuts.txt +++ b/shortcuts.txt @@ -13,11 +13,11 @@ F7 Display Message Averaging window F11 Move Rx frequency down 1 Hz Ctrl+F11 Move identical Rx and Tx frequencies down 1 Hz - Shift+F11 Move Tx frequency down 60 Hz + Shift+F11 Move Tx frequency down 60 Hz (FT8) or 90 Hz (FT4) Ctrl+Shift+F11 Move dial frequency down 2000 Hz F12 Move Rx frequency up 1 Hz Ctrl+F12 Move identical Rx and Tx frequencies up 1 Hz - Shift+F12 Move Tx frequency up 60 Hz + Shift+F12 Move Tx frequency up 60 Hz (FT8) or 90 Hz (FT4) Ctrl+Shift+F12 Move dial frequency up 2000 Hz Alt+1-6 Set now transmission to this number on Tab 1 Ctl+1-6 Set next transmission to this number on Tab 1 From 85bc9ef6be261115c525b0641d71e4eef0698915 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Fri, 7 Jun 2019 01:33:18 +0100 Subject: [PATCH 7/8] Update prerequisite packages to include the Qt Linguist tools --- INSTALL | 62 +++++++++++++-------------------------------------------- 1 file changed, 14 insertions(+), 48 deletions(-) diff --git a/INSTALL b/INSTALL index 4f6e85b78..3886fe7c7 100644 --- a/INSTALL +++ b/INSTALL @@ -30,13 +30,13 @@ Mac". Qt v5, preferably v5.5 or later is required to build WSJT-X. -Qt v5 multimedia support and serial port is necessary as well as the -core Qt v5 components, normally installing the Qt multimedia -development package and Qt serialport development package are -sufficient to pull in all the required Qt components and dependants as -a single transaction. On some systems the Qt multimedia plugin -component is separate in the distribution repository an it may also -need installing. +Qt v5 multimedia support, serial port, and Linguist is necessary as +well as the core Qt v5 components, normally installing the Qt +multimedia development, Qt serialport development packages, and teh Qt +Linguist packages are sufficient to pull in all the required Qt +components and dependants as a single transaction. On some systems +the Qt multimedia plugin component is separate in the distribution +repository an it may also need installing. The single precision FFTW v3 library libfftw3f is required along with the libfftw library development package. Normally installing the @@ -256,47 +256,6 @@ The above commands will build hamlib and install it into ~/hamlib-prefix. If `make install-strip` fails, try `make install`. -Qt --- - -NOTE: As of Qt v5.4 building Qt from source on Mac OS X is no longer -necessary since the Qt team have switched to using the modern libc++ -Standard C++ Library for all distributable run time -components. Instead you may simply download a binary installer for OS -X 64-bit. The binary installer is here: - - http://www.qt.io/download - -The binary Qt distributions prior to Qt v5.4 from -http://www.qt.io/download unfortunately are built to use the libstdc++ -C++ support library, WSJT-X uses a less geriatric C++ dialect which -uses the libc++ C++ support library. This means that you need to -build Qt from sources. This is not difficult but does take some time. - -Download the Qt source tarball from -http://www.qt.io/download-open-source/, the link is about half way -down the page, you want the full sources tar ball shown as a 'tar.gz' -link. - -Unpack the sources and cd into the top level directory then type: - -$ ./configure -prefix ~/local/qt-macx-clang -opensource \ - -confirm-license -platform macx-clang -silent -nomake tests \ - -nomake examples -sdk macosx10.10 -skip qtwebkit \ - -skip qtwebkit-examples -skip qtquick1 -skip qtconnectivity \ - -skip qtlocation -skip qtsensors -skip qtscript \ - -skip qtwebsockets -skip qtwebengine -skip qtwebchannel \ - -skip qtwayland -skip qtquickcontrols -skip qtdeclarative \ - -skip qtxmlpatterns -skip qtenginio -$ make -j4 -$ make install - -If you are building on 10.8 or don't have the 10.10 Mac SDK (Xcode 6) -available, you can substitute '-sdk macosx10.9' above. - -The build above will take a few hours to complete. - - CMake ----- Although CMake is available via MacPorts I prefer to use the binary @@ -328,6 +287,13 @@ $ sudo chgrp wheel /usr/local/bin and then retry the install command. +Qt +-- + +Download the latest on-line installer package from the Qt web site and +isntall the latest Qt stable version development package. + + WSJT-X ------ First fetch the source from the repository: From b3d6f5d22e7ba687ffdc0f15ed585578556f822c Mon Sep 17 00:00:00 2001 From: Steve Franke Date: Fri, 7 Jun 2019 09:04:55 -0500 Subject: [PATCH 8/8] Fix a typo. --- INSTALL | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/INSTALL b/INSTALL index 3886fe7c7..42169fb38 100644 --- a/INSTALL +++ b/INSTALL @@ -32,7 +32,7 @@ Qt v5, preferably v5.5 or later is required to build WSJT-X. Qt v5 multimedia support, serial port, and Linguist is necessary as well as the core Qt v5 components, normally installing the Qt -multimedia development, Qt serialport development packages, and teh Qt +multimedia development, Qt serialport development packages, and the Qt Linguist packages are sufficient to pull in all the required Qt components and dependants as a single transaction. On some systems the Qt multimedia plugin component is separate in the distribution @@ -377,4 +377,4 @@ $ cmake --build . --target install 73 Bill -G4WJS. \ No newline at end of file +G4WJS.