# BPSK31 Adventures

**URL:** <https://www.ruby-forum.com/t/bpsk31-adventures/221447>\
**Category:** GNU Radio\
**Created:** [July 15, 2012, 9:15pm UTC](https://www.ruby-forum.com/t/bpsk31-adventures/221447 "2012-07-15T21:15:38Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![aris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@aris](https://www.ruby-forum.com/u/aris)\
**Post date:** [July 15, 2012, 9:15pm UTC](https://www.ruby-forum.com/t/bpsk31-adventures/221447/1 "2012-07-15T21:15:38Z")

</div>

Hi Folks,

Inspired by Javier and Martin’s recent posts on DPSK, I thought I would  
resurrect my (Amateur Radio )(B) PSK31 transceiver implemented in GRC.

I can use the MPSK receiver block in GRC to successfully decode anything  
up to BPSK500 - I’m sure I could go higher, but fldigi only transmits up  
to 500, and I was using that as a known good transmitter.

Knowing that in the future I would want DBPSK (for some satellite work),  
and transmit capability (I could not find a MPSK Transmitter block), I  
started to think about using the PSK Demod block in GRC instead.

I set the number of constellation points to 2 (for BPSK), set the  
differential encoding to “No”, and set the samples/symbol to the  
equivalent value in the MPSK Receiver block.

There I come across a problem. What to set Excess BW, Frequency BW,  
Timing BW, and Grey code to. I have looked at Tom’s page on the  
Frequency BW, but am afraid I don’t grok that side of things at all  
well.

Is there a way to work out what those value should be from the working  
values of the MPSK Receiver block ?

Attached is a flowgraph (both .png and .grc) Both the MPSK Receiver  
chain, and the PSK Demod chain eventually output to a file sink for  
doing the varicode decoding.

Two quick further questions on the PSK Demod block (which actually  
uses the Gerneric Demod block to do most of the dirty work):

1. Can someone confirm if I need to use the packed to unpacked block  
that I’m using ? I’ve seen notes that the output is indeed packed (hence  
the unpacker being in the flowgraph), but also other places saying it’s  
already unpacked ? Or is it just the DxPSK block that has the unpacked  
output ?

2. Do I need to use AGC before it ? Again I came across some places  
that say it’s already in there, but couldn’t see any evidence. Is it  
just the DxPSK block that incorporates the AGC block ?

All the Best

Iain

---

<div class="post-metadata">

**Author:** ![Iain\_YoungS\_G7III](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/3da27b/32.png) [@Iain\_YoungS\_G7III](https://www.ruby-forum.com/u/Iain_YoungS_G7III)\
**Post date:** [July 16, 2012, 9:39am UTC](https://www.ruby-forum.com/t/bpsk31-adventures/221447/2 "2012-07-16T09:39:24Z")

</div>

Hi Iain,

On Sun, Jul 15, 2012 at 08:13:13PM +0100, Iain Young, G7III wrote:

> Inspired by Javier and Martin’s recent posts on DPSK, I thought I would  
> resurrect my (Amateur Radio )(B) PSK31 transceiver implemented in GRC.

Nice!

> I set the number of constellation points to 2 (for BPSK), set the  
> differential encoding to “No”, and set the samples/symbol to the  
> equivalent value in the MPSK Receiver block.
> 
> There I come across a problem. What to set Excess BW, Frequency BW,  
> Timing BW, and Grey code to. I have looked at Tom’s page on the  
> Frequency BW, but am afraid I don’t grok that side of things at all  
> well.

Grey code doesn’t matter for BPSK, so ignore that. The frequency and  
timing loop BW’s depend on how quickly you want to acquire freq/timing  
synch, but don’t worry about these, either–if you don’t know what they  
exactly do, just use the defaults (I think something around 2\pi/100?)  
and play around with these values.

The ‘excess BW’ is the rolloff factor of the root-raised cosine filter.

> Is there a way to work out what those value should be from the working  
> values of the MPSK Receiver block ?

It depends on your app.

> the unpacker being in the flowgraph), but also other places saying it’s  
> already unpacked ? Or is it just the DxPSK block that has the unpacked  
> output ?

PSK Demod packs all bits of 1 sym per byte. As you’re using BPSK, you  
don’t need to unpack. You’ll have 1 bit per byte.

> 1. Do I need to use AGC before it ? Again I came across some places  
> that say it’s already in there, but couldn’t see any evidence. Is it  
> just the DxPSK block that incorporates the AGC block ?

It’s not in there, but for PSK31, you might not need it, as all the info  
is in the phase anyway.

MB

–  
Karlsruhe Institute of Technology (KIT)  
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.  
Research Associate

Kaiserstraße 12  
Building 05.01  
76131 Karlsruhe

Phone: +49 721 608-43790  
Fax: +49 721 608-46071  
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and  
National Laboratory of the Helmholtz Association
