A Winlink (RMS Express & VARA) installer Script for the Raspberry Pi 4, Orange Pi 4 LTS, and x86/x64 Linux (Mint/Ubuntu/Debian). Raspberry Pi 3B+ also kind of works.
This project has lots of bugs and should be considered alpha software.
RMS Express/Trimode & VARA running on a Raspberry Pi 4B (RPiOS) [video sped-up]
VARA running on a Raspberry Pi 4B (Twister OS)
Copy/paste these commands into your Raspberry Pi 4's terminal:
curl -O https://raw.githubusercontent.com/WheezyE/Winelink/main/install_winelink.sh && \
bash install_winelink.sh
If desired, you can tell the script to only install VARA by running curl -O https://raw.githubusercontent.com/WheezyE/Winelink/main/install_winelink.sh && bash install_winelink.sh vara_only
- RMS Express sometimes won't connect (over TCP) to ARDOP & VARA. Just close RMS Express and re-open it (this is a bug in wine).
- VARA's CPU gauge doesn't display (this is a bug in wine).
- VARA doesn't connect to DRA boards at this time (this might be a bug in wine or box86).
- Wine can sometimes freeze your OS completely if it gets overloaded. If this happens on a Raspberry Pi, you can SSH into the Pi and then run
wineserver -k
to force-quit Wine. You can also just power-off/on your system. - Enabling VARA HF's waterfall display can sometimes crash RMS Express & VARA.
- Enabling VARA's Monitor Mode can freeze VARA. (Users might have to delete their VARA config file to recover:
rm ~/.wine/drive_c/VARA/VARA.ini
)
- ptitSeb for box86 (& everyone on the TwisterOS discord)
(ptitSeb, pale, chills340, Itai-Nelken, Heasterian, phoenixbyrd, monkaBlyat, lowspecman420, epychan, !FlameKat53, #lukefrenner, icecream95, SpacingBat3, Botspot, Icenowy, Longhorn, et.al.)
-
madewokherd (Esme) for wine-mono debugging
-
Botspot for their RPi3 kernel switching code
-
N7ACW, AD7HE, & KK6FVG for getting me started in ham radio
-
K6ETA & DCJ21's 'Winlink on Linux' guides for early proof-of-concept
"My humanity is bound up in yours, for we can only be human together" - Nelson Mandela
If you feel that you are able and would like to support this project, please consider sending donations to ptitSeb, madewokherd (CodeWeavers/WineHQ), or KM4ACK - without whom, this script would not exist.
- Sebastien "ptitSeb" Chevalier (author of Box86, incredible developer, & really nice guy) paypal.me/0ptitSeb
- Madewokherd (author of wine-mono & wonderful person) https://www.winehq.org/donate
- Jason "KM4ACK" Oleham (author of Build-a-Pi, Linux elmer, & ham radio pioneer) paypal.me/km4ack
How it works
This script will help you install Box86, Wine, winetricks, Windows DLL's, RMS Express, & VARA. You will then be prompted to configure RMS Express & VARA to send/receive audio from a USB sound card plugged into your Pi. This installer will only work on the Raspberry Pi 4B for now (support for earlier Raspberry Pi models is planned for later).
To run Windows .exe files on RPi4 (ARM/Linux), we need an x86 emulator (Box86) and a Windows API Call interpreter (Wine). Box86 is open-source and runs about 5x faster than ExaGear/Qemu (see these benchmarks). ExaGear is also closed source abandonware and Qemu (qemu-system & qemu-user-static) also has issues running more complex Wine programs on the Pi. Box86 is much smaller in file size and much easier to install too.
Distribution
If you use this script in your project (or are inspired by it) just please be sure to mention ptitSeb, Box86, and myself (KI7POL). This script is free to use, open-source, and should not be monetized (for further information see the license file).
Future Work: Roadmap
- Add an AHK script to help the user with ARDOP first time soundcard setup.
- Time all individual components and embed comments in functions for Pi models. Add variable timer to welcome screen.
- Help DRA-board compatability with VARA (might be a box86 issue?)
- Consider adding a sed script to find/delete any small-value frequencies in
RMS Channels.dat
that would crash the HF Channel Selection Browser - Clean up code with Google style guide.
- Work with WineHQ to figure out why VARA's CPU gauge isn't working.
- Work with WineHQ to figure out why ARDOP & VARA don't always connect to RMS Express over TCP when first starting.
- Add progress bar (GUI?) for installation.
- Add HDD-space check to make sure user has enough space to install everything
- Switch to using Seb's GitHub box86 binaries (or hosted box86 bins) instead of Pale's internet archive binaries.
- Bisect box86 commits that crash VARA's local TCP to RMS connection (bug in newer box86's)
- Add updated example images to readme.
- Rely on archive.org box86 binaries instead of compiling.
- Give user the choice to compile or not.
- Add auto-detection of failed downloads, then switch to compiling as contingency.
- Separate soundcard setups from program installations. Make a script for that.
- Make an uninstaller script
- Put program scripts and icons into start menu instead of on desktop.
- Test COM port connections to radio ("CAT" control, PTT).
- Work with madewokherd to see if wine-mono bugs can be fixed (would drastically improve install speed).
- ARDOP TCP/IP Connection issues.
- Message creation issues.
- Message receive issues.
- HF Channel Selection Browser crash (from small-value input frequencies).
- COM port connection issues to radios/TNC's.
- Ask Seb for help getting VARA Chat running in box86.
- Add option (or check) for running the script via SSH (currently ssh causes wine to not display Windows) - Fixed with X11 check.
- Add installer for VARA FM.
- Add installer for VARA SAT.
- Add a check for sudo priviledges? Add a check to make sure script is not run as sudo?
- Change VARA Setup/Config terminal text prompts into zenity pop-up boxes.
- Change all terminal text prompts into text boxes?
- Add more error-checking to the script.
- Make a logo for the github page.
- Make the script's user-interface look better.
- Add an AHK script to click the "Ok" button after VARA is installed.
- Add an AHK script to help the user with VARA first time soundcard setup.
- Add more clean-up functions to the script.
- Have the script download all files into the cloned repository directory (instead of into ~/Downloads)
- Add shortcuts to the desktop.
- Work with the Wine team to find graphical errors in VARA.
- Add the fix for VARA graphical errors to the script.
- Re-fix the VARA graphics errors using a different method (winecfg reg keys).
- Add pdhNT4 to winetricks to streamline this installer.
- Make code modular to help readability.
- Simplify installation commands (model after KM4ACK BAP).
Future work: More platforms
Make a multi-platform Wine installer & build/invoke box86 if needed. (Linode may be helpful here)
- Auto-detection of system arch (x86 vs armhf vs aarch64) & OS.
- ARM
- Raspberry Pi 4B (32-bit OS)
- Raspberry Pi 4B (64-bit OS)
- Raspberry Pi 3B+
- Detect Raspberry Pi kernel memory split (and install the correct kernel if needed) for RPi <4 support.
- Ask Botspot if I can borrow some of his pi-apps code.
- RPi Zero 2 W?
- RPi Zero W?
- Termux (Android without root) (proot-distro + Ubuntu ARM + termux-usb) - see AnBox86 for proof of concept, currently untested with VARA.
- Mac M1 processors
- x86
- Mac
- OSX?
- Linux (top priorities are distros that WineHQ hosts binaries for: Ubuntu, Debian, Fedora, macOS, SUSE, Slackware, and FreeBSD)
- Ubuntu (Package manager: apt)
- Linux Mint
- Elementary OS
- Zorin OS
- Debian (Package manager: apt)
- Deepin
- Kali
- MX-Linux
- Red Hat (Package manager: yum, RPM)
- Fedora (Package manager: RPM/DNF)
- CentOS (Package manager: yum)
- openSUSE (Package manager: ZYpp (standard); YaST (front-end); RPM (low-level))
- Slackware (Package manager: pkgtool, slackpkg)
- FreeBSD (Package manager: pkg)
- Arch (Package manager: pacman, libalpm)
- Vanilla Arch??
- Manjaro
- XeroLinux
- SteamOS? (Steam Deck)
- Gentoo (Package manager: Portage)
- Solus (Package manager: eopkg)
- Ubuntu (Package manager: apt)
- ChromeBook Linux beta.
- Try to detect if processor would be too slow?
- Mac
- x64
- Linux (top priorities are distros that WineHQ hosts binaries for: Ubuntu, Debian, Fedora, macOS, SUSE, Slackware, and FreeBSD)
- Linux Mint (Ubuntu)
- Debian 11
- Linux (top priorities are distros that WineHQ hosts binaries for: Ubuntu, Debian, Fedora, macOS, SUSE, Slackware, and FreeBSD)
- ARM
- Make a youtube video showcasing current methods (box86, Exagear issues, qemu-user-static errors, Pi4B, Pi3B+, Termux, Mac, Linux, ChromeOS)
Android testing notes
Termux/PRoot/AnBox86_64
- Try using BT/USB/TCP Bridge Pro to connect USB devices to RMS Express (credits: Torsten, DL1THM / harenber)
- Create alpha version of Winelink for AnBox86_64
- Speed benchmarks with different devices (Fire HD10 Tablet is a bit slow, Retroid Pocket 2 TBD)
-
See if termux-usb can be adapted somehow to allow connections without root? - See if a python wrapper could be written for TermuxUSB-OTG-USB connections between RMS Express & FT-891.
- OTG-USB-CAT (order OTG_USB_C-USB)
- Audio in/out (ARDOP works with alsa / hiccups with pulseaudio)
- Proof-of-concept
- Fix AnBox86
Legal
All software used by this script is free and legal to use (with the exception of VARA, of course, which is shareware). Box86, Wine, wine-mono, winetricks, and AutoHotKey, are all open-source (which avoids the legal problems of use & distribution that ExaGear had - ExaGear also ran much slower than Box86 and is no-longer maintained, despite what Huawei says these days). All proprietary Windows DLL files required by Wine are downloaded directly from Microsoft and installed according to their redistribution guidelines. Raspberry Pi is a trademark of the Raspberry Pi Foundation