Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Up to six receivers SDR receiver compatible with HPSDR #3

Closed
F4HTB opened this issue May 8, 2017 · 23 comments
Closed

Up to six receivers SDR receiver compatible with HPSDR #3

F4HTB opened this issue May 8, 2017 · 23 comments

Comments

@F4HTB
Copy link

F4HTB commented May 8, 2017

Hello dear N5EG sysop McDermott,

I hope this time in the right place to ask for a feature request.

We are working with gnuradio and today several receivers on the protocol hermes / metis can with up to 6 receivers on 384khz.

So I would like to ask you if it would be possible to adapt your librairy to use these 6 receivers?

Obviously we are consicent of the implication that this requires and we thank you in advance.

We will not fail to quote you in our publications because it is the only way for us to prove our gratitude to you.

In the meantime, please accept my sincere thanks.

73 F4HTB

@Tom-McDermott
Copy link
Owner

According to the developers, the Hermes module (Protocol_1) can only support 4 receivers due to limited space within the FPGA. Further, 4 receivers at 384ksps consumes about 74 Mb/s on the interface. Also, Hermes (Protocol_1) is limited to 100 Mbit/s on the Ethernet interface.

Steve AD0ES is working on an interface to the new (under development) Protocol_2 FPGA code that may support many more receivers. Hermes Protocol_2 can support 1 GE if modifications are made to some power components on the Hermes board. He left a message on the HPSDR reflector:

http://lists.openhpsdr.org/pipermail/hpsdr-openhpsdr.org/2017-May/098041.html

There are some other reflector reply posts on the same date with comments from the developers on Protocol_1 limitations. The current gr-hpsdr only supports Protocol_1, as the proposed new Protocol_2 is completely different.

gr-hpsdr provides fairly complete support of HPSDR (including Alex filter selection, antenna relay control, amplifier PTT, etc.) Steve's planned code I think is more limited in feature support.

Since I don't know your detailed requirements, you may want to discuss with Steve AD0ES (email via the above link). Then please let me know which direction you would like to go.

I cannot start looking at code until July due to some other commitments.

Tom, N5EG

@F4HTB
Copy link
Author

F4HTB commented May 9, 2017 via email

@Tom-McDermott
Copy link
Owner

OK, so you are interested in the Red Pitaya module. I do not have a Red Pitaya module, only the Hermes hardware to test with.

To implement 6 receivers means that I could not test, just implement to the specification and hope that it works OK. My past experience has been that if something cannot be tested it probably won't work the first time.

Some options:
A. I could throw the software 'over the wall' and you test, and if necessary fix. This is an open source source software project so the code and the build environment are available, and changes (pull request) can be fed back.
B. I find Red Pitaya to test with.
C. Perhaps there are some other ideas?

-- Tom, N5EG

@F4HTB
Copy link
Author

F4HTB commented May 10, 2017 via email

@Tom-McDermott
Copy link
Owner

I will look at this starting in July, at that time I will probably have some further questions.

@Tom-McDermott
Copy link
Owner

Tom-McDermott commented Jul 1, 2017

A new branch is available for testing, it is designed to support 1 to 7 receivers. It has been tested with 1 to 4 receivers on Hermes. It needs testing on Red Pitaya for up to 6 receivers. Please pull, git checkout the sevenrx branch, then build. Please let me know the success or failure of the testing so that the code can be fixed, or if successful the branch can be merged into the master branch.

Ignore the README comments about Release Tags. That's just a placeholder for when testing is completed, the branch is merged and the tags are added.

-- Tom, N5EG

@F4HTB
Copy link
Author

F4HTB commented Jul 1, 2017 via email

@F4HTB
Copy link
Author

F4HTB commented Jul 3, 2017 via email

@Tom-McDermott
Copy link
Owner

Tom-McDermott commented Jul 4, 2017 via email

@Tom-McDermott
Copy link
Owner

To use GDB to debug gnuradio-companion from command line:

$ gdb --args python $(which gnuradio-companion)
run
#wait for crash
bt //(gdb backtrace command)

This may allow you to trace back which software is calling malloc improperly.
Just a note - on the gnuradio mailing list many folks have posted problems over
the years using with alsa and gnuradio. Can you try the software without using
alsa? i.e. just to a display or to a file?

@F4HTB
Copy link
Author

F4HTB commented Jul 4, 2017 via email

@Tom-McDermott
Copy link
Owner

It turns out that C++ new actually calls malloc(). Revised code has been pushed to the sevenrx branch that wraps an exception handler around 'new' for the transmit and receive memory buffers. It will print a console error message if unable to create the memory buffers, then re-throw the exception which will kill the flowgraph immediately. This doesn't fix any issues, but at least it will make the source of the error more clear.

The driver requires 64k bytes for the transmit buffers, and 128k bytes for the receive buffers.

@Tom-McDermott
Copy link
Owner

This has been merged to master. If there are problems, please open a new issue.

@F4HTB
Copy link
Author

F4HTB commented Jul 11, 2017 via email

@Tom-McDermott
Copy link
Owner

Tom-McDermott commented Jul 11, 2017 via email

@F4HTB
Copy link
Author

F4HTB commented Sep 6, 2017 via email

@Tom-McDermott
Copy link
Owner

Tom-McDermott commented Sep 6, 2017 via email

@F4HTB
Copy link
Author

F4HTB commented Sep 6, 2017 via email

@F4HTB
Copy link
Author

F4HTB commented Sep 11, 2017 via email

@F4HTB
Copy link
Author

F4HTB commented Mar 6, 2018 via email

@Tom-McDermott
Copy link
Owner

Hi Olivier,

The HPSDR protocol only defines registers for 7 receivers.
An implementation of 8 receivers is done with some undocumented
method that I do not have.

Tom, N5EG

@F4HTB
Copy link
Author

F4HTB commented Mar 7, 2018 via email

@Tom-McDermott
Copy link
Owner

Tom-McDermott commented Mar 9, 2018

Hi Olivier. The OpenHPSDR specification discusses how to buffer align 8 receivers, but the actual control register specification does not include any definition for the registers for the 8th receiver.

In looking through Pavel's code (line 80 of the file referenced), it appears he uses the next logical register address after receiver 7 to program receiver number 8.

However that register address is already used by OpenHPSDR for other functionality. The usage between the two applications is thus incompatible. IF I am reading Pavel's code correctly, use of the registers Pavel has defined for Red Pitaya would break the functionality of the Hermes / Alex modules.

It is not possible to add an 8th receiver while maintaining compatibility between the Hermes and Red Pitaya.

-- Tom, N5EG

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants