GNU Radio to Web client
As part of the “Remote SDR” project, it is necessary to extract the audio channel data created by GNU Radio from the “Remote SSB receiver” and send it to a Web client.
Among the processing blocks present in GNURADIO-companion, there is the UDP sink block for outputting the data. To enter an audio data stream into a web page, you can use websockets. The program proposed below in python 3, retrieves the audio stream received from GNU radio according to the UDP protocol (port 9001) and passes this data to the web client according to the websocket protocol (port 8001). We exchange 1024 byte packets. You should not make them too important so as not to delay the audio signal. Here the audio is coded on 2 bytes. We thus send 512 samples, knowing that we are sampled at 10kHz, that makes about 50ms of signal.
#!/usr/bin/python3 # This is client.py file
#Collect of Audio data from GNU Radio and send to web client
#Recuperation des données audio de GNU_Radio et envoi vers le client web
import socket
import asyncio
import websockets
# create a socket object
s_audio = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# get local machine name
host = 'localhost'
port_audio_Web = 8001
port_audio_GR = 9001
# connection to hostname on the port.
s_audio.bind((host, port_audio_GR))
print ("Passerelle audio Web")
# Receive no more than 1024 bytes audio
async def audio(websocket_a, path):
while True:
# on recupere les data de GNU-RADIO
msg_audio = s_audio.recv(1024)
# print ("audio",len(msg_audio))
# on envoi le message vers le client web distant
await websocket_a.send(msg_audio)
start_server_audio = websockets.serve(audio, "", port_audio_Web)
asyncio.get_event_loop().run_until_complete(start_server_audio)
asyncio.get_event_loop().run_forever()
For sending the spectrum to create a waterfall on the web page, we use another program very similar to that of audio. Knowing that a spectrum is described at the output of FFT by 1024 points each represented by 2 bytes, we will send packets of 2048 bytes.
#!/usr/bin/python3 # This is client.py file
#Collect spectral data to be passed to a web client
#Recuperation des données spectre de GNU_Radio et envoi vers le client web
import socket
import asyncio
import websockets
# create a socket object
s_spectre = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# get local machine name
host = 'localhost'
port_spectre_Web = 8002
port_spectre_GR = 9002
# connection to hostname on the port.
s_spectre.bind((host, port_spectre_GR))
print("Passerelle Spectre vers client WEB")
# Reception 2048 bytes du spectre
async def spectre(websocket_s, path):
while True:
# on recupere les data de GNU-RADIO
msg_spectre = s_spectre.recv(2048)
# print ("spectre",len(msg_spectre))
# on envoi le message vers le client web distant
await websocket_s.send(msg_spectre)
start_server_spectre = websockets.serve(spectre, "", port_spectre_Web)
asyncio.get_event_loop().run_until_complete(start_server_spectre)
asyncio.get_event_loop().run_forever()
The source files are available on Github F1ATB / Remote-SDR.
Posts on Remote-SDR
- Remote SDR V5 -Raspberry 4B or Orange Pi Image Installation
- Remote SDR v5 – Manual Installation
- Remote SDR v5
- QO-100 Satellite Live
- RTTY
- Troubleshooting
- QO-100 Transceiver
- SSTV
- WSJT-X – FT8
- Omnirig – Remote SDR
- Communication Ports
- Tone generators
- Setting of GPIO outputs
- Band Scanning
- Gains and Dynamics
- Frequencies Management
- Launch of Remote SDR
- CPU Cooling
- Web GUI
- Microphone and signal processing authorization
- Configurations
- Characteristics
- Introduction to Remote SDR
- Remote SDR – Audio Channels
- CW with Remote SDR
- Rotary Knob and Morse Manipulator for Remote SDR
- VHF and UHF NBFM Transceiver
- Remote SDR v4
- Gpredict — Remote SDR
- Remote SDR V4 – Raspberry Pi 4B or Orange Pi Zero 2 image installation
- Remote SDR v4 – Manual Installation
- SA818 – RTL-SDR
- Remote SDR – Examples of realization
- Transmit over QO-100 satellite with a Smartphone
- Remote SDR V2 – Software Architecture
- Remote SDR V1- Purchase
- Remote SDR V1 – Man Machine Interface
- Remote SDR V1 – Signal Processing
- Web Client to GNU Radio
- GNU Radio to Web client
- Remote SSB Transmitter
- Remote SSB Receiver
- GPIO on Orange PI One Plus H6
- TCXO installation on HackRF
- Q0-100 Transceiver with 2 SDR – Remote SDR V1
Recent Comments