¿ªÔÆÌåÓý

Re: Best way to use #sbitx with N3FJP, WINLINK, other Windows ham radio apps? #sBitx


 

Hi Farhan and all,

I can put online a HERMES image with VARA, uucp and email stack already configured, in case there is interest. Then one just needs a "email gateway" to route the emails from over the air to the Internet. We can get more than 300bps with VARA. We our Mercury modem we are shooting for higher speeds and also wideband operation.

Anyway, if anyone needs help puting VARA and Winlink to work on the sbitx, I can help. I spend some time fixing/testing box86, then box64 and then working with hangover-wine developer to make VARA work nice. And it does, pretty stable (I'm using the sbitx controller I wrote - but I don't see why Farhan's implementation would not work). It is just a matter of setting alsa asoundrc correctly - just set default to loopback. This is what I use:

pcm.dsnooped0 {
???type dsnoop
???ipc_key 50000
???ipc_key_add_uid false ??# let multiple users share
???ipc_perm 0666 ??????????# IPC permissions for multi-user sharing (octal, default 0600)
???slave {
???????pcm "hw:1,1"
???????rate 48000
???????channels 2
???}
}

pcm.dmix0 {
???type dmix
???ipc_key 60000
???ipc_key_add_uid false ??# let multiple users share
???ipc_perm 0666 ??????????# IPC permissions for multi-user sharing (octal, default 0600)
???slave {
???????pcm "hw:2,0"
???????rate 48000
???????channels 2
???}
}

pcm.HERMES2IN {type rate slave {pcm "plug:dsnooped0" rate 48000}}
pcm.HERMES2OUT {type rate slave {pcm "plug:dmix0" rate 48000}}

pcm.asymwine {
???????type asym
???????playback.pcm "HERMES2OUT"
???????capture.pcm "HERMES2IN"
}

pcm.!default {
???????type plug
???????slave.pcm "asymwine"
}

pcm.dsp {
???????type plug
???????slave.pcm "asymwine"
}

And have a software on windows side that keys the radio (I use the UUCP bridge I wrote [1] together with the shared memory api of sbitx I developed [2] and am re-writing for clearer code and better dsp and latency [3]). This is production quality and is running is a dozen sbitx in the field already.

[1]
[2]
[3]

Cheers,
Rafael

On 2/2/24 03:49, Ashhar Farhan wrote:
Gordon,
Now I understand this much better. At a stratospheric level:
1. We have almost 500 sbitx out there in the wild. What if we added email gateways into our code? We will have to manage an email gateway server somewhere but that is far easier than anything else. It could be hostes on sbitx.net <> or something like that, entirely disconnected from hf signals.
2. What does it take to develop something akin to winlink? Rafael has already coopted the good ol UUCP to work as email relay. What we need now is a good 300 bps modem.
3. I am even more enthused about a short messaginf service (akin to js8call) where I can receive from multiple sources at once.
On point 3, let me elaborate a little more in a separate email.
- f

On Fri, Feb 2, 2024, 8:39 AM Gordon Gibby <docvacuumtubes@...> wrote:

I don't understand most of this, but the WINLINK people also built
an "API"
You can read about it here (and don't ask me what it means I have
no idea)



They also openly offer to provide help with connections to their
systems

"Developers: This data is available through theWinlink API
<>.Contact us
<mailto:webmaster@...?subject=API%20query>for information
and access to the API. Please include a reference to your project
or a detailed description of your application.

--Winlink Development Team"

I'm not anywhere near that league of understanding, but apparently
they have extended the open hand to help. Some of you folks are
much more knowledgeable than me and would understand?that stuff.?
?Me, I just see a list of commands in an ICOM manual.

Gordon KX4Z



On Thu, Feb 1, 2024 at 10:03?PM Gordon Gibby
<docvacuumtubes@...> wrote:

Here is the command that one must read in order to know the
frequency that ION2G or WINLINK is telling an ICOM radio to go to:

// ?The minimum command we have to listen for is change frequency
// ?5 bytes: ? MM MK KK HH ?01 ? is the command

If you can read that command, and then? move the sBitx to the
requested?frequency, then you have started off the process of
relating to legacy code.
There are other commands, and they are documented in ICOM
literature.
Most manufacturers provide their own commands and
explanations, one just reads them.

Below is code that I wrote years ago to cause a Raduino?to go
to the frequency and appear to be an Icom radio. ?Pretty simple.
There is nothing mysterious about it.
More information can be found in any ICOM manual, available on
the Internet.

Hope that helps!
73
Gordon KX4Z





// --------------------------TRY TWO TO DO
CAT---------------------------

// ?The minimum command we have to listen for is change frequency
// ?5 bytes: ? MM MK KK HH ?01 ? is the command
// ?where MMM are the megaherts ?(eg ?01 4
// ?and the KKK are the kilohertz ?(eg ? 234
// ?so for example ? 01, 42, 345, 56, 01 means
// ?change frequency to 14,234.56 kilohertz


void checkSerialData() {
? int packed;
? int i = Serial.available();
? // Note that the internal buffer on the arduino can hold up
to 64 bytes
? ? if (i < 5) return;

?// if you got here then there are at least 5 ints (?bytes?)
?waiting: get it.

printLine(1, (char *)"5bytes");
? ? ? ? delay(10);

? ? for (i=0; i<5; i++) {
? ? ? ? receivedserial[i] = Serial.read();
? ? ? ? // Serial.read pulls exactly one byte
? ? }

? ? // now chek for the command in the last byte
? ? switch (receivedserial[4]) {


? ? ? ? case 1:

// frequency is in packed BCD; binary coded decimal;
// so left 4 bits give top decimal number 0-9 ?and right 4
bits give bottom decimal number 0-9


// ? ? ? ?case CAT_FREQ_SET:
? ? ? ? ? ? // convert the 4 bytes of numbers (tens of MHz),
(hundreds of kHz), (kHz), (tens of hz)
? ? ? ? ? frequency = 0UL;
? ? ? ? ? packed = receivedserial[0];
? ? ? ? ? frequency = ? ? 10000000UL * ? (unsigned long) (
((packed & 0xF0)>>4 )* 10 ?+ (packed & 0x0F) ) ;
? ? ? ? ? packed = receivedserial[1];
? ? ? ? ? frequency = frequency + ?100000UL * (unsigned long)
( ((packed & 0xF0)>>4 )* 10 ?+ ? (packed & 0x0F));
? ? ? ? ? packed = receivedserial[2];
? ? ? ? ? frequency = frequency + 1000UL * ? (unsigned long) (
((packed & 0xF0)>>4 )* 10 ?+ (packed & 0x0F));
? ? ? ? ? packed = receivedserial[3];
? ? ? ? ? frequency = frequency -40 + 10UL * ?(unsigned long)
( ((packed & 0xF0)>>4 )* 10 ?+ ? (packed & 0x0F));



? ? ? ? ? ?setFrequency(frequency);

? ? ? ? ? ?Serial.write(ACK);
? ? ? ? ? ? break;

? ? ? ? default:
? ? ? ? ? ? printLine(1, (char *)"Othercmd");
? ? ? ? ? ? delay(10);
? ? ? ? ? ? Serial.write(ACK);
? ? ? ? ? ? break;
? ? }

}

On Thu, Feb 1, 2024 at 9:55?PM Gordon Gibby via groups.io
<> <docvacuumtubes@...> wrote:

I should have said "ARQ" modems.? ? I think you can do the
same thing with any of the modems in FLDGI, by overlaying
ARQ which I think FLMSG and other software do -- so there
are other options as well.? ? I'm not a guru in that
department, so my language may not be perfectly
correct.....sorry!
Gordon KX4Z



On Thu, Feb 1, 2024 at 9:52?PM Gordon Gibby via groups.io
<> <docvacuumtubes@...> wrote:

The genius of WINLINK is not their code.? ?The genius
is their VOLUNTEER BASE.? ?They have > 100 HF 24-hour
volunteer stations all around the world providing
gateway and/or relay service for free to anyone in the
world.? ?It took then a decade to get close to that
number of installed volunteers.

In less?than 5 years, they have equalled that number
in U.S.?Government-related volunteer stations in the
SHARES system which uses substtantially similar code.?
?Both systems are free to use and free to obtain the
software for.

At the moment, and for the past decade, they have been
"best in class."? ?That of course will eventually
change.? ? But they have provided DAILY 1-on-1
mentoring for 2 decades to anyone with a question.?
?EVERY DAY.? MULTIPLE TIMES PER DAY.? ?I read their
mentoring.? ?They answer the stupidest questions,
generally rather nicely (not always).? ?That kind of
volunteer service is what built their installed base
of volunteers all over the world.

Yes, someone will eventually supplant them.? ?That is
how things go.? ?But in order to build up THAT LEVEL
of user support that built up that level of installed
24-hour volunteers......will not happen overnight.? ?
They have been though hundreds or thousands of code
updates to their code.? ?It has been years since one
of their updates "broke" one of my servers.? ?That
level of service and consistency does not happen
overnight.? ? ?It will be quite a while before
something of that level is built again.

I? think the winlink world wide network might be the
largest continuous volunteer free "system" in all of
ham radio (but then again, I don't know everything).?
?Where else are their 100+ HF radios? (and there are
likely 2,000 VHF 24/hour radios)? continuously
providing consistent service with a single unified
system?? ? Where else is there a user mentoring
service that provides 5-15 daily mentoring responses
from unpaid trained volunteers?? ? I think it will be
a while before someone else becomes "best in that
class"? ? It will eventuallyhappen.

Again, THEY are the people who wrote the only known
FREE HF modems -- WINMOR and ARDOP.? ? sBitx and? use
either.? ?Winmor I think was written only for WINDOWS,
but ARDOP was written specifically to run on (almost)
anything.? ?I provide? 24-hour ARDOP? gateway service,
have for years, but I also provide 24-hour radio-only
computer controlled message relaying.? ?I have yet to
see any linuz-based? emulation provide the same.?
?Wish they did!!!

My observations, I could certainly be wrong.? ?But in
a general year, the winlink folks will move > 500,000
messages over HF alone, no telling how many over VHF.?
?And they are a LARGE part of why the 300 baud rate
limit was just recenlty?overturned, which will open
the way for much more innovation in hf modem design.

73
Gordon KX4Z


On Thu, Feb 1, 2024 at 9:40?PM Gordon Gibby via
groups.io <>
<docvacuumtubes@...> wrote:

Winlink is free. ?Always has been.? ? they invite
you to give them a donation, but it works whether
you do or not.

Their software is indeed closed source.? I think
they may have reasons for that, particularly since
it is used by government as well.? ?I'm not an
exper?on that.
ARDOP is an hf modem with free source code.? ? It
was written by the?Winlink folks to help people out
WINMOR before that was also written by the WINLINK
folks and was free also.? (Its performance is now
poor in comparison and they don't use it, but it
is still out there)

One does not need to know how winlink issues
commands. ?They will issue commands for about 50
different radios.? ? All you must doo is PICK ONE
OF THEM and implement?reading the commands that
the manufacturer you have selected, wrote.? ?Then
it works.? ? The uBitx emulated a Yaesu rig, and
hence it worked nicely with WINLINK (and would
likely work with ION2G and even N3FJP). ?I don't
understand some of the language being used herre,
but to date, tthe sBits does not appear to work
with any of tthose.

I wrote code to allow the Raduino?to intercept
ICOM style commands and had Winlink nicely
controlling the Raduino, which was driving a
vacuum tube rig.
That was documented years ago.

It is great to be so far ahead of everyone, but it
is also nice to actually work in real world
situations with ordinary humans and existing
software too, agreed?? ?Without being able to deal
with the normal systems that are best-in-class and
used by so many around the world, being so far
ahead of them isn't that helpful, right?

So I found my code that could read a serial port
(USB) on a Raspberry Pi, and I found my code that
could interpret exactly ONE ICOM command...when I
get a chance I may be able to put the together,
but I am a sad excuse for a C programmer.? ?
?Pretty good at teaching Calculus and AP Chemistry
or providing anesthesia for a liver transplant (in
my day).....but there are far better C programmers
than ME.? ?But if that is what is required, then
that is what, time allowing I shall write.? ? I
did it to read winlink right off the air when
others said that, too, was impossible.? ? I was
amazzed that they thought it was impossible.

Thanks! You have done great things for ham radio!
73
Gordon KX4Z


On Thu, Feb 1, 2024 at 9:19?PM Ashhar Farhan
<farhanbox@...> wrote:

Several peope have commented about how sbitx
lags behind commercial rigs like the xeigu g90
(to take a pick).
If you compare g90 to sbitx, feature to
feature, you will see that the sbitx doesn't
lag behind in any functionality at all. Does
it not do cw or ssb? Or RIT?
On the other hand, there are features like the
integrated logbook or cw macros that are not
found on any other radio. The software is
about a year old. Much of it is entirely
rewritten, for example the logbook moved from
being flat file based with command line UI to
using an RDBMS and gui. Gyula has reported a
bug in saving the first contact in FT8. There
is a manual work around he has suggested for
the time being. I am trying to replicate the
bug to fix it.
But, let us move to rig control or the lack
thereof. The sbitx provides far far more
flexibility in remote control than any radio
ever did. Look at JJ's suite of control apps.
The sbitx provides a whole suite of commands
that works over hamlib net ctrl, telnet,
fldigi's xml and websockets. It provides the
simplest of remote rig controls (telnet
sbitx.net <>) to websocketd
that allow you to script in javascript. Do you
know any other radio that provides that?
?The route that sbitx takes is future proof.
It uses hamlib net rigctrl. The reason is
simple: we havent seen a physical serial port
on any computer since the beginingnof the century.
So, why doesnt it work with x, y or z
software? It doesn't because each software
uses a different subset of commands. Take, for
instance, reading frequency of sbitx. It works
on wsjtx, it works on fldigi, it doesn't work
on winlink. It would have worked on winlink if
we could see a list of commands that winlink
used, we can't because winlink is closed
source. Sbitx works with wsjtx because I can
read the code of wsjtx. The problem is not us,
but them.
I am personally averse to using proprietory
software and I don't think I will ever cough
out money for winlink.
Instead, I will prefer to wait for open source
alternatives based on Rafael's code or FreeDV
to provide data transfer and build email
clients on top of it. It is a long shot, but
it will happen much quicker than you think. To
this end, does anyone have recommendations for
a good HF data modem software (written in C?)
- f

- f

On Fri, Feb 2, 2024, 6:25 AM Dave, N1AI
<n1ai@...> wrote:

On Thu, Feb 1, 2024 at 07:05 PM, Brian
Umbarger wrote:

Anyway, to the point. Though I am not
very familiar with the applications
you mention in your last message, I do
know that emulating a serial port is
pretty easily accomplished in Linux.?
This stackoverflow response describes
how to do it.


Thanks for the pointer.

In my opinion, the right thing to do is
fix our code so rig control is done
correctly over the network using TCP/IP
and to not try to emulate a serial port.

This topic just made me remember my first
computer mouse used a serial port.

Since then we've moved on to PS/2, then to
USB, then to wireless.

I think we should do as the mouse did and
stop thinking in terms of serial ports.

I now feel Mike Walker's pain, he has been
trying to get hams to stop using serial
ports for years now.

Ref:


--
Regards,
Dave, N1AI

Join [email protected] to automatically receive all group messages.