tomdionysus / SoapyHackRFDuplex

A SoapyHackRF module, allowing two HackRF devices to be used as a single full duplex device.
MIT License
13 stars 0 forks source link

Project status #1

Closed anoduck closed 5 months ago

anoduck commented 6 months ago

@tomdionysus How far along is the project? Is it ready for testing? Should I go ahead and get another hackrf?

tomdionysus commented 6 months ago

The project compiles and boots 2x HackRF, but there's a more fundamental issue for LTE use: HackRF devices have no internal hardware clock, meaning that you can't specify to transmit or receive at a certain timeslot (The BladeRF supports such functionality, in addition to being natively duplex). The LTE protocol requires very precise timing even in FDD mode:

https://www.rfwireless-world.com/Tutorials/LTE-frame-structure.html

The issue is that the HackRF devices are designed for streaming operation - essentially switch them on to RX or TX at a specified frequency, and continuously stream samples to or from them. I started on an attempt to handle the timing driverside, but couldn't see anywhere near the resolution required for LTE.

anoduck commented 6 months ago

@tomdionysus Would not it be possible to use external development board to provide this functionality?

tomdionysus commented 6 months ago

Not as far as I'm aware - the issue is that the radio itself needs to switch transmission or reception on or off at specific intervals. It may be possible to create custom FPGA firmware for the HackRF devices to do this, but that's beyond my capabilities at this time. It would be good to get someone involved who knows a lot more about the HackRF internals.

anoduck commented 6 months ago

If I knew more than I do, I would help anyway I could. I Just don't know enough about the technology. It is sad news to hear, as even the knockoff usrp devices are still fairly expensive.

anoduck commented 6 months ago

@tomdionysus I know this is an obvious suggestion, but have you reached out to Michael Ossman @mossmann about the need for an internal RTC to coordinate communication?

anoduck commented 6 months ago

@tomdionysus Is not this paper written by Bartolucci a viable solution to exactly what you are talking about?

The paper discusses the use of two hackrf devices conjoined together with a low-cost off-the-shelf GNSS receiver. It uses the LTE opportunistic approach to validate the synchronization offset of the two hackrf devices. It was referenced by @mossmann in the hackrf documentation, along with the information on hackrf's external clock interface, and how to perform hardware triggering with the hackrf.

If an FPGA is needed in conjunction with or in substitution of the following setup, as you probably know, the Alchitry Au is the gold standard for FPGA development boards, although it's price may be undesirable. It's smaller cousin, the Alchitry Cu had a more comfortable price tag. Alorium Technology's Sno FPGA platform looked very favorable indeed, and appeared more open source friendly.

I surely hope all of this helps.

mossmann commented 5 months ago

@tomdionysus Is not this paper written by Bartolucci a viable solution to exactly what you are talking about?

That paper is part of the solution, but a complete solution would also support timed transmit and receive operations. The host needs to be able to tell one HackRF to start RX at a certain time and the other HackRF to start TX at a certain time, and those times require precision relative to each other. Timed operations would require a considerable firmware development effort to support, though some groundwork was laid in https://github.com/greatscottgadgets/hackrf/pull/982.

tomdionysus commented 5 months ago

Thanks @mossmann, from my incomplete understanding this is what I'd thought. Although as I said firmware development is beyond my current ken, I'd be happy to help in whatever limited fashion required if this is a direction the project is going in. Certainly, being able to do LTE with 2x HackRF would be very cool. Am I right in saying the HackRF would likely need to share a reference clock (both of mine have the 10MHz precision oscillator addon)?

anoduck commented 5 months ago

@mossmann Wow, thanks for the response, quite informative. I missed greatscottgadgets/hackrf#982, but of course discovered greatscottgadgets/hackrf#381 with Bartolucci and Oleg Kutkov's HackRF Supercluster. There is indeed some groundwork, but as much as it pains me to admit, it is well out of my pay grade at the moment. Maybe someday, but I don't know when.

The alternatives are very expensive. As expensive as everything has become lately, pretty soon you will see me sitting out in front of a Best Buy with a sign reading "Will program for food."

Anyway, closing this one out.