send and receive image (support jpg, png, etc) from satellite using handheld radio FM. (take advantage of Reed Solomon + SSDV, with/out IL2P)
With this script you can create modulated WAV (baudrate 1200-9600) automaticaly from a picture/image file to be transmitted via a handheld FM radio, and vice versa. Example: send and receive SSDV JPEG image over analog 1200/2400 modulation from terestrial or VR satellites
Debian/Ubuntu Linux
sudo apt update
sudo apt install python3 python3-pil sox git pavucontrollook at this link for details
If you don't want to support IL2P, you can install the old direwolf from the Debian/Ubuntu repository:
sudo apt install direwolflook at this link for details
cd ~
git clone https://github.com/fsphil/ssdv
cd ssdv
make
sudo make installcd ~
git clone https://github.com/hobisatelit/ssdv2sat.git && cd ssdv2sat
chmod 755 *.pyYou only need to set this up once. The goal is for the sox application (audio recorder) and direwolf (KISS server) to be able to listen to the audio output from the speakers or line out of the computer.
Open three terminal
on first terminal run Direwolf KISS server
cd ~/ssdv2sat
direwolf -c direwolf.confon second terminal run
sox -d -r 44100 -c 1 /tmp/test.wavon third terminal run
pavucontrollook at Recording tab, you will see direwolf app and sox there, please change capture to MONITOR mode both of them. and then you can close both app with press Ctrl+C on each terminal.
Run Direwolf KISS server
cd ~/ssdv2sat
direwolf -c direwolf.confon another terminal run below command. note: replace image.jpg with your image file. Script support many picture format: JPEG, PNG, etc. check at audio folder to see the result.
cd ~/ssdv2sat
./tx.py image.jpgOr, if you only want to transmit directly without recording, you can use this command:
cd ~/ssdv2sat
./tx.py image.jpg --noreccd ~/ssdv2sat
./rx.pyplay your recorded wav file or directly stream from SDR app, and the rx.py script will auto detect the image inside the signal. when finish, press Ctrl+C. the binary and image will be saved as .bin and .jpg in output directory
edit direwolf.conf at same directory with script. change MODEM 1200 to MODEM 2400, or MODEM 9600. higher baudrate, faster transmission. Please adjust according to your hardware support. Handheld FM ussualy support 1200 and 2400 only.
personally i never test it on Microslop Windows. but it should also work. Dire Wolf, ssdv and sox are available for Microslop Windows os. Please check config.ini to change the location of these apps.
cd ~/ssdv2sat
./tx.py -h
./rx.py -h
./rx.py -s
recommended:
./tx.py input.jpg
# set my **callsign MARIO**, then create modulated wav from **image file mario-poster.jpg**,
# connect to dire wolf kiss server at **ip 192.168.10.1, port 8080**,
# set **maximum length** per ssdv packet 195 bytes,
# set **delay** 1 second between packet transmission,
# save all output into **directory** recording
# send short message (sms) to ISS, with message Hello World
./tx.py mario-poster.jpg --callsign MARIO --host 192.168.10.1 --port 8080 --max 195 --delay 1 --dir recording --sms "Hello world! this is message from space!" --dest ISS
# send sms:
./tx.py --sms "Hello world!" --from MARIO --to LUIGI
# send sms and ssdv:
./tx.py mario-poster.jpg --from MARIO --to LUIGI --sms "GOOD MORNING!"