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
toggle quoted message
Show quoted text
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
|