Windows Subsystem for Linux (WSL) and SDR in Windows 10                                                                 


A Windows feature around for some time in Windows 10.



Windows Subsystem for Linux - WSL.

Mainly targeted for web developers to run native Linux command-line tools directly on Windows without a Gui Interface.
Using the common Linux toolchains allows you to install and run Linux applications on Windows.

No virtual machine is required and there is no dual booting.
Unlike a virtual machine, WSL don’t require to allocate resources.
Instead WSL uses whatever resources are available on the host machine.
This can be very good for older machines, which are low in resources.



Windows Subsystem for Linux (WSL) is a good option because it starts very quickly, because it does not boot a new kernel.
Performance in WSL can be close to bare metal Linux installations in mostly CPU-intensive tasks, but Disk IO isn’t as quick as native Linux installations.
You can use WSL as a replacement for VM, depending on your needs.
But WSL isn't a full replacement for a native Linux or Linux running in a Virtual Machine.

Microsoft is busy with WSL2 which act more as a Virtual machine, at this time of writing only available in Windows Insider Builds.
And not covered overhere.

Since WSL does not use a real Linux kernel, actually it is not a separate isolated virtual machine but rather a process in windows itself.
There are some compatibility problems and limitations with WSL, not all hardware resources are available in WSL.
Your linux applications cannot access some of the hardware USB devices directly like SDR Dongles.
However USB Serial Adapters like GPS are working and off course networking.



Microsoft has a good habit of handing out lemons, so let's make some lemonade :)
There enough tutorials covering Docker and other sorts of development on the net, boring...
Install X-Server push WSL to its limits with SDR and see whats possible!

This tutorial explains how to install Ubuntu 16.04 with a Desktop Interface in WSL usable for some SDR Applications.
In this example (Windows 10 1809 LTSC) RTL_TCP will act as a server in Windows allowing SDR Applications in WSL to connect thru the TCP protocol.

Hardware:

  

Nooelec NESDR SMArTee - Premium RTL-SDR VHF-UHF.



msi.sdr HF.

 

E4000 Terratec on Es-Hail.

Software tested: AX-25 Packet Radio, Dab Radio, DSD, Es-Hail Beacon Tracker, Sat Tracking with Gpredict and Gqrx, NOAA Reception WxToImg, Radiosonde Decoding, Shortwave Reception

Enable WSL


Enable Windows subsystem for Linux:

Prerequisite for Linux support is a 64-bit version of Windows 10 as of build 1709 for WSL.
 


In Control Panel, under Programs => Windows Features, enable the Select Windows subsystem for Linux component.
For this action to take effect, you have to restart the computer.

Or press the key combination Windows + R.
In the Execute dialog type in OptionalFeatures and confirm with Enter.
Put a check mark in the small window for Windows Subsystem for Linux and click on OK and then on Restart Now.

Or enable thru PowerShell:



Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Install Distro


Distros don't make much difference in WSL, especially if they have a same base,
It's just different desktop environment (Graphical Interface) and some other packages like gcc ect which may differ.

Download the Linux distribution of your choice.
You can use the Microsoft Store to download the distribution.
In LTSC the Microsoft Store is not available, you can download and manually install Linux distros anyway.

Ubuntu 16.04 LTS (Xenial) is the first release available for WSL.
Ubuntu 18.04 LTS (Bionic) is the current LTS release.

Ubuntu WSL distribution tarball daily builds are also available for download:
Ubuntu 20.04 LTS (Focal Fossa) upcoming release, still in beta testing, beware not everything works as expected!

Installing your Ubuntu 16/18.04 distro:

Extract with 7zip to a folder of choice.
Double click ubuntu.exe file and wait a few moments the screen will inform you that it’s Installing.

After install enter new UNIX username and password.
These don’t need to be the same as your Windows 10 credentials.
With this step complete, you’ll find yourself at the Ubuntu bash command line.

It is important that Ubuntu is updated before starting this process.
Enter following command to fully update and upgrade Ubuntu, entering your Ubuntu user password when prompted:

sudo apt-get update && sudo apt-get upgrade -y

Get rid of the unneeded packages:

sudo apt-get autoremove && sudo apt-get autoclean -y

Install Ubuntu 20.04 Focal


Install Ubuntu 20.04 Focal Current release:

Download: http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64-wsl.rootfs.tar.gz
You must rename the distribution file focal-server-cloudimg-amd64-wsl.rootfs.tar.gz to rootfs.tar.gz
Download Launcher.exe
Rename it for distribution name to register. (Ex:Rename to Ubuntu-20.04.exe if you want to use "Ubuntu-20.04" for the Instance name).

