SDRPlusPlusBrown

SDR++Brown transmit functionality

Recent news (few tx features are reported in main document)

Introduction

Supported hardware

Supported hardware:

If you want your hardware to be added, contact me or make code pull request.

What works

You can receive/transmit SSB (USB/LSB). You can use your microphone of your desktop/notebook computer. You can run SDR++Brown on the Android phone while laying on the sofa and use microphone of your smartphone, and use wireless connection to the transciever. Sofa was the primary driving factor for this software development, and I will add everything to make it work better, including small logbook for QSO logging etc. Jokes aside, portable use was primary goal.

Update Spring 2024: You can choose to use the Bluetooth headset on Android. Remote (client/server) SDR++ mode for SSB transmit is now working, too. You can use lossy baseband (waterfall) compression to reduce wifi/mobile traffic.

See example QSO video https://www.youtube.com/watch?v=CGCXxUXLwr4

Audio pipeline test https://www.youtube.com/watch?v=HNrYdeMvFGE

Video of portable operation here: https://www.youtube.com/watch?v=wPCf6JJpYos this one is with the phone wired to the transciever via USB-C Ethernet, without WiFi, hence lack of operator mobility.

Sofa-style video here: https://youtu.be/URkedh_fJyc this one more recent, with WIFI connection and more complex hardware config.

What works poorly

Recommendations

How to use

Selection of the source

As of May 2023, Hermes Lite 2 and compatible is used. You must use hl2_source in sdr++. There’s hermes_source, which is intended to receive only, from upstream, i’m not talking about it.

In the list of drivers, select “Hermes Lite 2”. If it’s missing, use Module Manager, add module called “hl2_source”. Select it from dropdown, type name in the empty text field, and press (+)

Select the Hermes Lite 2 in the Source drop down. Press “Refresh” button if fields are empty. The network broadcast is sent and device is discovered. If your device is discoverable by other software, it will be discovered by sdr++. If you have your TRX active in other software, stop it there first.

Select bandwidth (start with 48khz). Press play button on the top. You must see the waterfall and hear the noise. The ADC gain includes both amplification and attenuation in one control. If there’s ADC overflow, it will be drawn in red. As of present, there’s no automatic maximum gain now.

Not reflected on the image: you can enter static IP address as of July 2023. This static IP will be used along with the default discovery broadcast address list, if default broadcast is not working for you. Moreover, you can use additional checkbox near the static IP entry to force this IP to be added to the list regardless of discovery results, and to be directly connected to when you start the receiver stream (play button), this may help when using various simpler VPN/forwarding schemes.

The filters selection below works. It controls the filter board of your transceiver. The checkboxes here are not synchronized with the current frequency (yet?), you have to manually control them.

Switching to TRX layout

By default, sdr++brown comes with TRX layout disabled. You can enable it in the settings:

Press “SSB trx” to switch to the TRX layout. Select “Phone layout” if you prefer some tweaks on Android, such as wider scrolling sliders and shorter frequency range selector (the artifact of vertical layout ages).

Please not there’s experimental audio waterfall. You can enable it in “Show Audio Waterfall” in the very bottom of the “Display” section (below color map chooser).

Android smartphone users: You must select smaller scaling factor in the “Display section” so all controls could fit the small screen of your phone.

TRX layout differs from receiving layout:

Search mode

Before you talk, you can search in the frequency band, change bands and do some sound setup.

QSO mode

After you press “QSO” button you get into the transmit mode. Note, if you don’t have waterfall running, you probably won’t see the half of the screen, and see red error text instead.

Buttons are:

On the top you see the oscilloscope of your audio input, as processed.

When you are transmitting the sine wave or the voice, the waterfall will display the spectrum of your voice. It slightly differs from what can be received over the air, but it mostly reflects the reality. When transmitting without PA enabled, the signal will be very weak but still visible.

During the transmission, all sounds are muted. The Baseband NR threshold (software) and demodulator AGC state are frozen to avoid their unneeded re-adaptation after reception is turned back on.

The pipeline

The pipeline is represented on the Audio Cfg screen, and the end of the pipeline is “TX Soft PA” described above.

Buttons “Record” and “Play”: you can record your own voice and replay it back and observe how it sounds after processing. This is only for self-control.

My current config

My current phone does not support ethernet over USB, to plug Hermes Lite 2 directly into it, so I use WiFi. I have a small WiFi router that is attached to the brick consisting of battery, HL2, amplifier, DC down converter and HF tuner, all connected together with a double-sided adhesive tape. On the router, I use WiFi on 5 GHz band. To achieve cross connectivity between HL2, SDR++ and the internet, i configured it following way:

I also tried the use of USB internet sharing (Phone->Router USB) to avoid occasional WiFi interruptions. However, I got used to the wireless freedoms while laying on the sofa, and I can live with occasional glitches in this configuration.

Really working configuration for USB (not wireless) connection is following:

1) connect phone to the router that supports this function (take internet from phone over USB), openwrt-based routers with USB definitely do. 2) connect HL2 to router via ethernet, too 3) enable USB sharing on the android, router will be able to ping internet. 4) however, router will prevent access to any its services from phone side, because phone is militarized zone from the router point of view. You need to configure router firewall to allow UDP 1024 port access on the RNDIS interface (or all interfaces) 5) however, that is not enough, and you need to add port forwarding of port 1024 towards the hermes lite, on router. 6) however, if you’re more of experimental kind, then instead of p.5 you can try to use proxy written in go, it can compile for openwrt and work fine. You’ll have to add it to startup, so it launches automatically.

I wish you luck. The one who persists, will get the result.

I am planning to enhance this proxy, to make smoother wifi connection. Problem with interrupting wifi is half-duplex nature of wifi. Currently, during transmit or receive, hermes protocol sends waterfall data and transmit data, in the two directions, always, all the time. Proxy will reduce/eliminate one of the unused data streams during transmit/receive, thus reducing half-duplex issues of wifi that hopefully will make it better. Control streams will be simulated/replicated on proxy to eliminated drops, to maintain smooth software and hardware work. This smoothing will be controlled (turned on) by the operator optionally.

Work in progress

This is work in progress. I’m releasing it because it’s more useful than not at this stage.

Also, because this is a new field for me (digital signal processing), my solutions to the problems may be naive, so advises are welcome. Please join Telegram group with questions, bug reports and propositions.