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

Add synchronization checklist to documentation #1469

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/source/hardware_triggering.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
.. _hardware_triggering:

===================
Hardware Triggering
===================
Expand Down
1 change: 1 addition & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Welcome to HackRF's documentation!

getting_help
faq
synchronization_checklist
hackrf_projects_mentions

.. toctree::
Expand Down
94 changes: 94 additions & 0 deletions docs/source/synchronization_checklist.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
.. _synchronization_checklist:

================================================
Synchronization Checklist
================================================

There are many scenarios where you may want to use multiple HackRF One devices
synchronized with each other. For instance, multiple devices can be used with a
phased antenna array to implement direction finding or beamforming.

If you're having trouble achieving fully synchronized operation, the following
checklist may be useful for troubleshooting:

* **Are you running the latest firmware and host software versions?**

There have been many bug fixes, so please use the latest releases.

* **Are you applying settings to the right target devices?**

With more than one HackRF device connected, you need to take care to specify
which device should be used where. When using our command line tools, use the
``-d`` option with a serial number on the command line to specify which
device each command should target.

* **Are all HackRFs sharing a clock?**

If the HackRFs are not sharing a clock, frequencies and sample rates will
not match exactly. See the
:ref:`external clock interface <external_clock_interface>`
section for how to connect the clock signals.

* **Is the clock input being detected?**

Use ``hackrf_clock`` with the ``-i`` option to check for clock input.
Use the ``-d`` option to specify the serial number.

This requires ``2022.09.1`` or later host software.

The older way of checking using ``hackrf_debug`` will not work correctly on
some hardware revisions.

* **If the clock source is CLKOUT of another HackRF, has it been enabled?**

Use ``hackrf_clock`` with the ``-o`` option to enable the clock output.
Use the ``-d`` option to specify the serial number.

* **Is the CLKIN waveform correct?**

* It should be a 10MHz square wave between 0 V and 3.0 to 3.3 V.
* A sine wave is OK, but may give greater phase noise.
* An unbuffered TCXO output may not have sufficient voltage.
* Some hardware revisions are less tolerant of out-of-spec
clock input than others.

* **Is your hardware faulty?**

Some HackRF clones were sold with a non-functional CLKIN port.

* **Are all HackRFs being started together using hardware triggering?**

If hardware triggering is not used, start times will not match exactly.
See the :ref:`hardware triggering <hardware_triggering>` section for how
to connect the necessary trigger signals.

Use ``hackrf_transfer`` with the ``-H`` option to wait for trigger input.

If launching multiple ``hackrf_transfer`` instances, make sure that those
running with ``-H`` have had time to reach the ``Waiting for trigger...``
state before the trigger signal is sent.

.. note:: There is currently no support for hardware triggering via the
Osmocom or Soapy blocks in GNU Radio. The Osmocom block may look
like it supports this but the options have no effect.

* **Are any samples being lost due to USB throughput problems?**

If RX samples are dropped or TX samples delayed, signals will become out
of sync.

Use ``hackrf_debug -S`` on each HackRF after running your software to check
if there were throughput problems. If the shortfall count reported is
non-zero, some samples were dropped on RX or late for TX, and signals will
be out of sync as a result.

This requires ``2022.09.1`` or later host software.

To force shortfalls to stop the device at runtime, use
``hackrf_debug -T 0 -R 0`` to set zero tolerance for shortfalls.

* **Are your HackRFs sharing a USB bus?**

A single HackRF One at 20MHz sample rate uses practically all the bandwidth
of a single USB 2.0 bus. Unless using very low sample rates, each HackRF
should be connected to its own bus.