Put your rootfs.tar.gz in same directory as exe (Installation directory) Ex C:\Ubuntu-20.04
Run Ubuntu-20.04.exe to install.
This process may take a few minutes.

Check for successful install in windows command prompt:

wslconfig /list or /all (For versions earlier than Windows 10 version 1903)
wsl -l (For versions after Windows 10 version 1809)

wslconfig /unregister Ubuntu-20.04 (For versions earlier than Windows 10 version 1903)
wsl --unregister Ubuntu-20.04 (For versions after Windows 10 version 1809)

Unregisters the distribution from WSL so it can be reinstalled or cleaned up.

After install, there only will be root as user enter in terminal:

useradd -m <username>
passwd <username>
usermod -a -G sudo <username>
su - <username>
chsh
It will show us /bin/sh and change it to /bin/bash
And exit to leave.

Change username in windows command prompt type:

Ubuntu-20.04 config --default-user <username>

Start Ubuntu 20.04 and the user should be there instead of root access.



It is important that Ubuntu is updated before starting this process.
Enter following command to fully update and upgrade Ubuntu, entering your Ubuntu user password when prompted:

sudo apt-get update && sudo apt-get upgrade -y

Install XFCE4 Desktop


Install XFCE desktop environment.


In Ubuntu shell, enter following command to install XFCE desktop environment:

sudo apt-get install xfce4-terminal xfce4 xfce4-cpugraph-plugin xfce4-systemload-plugin xfce4-weather-plugin xfce4-whiskermenu-plugin preload gnome-themes-standard -y

Add pcmanfm to the list if you want another filemanager, for a file editor mousepad, pluma ect, p7zip-full file-roller if needed.

Be prepared for some mb's to download and a long install :)



X-Server Running Graphical Applications.

When you first install Ubuntu/WSL, it doesn’t include any X Window related libraries or utility programs.
Install one from several X servers (X410, MobaXTerm, VcXsrv, Xming) available for Windows.

Recommended is X410.



You can install X410 from Microsoft Store
Use the store link on adguard.net to download it manually.

Enabling Sound.

The WSL environment does not support audio, by default, there’s no sound.
But it can be enabled by installing the PulseAudio version 1.1 it's old but it works on Windows 10.
Ubuntu detects the running PulseAudio server and enables audio.

Following this simple guide from the developers of X410 https://token2shell.com/howto/x410/enabling-sound-in-wsl-ubuntu-let-it-sing

Create a batch file for launching X410, PulseAudio and Xfce named Desktop.bat

REM ### Start X410 in Desktop Mode /wm window
del C:\Users\Happysat\.pulse\VBOX-W10-runtime\pid  <<-- https://askubuntu.com/questions/1077678/pulseaudio-using-wsl-e-null-pulsecore-pid-c-daemon-already-running
start /B C:\Ubuntu-16.04\X410\X410.exe /desktop     <<-- Start X410 X-Server before entering the WSL environment.
start "" /B "C:\Ubuntu-16.04\pulseaudio\bin\pulseaudio.exe"  <<-- Start PulseAudio.
REM ### Start Linux GUI desktop
timeout 1
start C:\Ubuntu-16.04\Ubuntu-16.04.exe run "if [ -z \"$(pidof xfce4-session)\" ]; then export DISPLAY=127.0.0.1:0.0; export PULSE_SERVER=tcp:127.0.0.1; xfce4-session; pkill '(gpg|ssh)-agent'; taskkill.exe /IM x410.exe; taskkill.exe /IM pulseaudio.exe /F; fi;"

Edit paths ect if you use a different desktop environment.

When xfce4-session is launched, it automatically tries to start ssh-agent and gpg-agent which can result in errors.
Disable ssh-agent and gpg-agent error messages:

xfconf-query -c xfce4-session -p /startup/ssh-agent/enabled -n -t bool -s false
xfconf-query -c xfce4-session -p /startup/gpg-agent/enabled -n -t bool -s false

Those agents can still be running even after terminating the xfce4-session.
In order to terminate the agents since they are no longer needed or used, pkill '(gpg|ssh)-agent'; is added in the batch file.
X410 and Pulseaudio are also killed when the desktop does logout.

Create a vbs file insert:

CreateObject("Wscript.Shell").Run "Desktop.bat", 0, True

Use it to start the Xfce4 Desktop, without seeing the command window.



Remove Screensaver:

You can completely remove the screensaver by executing the following command:

sudo apt purge xscreensaver gnome-screensaver light-locker

After many screwing around it is possible your current distro is unable to start, removing all files and folders in Ubuntu-16.04\rootfs\tmp can help.
Otherwise check Taskmanager and kill any running instance of init, conhost, wsl.exe, wslhost.exe will help.

If shit really did hit the fan wslconfig /list find distro name and wslconfig /unregister <DistributionName>
Unregisters the distribution from WSL so it can be reinstalled or cleaned up.

Install SDR Driver / RTL_TCP


Install RTL-Driver for Linux.

Install Dependencies:
sudo apt-get install git cmake build-essential libusb-1.0-0-dev

git clone git://github.com/happysat/rtl-sdr-blog.git
cd rtl-sdr-blog/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON
make
sudo make install
sudo ldconfig
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
echo blacklist dvb_usb_rtl28xxu >> blacklist-rtl.conf
echo blacklist rtl2832 >> blacklist-rtl.conf
echo blacklist rtl2830 >> blacklist-rtl.conf
sudo cp blacklist-rtl.conf /etc/modprobe.d/

Download rtl_tcp for Windows:

rtl_tcp is significantly improved by modifying to code to use a ring buffer instead of using semaphore based locking.
The result is a tremendous performance improvement in rtl_tcp.

After the ring buffer changes rtl_tcp can handle much better and higher maximum sample rate's with less lag.
Unfortunately this patch is not included in the official upstreamed Osmocom drivers.

https://github.com/rtlsdrblog/rtl-sdr-blog/releases

Or without the ring buffer enhancement (uses less cpu time good for less powerfull machines):
 
https://ftp.osmocom.org/binaries/windows/rtl-sdr/

SDR-Play TCP

https://www.sdrplay.com/software/SDRplay_RSP_TCP_1.0_Windows.zip

Run from Windows or Ubuntu (make sure the path is set right e.g. /mnt/(path to rtl_fm.exe)/rtl_fm.exe) command line in the Windows rtl_tcp folder.
So the rtl_TCP Server is accessible for connections:



rtl_tcp -a 192.168.1.100 -d0 -g 49.6 -P 0

SDR-Play: rsp_tcp -a 192.168.1.100

Change ip adres to 127.0.0.1 or local ip adres.

It is also possible to use the other rtl tools like rtl_fm and rtl_sdr (the windows versions!) thru the command terminal from Ubuntu.
Again just make sure the path is set right e.g. /mnt/(path to rtl_fm.exe)/rtl_fm.exe or /mnt/(path to rtl_sdr.exe)/rtl_sdr.exe -f frequency -p (ppm) -d (device #) -s samplerate ect..

Airspy_rx should also work - https://github.com/airspy/airspyone_host

Example rtl_tcp Script Ubuntu:

#!/bin/bash

HEIGHT=17
WIDTH=45
CHOICE_HEIGHT=3
BACKTITLE="RTL-TCP SDR-Config"
TITLE="Available SDR Devices"
MENU="Choose one of the following options:"

OPTIONS=(1 "SDR #1 Double Cross RTL_TCP"
         2 "SDR #2 Ground-Plane RTL_TCP"
         3 "SDR #3 Shortwave RTL_TCP"


CHOICE=$(dialog --clear \
                --backtitle "$BACKTITLE" \
                --title "$TITLE" \
                --menu "$MENU" \
                $HEIGHT $WIDTH $CHOICE_HEIGHT \
                "${OPTIONS[@]}" \
                2>&1 >/dev/tty)

clear
case $CHOICE in
        1)
            echo
            echo Starting SDR#1 Double Cross Antenna
            echo
            /mnt/(path to rtl_tcp.exe)/rtl_tcp.exe -a 192.168.1.100 -d 0 -g 49.6 -P 0
            ;;
        2)
            echo
            echo Starting SDR#2 Ground Plane Antenna
            echo
            /mnt/(path to rtl_tcp.exe)/rtl_tcp.exe -a 192.168.1.100 -d 1 -g 49.6 -P 0
            ;;
        3)
            echo
            echo Starting SDR#3 Shortwave Antenna
            echo
            /mnt/(path to rtl_rsp.exe)/rsp_tcp.exe -a 192.168.1.100
            ;;
esac
exit

Install sudo apt-get dialog to show the menu.

Example rtl_tcp batch file Windows:

