O OpenWebRX é uma aplicação web de código aberto que permite acessar e controlar remotamente receptores SDR via navegador.
Imagino que você já saiba do que se trata o SDR e suas aplicações, no entanto, caso ainda esteja nos passos iniciais, fiz um artigo sobre a instalação de um receptor SDR e nele você pode encontrar informações mais básicas sobre o tema.
Dito isso, o OpenWebRX nada mais é que um software capaz de controlar um receptor de rádio definido por software de um modo, digamos, sofisticado.
Através de um servidor web, ele disponibiliza uma aplicação responsável por monitorar frequências de rádio em tempo real e conceder acesso a múltiplos usuários.
Dessa maneira, várias pessoas podem ouvir diferentes transmissões de rádio simultaneamente demodulando em vários modos, como por exemplo AM, FM, SSB, CW, entre outros.
Além disso, ele tem boa compatibilidade com vários receptores (RTL-SDR, HackRF, Airspy) e configuração de interface bastante flexível.
Assim como qualquer outro software simples de SDR, o OpenWebRX tem utilização na escuta de rádio amador, comunicações aeronáuticas, recepção de sinais meteorológicos e várias outras aplicações.
Em contrapartida, toda essa “sofisticação” pesa um pouco na instalação do software, uma vez que exige alguns ajustes no sistema operacional.
Com o intuito de amenizar essa dificuldade, este artigo visa esclarecer alguns pontos importantes para instalação do OpenWebRX tanto em um container Docker quanto no Raspberry PI.
Através de um passo a passo bem detalhado, você será capaz de instalá-lo sem maiores dificuldades. Fique ligado e boa leitura!
OpenWebRX via Docker
Uma maneira mais rápida de obter o OpenWebRX funcionando e em qualquer sistema operacional é através da sua versão “containerizada” via Docker.
Você pode obter informações úteis diretamente no site dele, no entanto, cabem aqui algumas explicações que certamente ajudarão bastante no processo de instalação.
Primeiramente, não é tão simples quanto parece compartilhar periféricos com containeres Docker uma vez que existe uma espécie de “conflito” entre o host e o container.
Ocorre que uma vez conectado, no caso deste exemplo um RTL2838, o sistema operacional tem exclusividade de uso deste dispositivo e portanto o container fica sem acesso a ele.
Deste modo, precisamos impedir que o sistema operacional carregue os módulos pertinentes ao RTL2838, deixando que o container Docker o acesse diretamente.
Assim sendo, rode o seguinte comando:
sudo echo "blacklist dvb_usb_rtl28xxu" > /etc/modprobe.d/blacklist-rtl-28xxu.conf
Isso cria um arquivo dizendo que o RTL2838 não deve ser carregado na inicialização do sistema operacional. Caso você não utilize um dongle DVB-T como o meu, veja qual módulo seus dispositivo carrega.
Por exemplo, no caso do SDRPlay e do HackRF, as seguintes linhas devem resolver o problema:
# para o SDRPlay
sudo echo "blacklist sdr_msi3101 msi001 msi2500" > /etc/modprobe.d/blacklist-sdr-msi.conf
# para o HackRF
sudo echo "blacklist hackrf" > /etc/modprobe.d/blacklist-hackrf.conf
Em seguida, precisamos atualizar o initframs para que isso tenha efeito:
sudo update-initramfs -u
Por fim, reinicie o sistema.
Seleção da imagem Docker
O OpenWebRX suporta uma série de dispositivos SDR que podem ser consultados diretamente no GitHub do projeto.
Uma vez que as imagens foram construídas de acordo com cada dispositivo, a escolha da imagem correta é primordial para o funcionamento do programa.
Portanto escolha a imagem pertencente ao seu hardware e copie seu nome completo. No meu caso, uma vez que uso RTL2838, a imagem correta é “jketterl/openwebrx-rtlsdr”.
Criação do container via Compose
Utilizar o Docker Compose nesse caso facilita bastante a criação do container uma vez que precisamos mapear volume, porta, dispositivo, etc.
Dessa maneira, crie um arquivo chamado compose.yml e coloque-o em uma pasta onde melhor lhe atender. Em seguida cole o conteúdo abaixo modificando apenas o nome da imagem, se for o caso:
services:
openwebrx:
image: jketterl/openwebrx-rtlsdr
container_name: openwebrx
volumes:
- ./settings:/var/lib/openwebrx
ports:
- 8073:8073
devices:
- /dev/bus/usb:/dev/bus/usb
tmpfs:
- /tmp/openwebrx
Crie também junto ao arquivo do compose uma pasta chamada “settings” para receber o mapeamento do container.
Por fim, crie e suba o container com o comando:
sudo docker compose up
Você deverá ver o console do OpenWebRX, conforme abaixo:

