G2 Updated files and simplified update procedure
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
G2 Updated files and simplified update procedure
There is a new version of p2app available in github. It fixes a "reliability" issue in establishing CAT connection to Thetis.
current p2app version 33; FPGA V19
I have created an "update" script to make software updates easier. The instructions are as follows:
1. open a command window
2. Change to your home folder: type cd ~
3. run the script: type ./github/Saturn/scripts/update-G2.sh
The script will pull new files from github; rebuild p2app and the desktop apps; copy desktop shortcuts to your desktop screen; and install some "rules" that name the serial devices used for newer G2 panels. It will remind you to run the "flashwriter" app to program the FPGA if you need to do that (it isn't yet clever enough to tell you if it already up to date).
obviously the before you run this the first time you will need to do a manual "git pull" as before but thereafter the script will do that step for you.
cd ~/github/Saturn
git pull
Be aware that (as before) there are a fair few warnings generated by the compile processes, but no errors.
please report back here if you have any issues with the script.
current p2app version 33; FPGA V19
I have created an "update" script to make software updates easier. The instructions are as follows:
1. open a command window
2. Change to your home folder: type cd ~
3. run the script: type ./github/Saturn/scripts/update-G2.sh
The script will pull new files from github; rebuild p2app and the desktop apps; copy desktop shortcuts to your desktop screen; and install some "rules" that name the serial devices used for newer G2 panels. It will remind you to run the "flashwriter" app to program the FPGA if you need to do that (it isn't yet clever enough to tell you if it already up to date).
obviously the before you run this the first time you will need to do a manual "git pull" as before but thereafter the script will do that step for you.
cd ~/github/Saturn
git pull
Be aware that (as before) there are a fair few warnings generated by the compile processes, but no errors.
please report back here if you have any issues with the script.
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
Oh boy no joy for me. I must of glitched something. After update radio can't be found. Is there a way to revert to the older P2APP?
- Attachments
-
- Screenshot 2025-01-19 134011.png (83.92 KiB) Viewed 16793 times
Re: G2 Updated files and simplified update procedure
Did you do a complete shutdown of the radio after updating software?
By complete I mean holding the Power button down for 10 seconds AFTER Linux has been shut down.
73 de VA7QI, ....Erik.
By complete I mean holding the Power button down for 10 seconds AFTER Linux has been shut down.
73 de VA7QI, ....Erik.
Re: G2 Updated files and simplified update procedure
Well done, Larence.
Everything is fine with me. Thetis and piHPSDR work.
I have an ANAN G2 from 2023 with a 7" screen.
Vy 73, Roger DL2YDP
Everything is fine with me. Thetis and piHPSDR work.
I have an ANAN G2 from 2023 with a 7" screen.
Vy 73, Roger DL2YDP
Vy 73 Roger DL2YDP
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
"Error starting SDR hardware, is it connected & powered" implies that p2app isn't running after power up. This shouldn't have been changed by the update process.
I'm assuming that you have a radio with no display on the front and it used to autostart p2app after power up. (If you have a display, you need to run p2app manually and there should be desktop icons for that)
Firstly please check whether the p2app executable actually got created in the correct location:
ls ~/github/Saturn/sw_projects/P2_app/p2*
(that should list 3 files; p2app,c, p2app.o and p2app with no file extension - that last one is the executable)
Next see what the autostart file contains:
cat /etc/xdg/lxsession/LXDE-pi/autostart
(That should dump a file with 4 lines, as per the Saturn manual section 4.6; the content depends on whether you have a front panel display)
with a display it should say:
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@/home/pi/github/pihpsdr/pihpsdr
with no display it should say:
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@/home/pi/github/Saturn/sw_projects/P2_app/p2app
if it doesn't have the correct text, please use a text editor to correct it
sudo geany /etc/xdg/lxsession/LXDE-pi/autostart
remember in Linux, everything is case sensitive!
I'm assuming that you have a radio with no display on the front and it used to autostart p2app after power up. (If you have a display, you need to run p2app manually and there should be desktop icons for that)
Firstly please check whether the p2app executable actually got created in the correct location:
ls ~/github/Saturn/sw_projects/P2_app/p2*
(that should list 3 files; p2app,c, p2app.o and p2app with no file extension - that last one is the executable)
Next see what the autostart file contains:
cat /etc/xdg/lxsession/LXDE-pi/autostart
(That should dump a file with 4 lines, as per the Saturn manual section 4.6; the content depends on whether you have a front panel display)
with a display it should say:
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@/home/pi/github/pihpsdr/pihpsdr
with no display it should say:
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@/home/pi/github/Saturn/sw_projects/P2_app/p2app
if it doesn't have the correct text, please use a text editor to correct it
sudo geany /etc/xdg/lxsession/LXDE-pi/autostart
remember in Linux, everything is case sensitive!
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
va7qi wrote:Did you do a complete shutdown of the radio after updating software?
By complete I mean holding the Power button down for 10 seconds AFTER Linux has been shut down.
73 de VA7QI, ....Erik.
Yes I did
Re: G2 Updated files and simplified update procedure
I have the same problem, all files in proper folder, autostart script correct, grep p2app shows process id.
I can start the p2app manually, receive seems to work properly, however when trying to transmit the t/r
relay constantly cycles instead of holding steady. The p2app show v19 FPGA and v33 p2app.
Radio is non display model.
I can start the p2app manually, receive seems to work properly, however when trying to transmit the t/r
relay constantly cycles instead of holding steady. The p2app show v19 FPGA and v33 p2app.
Radio is non display model.
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
If you kill the p2app that was autostarted (kill <processid>) THEN start it manually, what happens?
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
Operation appears normal following your suggestion.
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
We seem to have an issue where the "autostarted" p2app does not work reliably, but the same program when manually started is OK. At least one other use has the same issue.... and I don't understand it. It doesn't happen here!
Can you start it manually in the interim while we work out what's happening?
Can you start it manually in the interim while we work out what's happening?
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
No problem, I am going to recreate a new autostart from scratch an see if that makes any difference.
New autostart made no difference.
New autostart made no difference.
Re: G2 Updated files and simplified update procedure
laurencebarker wrote:If you kill the p2app that was autostarted (kill <processid>) THEN start it manually, what happens?
Hi Laurence, thank you for your help with this. Okay I manually startred the P2APP and Thetis started, but when I went to Transmit it cuts the TX relay in and out. Update 1-21-2025 after re-installing the latest P2APP all working excellent now.
Art C.
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
I've updated p2app to V34 yesterday. This is to fix the problem where Thetis wouldn't connect, or where the T/R relayed clicked on & off.
The problem was caused by a change to support upgrade to a Radxa processor, but introduced a race condition. "Autostarted" p2app didn't get the MAC address for the ethernet interface, because that hadn't yet been set up; p2app started by hand was fine. And some users (including me) had no problem with autostarted p2app anyway.
The problem was caused by a change to support upgrade to a Radxa processor, but introduced a race condition. "Autostarted" p2app didn't get the MAC address for the ethernet interface, because that hadn't yet been set up; p2app started by hand was fine. And some users (including me) had no problem with autostarted p2app anyway.
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
laurencebarker wrote:I've updated p2app to V34 yesterday. This is to fix the problem where Thetis wouldn't connect, or where the T/R relayed clicked on & off.
The problem was caused by a change to support upgrade to a Radxa processor, but introduced a race condition. "Autostarted" p2app didn't get the MAC address for the ethernet interface, because that hadn't yet been set up; p2app started by hand was fine. And some users (including me) had no problem with autostarted p2app anyway.
Thank you very much Laurence all is good here now. Working great!
-
- Posts: 13
- Joined: Wed Nov 27, 2024 10:52 pm
Re: G2 Updated files and simplified update procedure
Hello Laurence,
Your script or your procedure to do the update don't work on this side on my recent G2 Ultra .
Probable the same problem i had previously even to update PiHPSDR too with the wrong route to do it with and confusion of folder .
Well i have use again Darren N4VFR description on youtube and i have update it in that right way like this :
Instructions :
L'ÉTAPE 1 consiste à mettre à jour le P2APP en premier. Ouvrez le terminal Pi (écran noir) sur le bureau Linux, puis copiez et collez ce script ci-dessous : il devrait s'exécuter automatiquement, sinon appuyez sur la touche Entrée
cd ~/github/Saturn/sw_projects/P2_app
make clean
cd ~/github/Saturn/sw_projects/audiotest
make clean
cd ~/github/Saturn
git pull
cd sw_projects/P2_app
make
cd ../audiotest
make
cd ~/github/pihpsdr
make clean
git pull
make
And is done .
SATURN Protocol 2 App. press 'x <enter>' in console to close
register access connected to /dev/xdma0_user
FPGA BIT file data code = 25112024
Product: Saturn; Version = 2
FPGA Firmware loaded: Saturn, full function; FW Version = 19, major version = 1
All clocks present
p2app client app software Version:34 Build Date:21 Jan 2025 21:36:32
Die Temp = 48.1C
calculating new CW ramp, length = 9000 us
Enhanced debug enabled
Regards
Your script or your procedure to do the update don't work on this side on my recent G2 Ultra .
Probable the same problem i had previously even to update PiHPSDR too with the wrong route to do it with and confusion of folder .
Well i have use again Darren N4VFR description on youtube and i have update it in that right way like this :
Instructions :
L'ÉTAPE 1 consiste à mettre à jour le P2APP en premier. Ouvrez le terminal Pi (écran noir) sur le bureau Linux, puis copiez et collez ce script ci-dessous : il devrait s'exécuter automatiquement, sinon appuyez sur la touche Entrée
cd ~/github/Saturn/sw_projects/P2_app
make clean
cd ~/github/Saturn/sw_projects/audiotest
make clean
cd ~/github/Saturn
git pull
cd sw_projects/P2_app
make
cd ../audiotest
make
cd ~/github/pihpsdr
make clean
git pull
make
And is done .
SATURN Protocol 2 App. press 'x <enter>' in console to close
register access connected to /dev/xdma0_user
FPGA BIT file data code = 25112024
Product: Saturn; Version = 2
FPGA Firmware loaded: Saturn, full function; FW Version = 19, major version = 1
All clocks present
p2app client app software Version:34 Build Date:21 Jan 2025 21:36:32
Die Temp = 48.1C
calculating new CW ramp, length = 9000 us
Enhanced debug enabled
Regards
73's Michel VE2XK FN08XJ
https://www.qrz.com/db/VE2XK
SDR user since 2012
ANAN G2 ULTRA 12/2024 - Thetis
FLEX 5000A RX2 ATU since 12/2012 with Darrin KE9NS PowerSDR
Virtual Audio for E-SSB and E-AM
https://www.qrz.com/db/VE2XK
SDR user since 2012
ANAN G2 ULTRA 12/2024 - Thetis
FLEX 5000A RX2 ATU since 12/2012 with Darrin KE9NS PowerSDR
Virtual Audio for E-SSB and E-AM

Re: G2 Updated files and simplified update procedure
laurencebarker wrote:There is a new version of p2app available in github. It fixes a "reliability" issue in establishing CAT connection to Thetis.
current p2app version 33; FPGA V19
I have created an "update" script to make software updates easier. The instructions are as follows:
1. open a command window
2. Change to your home folder: type cd ~
3. run the script: type ./github/Saturn/scripts/update-G2.sh
The script will pull new files from github; rebuild p2app and the desktop apps; copy desktop shortcuts to your desktop screen; and install some "rules" that name the serial devices used for newer G2 panels. It will remind you to run the "flashwriter" app to program the FPGA if you need to do that (it isn't yet clever enough to tell you if it already up to date).
obviously the before you run this the first time you will need to do a manual "git pull" as before but thereafter the script will do that step for you.
cd ~/github/Saturn
git pull
Be aware that (as before) there are a fair few warnings generated by the compile processes, but no errors.
please report back here if you have any issues with the script.
Laurence, I just wanted to mention and Thank you for this great update. 100% improved my CAT connection between my Mercury Lux Amplifier from RS-232 to USB via Thetis running on COM4. Before this update only on 75m with quick PTT's, it would randomly change bands to 160m. Since this new P2APP update, it's been flawless.
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
Thank you, but I don't think I can claim fixing that CAT connection. That must be something else!
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
Here is an updated update-G2.sh bash script.
Key changes made:
Added update detection:
Uses git fetch to check for updates without merging
Compare local and remote versions before proceeding
Exits early if no updates are found
Added update summary:
Shows previous and new version hashes
Lists all files that were updated
Provides clear version transition information
Improved workflow:
Skips all build steps if no updates are found
Shows the current version even when no updates are needed
Maintains all existing error-checking and safety features
Added version tracking:
Stores initial version before update
Compares versions to generate a change list
Shows branch information
The script will now:
Check for updates first
Exit immediately if no updates are found
Proceed with the full update process if updates exist
Show detailed updated information at the end
Key changes made:
Added update detection:
Uses git fetch to check for updates without merging
Compare local and remote versions before proceeding
Exits early if no updates are found
Added update summary:
Shows previous and new version hashes
Lists all files that were updated
Provides clear version transition information
Improved workflow:
Skips all build steps if no updates are found
Shows the current version even when no updates are needed
Maintains all existing error-checking and safety features
Added version tracking:
Stores initial version before update
Compares versions to generate a change list
Shows branch information
The script will now:
Check for updates first
Exit immediately if no updates are found
Proceed with the full update process if updates exist
Show detailed updated information at the end
- Attachments
-
- update-G2_sh.txt
- (2.81 KiB) Downloaded 349 times
Re: G2 Updated files and simplified update procedure
I'm having the same issue as the others here with Thetis does not seeing the radio.
My radio has been down for 3 days now.
I have the early G2 no screen with the CM4 without the microSD installed.
F/W V19 installed.
When I try to perform the update it seems to complete without error but if I try to run the p2app I get the message "Invalid desktop entry file"
Not sure what to do, Not very knowledgeable with Linux.
But I can follow direction, If someone can post the exact steps IN ORDER and line by line so I can be sure it's not something I'm doing incorrectly.
1.
2.
3.
4.
5.
6.
7.
8.
9.
20.
Like that.
Thanks
John
KC2QMA
My radio has been down for 3 days now.
I have the early G2 no screen with the CM4 without the microSD installed.
F/W V19 installed.
When I try to perform the update it seems to complete without error but if I try to run the p2app I get the message "Invalid desktop entry file"
Not sure what to do, Not very knowledgeable with Linux.
But I can follow direction, If someone can post the exact steps IN ORDER and line by line so I can be sure it's not something I'm doing incorrectly.
1.
2.
3.
4.
5.
6.
7.
8.
9.
20.
Like that.
Thanks
John
KC2QMA
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
if you have no display, how are you running p2app: is it set to autostart, or do you plug in a display and keyboard, or log in remotely?
"invalid desktop entry file" probably means that the desktop "shortcut" file can't find the p2app executable itself. It is a very small file that essentially points to the program you want to run.
please try the following:
cd ~/github/Saturn/sw_projects/P2_app
ls
(it is case sensitive)
and see if there is a file "p2app" there with no file extension. Its creation date should be the date you did the update. There should be a lot of C source code files (*.c, *.h) and object files (*.o)
for development work I run p2app from a command line:
cd ~/github/Saturn/sw_projects/P2_app
./p2app
does that work?
"invalid desktop entry file" probably means that the desktop "shortcut" file can't find the p2app executable itself. It is a very small file that essentially points to the program you want to run.
please try the following:
cd ~/github/Saturn/sw_projects/P2_app
ls
(it is case sensitive)
and see if there is a file "p2app" there with no file extension. Its creation date should be the date you did the update. There should be a lot of C source code files (*.c, *.h) and object files (*.o)
for development work I run p2app from a command line:
cd ~/github/Saturn/sw_projects/P2_app
./p2app
does that work?
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
"if you have no display, how are you running p2app: is it set to autostart, or do you plug in a display and keyboard, or log in remotely?"
I have a keyboard, mouse & monitor connected to get into the G2.
I ran these commands:
cd ~/github/Saturn/sw_projects/P2_app
ls
And don't see the P2app without the extension.
I see:
p2app.c
p2app.o
My G2 is from the first batch and has the RaPi with the onboard memory currently my SD card slot is EMPTY!
Could this have something to do with it?
Just a Note: I have run these updates before and other than a "Permissions" issue they worked before, But for some reason this one doesn't work for me?
I have a keyboard, mouse & monitor connected to get into the G2.
I ran these commands:
cd ~/github/Saturn/sw_projects/P2_app
ls
And don't see the P2app without the extension.
I see:
p2app.c
p2app.o
My G2 is from the first batch and has the RaPi with the onboard memory currently my SD card slot is EMPTY!
Could this have something to do with it?
Just a Note: I have run these updates before and other than a "Permissions" issue they worked before, But for some reason this one doesn't work for me?
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
If you don't have p2app (no extension) then I suspect its compile failed. I know someone else who is compiling p2app on a slightly different system from mine, and what my system reports as "warning" results in an "error" on his, and we are slowly working through those issues (his compile stops at the 1st error, and I can clear the issues up to that error), then he has to compile again and it snags a few files down the list).
Please try the following to see if we can make some progress by manually compiling:
cd ~/github/Saturn
git pull
cd sw_projects/P2_app
make clean
make
Can you then copy out all the messages from the window please? I'm particularly looking for reported errors. If there are some, we will resolve them.
Please try the following to see if we can make some progress by manually compiling:
cd ~/github/Saturn
git pull
cd sw_projects/P2_app
make clean
make
Can you then copy out all the messages from the window please? I'm particularly looking for reported errors. If there are some, we will resolve them.
Laurence Barker G8NJJ
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
by the way - having on-board memory vs SD card will not be behind this. Having a displace vs no display is very unlikely to be be involved. What system updates have been performed could be involved, and what OS you have could be involved (mine is 64 bit but many others are 32 bit).
But the change that's made a difference must be recent. The new script simply carries out the same steps that used to be manual operations so it at least shouldn't be responsible.
But the change that's made a difference must be recent. The new script simply carries out the same steps that used to be manual operations so it at least shouldn't be responsible.
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
HERE IS THE LOG:
andromedacatmessages.c g2v2panel_i2c.h LDGATU.c
andromedacatmessages.h generalpacket.c LDGATU.h
AriesATU.c generalpacket.h Makefile
AriesATU.h generalpacket.o OutDDCIQ.c
auxadc.o hwaccess.o OutDDCIQ.h
cathandler.c i2cdriver.c OutDDCIQ.o
cathandler.h i2cdriver.h OutHighPriority.c
cathandler.o IncomingDDCSpecific.c OutHighPriority.h
catmessages.c IncomingDDCSpecific.h OutHighPriority.o
catmessages.h IncomingDDCSpecific.o OutMicAudio.c
catmessages.o IncomingDUCSpecific.c OutMicAudio.h
cattypes.h IncomingDUCSpecific.h OutMicAudio.o
codecwrite.o IncomingDUCSpecific.o Outwideband.c
debugaids.o InDUCIQ.c Outwideband.h
frontpanelhandler.c InDUCIQ.h p2app.c
frontpanelhandler.h InDUCIQ.o p2app.o
frontpanelhandler.o InHighPriority.c saturndrivers.o
g2panel.c InHighPriority.h saturnregisters.o
g2panel.h InHighPriority.o serialport.c
g2v2panel.c InSpkrAudio.c serialport.h
g2v2panel.h InSpkrAudio.h threaddata.h
g2v2panel_i2c.c InSpkrAudio.o version.o
pi@raspberrypi:~/github/Saturn/sw_projects/P2_app $
pi@raspberrypi:~/github/Saturn/sw_projects/P2_app $ cd ~/github/Saturn
pi@raspberrypi:~/github/Saturn $ git pull
Already up to date.
pi@raspberrypi:~/github/Saturn $ cd sw_projects/P2_app
pi@raspberrypi:~/github/Saturn/sw_projects/P2_app $ make clean
rm -rf p2app *.o *.bin
pi@raspberrypi:~/github/Saturn/sw_projects/P2_app $ make
gcc -c -o p2app.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' p2app.c
p2app.c: In function ‘CheckForExitCommand’:
p2app.c:309:33: warning: unused parameter ‘arg’ [-Wunused-parameter]
void* CheckForExitCommand(void *arg)
~~~~~~^~~
p2app.c: In function ‘CheckForActivity’:
p2app.c:331:30: warning: unused parameter ‘arg’ [-Wunused-parameter]
void* CheckForActivity(void *arg)
~~~~~~^~~
p2app.c: In function ‘CheckForExitCommand’:
p2app.c:324:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
gcc -c -o hwaccess.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/hwaccess.c
../common/hwaccess.c: In function ‘DMAWriteToFPGA’:
../common/hwaccess.c:83:24: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘ssize_t’ {aka ‘int’} [-Wformat=]
printf("seek off 0x%lx != 0x%lx.\n", rc, OffsetAddr);
~~^ ~~
%x
../common/hwaccess.c:92:39: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘ssize_t’ {aka ‘int’} [-Wformat=]
printf("write 0x%x @ 0x%lx failed %ld.\n", Length, OffsetAddr, rc);
~~^ ~~
%d
../common/hwaccess.c: In function ‘DMAReadFromFPGA’:
../common/hwaccess.c:116:24: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘ssize_t’ {aka ‘int’} [-Wformat=]
printf("seek off 0x%lx != 0x%lx.\n", rc, OffsetAddr);
~~^ ~~
%x
../common/hwaccess.c:125:38: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘ssize_t’ {aka ‘int’} [-Wformat=]
printf("read 0x%x @ 0x%lx failed %ld.\n", Length, OffsetAddr, rc);
~~^ ~~
%d
gcc -c -o saturnregisters.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/saturnregisters.c
../common/saturnregisters.c: In function ‘SetDuplex’:
../common/saturnregisters.c:2303:21: warning: unused parameter ‘Enabled’ [-Wunused-parameter]
void SetDuplex(bool Enabled)
^
../common/saturnregisters.c: In function ‘SetOperateMode’:
../common/saturnregisters.c:2313:26: warning: unused parameter ‘IsRunMode’ [-Wunused-parameter]
void SetOperateMode(bool IsRunMode)
^
../common/saturnregisters.c: In function ‘SetFreqPhaseWord’:
../common/saturnregisters.c:2323:28: warning: unused parameter ‘IsPhase’ [-Wunused-parameter]
void SetFreqPhaseWord(bool IsPhase)
^
../common/saturnregisters.c: In function ‘SetDDCSampleSize’:
../common/saturnregisters.c:2333:36: warning: unused parameter ‘DDC’ [-Wunused-parameter]
void SetDDCSampleSize(unsigned int DDC, unsigned int Size)
~~~~~~~~~~~~~^~~
../common/saturnregisters.c:2333:54: warning: unused parameter ‘Size’ [-Wunused-parameter]
void SetDDCSampleSize(unsigned int DDC, unsigned int Size)
~~~~~~~~~~~~~^~~~
gcc -c -o codecwrite.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/codecwrite.c
gcc -c -o saturndrivers.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/saturndrivers.c
gcc -c -o version.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/version.c
../common/version.c: In function ‘IsFallbackConfig’:
../common/version.c:94:11: warning: variable ‘ClockInfo’ set but not used [-Wunused-but-set-variable]
uint32_t ClockInfo; // clock status
^~~~~~~~~
../common/version.c:93:11: warning: variable ‘ProdVer’ set but not used [-Wunused-but-set-variable]
uint32_t ProdVer, ProdID; // product version and id
^~~~~~~
../common/version.c:92:11: warning: variable ‘SWVer’ set but not used [-Wunused-but-set-variable]
uint32_t SWVer, SWID; // s/w version and id
^~~~~
../common/version.c:90:11: warning: variable ‘DateCode’ set but not used [-Wunused-but-set-variable]
uint32_t DateCode; // date code from user register in FPGA
^~~~~~~~
gcc -c -o generalpacket.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' generalpacket.c
gcc -c -o IncomingDDCSpecific.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' IncomingDDCSpecific.c
IncomingDDCSpecific.c: In function ‘IncomingDDCSpecific’:
IncomingDDCSpecific.c:71:7: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
IncomingDDCSpecific.c:36:7: note: declared here
void *IncomingDDCSpecific(void *arg) // listener thread
^~~~~~~~~~~~~~~~~~~
gcc -c -o IncomingDUCSpecific.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' IncomingDUCSpecific.c
IncomingDUCSpecific.c: In function ‘IncomingDUCSpecific’:
IncomingDUCSpecific.c:73:11: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
IncomingDUCSpecific.c:35:7: note: declared here
void *IncomingDUCSpecific(void *arg) // listener thread
^~~~~~~~~~~~~~~~~~~
gcc -c -o InHighPriority.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' InHighPriority.c
InHighPriority.c: In function ‘IncomingHighPriority’:
InHighPriority.c:131:7: warning: implicit declaration of function ‘SetAriesTXFrequency’; did you mean ‘SetDUCFrequency’? [-Wimplicit-function-declaration]
SetAriesTXFrequency(LongWord);
^~~~~~~~~~~~~~~~~~~
SetDUCFrequency
InHighPriority.c:168:9: warning: implicit declaration of function ‘SetAriesAlexTXWord’; did you mean ‘SetFreqPhaseWord’? [-Wimplicit-function-declaration]
SetAriesAlexTXWord(Word);
^~~~~~~~~~~~~~~~~~
SetFreqPhaseWord
InHighPriority.c:174:9: warning: implicit declaration of function ‘SetAriesAlexRXWord’; did you mean ‘SetFreqPhaseWord’? [-Wimplicit-function-declaration]
SetAriesAlexRXWord(Word);
^~~~~~~~~~~~~~~~~~
SetFreqPhaseWord
InHighPriority.c:54:8: warning: unused variable ‘PAEnable’ [-Wunused-variable]
bool PAEnable;
^~~~~~~~
InHighPriority.c:47:12: warning: unused variable ‘DDCPhaseIncrement’ [-Wunused-variable]
uint32_t DDCPhaseIncrement; // delta phase for a DDC
^~~~~~~~~~~~~~~~~
gcc -c -o InDUCIQ.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' InDUCIQ.c
InDUCIQ.c: In function ‘IncomingDUCIQ’:
InDUCIQ.c:135:13: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
InDUCIQ.c:48:7: note: declared here
void *IncomingDUCIQ(void *arg) // listener thread
^~~~~~~~~~~~~
InDUCIQ.c:169:20: warning: assignment to ‘uint8_t *’ {aka ‘unsigned char *’} from incompatible pointer type ‘uint16_t *’ {aka ‘short unsigned int *’} [-Wincompatible-pointer-types]
SrcPtr = (uint16_t *) (UDPInBuffer + 4);
^
InDUCIQ.c:170:21: warning: assignment to ‘uint8_t *’ {aka ‘unsigned char *’} from incompatible pointer type ‘uint16_t *’ {aka ‘short unsigned int *’} [-Wincompatible-pointer-types]
DestPtr = (uint16_t *) IQBasePtr;
^
InDUCIQ.c:64:20: warning: variable ‘IQHeadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* IQHeadPtr; // ptr to 1st free location in I/Q memory
^~~~~~~~~
InDUCIQ.c:63:20: warning: variable ‘IQReadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* IQReadPtr; // pointer for reading out an I/Q sample
^~~~~~~~~
InDUCIQ.c:62:10: warning: variable ‘InitError’ set but not used [-Wunused-but-set-variable]
bool InitError = false; // becomes true if we get an initialisation error
^~~~~~~~~
InDUCIQ.c: In function ‘HandlerSetEERMode’:
InDUCIQ.c:200:29: warning: unused parameter ‘EEREnabled’ [-Wunused-parameter]
void HandlerSetEERMode(bool EEREnabled)
^
gcc -c -o InSpkrAudio.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' InSpkrAudio.c
InSpkrAudio.c: In function ‘IncomingSpkrAudio’:
InSpkrAudio.c:133:13: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
InSpkrAudio.c:48:7: note: declared here
void *IncomingSpkrAudio(void *arg) // listener thread
^~~~~~~~~~~~~~~~~
InSpkrAudio.c:64:20: warning: variable ‘SpkHeadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* SpkHeadPtr; // ptr to 1st free location in spk memory
^~~~~~~~~~
InSpkrAudio.c:63:20: warning: variable ‘SpkReadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* SpkReadPtr; // pointer for reading out a spkr sample
^~~~~~~~~~
InSpkrAudio.c:62:10: warning: variable ‘InitError’ set but not used [-Wunused-but-set-variable]
bool InitError = false; // becomes true if we get an initialisation error
^~~~~~~~~
gcc -c -o OutMicAudio.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' OutMicAudio.c
OutMicAudio.c: In function ‘OutgoingMicSamples’:
OutMicAudio.c:72:20: warning: variable ‘MicHeadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* MicHeadPtr; // ptr to 1st free location in mic memory
^~~~~~~~~~
OutMicAudio.c:71:20: warning: variable ‘MicReadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* MicReadPtr; // pointer for reading out a mic sample
^~~~~~~~~~
gcc -c -o OutDDCIQ.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' OutDDCIQ.c
OutDDCIQ.c: In function ‘OutgoingDDCIQ’:
OutDDCIQ.c:493:35: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
for(Cntr=16; Cntr < (DMAHeadPtr - DMAReadPtr); Cntr+=8) // search for rate word; ignoring 1st
^
OutDDCIQ.c:525:69: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘unsigned char *’ [-Wformat=]
printf("header not found for rate word at addr %x\n", DMAReadPtr);
~^ ~~~~~~~~~~
%hhn
gcc -c -o OutHighPriority.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' OutHighPriority.c
OutHighPriority.c: In function ‘OutgoingHighPriority’:
OutHighPriority.c:145:15: warning: implicit declaration of function ‘ReadFIFOMonitorChannel’ [-Wimplicit-function-declaration]
Depth = ReadFIFOMonitorChannel(eRXDDCDMA, &FIFOOverflow, &FIFOOverThreshold, &FIFOUnderflow, &Word); // read the DDC FIFO Depth register
^~~~~~~~~~~~~~~~~~~~~~
OutHighPriority.c:58:12: warning: variable ‘Depth’ set but not used [-Wunused-but-set-variable]
uint32_t Depth = 0; // FIFO locations available
^~~~~
gcc -c -o debugaids.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/debugaids.c
../common/debugaids.c: In function ‘DumpMemoryBuffer’:
../common/debugaids.c:28:16: warning: unused variable ‘Byte’ [-Wunused-variable]
unsigned char Byte;
^~~~
gcc -c -o auxadc.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/auxadc.c
gcc -c -o cathandler.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' cathandler.c
cathandler.c:83:3: warning: overflow in conversion from ‘long long int’ to ‘long int’ changes value from ‘10000000000’ to ‘1410065408’ [-Woverflow]
10000000000L, // 10000 millions
^~~~~~~~~~~~
cathandler.c:84:3: warning: overflow in conversion from ‘long long int’ to ‘long int’ changes value from ‘100000000000’ to ‘1215752192’ [-Woverflow]
100000000000L, // 100000 millions
^~~~~~~~~~~~~
cathandler.c:85:3: warning: overflow in conversion from ‘long long int’ to ‘long int’ changes value from ‘1000000000000’ to ‘-727379968’ [-Woverflow]
1000000000000L, // 1000000 millions
^~~~~~~~~~~~~~
cathandler.c:86:3: warning: overflow in conversion from ‘long long int’ to ‘long int’ changes value from ‘10000000000000’ to ‘1316134912’ [-Woverflow]
10000000000000L // 10000000 millions
^~~~~~~~~~~~~~~
cathandler.c: In function ‘CATHandlerThread’:
cathandler.c:540:30: warning: unused parameter ‘arg’ [-Wunused-parameter]
void* CATHandlerThread(void *arg)
~~~~~~^~~
gcc -c -o frontpanelhandler.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' frontpanelhandler.c
gcc -c -o catmessages.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' catmessages.c
catmessages.c: In function ‘HandleZZFA’:
catmessages.c:56:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZFA(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam)
^
catmessages.c:56:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZFA(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam)
~~~~^~~~~~~~
catmessages.c: In function ‘HandleZZXV’:
catmessages.c:67:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZXV(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // VFO status
^
catmessages.c:67:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // VFO status
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZUT’:
catmessages.c:78:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZUT(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // 2 tone test
~~~~^~~~~~~~
catmessages.c:78:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // 2 tone test
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZYR’:
catmessages.c:89:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZYR(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // RX1/2
~~~~^~~~~~~~
catmessages.c:89:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // RX1/2
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZZS’:
catmessages.c:102:21: warning: unused parameter ‘SourceDevice’ [-Wunused-parameter]
void HandleZZZS(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ID
~~~~^~~~~~~~~~~~
catmessages.c:102:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZZS(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ID
^
catmessages.c:102:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ID
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZZI’:
catmessages.c:126:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZZI(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // indicator
^
catmessages.c:126:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // indicator
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZZP’:
catmessages.c:138:48: warning: unused parameter ‘Type’ [-Wunused-parameter]
void HandleZZZP(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // pushbutton
~~~~~~~~~~~~~^~~~
catmessages.c:138:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZZP(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // pushbutton
^
catmessages.c:138:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // pushbutton
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZOZ’:
catmessages.c:151:48: warning: unused parameter ‘Type’ [-Wunused-parameter]
void HandleZZOZ(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU erase
~~~~~~~~~~~~~^~~~
catmessages.c:151:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZOZ(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU erase
~~~~^~~~~~~~
catmessages.c:151:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU erase
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZOX’:
catmessages.c:161:48: warning: unused parameter ‘Type’ [-Wunused-parameter]
void HandleZZOX(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~~~~~~~~~~^~~~
catmessages.c:161:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZOX(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~^~~~~~~~
catmessages.c:161:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZTU’:
catmessages.c:172:21: warning: unused parameter ‘SourceDevice’ [-Wunused-parameter]
void HandleZZTU(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~^~~~~~~~~~~~
catmessages.c:172:48: warning: unused parameter ‘Type’ [-Wunused-parameter]
void HandleZZTU(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~~~~~~~~~~^~~~
catmessages.c:172:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZTU(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~^~~~~~~~
catmessages.c:172:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~~~^~~~~~~~~~~
gcc -c -o g2panel.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' g2panel.c
g2panel.c:33:10: fatal error: gpiod.h: No such file or directory
#include <gpiod.h>
^~~~~~~~~
compilation terminated.
make: *** [Makefile:24: g2panel.o] Error 1
andromedacatmessages.c g2v2panel_i2c.h LDGATU.c
andromedacatmessages.h generalpacket.c LDGATU.h
AriesATU.c generalpacket.h Makefile
AriesATU.h generalpacket.o OutDDCIQ.c
auxadc.o hwaccess.o OutDDCIQ.h
cathandler.c i2cdriver.c OutDDCIQ.o
cathandler.h i2cdriver.h OutHighPriority.c
cathandler.o IncomingDDCSpecific.c OutHighPriority.h
catmessages.c IncomingDDCSpecific.h OutHighPriority.o
catmessages.h IncomingDDCSpecific.o OutMicAudio.c
catmessages.o IncomingDUCSpecific.c OutMicAudio.h
cattypes.h IncomingDUCSpecific.h OutMicAudio.o
codecwrite.o IncomingDUCSpecific.o Outwideband.c
debugaids.o InDUCIQ.c Outwideband.h
frontpanelhandler.c InDUCIQ.h p2app.c
frontpanelhandler.h InDUCIQ.o p2app.o
frontpanelhandler.o InHighPriority.c saturndrivers.o
g2panel.c InHighPriority.h saturnregisters.o
g2panel.h InHighPriority.o serialport.c
g2v2panel.c InSpkrAudio.c serialport.h
g2v2panel.h InSpkrAudio.h threaddata.h
g2v2panel_i2c.c InSpkrAudio.o version.o
pi@raspberrypi:~/github/Saturn/sw_projects/P2_app $
pi@raspberrypi:~/github/Saturn/sw_projects/P2_app $ cd ~/github/Saturn
pi@raspberrypi:~/github/Saturn $ git pull
Already up to date.
pi@raspberrypi:~/github/Saturn $ cd sw_projects/P2_app
pi@raspberrypi:~/github/Saturn/sw_projects/P2_app $ make clean
rm -rf p2app *.o *.bin
pi@raspberrypi:~/github/Saturn/sw_projects/P2_app $ make
gcc -c -o p2app.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' p2app.c
p2app.c: In function ‘CheckForExitCommand’:
p2app.c:309:33: warning: unused parameter ‘arg’ [-Wunused-parameter]
void* CheckForExitCommand(void *arg)
~~~~~~^~~
p2app.c: In function ‘CheckForActivity’:
p2app.c:331:30: warning: unused parameter ‘arg’ [-Wunused-parameter]
void* CheckForActivity(void *arg)
~~~~~~^~~
p2app.c: In function ‘CheckForExitCommand’:
p2app.c:324:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
gcc -c -o hwaccess.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/hwaccess.c
../common/hwaccess.c: In function ‘DMAWriteToFPGA’:
../common/hwaccess.c:83:24: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘ssize_t’ {aka ‘int’} [-Wformat=]
printf("seek off 0x%lx != 0x%lx.\n", rc, OffsetAddr);
~~^ ~~
%x
../common/hwaccess.c:92:39: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘ssize_t’ {aka ‘int’} [-Wformat=]
printf("write 0x%x @ 0x%lx failed %ld.\n", Length, OffsetAddr, rc);
~~^ ~~
%d
../common/hwaccess.c: In function ‘DMAReadFromFPGA’:
../common/hwaccess.c:116:24: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘ssize_t’ {aka ‘int’} [-Wformat=]
printf("seek off 0x%lx != 0x%lx.\n", rc, OffsetAddr);
~~^ ~~
%x
../common/hwaccess.c:125:38: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘ssize_t’ {aka ‘int’} [-Wformat=]
printf("read 0x%x @ 0x%lx failed %ld.\n", Length, OffsetAddr, rc);
~~^ ~~
%d
gcc -c -o saturnregisters.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/saturnregisters.c
../common/saturnregisters.c: In function ‘SetDuplex’:
../common/saturnregisters.c:2303:21: warning: unused parameter ‘Enabled’ [-Wunused-parameter]
void SetDuplex(bool Enabled)
^
../common/saturnregisters.c: In function ‘SetOperateMode’:
../common/saturnregisters.c:2313:26: warning: unused parameter ‘IsRunMode’ [-Wunused-parameter]
void SetOperateMode(bool IsRunMode)
^
../common/saturnregisters.c: In function ‘SetFreqPhaseWord’:
../common/saturnregisters.c:2323:28: warning: unused parameter ‘IsPhase’ [-Wunused-parameter]
void SetFreqPhaseWord(bool IsPhase)
^
../common/saturnregisters.c: In function ‘SetDDCSampleSize’:
../common/saturnregisters.c:2333:36: warning: unused parameter ‘DDC’ [-Wunused-parameter]
void SetDDCSampleSize(unsigned int DDC, unsigned int Size)
~~~~~~~~~~~~~^~~
../common/saturnregisters.c:2333:54: warning: unused parameter ‘Size’ [-Wunused-parameter]
void SetDDCSampleSize(unsigned int DDC, unsigned int Size)
~~~~~~~~~~~~~^~~~
gcc -c -o codecwrite.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/codecwrite.c
gcc -c -o saturndrivers.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/saturndrivers.c
gcc -c -o version.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/version.c
../common/version.c: In function ‘IsFallbackConfig’:
../common/version.c:94:11: warning: variable ‘ClockInfo’ set but not used [-Wunused-but-set-variable]
uint32_t ClockInfo; // clock status
^~~~~~~~~
../common/version.c:93:11: warning: variable ‘ProdVer’ set but not used [-Wunused-but-set-variable]
uint32_t ProdVer, ProdID; // product version and id
^~~~~~~
../common/version.c:92:11: warning: variable ‘SWVer’ set but not used [-Wunused-but-set-variable]
uint32_t SWVer, SWID; // s/w version and id
^~~~~
../common/version.c:90:11: warning: variable ‘DateCode’ set but not used [-Wunused-but-set-variable]
uint32_t DateCode; // date code from user register in FPGA
^~~~~~~~
gcc -c -o generalpacket.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' generalpacket.c
gcc -c -o IncomingDDCSpecific.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' IncomingDDCSpecific.c
IncomingDDCSpecific.c: In function ‘IncomingDDCSpecific’:
IncomingDDCSpecific.c:71:7: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
IncomingDDCSpecific.c:36:7: note: declared here
void *IncomingDDCSpecific(void *arg) // listener thread
^~~~~~~~~~~~~~~~~~~
gcc -c -o IncomingDUCSpecific.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' IncomingDUCSpecific.c
IncomingDUCSpecific.c: In function ‘IncomingDUCSpecific’:
IncomingDUCSpecific.c:73:11: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
IncomingDUCSpecific.c:35:7: note: declared here
void *IncomingDUCSpecific(void *arg) // listener thread
^~~~~~~~~~~~~~~~~~~
gcc -c -o InHighPriority.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' InHighPriority.c
InHighPriority.c: In function ‘IncomingHighPriority’:
InHighPriority.c:131:7: warning: implicit declaration of function ‘SetAriesTXFrequency’; did you mean ‘SetDUCFrequency’? [-Wimplicit-function-declaration]
SetAriesTXFrequency(LongWord);
^~~~~~~~~~~~~~~~~~~
SetDUCFrequency
InHighPriority.c:168:9: warning: implicit declaration of function ‘SetAriesAlexTXWord’; did you mean ‘SetFreqPhaseWord’? [-Wimplicit-function-declaration]
SetAriesAlexTXWord(Word);
^~~~~~~~~~~~~~~~~~
SetFreqPhaseWord
InHighPriority.c:174:9: warning: implicit declaration of function ‘SetAriesAlexRXWord’; did you mean ‘SetFreqPhaseWord’? [-Wimplicit-function-declaration]
SetAriesAlexRXWord(Word);
^~~~~~~~~~~~~~~~~~
SetFreqPhaseWord
InHighPriority.c:54:8: warning: unused variable ‘PAEnable’ [-Wunused-variable]
bool PAEnable;
^~~~~~~~
InHighPriority.c:47:12: warning: unused variable ‘DDCPhaseIncrement’ [-Wunused-variable]
uint32_t DDCPhaseIncrement; // delta phase for a DDC
^~~~~~~~~~~~~~~~~
gcc -c -o InDUCIQ.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' InDUCIQ.c
InDUCIQ.c: In function ‘IncomingDUCIQ’:
InDUCIQ.c:135:13: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
InDUCIQ.c:48:7: note: declared here
void *IncomingDUCIQ(void *arg) // listener thread
^~~~~~~~~~~~~
InDUCIQ.c:169:20: warning: assignment to ‘uint8_t *’ {aka ‘unsigned char *’} from incompatible pointer type ‘uint16_t *’ {aka ‘short unsigned int *’} [-Wincompatible-pointer-types]
SrcPtr = (uint16_t *) (UDPInBuffer + 4);
^
InDUCIQ.c:170:21: warning: assignment to ‘uint8_t *’ {aka ‘unsigned char *’} from incompatible pointer type ‘uint16_t *’ {aka ‘short unsigned int *’} [-Wincompatible-pointer-types]
DestPtr = (uint16_t *) IQBasePtr;
^
InDUCIQ.c:64:20: warning: variable ‘IQHeadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* IQHeadPtr; // ptr to 1st free location in I/Q memory
^~~~~~~~~
InDUCIQ.c:63:20: warning: variable ‘IQReadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* IQReadPtr; // pointer for reading out an I/Q sample
^~~~~~~~~
InDUCIQ.c:62:10: warning: variable ‘InitError’ set but not used [-Wunused-but-set-variable]
bool InitError = false; // becomes true if we get an initialisation error
^~~~~~~~~
InDUCIQ.c: In function ‘HandlerSetEERMode’:
InDUCIQ.c:200:29: warning: unused parameter ‘EEREnabled’ [-Wunused-parameter]
void HandlerSetEERMode(bool EEREnabled)
^
gcc -c -o InSpkrAudio.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' InSpkrAudio.c
InSpkrAudio.c: In function ‘IncomingSpkrAudio’:
InSpkrAudio.c:133:13: warning: ‘return’ with no value, in function returning non-void
return;
^~~~~~
InSpkrAudio.c:48:7: note: declared here
void *IncomingSpkrAudio(void *arg) // listener thread
^~~~~~~~~~~~~~~~~
InSpkrAudio.c:64:20: warning: variable ‘SpkHeadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* SpkHeadPtr; // ptr to 1st free location in spk memory
^~~~~~~~~~
InSpkrAudio.c:63:20: warning: variable ‘SpkReadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* SpkReadPtr; // pointer for reading out a spkr sample
^~~~~~~~~~
InSpkrAudio.c:62:10: warning: variable ‘InitError’ set but not used [-Wunused-but-set-variable]
bool InitError = false; // becomes true if we get an initialisation error
^~~~~~~~~
gcc -c -o OutMicAudio.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' OutMicAudio.c
OutMicAudio.c: In function ‘OutgoingMicSamples’:
OutMicAudio.c:72:20: warning: variable ‘MicHeadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* MicHeadPtr; // ptr to 1st free location in mic memory
^~~~~~~~~~
OutMicAudio.c:71:20: warning: variable ‘MicReadPtr’ set but not used [-Wunused-but-set-variable]
unsigned char* MicReadPtr; // pointer for reading out a mic sample
^~~~~~~~~~
gcc -c -o OutDDCIQ.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' OutDDCIQ.c
OutDDCIQ.c: In function ‘OutgoingDDCIQ’:
OutDDCIQ.c:493:35: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
for(Cntr=16; Cntr < (DMAHeadPtr - DMAReadPtr); Cntr+=8) // search for rate word; ignoring 1st
^
OutDDCIQ.c:525:69: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘unsigned char *’ [-Wformat=]
printf("header not found for rate word at addr %x\n", DMAReadPtr);
~^ ~~~~~~~~~~
%hhn
gcc -c -o OutHighPriority.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' OutHighPriority.c
OutHighPriority.c: In function ‘OutgoingHighPriority’:
OutHighPriority.c:145:15: warning: implicit declaration of function ‘ReadFIFOMonitorChannel’ [-Wimplicit-function-declaration]
Depth = ReadFIFOMonitorChannel(eRXDDCDMA, &FIFOOverflow, &FIFOOverThreshold, &FIFOUnderflow, &Word); // read the DDC FIFO Depth register
^~~~~~~~~~~~~~~~~~~~~~
OutHighPriority.c:58:12: warning: variable ‘Depth’ set but not used [-Wunused-but-set-variable]
uint32_t Depth = 0; // FIFO locations available
^~~~~
gcc -c -o debugaids.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/debugaids.c
../common/debugaids.c: In function ‘DumpMemoryBuffer’:
../common/debugaids.c:28:16: warning: unused variable ‘Byte’ [-Wunused-variable]
unsigned char Byte;
^~~~
gcc -c -o auxadc.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' ../common/auxadc.c
gcc -c -o cathandler.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' cathandler.c
cathandler.c:83:3: warning: overflow in conversion from ‘long long int’ to ‘long int’ changes value from ‘10000000000’ to ‘1410065408’ [-Woverflow]
10000000000L, // 10000 millions
^~~~~~~~~~~~
cathandler.c:84:3: warning: overflow in conversion from ‘long long int’ to ‘long int’ changes value from ‘100000000000’ to ‘1215752192’ [-Woverflow]
100000000000L, // 100000 millions
^~~~~~~~~~~~~
cathandler.c:85:3: warning: overflow in conversion from ‘long long int’ to ‘long int’ changes value from ‘1000000000000’ to ‘-727379968’ [-Woverflow]
1000000000000L, // 1000000 millions
^~~~~~~~~~~~~~
cathandler.c:86:3: warning: overflow in conversion from ‘long long int’ to ‘long int’ changes value from ‘10000000000000’ to ‘1316134912’ [-Woverflow]
10000000000000L // 10000000 millions
^~~~~~~~~~~~~~~
cathandler.c: In function ‘CATHandlerThread’:
cathandler.c:540:30: warning: unused parameter ‘arg’ [-Wunused-parameter]
void* CATHandlerThread(void *arg)
~~~~~~^~~
gcc -c -o frontpanelhandler.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' frontpanelhandler.c
gcc -c -o catmessages.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' catmessages.c
catmessages.c: In function ‘HandleZZFA’:
catmessages.c:56:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZFA(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam)
^
catmessages.c:56:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZFA(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam)
~~~~^~~~~~~~
catmessages.c: In function ‘HandleZZXV’:
catmessages.c:67:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZXV(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // VFO status
^
catmessages.c:67:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // VFO status
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZUT’:
catmessages.c:78:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZUT(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // 2 tone test
~~~~^~~~~~~~
catmessages.c:78:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // 2 tone test
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZYR’:
catmessages.c:89:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZYR(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // RX1/2
~~~~^~~~~~~~
catmessages.c:89:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // RX1/2
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZZS’:
catmessages.c:102:21: warning: unused parameter ‘SourceDevice’ [-Wunused-parameter]
void HandleZZZS(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ID
~~~~^~~~~~~~~~~~
catmessages.c:102:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZZS(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ID
^
catmessages.c:102:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ID
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZZI’:
catmessages.c:126:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZZI(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // indicator
^
catmessages.c:126:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // indicator
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZZP’:
catmessages.c:138:48: warning: unused parameter ‘Type’ [-Wunused-parameter]
void HandleZZZP(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // pushbutton
~~~~~~~~~~~~~^~~~
catmessages.c:138:59: warning: unused parameter ‘BoolParam’ [-Wunused-parameter]
void HandleZZZP(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // pushbutton
^
catmessages.c:138:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // pushbutton
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZOZ’:
catmessages.c:151:48: warning: unused parameter ‘Type’ [-Wunused-parameter]
void HandleZZOZ(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU erase
~~~~~~~~~~~~~^~~~
catmessages.c:151:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZOZ(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU erase
~~~~^~~~~~~~
catmessages.c:151:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU erase
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZOX’:
catmessages.c:161:48: warning: unused parameter ‘Type’ [-Wunused-parameter]
void HandleZZOX(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~~~~~~~~~~^~~~
catmessages.c:161:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZOX(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~^~~~~~~~
catmessages.c:161:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~~~^~~~~~~~~~~
catmessages.c: In function ‘HandleZZTU’:
catmessages.c:172:21: warning: unused parameter ‘SourceDevice’ [-Wunused-parameter]
void HandleZZTU(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~^~~~~~~~~~~~
catmessages.c:172:48: warning: unused parameter ‘Type’ [-Wunused-parameter]
void HandleZZTU(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~~~~~~~~~~^~~~
catmessages.c:172:74: warning: unused parameter ‘NumParam’ [-Wunused-parameter]
HandleZZTU(int SourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~^~~~~~~~
catmessages.c:172:90: warning: unused parameter ‘StringParam’ [-Wunused-parameter]
ourceDevice, ERXParamType Type, bool BoolParam, int NumParam, char* StringParam) // ATU success/fail
~~~~~~^~~~~~~~~~~
gcc -c -o g2panel.o -Wall -Wextra -Wno-unused-function -g -D_GNU_SOURCE -D GIT_DATE='"30 Jan 2025 19:56:29"' g2panel.c
g2panel.c:33:10: fatal error: gpiod.h: No such file or directory
#include <gpiod.h>
^~~~~~~~~
compilation terminated.
make: *** [Makefile:24: g2panel.o] Error 1
Re: G2 Updated files and simplified update procedure
Try doing:
sudo apt install libgpiod-dev
and rebuild
sudo apt install libgpiod-dev
and rebuild
Re: G2 Updated files and simplified update procedure
That worked!
Thank You Richard.
Here is what i typed to fix my specific issue:
1. sudo apt install libgpiod-dev
waited to complete
2. cd ~
3. ./github/Saturn/scripts/update-G2.sh
Waited to complete
4.Then restarted.
Thank You Richard.
Here is what i typed to fix my specific issue:
1. sudo apt install libgpiod-dev
waited to complete
2. cd ~
3. ./github/Saturn/scripts/update-G2.sh
Waited to complete
4.Then restarted.
Last edited by KC2QMA on Sat Feb 01, 2025 4:38 am, edited 1 time in total.
Re: G2 Updated files and simplified update procedure
What would be nice is if there were a CLEAN bootable Image file with the OS and only the necessary apps that ship with the G2 that can be downloaded then transferred to a blank microSD card.
Then if the G2 had a file corruption or the internal microSD goes bad the user and make a new card.
I guess there would be a file for the control panel version and a file for the Non control panel version

Then if the G2 had a file corruption or the internal microSD goes bad the user and make a new card.
I guess there would be a file for the control panel version and a file for the Non control panel version

Re: G2 Updated files and simplified update procedure
Hate to say it, but John is right. One should not have to be Linux savvy to make things run properly.
Way back in July of last year I warned of this.
viewtopic.php?f=48&t=4724
At the very least people should not have to compile ("make") app's. There should be a procedure to add an G2 openhpsdr repository to Apt sources for both p2app and pihpsdr, and for the FPGA firmware. Then it becomes as simple as "sudo app update".
Are their any Linux jocks out there who could help Laurence out with that?
Way back in July of last year I warned of this.
viewtopic.php?f=48&t=4724
At the very least people should not have to compile ("make") app's. There should be a procedure to add an G2 openhpsdr repository to Apt sources for both p2app and pihpsdr, and for the FPGA firmware. Then it becomes as simple as "sudo app update".
Are their any Linux jocks out there who could help Laurence out with that?
-
- Posts: 304
- Joined: Mon Nov 11, 2019 7:39 pm
Re: G2 Updated files and simplified update procedure
I agree that it needs to be better. Just not sure how to achieve that.
A start might be for the install script to test for the compiled executable (ie that the compile succeeded). I did see someone has posted an improved script here; I'll have a look at that when I get a chance.
And over the last few days I have removed a lot of the warning messages that might make the output look cleaner.
I agree that there should be an image file you can download. At one point there were, but they got dropped somehow. I suspect it is always going to be necessary to run an update after loading the image, because there will be several images to maintain for different combinations of processor board and operating system.
A start might be for the install script to test for the compiled executable (ie that the compile succeeded). I did see someone has posted an improved script here; I'll have a look at that when I get a chance.
And over the last few days I have removed a lot of the warning messages that might make the output look cleaner.
I agree that there should be an image file you can download. At one point there were, but they got dropped somehow. I suspect it is always going to be necessary to run an update after loading the image, because there will be several images to maintain for different combinations of processor board and operating system.
Laurence Barker G8NJJ
Re: G2 Updated files and simplified update procedure
Discovered NEW Issues with update....
Now the OC control output is now incorrect, For example when i am on 40m my amp now goes to 160M, Thetis shows the correct Pin State? Worked perfect before the update.
After the update Still cannot open pihpsdr app. (File not found)

Now the OC control output is now incorrect, For example when i am on 40m my amp now goes to 160M, Thetis shows the correct Pin State? Worked perfect before the update.
After the update Still cannot open pihpsdr app. (File not found)