@ECHO OFF
echo *****RTL_TCP Choose one of the following options:*****
echo.
echo SDR #1 Double Cross 137MHz Antenna
echo SDR #2 Ground Plane 400MHz Antenna
echo SDR #3 Shortwave
echo.
:choice
set /P c=Choose SDR Number [1/2 or 3]?
if /I "%c%" EQU "1" goto :sdr1
if /I "%c%" EQU "2" goto :sdr2
if /I "%c%" EQU "3" goto :sdr3
goto :choice
:sdr1
echo.
echo Starting SDR#1 Double Cross Antenna
echo.
(path to rtl_tcp.exe)\rtl_tcp -a 192.168.1.100 -d 0 -g 49.6 -P 0
:sdr2
echo.
echo Starting SDR#2 Ground Plane Antenna
echo.
(path to rtl_tcp.exe)\Rtl_tcp\rtl_tcp -a 192.168.1.100 -d 1 -g 49.6 -P 0
pause
:sdr3
echo.
echo Starting SDR#3 Shortwave
echo.
(path to rtl_rsp.exe)\rsp_tcp -a 192.168.1.100
exit

Install Gqrx


Install Gqrx SDR on Ubuntu 16.04 LTS.

Gqrx has been included in Ubuntu Linux for many years now.
Although the packages included with Ubuntu can be out of date, they may sufficient for your use.

Add new repositories to the package manager by typing the following in a terminal – one line at a time:

sudo add-apt-repository -y ppa:bladerf/bladerf
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo add-apt-repository -y ppa:myriadrf/gnuradio
sudo add-apt-repository -y ppa:gqrx/gqrx-sdr
sudo apt-get update

If that went well without errors, continue with installing gqrx:

sudo apt-get install gqrx-sdr
You can now find gqrx in the desktop menu or start it from a terminal by typing gqrx.

Once you have installed Gqrx from the PPA they are no longer needed, updates will not be available through the package manager anymore on this version.

Use the --remove flag, similar to how the PPA was added:

sudo add-apt-repository --remove ppa:bladerf/bladerf
sudo add-apt-repository --remove ppa:myriadrf/drivers
sudo add-apt-repository --remove ppa:myriadrf/gnuradio
sudo add-apt-repository --remove ppa:gqrx/gqrx-sdr

You can also remove PPAs by deleting them from /etc/apt/sources.list.d directory.

And the key list by typing:

sudo apt-key list

Find the key from the added PPA's

/etc/apt/trusted.gpg.d/gqrx_ubuntu_gqrx-sdr.gpg
-----------------------------------------------
pub   1024R/86F6E1DD 2013-07-27
uid                  Launchpad PPA for Gqrx team

and

sudo apt-key del 86F6E1DD

On >18.10 the short key id is no longer shown when you use the list command, but it is actually the last 8 characters of the long hex.

After that it is possible to update Gqrx from git and build from newer up to date sources:

Install Dependencies:

sudo apt-get install qt5-default libqt5svg5-dev libpulse-dev

git clone https://github.com/csete/gqrx.git
cd gqrx/
mkdir build && cd build
cmake ..
make

Overwrite gqrx binary.
sudo cp gqrx /usr/bin
sudo chmod 755 /usr/bin/gqrx


It is recommended that users also install the libvolk1-bin package and run the volk_profile tool to optimize GNU Radio performance on the specific computer it is being used on.

sudo apt-get install libvolk1-bin
volk_profile

Wait for it to finish, then enjoy the performance boost.



Change ip adres to 127.0.0.1 or local, in Gqrx choose Device: Other, Device String: rtl_tcp=192.168.1.100:1234



msi.sdr Shortwave Reception, check No limits at the Input Control Tab for tuning below 24MHz!



If you are only interested in the FFT set Mode to Demod Off, this will greatly reduce the CPU load.
In most cases you can reduce the CPU load further by reducing the window size, sample rate, FFT rate and FFT size (try 2048 at 10-15 Hz).

Virtual Audio Setup


Some virtual audio can be setup:

Edit 'etc\pulse\default.pa' from the windows pulseaudio folder!
Add on bottom of the file:
load-module module-null-sink sink_name=VBAudio sink_properties=device.description="VBAudio"

It is recommend disabling PulseAudio logging, as this seems to be a large user of CPU cycles.

Edit /etc/pulse/daemon.conf
Now find "log-level" and change it to "log-level = error".
Remove the semi-colon ; on the log-level line too.
Save and exit.



Do not forget in Gqrx Audio / PavuControl to select the Virtual audio!

