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.conf
or
(for lapan-a2 / io86 satellite)
direwolf -c lapan-a2.conf
or
(for SilverSat)
direwolf -c silversat.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.
now you can run it on microslop windows. since v0.07, you can download the standalone app for windows on this page. please check the release page. you can also build and compile it yourself using PyInstaller. just clone the source code and run this command from your windows command prompt (you must have python installed first):
pip install pyinstaller
pyinstaller --clean --onefile rx.py
pyinstaller --clean --onefile tx.py
pyinstaller --clean --onefile img2ssdv.pythis command will create .exe app on dist/ folder.
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!"for example decoding SSDV payload from HADES-SA satellite, Dire Wolf not yet support. So you can use SoundModem by UZ7HO (running flawless in linux using wine). Just add option --port 8100 when running tx.py or rx.py Example:
cd ~/ssdv2sat
./rx.py --port 8100cd ~/ssdv2sat
./tx.py --port 8100 input.jpg