https://bugs.winehq.org/show_bug.cgi?id=52521
Bug ID: 52521 Summary: RMS Express: Intermittent TCP connections between program components Product: Wine Version: 7.1 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: eric.wheez@gmail.com Distribution: ---
Context: RMS Express is a "Email over Radio" email-like client that interfaces with sound modems (sound is then sent over radio to listening stations), much like the old dial-up modems of the 1990's. Its modems are separate programs that connect to it over local TCP.
Problem: I would technically call this a minor bug, but since many users of this program don't like using computers and might not try closing and re-running RMS Express, I would consider it basically a 'crash' for this program. RMS Express's code can be peeked at with ILspy and ARDOP (one of the modem programs) is open-source (available by joining https://ardop.groups.io/g/main - and then later joining ardop.groups.io/g/developers )
System: - Happens on Debain 10/x86 (VMWare) & on RPi4/armv7l (see https://github.com/WheezyE/Winelink/) - Using wine-devel-7.1 (has been present since at least wine-devel-5.19 - haven't tried earlier than that) - Happens whether using wine-mono or .NET 4.6 (so we can rule out a wine-mono bug)
Installation: If you're interested, here are some quick install commands & notes.
``` # Set up wine # NOTE: wine-mono is also required for RMS Express! winetricks -q win7 sound=alsa # for RMS Express winetricks -q vb6run pdh_nt4 win7 sound=alsa # for VARA
# Install RMS Express & VARA HF/FM (no matter what their version numbers are) # NOTE: ARDOP, VARA HF, & VARA FM need the user to configure soundcards after installation. mkdir rmsdownloads 2>/dev/null; cd rmsdownloads sudo apt-get install curl megatools p7zip-full -y # Download / extract RMS Express echo -e "\nDownloading and installing RMS Express . . .\n" wget -q -r -l1 -np -nd -A "Winlink_Express_install_*.zip" https://downloads.winlink.org/User%20Programs 7z x Winlink_Express_install_*.zip -o"WinlinkExpressInstaller" wine WinlinkExpressInstaller/Winlink_Express_install.exe /SILENT
# Download / extract VARA HF echo -e "\nDownloading VARA HF . . .\n" VARAHFLINK=$(curl -s https://rosmodem.wordpress.com/ | grep -oP '(?=https://mega.nz).*?(?=" target="_blank" rel="noopener noreferrer">VARA HF v)') # Find the mega.nz link from the rosmodem website no matter its version, then store it as a variable megadl ${VARAHFLINK} 7z x VARA\ HF*.zip -o"VARAHFInstaller" wine VARAHFInstaller/VARA\ setup*.exe /SILENT
# Download / extract VARA FM echo -e "\nDownloading VARA FM . . .\n" VARAFMLINK=$(curl -s https://rosmodem.wordpress.com/ | grep -oP '(?=https://mega.nz).*?(?=" target="_blank" rel="noopener noreferrer">VARA FM v)') # Find the mega.nz link from the rosmodem website no matter its version, then store it as a variable megadl ${VARAFMLINK} 7z x VARA\ FM*.zip -o"VARAFMInstaller" wine VARAFMInstaller/VARA\ FM\ setup*.exe /SILENT cd .. rm -rf rmsdownloads # NOTE: RMS Express requires a free user account, which you can sign up for on first run of the program. ```
Terminal output: The terminal output segments when ARDOP connects to RMS Express (vs when ARDOP fails to connect to RMS Express) look basically identical (process numbers -and also the address in ImmReleaseContext- change every run)
Connects: ---snip--- 0238:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 0238:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\windows\system32\tzres.dll", (null), 0021E7F8, 00258AF8, 0021E7FC, 0021E7F0 0238:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\windows\system32\tzres.dll", (null), 0021E7F8, 00258AF8, 0021E7FC, 0021E7F0 0238:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\windows\system32\tzres.dll", (null), 0021E7F8, 00258AF8, 0021E7FC, 0021E7F0 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0238:fixme:imm:ImeSetActiveContext (0x2596c8, 1): stub 0238:fixme:imm:ImmReleaseContext (000200E4, 002596C8): stub ---snip---
Doesn't connect: ---snip--- 0288:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 0288:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\windows\system32\tzres.dll", (null), 0021E7F8, 00258AF8, 0021E7FC, 0021E7F0 0288:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\windows\system32\tzres.dll", (null), 0021E7F8, 00258AF8, 0021E7FC, 0021E7F0 0288:fixme:nls:GetFileMUIPath stub: 0x10, L"C:\windows\system32\tzres.dll", (null), 0021E7F8, 00258AF8, 0021E7FC, 0021E7F0 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0060:fixme:nsi:ipv6_forward_enumerate_all not implemented 0288:fixme:imm:ImeSetActiveContext (0x2596c8, 1): stub 0288:fixme:imm:ImmReleaseContext (000300EC, 002596C8): stub ---snip---
I'm excited to say I got this program working on Android (without root) recently thanks to box86/Termux/PRoot https://youtu.be/FkeP_IW3GGQ?t=23 . Lots of ham radio operators are using really old Windows PC's to run this software on their message servers. Many people want to take this software with them in a backpack too (without getting an expensive Windows tablet) or strapped to their radio on a Raspberry Pi, and I think solving this weird intermittent TCP connection issue in Wine could help make using wine with RMS Express pretty popular.