Direwolf Packet-radio


Dire Wolf is a software "soundcard" AX.25 packet modem/TNC and APRS encoder/decoder.
It can be used stand-alone to observe APRS traffic, as a tracker, digipeater, APRStt gateway, or Internet Gateway (IGate).
For more information, look at Documentation for Dire Wolf

In Europe Amateurs use 144.800MHz, 432.500MHz, NA 144.300MHz and 145.825MHz Space com. Packet operations.

Install Dependencies:
sudo apt-get install libudev-dev libhamlib-dev

git clone https://www.github.com/wb2osz/direwolf
cd direwolf
make
sudo make install
make install-conf

Dev. Version for Ubuntu 18.04

git clone https://github.com/wb2osz/direwolf.git
cd direwolf
git checkout dev
mkdir build && cd build
cmake ..
make
make install
make install-conf

Or install from feed sudo apt-get install direwolf

Examples rtl_fm in Ubuntu Terminal:

RS-41 Modified APRS 70CM:

/mnt/(path to rtl_fm.exe)/rtl_fm.exe -p -1 -g 29.6 -f 432500000 - | direwolf

Terrestrial APRS 2 Mtr:
 
/mnt/(path to rtl_fm.exe)/rtl_fm.exe -p -1 -g 29.6 -f 144800000 - | direwolf

ISS APRS 2Mtr:
 
/mnt/(path to rtl_fm.exe)/rtl_fm.exe -p -1 -g 29.6 -f 145825000 - | direwolf

direwolf.conf:

ACHANNELS 1
ADEVICE null null
CHANNEL 0

MODEM 1200

AGWPORT 8000
KISSPORT 9002

IGFILTER m/700
IGTXLIMIT 6 10



APRSMap can display position of received packets using Direwolfs Kiss port (9002).
Make sure the path to udpflex is set, udpflex is included in the APRSMap Download.  



DSD Digital Speech Decoder


DSD is able to decode several digital voice formats and synthesize the decoded speech, like DMR.

Install Dependencies:
sudo apt-get install libsndfile1-dev fftw3-dev liblapack-dev portaudio19-dev libitpp-dev libitpp-dev pulseaudio-utils

git clone https://github.com/szechyjs/mbelib.git
cd mbelib
mkdir build && cd build
cmake ..
make
sudo make install

git clone https://github.com/szechyjs/dsd.git
cd dsd
mkdir build && cd build
cmake ..
make
sudo make install
sudo ldconfig

In terminal padsp dsd or with Gqrx  - socat udp-listen:7356 - | padsp dsd -i -


Es-Hail Beacon Tracker


GNU Radio flowgraph for receiving the Geostationary QO-100 / Es'hailsat-2 narrowband amateur transponder.
Performing phaselocking to the PSK400 beacon for automatic LNB drift correction.

Usage:
Create new fifo object - execute mkfifo /tmp/gqrx_fifo command in linux terminal.
Start gnuradio-companion, open beacontrack_gqrx.grc flow and run it using "Play" button or F6 key.
Start GQRX and select Complex Sampled (IQ) File as input device.


 
Provide the following settings: GQRX configuration
Start reception in GQRX using "Play" button or ctrl-D.
You should see both gqrx and grc workflow running.
beacontrack_gqrx_rtlsdr.grc
Input osmocom block is using rtl_tcp=0 as input string.
Sample rate is 1.5M with 4x decimation.
Use Frequency adjustment slider to move upper beacon about 110 kHz above center frequency.



Download Scripts and flowgraphs for the Es'hailsat-2 amateur transponder.

Gpredict / WxToImg


Adding this PPA to your system to install gpredict

You can update your system with unsupported packages from this untrusted PPA by adding ppa:gpredict-team/daily to your system's Software Sources.

sudo add-apt-repository ppa:gpredict-team/daily
sudo apt-get update

sudo apt-get install gpredict


Howto Enable doppler Tracker


Download wxtoimg-amd64-2.11.2-beta.deb

Install Dependencies:

sudo apt-get install gdebi
sudo gdebi wxtoimg-amd64-2.11.2-beta.deb

Sox is not needed, just make sure to select in Pulseaudio control the virtual audio for both Gqrx and WxToImg.

Start wxtoimg Gui with xwxtoimg in terminal or make a shortcut.

[Desktop Entry]
Name=WxToImg
Comment=
Icon=wxtoimg.png  <-- Search smth.
Exec=xwxtoimg
Type=Application
Encoding=UTF-8
Terminal=false
Categories=None;