Em seguida, acesse através de seu navegador favorito o endereço localhost:8073 e veja seu servidor WebSDR em funcionamento!

Criação de usuário administrativo
O OpenWebRX não vem com um usuário padrão definido em sua base de dados, portanto precisamos criar pelo menos um usuário administrativo para podermos configurá-lo.
Nesse sentido precisamos executar um comando, dentro do container, responsável por criar usuários administrativos. Por sorte o docker facilita nossa vida através do “exec”:
sudo docker exec -it openwebrx python3 /opt/openwebrx/openwebrx.py admin adduser mochileiro
Substitua o “mochileiro” pelo nome que deseja. Em seguida, forneça uma senha e pronto, você poderá logar no sistema através do botão “settings” da interface web.
OpenWebRX via Raspberry PI
O site do desenvolvedor do OpenWebRX fornece imagens prontas para o Raspberry PI, no entanto, como o propósito deste artigo é demonstrar a instalação em um sistema limpo, faremos isso do zero.
Assim sendo, primeiramente precisamos criar em um cartão SD uma cópia do Raspberry PI OS. Porém, como a versão estável do OpenWebRX roda somente na versão Bullseye do Debian, vamos escolhê-la no menu “Other” do Imager:


Recomendo preencher as configurações adicionais de instalação, como por exemplo definições de rede e SSH para conseguirmos acesso ao Raspberry após o término da instalação.
Uma vez finalizada a instalação, insira o cartão SD, ligue o Raspberry e aguarde uns minutos pela inicialização do sistema. Em seguida acesse via SSH (alterando usuario e IP):
sudo ssh usuario@seu_ip
O repositório padrão do Raspberry PI não possui o pacote do OpenWebRX, dessa maneira, precisamos adicionar manualmente o repositório do projeto:
sudo wget -O /usr/share/keyrings/openwebrx.gpg https://repo.openwebrx.de/openwebrx.gpg
sudo echo "deb [signed-by=/usr/share/keyrings/openwebrx.gpg] https://repo.openwebrx.de/debian/ bullseye main" > /etc/apt/sources.list.d/openwebrx.list
Em seguida atualizamos a lista de pacotes e o instalamos:
sudo apt-get update && apt-get install openwebrx rtl-sdr -y
Aguarde alguns minutos e tudo estará (quase) pronto. Ainda precisamos conceder ao usuário atual acesso ao RTL2838.
Isso se deve ao fato de que, diferente do Ubuntu, o Raspberry PI OS possui políticas de segurança diferentes e concede apenas ao usuário root acesso ao dispositivo SDR.
Assim, precisamos de mais alguns comandos:
sudo wget -O /etc/udev/rules.d/rtl-sdr.rules https://raw.githubusercontent.com/osmocom/rtl-sdr/master/rtl-sdr.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo usermod -aG plugdev $USER
Reinicie o sistema e tudo deverá funcionar conforme o esperado. Por fim, da mesma maneira que fizemos via Docker, precisamos criar o usuário administrativo para conseguirmos realizar configurações.
Dessa vez, basta acessarmos diretamente o comando:
sudo openwebrx admin adduser mochileiro
Após a conclusão desses passos, você estará apto a acessar a interface do servidor via navegador em localhost:8073.
Conclusão
O OpenWebRX é amplamente utilizado devido sua capacidade multiplataforma e multidispositivo e, como vimos, também através do Docker e Raspberry PI.
Por esse motivo, existe uma forte comunidade entusiasta do radiamadorismo ao redor do mundo que compartilha seus equipamentos utilizando essa solução de WebSDR.
Se você deseja fazer o mesmo, o OpenWebRX é uma excelente maneira de compartilhar seu dispositivo SDR com diversos usuários.
Conforme demonstrado, apesar de exigir um pouco mais de conhecimento em Linux, não é um bicho de sete cabeças instalá-lo, valendo bastante a pena o esforço.
Espero ter ajudado!
Até a próxima!