Skip to content

Commit

Permalink
sBitx version 4.0 Enhanced (#84)
Browse files Browse the repository at this point in the history
Version 4.0 introduces a wealth of features and enhancements, including improved FT8 mode performance, a more responsive CW experience, a new TX Monitor function, and extensive UI improvements, among many other updates. Please see the release notes at https://raw.githubusercontent.com/drexjj/sbitx/refs/heads/main/release_notes.txt for more information.

---------

Co-authored-by: Alan Huseby <awh@brainless.us>
Co-authored-by: sigmazgfx <sigmazgfx@gmail.com>
Co-authored-by: Lars Lund Hansen <larslund.hansen@gmail.com>
  • Loading branch information
4 people authored Oct 1, 2024
1 parent be038d4 commit 4a98fe3
Show file tree
Hide file tree
Showing 47 changed files with 3,532 additions and 1,013 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,7 @@ data/sbitx.db
sbitx
sbitx-fast
sbitx_wisdom.wis
sbitx_wisdom_f.wis
sbitx_wisdom_f.wis
web/grids.txt
web/*.mc
*.gcda
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
![sBitx image](sbitx31.png)
![sBitx image](SBITX40.png)

An improved version of the sBitx application designed for the sBitx hardware. This version is only for the 64 bit Raspberry Pi image that can be downloaded here. We do not support legacy, insecure, buggy, 32 bit platforms anymore.

We now have a devepment team collaborating on improvements for the sBitx platform. JJ - W9JES, Jon - W2JON, Alan - N1QM and Jeff - KF7YDU. Thank you to all who provide countless hours to this project!
We have an incredible devepment team collaborating on improvements for the sBitx platform. JJ - W9JES, Jon - W2JON, Alan - N1QM Lars - OZ7BX, and Jeff - KF7YDU. Thank you to all who provide countless hours to this project!

The files here are to designed to work on the modified, 64 bit version provided here in the *Releases* section.

Expand Down
Binary file added SBITX40.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
65 changes: 60 additions & 5 deletions build
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

#!/bin/sh -e
# Note: the '-e' flag will make the script stop immediately upon error with
# the error reflected in the environment. This lets one issue commands like
Expand All @@ -8,16 +9,35 @@ O=$2
OPT=0
FLAGS="-g"
[ -z "$F" ] && {
echo "usage: $0 program [o]"
echo "usage: $0 program [o|g|u]"
echo "example: $0 sbitx"
echo "-optional 'o' argument enables compiler optimizations"
echo "-optional 'g' argument enables profile generation"
echo "-optional 'u' argument enables usage of profile to guide optimizations"
exit 1
}
if [ ! -z "$O" ] && [ "$O" = "o" ] ; then
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "!! Building optimized binary, most warnings can be safely ignored !!"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
FLAGS="-O3 -flto=auto"
FLAGS="-march=native -O3 -flto=auto"
OPT=1
rm -f *.gcda
fi
if [ ! -z "$O" ] && [ "$O" = "g" ] ; then
rm -f *.gcda
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "!! Building profile generating binary !!"
echo "!! Run the application in your normal use case, then rerun with !!"
echo "!! the u option to generate a profile guided optimized build !!"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
FLAGS="-march=native -O3 -flto=auto -fprofile-generate"
fi
if [ ! -z "$O" ] && [ "$O" = "u" ] ; then
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "!! Building profile guided binary !!"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
FLAGS="-march=native -O3 -flto=auto -fprofile-use"
OPT=1
fi
WORKING_DIRECTORY=`pwd`
Expand Down Expand Up @@ -45,7 +65,7 @@ fi
gcc $FLAGS -o $F \
src/vfo.c src/si570.c src/sbitx_sound.c src/fft_filter.c src/sbitx_gtk.c src/sbitx_utils.c \
src/i2cbb.c src/si5351v2.c src/ini.c src/hamlib.c src/queue.c src/modems.c src/logbook.c \
src/modem_cw.c src/settings_ui.c src/ntputil.c \
src/modem_cw.c src/settings_ui.c src/hist_disp.c src/ntputil.c \
src/telnet.c src/macros.c src/modem_ft8.c src/remote.c src/mongoose.c src/para_eq.c src/webserver.c src/eq_ui.c src/$F.c \
src/ft8_lib/libft8.a \
-lwiringPi -lasound -lm -lfftw3 -lfftw3f -pthread -lncurses -lsqlite3 -lnsl -lrt \
Expand All @@ -57,11 +77,46 @@ if [ $OPT -eq 1 ]; then
strip $F
fi

# Open the user_settings.ini file, search for #60m=, and add it if missing
if [ -f "$HOME/sbitx/data/user_settings.ini" ]; then
echo "Checking user_settings.ini for 60 meters"
if ! grep -q "^#60m=" "$HOME/sbitx/data/user_settings.ini"; then
echo "Adding 60 meter band to user_settings.ini"
sed -i '/#40m=/a\#60m=' "$HOME/sbitx/data/user_settings.ini"
else
echo "60 meter band already exists in user_settings.ini"
fi
else
echo "user_settings.ini not found"
fi

# Update hw_settings.ini to add 60m band configuration
if [ -f "$HOME/sbitx/data/hw_settings.ini" ]; then
echo "Checking hw_settings.ini for 60m band"
if grep -q "f_start=5250000" "$HOME/sbitx/data/hw_settings.ini"; then
echo "60m band already exists in hw_settings.ini"
else
echo "Adding 60m band to hw_settings.ini"
awk '{
print $0
} /f_start=3500000/ {
found=1
} found && /scale=/ {
print ""
print "[tx_band]\nf_start=5250000\nf_stop=5450000\nscale=0.0033"
found=0
}' $HOME/sbitx/data/hw_settings.ini > temp.ini && mv temp.ini $HOME/sbitx/data/hw_settings.ini
fi
else
echo "hw_settings.ini not found"
fi

echo "Brought to you by the sBitx 64 bit project team - W9JES, W2JON, KF7YDU, and N1QM"
echo "Brought to you by the sBitx 64 bit project team - W9JES, W2JON, N1QM, OZ7BX, and KF7YDU"
echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
# This addition is used to provide the application the capability to adjust the local system time -W2JON
# It should probably always run last at it'll fail if the file system doesn't support it - N1QM
if [ "$F" = "sbitx" ] && [ -x $F ]; then
sudo setcap CAP_SYS_TIME+ep $F
# || : is a little hack to allow the script to continue if an error occurs - n1qm
sudo setcap CAP_SYS_TIME+ep $F || :
fi
echo Build completed at $(date)
4 changes: 4 additions & 0 deletions data/60meters.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[tx_band]
f_start=5250000
f_stop=5450000
scale=0.0033
3 changes: 3 additions & 0 deletions data/create_db.sql
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ create table logbook (
tx_id TEXT DEFAULT "",
comments TEXT DEFAULT ""
);

CREATE INDEX callIx ON logbook(callsign_recv);
CREATE INDEX gridIx ON logbook(exch_recv);
18 changes: 13 additions & 5 deletions data/default_hw_settings.ini
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
bfo_freq=40035000
ssb_val=1.0

[tcxo]
cal=25000000

[tx_band]
f_start=3500000
f_stop=4000000
scale=0.005
scale=0.0042

[tx_band]
f_start=5250000
f_stop=5450000
scale=0.0033

[tx_band]
f_start=7000000
f_stop=7300000
scale=0.0045
scale=0.0035

[tx_band]
f_start=10000000
f_stop=10200000
scale=0.004
scale=0.006

[tx_band]
f_start=14000000
Expand All @@ -24,12 +32,12 @@ scale=0.006
[tx_band]
f_start=18000000
f_stop=18200000
scale=0.006
scale=0.004

[tx_band]
f_start=21000000
f_stop=21450000
scale=0.006
scale=0.004

[tx_band]
f_start=24800000
Expand Down
18 changes: 13 additions & 5 deletions data/default_hw_settings_V3.ini
Original file line number Diff line number Diff line change
@@ -1,20 +1,28 @@
bfo_freq=40035000
ssb_val=1.0

[tcxo]
cal=25000000

[tx_band]
f_start=3500000
f_stop=4000000
scale=0.005
scale=0.0042

[tx_band]
f_start=5250000
f_stop=5450000
scale=0.0033

[tx_band]
f_start=7000000
f_stop=7300000
scale=0.0045
scale=0.0035

[tx_band]
f_start=10000000
f_stop=10200000
scale=0.004
scale=0.006

[tx_band]
f_start=14000000
Expand All @@ -24,12 +32,12 @@ scale=0.006
[tx_band]
f_start=18000000
f_stop=18200000
scale=0.006
scale=0.004

[tx_band]
f_start=21000000
f_stop=21450000
scale=0.006
scale=0.004

[tx_band]
f_start=24800000
Expand Down
9 changes: 9 additions & 0 deletions data/default_hw_settings_v2.ini
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
bfo_freq=40035000

ssb_val=1.0

[tcxo]
cal=25000000

[tx_band]
f_start=3500000
f_stop=4000000
scale=0.00255477

[tx_band]
f_start=5250000
f_stop=5450000
scale=0.00205400

[tx_band]
f_start=7000000
f_stop=7300000
Expand Down
11 changes: 11 additions & 0 deletions data/default_settings.ini
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ sidetone=15
#20m=
#30m=
#40m=
#60m=
#80m=
#kbd_q=q
#kbd_w=w
Expand Down Expand Up @@ -124,6 +125,16 @@ mode2=1
freq3=3700000
mode3=1

[60M]
freq0=5251500
mode0=5
freq1=5354000
mode1=0
freq2=5357000
mode2=0
freq3=5360000
mode3=0

[40m]
freq0=7020000
mode0=2
Expand Down
Empty file added data/result_rows.txt
Empty file.
91 changes: 83 additions & 8 deletions release_notes.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,84 @@
v4.0 -
FT8 Mode Improvements:
- Both the local and web apps now display decorated messages in FT8 mode.
- Callsigns:
- Callsigns logged are displayed in green.
- Unlogged callsigns are displayed in red.
- Grids:
- Logged grids are displayed in green.
- Unlogged grids are displayed in yellow.
- Band change: The console and web FT8 lists are cleared when changing bands.
- At startup, two new SQLite indexes for FT8 lookups are created if missing.

Web App in FT8 Mode:
- A Robinson projection world map is displayed to the right of the FT8 lists (if the window is wide enough).
- Grid Display:
- By default, grids seen during the current session are plotted on the map.
- Logged grids are displayed in dark green, unlogged grids in yellow, and grids logged during the current session in red.
- Toggle Controls:
- The "Seen" button toggles the plot on/off.
- The "Logged" button toggles the display of all logged grids (in green) on/off.
- Map Controls:
- Zoom using the slider or mouse wheel.
- Change map position by dragging with the left mouse button.
- Mouseover displays longitude, latitude, and grid information.
- Other UI Improvements:
- The "SAVE" button has been renamed to "LOG" to reflect its function (opens the log tab).
- Alt-click in FT8 lists opens a QRZ lookup window without starting a call.
- The frequency field responds to the mouse wheel for adjustments.
- New knob button added to show/hide the dial knob (instead of clicking the frequency field).
- A new "Mute" button is available to mute sound (useful in FT8 mode).

CW Improvements:
- Modified and added "prosign" characters for TX.
- Decreased debounce to 800ms for CW spacing in TX.
- Decreased word delay for macros and keyboard CW operation.
- Reduced dash delay for a more natural CW sound.
- Fixed the Iambic B key sequence issue (from dash to dot).

UI and Other Improvements:
- FLDIGI Integration: Pitch controls can now be controlled externally by FLDIGI.
- Waterfall & Text Box:
- Added fullscreen waterfall mode and the option to hide the text box for voice modes.
- Changed the waterfall refresh speed for smoother operation in SSB.
- VFO Enhancements:
- Added a VFO lock button in the menu and a corresponding indicator on the main screen. it can be toggled by the menu or a
long press of the VFO tuning knob
- UI Adjustments:
- Shortened "digital mode" text to DIGI.
- Added 8k display mode to the waterfall.
- Removed the text box output for BFO adjustment.
- Recording: Fixed the duplicate recording stop function message.
- Logging Enhancements:
- Ability to switch between logger input fields using the tab key.
- Added the ability to add comments to logs via a text field.
- Fixed duplicate log entries in the logbook.
- Fixed sBitx crash when logbook window was open during a logging event.
- Fixed ADIF export for FT8 now saves exchange info (the gridsquares) in actual gridsquare fields of log.
- Sound Enhancements:
- Optimizations to loopback receive process.
- Optimizations to rx linearity.
- Other New Features:
- Added a selectable RX notch filter to the main GUI.
- Added a TCXO calibration option in the `hw_settings.ini` file.
- Added the ability to toggle the experimental S-meter (relatively calibrated at IF 52) on/off using the command `\smeteropt on`.
- Added the ability to toggle the optional QRO function on/off with the command `\qroopt on`.
- Added workaround for FT8 and external digi modes for time sync decoding process.
- Update build script to support profile guided optimizations.
- Added renice script to increase priority of sbitx application if desired.
- TX Monitor function that allows monitoring of the transmitted signal through headphones, enabling users to hear
adjustments to the TX EQ. The perceived noise in the headphones seems to be local and is not transmitted over the air.
- Added 60 meter band.



v3.1 -
Added Tune button and functions
Added menu button
Updated transmit equalizer with gui
Added noise reduction and digital signal processing
Added BFO shift
Fixed 25khz waterfall display
Added indicator status for button functions
Reorganized mode displays
- Added Tune button and power control functions.
- Added quick access menu button for additional controls.
- Updated the 5 band TX equalizer with GUI.
- Added RX noise reduction and digital signal processing.
- Added BFO shift (move birdies out of the RX signal).
- Fixed 25khz waterfall display alignment.
- Added main display indicator status for various features/functions.
- Reorganized mode displays and removed unnecessary functions
- More Hamlib functional improvements for 3rd party apps
4 changes: 4 additions & 0 deletions renice.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash
#This script will bump the priority of the running sbitx app
echo "Making sbitx app less nice"
sudo renice -n -20 $(pgrep sbitx)
Binary file removed sbitx31.png
Binary file not shown.
5 changes: 3 additions & 2 deletions src/docs/commands.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ These are text commands that can be entered from the keyboard
Allows adjustment of BFO during runtime; pass a value in +/- HZ
Passing a value of 0 will reset to default/no offset
An offset of +/- 3000 is usually enough to move birdies out of the passband
Value is not saved and always 0 on a fresh launch
Value is saved and restored on launch
\macro [list\<name of macro to load>]
10M
12M
15M
Expand All @@ -55,7 +56,7 @@ SPAN 25K/10K/6K/2.5K
RIT ON/OFF
VFO A/B
BW 50-5000 (Hz)
MODE USB/LSB/CW/CWR/FT8/DIGITAL/2TONE
MODE USB/LSB/CW/CWR/FT8/DIGI/2TONE

Logger Controls
CALL [text]
Expand Down
2 changes: 1 addition & 1 deletion src/docs/how_gui_is_organized.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ The field control can be of several types as identified by value_type field:

SELECTION: This uses a number of strings separated by '/' stored in
selection[] field. One of the strings is selected by scroll through
the field's values. Ex: Mode: USB/LSB/CW/CWR/DIGITAL, etc.
the field's values. Ex: Mode: USB/LSB/CW/CWR/DIGI, etc.

TEXT: This is makes it an editable text field (for instance to enter
your callsign).
Expand Down
Loading

0 comments on commit 4a98fe3

Please sign in to comment.