Make sure RTL_TCP Server is accessible for connections.


Ciara February Storm..


Professional Edition Upgrade Key

Full Name: Kevin Schuchmann
Email Address: any email address
Upgrade Key: CGHZ-PP9G-EAJZ-AWKK-NDNX

Excellent WxToImg Guide From les Hamilton

A very good guide to Receive METEOR weather satellite images with RTLSDR and GQRX on Linux




Download Palettes (CLUTS) to try.



Included in the zip is WXtoIMGPal.msi you can make own CLUTS.

Multimon

Multimon-ng is the successor of multimon and decodes the following digital transmission modes:
POCSAG, FLEX, AFSK, DTMF, MORSE CW and many more.

Example AX-25, Flex, Pocsag and Morse rtl_fm In Ubuntu Terminal:

/mnt/(path to rtl_fm.exe)/rtl_fm.exe -p -1 -g 29.6 -f 144800000 -s 22050 - | multimon-ng -a AFSK1200 -t raw /dev/stdin 2>&1

/mnt/(path to rtl_fm.exe)/rtl_fm.exe -f 169.65M -M fm -s 22050 -p 0 -g 29.6 | multimon-ng -a FLEX -t raw /dev/stdin 2>&1

/mnt/(path to rtl_fm.exe)/rtl_fm.exe -p 0 -g 29.6 -f 172.45M -s 22050 - | multimon-ng -a POCSAG1200 -t raw /dev/stdin 2>&1

/mnt/(path to rtl_fm.exe)/rtl_fm.exe -M usb -p 0 -g 29.6 -f 432650000 -s 22050 - | multimon-ng -a MORSE_CW -t raw /dev/stdin 2>&1

git clone https://github.com/EliasOenal/multimon-ng.git
cd multimon-ng
mkdir build && cd build
cmake ..
make

RTL_433


RTL_433, Program to decode traffic from Devices that are broadcasting on 433.9 MHz like temperature sensors.

git clone https://github.com/merbanan/rtl_433.git
cd rtl433/
mkdir build && cd build
cmake ../

Example via rtl-tcp:

rtl_433 -d rtl_tcp:192.168.1.100:1234 -p 0 -g 49.6 -f 433744400 -f 433756360 -f 433874900 -H 20 2>&1
 
Make sure RTL_TCP Server is accessible for connections.

RS-Decoder


With RS-Decoders it is possible to decode most types of Radiosonde's used in Europe.
It is also possible to use the NMEA output of the RS-Decoders and feed data into APRSMap via UDP thru the Perl pos2aprs script.

The following radiosonde types are supported:
Vaisala RS92, RS41, Graw DFM06/DFM09/DFM17/PS-15, Meteomodem M10 and InterMet A/B, 4.

Install Dependencies:
sudo apt-get install perl sox gcc

Compile decoders DFM-09/RS-41:

git clone git://github.com/rs1729/RS.git
cd RS/demod/mod
gcc -Ofast -c demod_mod.c
gcc -c bch_ecc_mod.c
gcc dfm09mod.c demod_mod.o -lm -o dfm09mod
gcc rs41mod.c demod_mod.o bch_ecc_mod.o -lm -o rs41mod
Or any other you need.


POS2APRS:

https://github.com/dl9rdz/RS/blob/master/tools/pos2aprs.pl

-U UDP Ip and Port.
-d generates APRS frames with DAO (and thus finer position resolution).
-i  Sonde ID E.g. i-Met.

For DFM:

Gqrx:

sox -t alsa default -t wav - 2>/dev/null | ./dfm09mod --ecc -v --ptu --auto 2>&1 | ./pos2aprs.pl WSLU16 0 "_DFM-09" -d -U 127.0.0.1:9002 > /dev/null

For RS-41:

Gqrx:

sox -t alsa default -t wav - 2>/dev/null | ./rs41mod --ecc2 -vx --ptu 2>&1 | ./pos2aprs.pl WSLU16 0 "_RS-41" -d -U 127.0.0.1:9002 > /dev/null

For i-Met4:

Gqrx:

sox -t alsa default -t wav - 2>/dev/null | ./imet1rs_dft 2>&1 | ./pos2aprs.pl WSLU16 0 "_IMET" -i i-Met4 -d -U 127.0.0.1:9002 > /dev/null

Or Windows rtl_fm:

/mnt/(path to rtl_fm.exe)/rtl_fm.exe -p 0 -d 0 -g 49.6 -M fm -F9 -s 15K -f402870000 2>nul | sox -t raw -r 15k -e s -b 16 -c 1 - -r 48000 -b 8 -t wav - lowpass 2600 2>nul | ./dfm09mod --ecc -v --ptu --auto 2>&1 | ./pos2aprs.pl WSLU16 0 "_DFM-09" -d -U 127.0.0.1:9002 > /dev/null

The paths to the programs and the exact parameters must of course be adjusted accordingly!



Make sure to select in Pulseaudio control the virtual audio for both Gqrx and the decoder.

APRSMap


APRS-Map part of the Dxl-Chain, can display APRS Object's and positions and your own position (off course a GPS-Mouse is required).

Install Dependencies:
sudo apt-get install libx11-dev libxext-dev libpng-dev libjpeg-dev -y

Download APRSMap Ubuntu 16.04

Or git clone https://github.com/oe5hpm/dxlAPRS.git
cd dxlAPRS/src
make all

Goto APRS-Map Config / Rf-Ports Tab:



Check RF-Port 1 in APRS-Map and make sure its UDP1(ip:send:listen)|1|127.0.0.1:9001:9002
Make sure RTL_TCP Server is accessible for connections.

And data from rs-decoder should roll in:


GPS2APRS


Download APRS-Map for Windows:

http://wiki.oevsv.at/index.php?title=DXL_-_APRSmap_Download

Find gps2aprs.exe, only that is needed, the one from Linux does not work properly.
Start gps2aprs.exe in a windows command prompt.

Make sure you have the right Port number and Baudrate which the GPS is connected to:
And replace this by the com4:4800 example.

/mnt/(path to rtl_gps2aprs.exe)/gps2aprs.exe -t com4:4800 -I CAR -i /k -D -0 10 -b 2 -v -r 127.0.0.1:9002



In APRSMap check RF-Port 1 and make sure its UDP1(ip:send:listen)|1|127.0.0.1:9001:9002



The Car position should be Visible and every 10 Seconds updated in the map.

gps2aprs -h

 -t <tty>:<baud>            (com1:4800)
 -I <mycall>                   Mycall with SSID like NOCALL-15
 -D                                DAO Extension on for 20cm Resolution
 -b <s>                          Driving Beacon Time in Seconds (15)
 -r <x.x.x.x:destport>      Use AXUDP (to Soundmodem)
 -v                                  Verbous-Mode
 -i                                  Ballon /O, Car /> -i /k

More about the regular functions and options from APRS-Map read the Wiki:

http://wiki.oevsv.at/index.php?title=DXL_-_APRSmap_englisch

Configure USB-serial GPS Device in WSL


Using a USB-serial GPS device from WSL requires that the device is recognized in Windows first.
Plug USB-serial adapter into the PC.

Look in Windows Device Manager under Ports to see the COM port number.
If the device doesn't show under USB Devices → Ports in Windows Device Manager, the following steps will not work!

In WSL terminal, assuming GPS-Mouse is on COM4 4800 Baud for this example, type:

chmod 666 /dev/ttyS4 - Make permission.
stty -F /dev/ttyS4 4800 -Set Baudrate to 4800.
sudo cat /dev/ttyS4 - See NMEA Output with cat.



gpsd /dev/ttyS4 - Start GPSD for test in FoxtrotGPS.

sudo apt-get install gpsd gpsd-clients python-gps foxtrotgps

Small script for GPSD:

#!/bin/sh

read -p 'Which Port COM To Connect for GPSD? Type 1/19:' uservar
read -p 'Which Baudrate for GPS? Type 4800/9600:' uservar2
sudo chmod 666 /dev/ttyS$uservar
sudo killall -9 gpsd 2> /dev/null
stty -F /dev/ttyS$uservar $uservar2
sleep 1
gpsd /dev/ttyS$uservar

Qt-DAB


      

Selecting Pulse as audio source and rtl_tcp did work.            

Install Dependencies:
sudo apt-get install libsamplerate0-dev libqwt-qt5-dev qtbase5-dev qt5-qmake g++ libsndfile1-dev qt5-default libfftw3-dev portaudio19-dev libfaad-dev zlib1g-dev mesa-common-dev libgl1-mesa-dev libqt5opengl5-dev -y

git clone https://github.com/JvanKatwijk/qt-dab.git
cd qt-dab
You can select which devices will have support for Qt-DAB in qt-dab.pro file, recommended to remove them all and leave rtl_tcp.
qmake qt-dab.pro
make

cd linux-bin
mv qt-dab* qt-dab
sudo cp qt-dab /usr/local/bin
sudo chmod 755 /usr/local/bin/qt-dab

qt-dab in terminal to run.

Shortcut the qt-dab.png is somewhere in the sources move it to /usr/share/pixmaps/ if you want a desktop icon.

Qt-DAB.desktop

[Desktop Entry]
Name=Qt-DAB
Exec=qt-dab
Terminal=false
Type=Application
Icon=/usr/share/pixmaps/qt-dab.png
Categories=GTK;Utility;

Very good DAB Receiver, all info overhere.


Import / Export WSL Images


For versions earlier than Windows 10 version 1903:

wslconfig /list /all or wslconfig /l /all

wslconfig /unregister <DistributionName>
Unregisters the distribution from WSL so it can be reinstalled or cleaned up.

Run specific WSL distro
wsl -d <DistributionName>
OR wsl --distribution <DistributionName>

Import:

https://github.com/DDoSolitary/LxRunOffline/releases   Needed ealier versions <1903 have no import/export function.

LxRunOffline i -n Ubuntu-16.04 -d C:\Ubuntu-16.04 -f C:\Ubuntu.tar.gz

Export:

LxRunOffline e -n Ubuntu-16.04 -f C:\Ubuntu-16.04.tar.gz

Options:
  -n arg               Name of the distribution
  -f arg                Path to the .tar.gz file to export to.

Windows 10 1903:

wsl -l
List Installed Distro

wsl --unregister Ubuntu
Unregisters the distribution from WSL so it can be reinstalled or cleaned up.

Export:
wsl --export Ubuntu C:\Ubuntu.tar

Import:

wsl --import <DistributionName> <InstallLocation> <FileName>.
wsl --import Ubuntu C:\Ubuntu C:\Ubuntu.tar


Change user:

Ubuntu-16.04 config --default-user <username>

WSL Firewall Permissions


The default setting in Windows is to allow any application to start outgoing connections.
But if you change that to deny connections by default then you need rules.

Windows Firewall with Advanced Security works with setting outgoing rules to permit Linux executables,
like apt, curl, git, python and wget the net since Windows 10 Version 1809.

Some executables, like apt and git, actually access the net via other executables they run.
Other executables may be run via symbolic links, like how /usr/lib/git-core/git-remote-https is a symbolic link to git-remote-http.
You must set the rule based on the actual executable, not the symbolic link!

Also note that you cannot browse the Linux executable directories when creating a rule because it only shows files with an .exe extension.
You need to directly type or paste them in.
Browsing also might put a %USERPROFILE% environment variable in the string, and that doesn't work because the firewall doesn't run as your user.
You need the full path.
Once you have a working rule you can copy and paste it, then change its name and the executable it refers to.


Example rules:

Apt, Curl, Git Python and Wget:

C:\Ubuntu-16.04\rootfs\usr\bin\curl|curl
C:\Ubuntu-16.04\rootfs\usr\bin\wget|wget
C:\Ubuntu-16.04\rootfs\usr\lib\apt\methods\gzip|atp gzip
C:\Ubuntu-16.04\rootfs\usr\lib\apt\methods\file|atp file
C:\Ubuntu-16.04\rootfs\usr\lib\apt\methods\https|atp https
C:\Ubuntu-16.04\rootfs\usr\lib\apt\methods\http|atp http
C:\Ubuntu-16.04\rootfs\usr\lib\git-core\git-remote-https|git remote https
C:\Ubuntu-16.04\rootfs\usr\lib\git-core\git-remote-http|git remote http
C:\Ubuntu-16.04\rootfs\usr\lib\git-core\git-remote|git remote
C:\Ubuntu-16.04\rootfs\usr\bin\python2.7

APRSMap:

C:\Ubuntu-16.04\rootfs\usr\bin\libpng12-config|libpng12
C:\Ubuntu-16.04\rootfs\usr\bin\libpng-config|libpng

Usefull Links


A Windows Subsystem for Linux Subreddit

Awesome list dedicated to Windows Subsystem for Linux

https://www.scivision.dev/tags/windows-subsystem-for-linux/

Advanced WSL installer / launcher.

A full-featured utility for managing Windows Subsystem for Linux (WSL).

WslHub Manager

Unofficial gui manager for Windows Subsystem for Linux (WSL).

A community powered list of programs that work (and those that don't) on the Windows subsystem for Linux.

Upgrade Ubuntu 18.04 to 19.10

Wine on WSL ;)