130 Commits

Author SHA1 Message Date
Michael Ossmann
2ca991e1df Flush output streams. Do not fclose stdout/stdin. 2021-01-27 12:12:45 -07:00
Michael Ossmann
a6fa7876cb Give descriptive names to streams.
They were previously given the confusing name of fd even though they are
not file descriptors.
2021-01-27 11:59:29 -07:00
jaj
a9f6cbc367 fix _FILE_OFFSET_BITS 64 position in hackrf_transfer.c (must be included before <sys/stat.h>) 2020-03-16 13:16:15 +01:00
Michael Ossmann
ecd82e81c1 remove specific sample rate recommendations
HackRF One supports arbitrary sample rates from 2 Msps to 20 Msps.  In
early development we had ideas about preferred sample rates that we no
longer consider valid.
2020-01-22 06:39:08 -07:00
mgesteiro
c2d2492d41 FIXED: remove garbage at the end when capturing to stdout ('-r -') 2019-11-12 09:03:51 +01:00
Dominic Spill
cf4b3ae7f4 Cast all the things 2018-03-27 14:30:41 -06:00
Dominic Spill
e384a2d2b7 Explicitly cast variables to silence Windows build warnings 2018-03-27 14:11:51 -06:00
Dominic Spill
d4d74db27c Add helper functions for parsing frequency arguments 2018-03-27 11:57:52 -06:00
Dominic Spill
3168bb55e3 Revert "hackrf_transfer: fix Windows uint32 conversion build warnings"
This reverts commit a9bc8b7ff7c1a2fd910f99d7accd9f75196c71f0.
2018-03-26 19:11:55 -06:00
Dominic Spill
a9bc8b7ff7 hackrf_transfer: fix Windows uint32 conversion build warnings 2018-03-26 19:07:42 -06:00
Marco Bartolucci
e682fe812e Always call hackrf_set_hw_sync_mode in hackrf_transfer.
Avoids the need to manually disable the hw synchronisation by specifyinh the option -H 0.
Omitting -H 0 has the same effect.
2017-05-22 11:40:12 +02:00
Marco Bartolucci
8d0187770a Added "Waiting for sync" info in hackrf_transfer 2017-05-22 11:29:37 +02:00
Marco Bartolucci
e6a0161058 Avoid hackrf-transfer to abort if no samples are received within one second, when hardware sync mode is enabled. 2017-05-19 15:44:23 +02:00
Marco Bartolucci
533f9ee332 Hardware (CPLD-based) synchronisation
=======================================

This commit allows to synchronise multiple HackRFs with a synchronisation error **below 1 sampling period**

> WARNING: Use this at your own risk. If you don't know what you are doing you may damage your HackRF.
> The author takes no responsability for potential damages

Usage example: synchronise two HackRFs
======================================
1. Chose the master HackRF which will send the synchronisation pulse (HackRF0). HackRF1 will represent the slave hackrf.
2. Retreive the serial number of both HackRFs using `hackrf_info`
3. Use a wire to connect `SYNC_CMD` of HackRF0 to `SYNC_IN` of HackRF0 and HackRF1
4. Run `hackrf_transfer` with the argument `-H 1` to enable hardware synchronisation:
    ```
    $ hackrf_tranfer ... -r rec1.bin -d HackRF1_serial -H 1 | hackrf_transfer ... -r rec0.bin -d HackRF0_serial -H 1
    ```
rec0.bin and rec1.bin will have a time offset below 1 sampling period.
The 1PPS output of GNSS receivers can be used to synchronise HackRFs even if they are far from each other.
>DON'T APPLY INCOMPATIBLE VOLTAGE LEVELS TO THE CPLD PINS

Signal | Header |Pin | Description
-------|--------|----|------------
`SYNC_IN` | P28 | 16 | Synchronisation pulse input
`SYNC_CMD` | P28 | 15 | Synchronisation pulse output

Note:
=====
I had to remove CPLD-based decimation to use a GPIO for enabling hardware.

More info:
==========
[M. Bartolucci, J. A. Del Peral-Rosado, R. Estatuet-Castillo, J. A. Garcia-Molina, M. Crisci and G. E. Corazza, "Synchronisation of low-cost open source SDRs for navigation applications," 2016 8th ESA Workshop on Satellite Navigation Technologies and European Workshop on GNSS Signals and Signal Processing (NAVITEC), Noordwijk, 2016, pp. 1-7.](http://ieeexplore.ieee.org/document/7849328/)

[Alternative link](http://spcomnav.uab.es/docs/conferences/Bartolucci_NAVITEC_2016.pdf)
2017-05-16 11:39:44 +02:00
Dominic Spill
a1d6e7b3fe Modify hw sync mode to require an argument
- allows it to be ignored for HackRFs with older firmware
2017-02-09 16:35:56 -07:00
Michael Ossmann
4ac132a4ea hackrf_transfer: switched some output messages from stdout to stderr 2017-02-08 17:03:05 -07:00
Michael Ossmann
ad9ee61e64 fixed bug in bandwidth filter option error checking in hackrf_transfer 2017-02-07 16:19:05 -07:00
Michael Ossmann
e7d459b30f Changed "User cancel" message to "Exiting" because it can happen in situations other than a user action.
Fixes #319 investigate "User cancel error"
2017-02-01 21:00:35 -07:00
Dominic Spill
255b7b4705 Add USB API versioning 2017-01-30 18:30:17 -07:00
Michael Ossmann
f494e0b890 Fixed hackrf_transfer mode control logic. 2017-01-29 18:21:17 -07:00
Michael Ossmann
9211b70770 Added -h/-? option for help to all command line tools. 2017-01-29 17:37:29 -07:00
Dominic Spill
9e78ccb4e7 Correct argument parsing logic 2017-01-27 16:06:01 -07:00
Michael Ossmann
560b390f6c use preferred hackrf_sample_rate_set() instead of older function in hackrf_transfer 2017-01-26 19:03:39 -07:00
Michael Ossmann
b3246972ed use new libhackrf automatic baseband filter selection in hackrf_transfer 2017-01-26 18:58:31 -07:00
Dominic Spill
439ddaaa40 Support compiling with Visual Studio 2017-01-26 17:00:41 -07:00
Michael Ossmann
95c9ac6ffa Support files larger than 2147483647 bytes on 32-bit platforms.
Fixes issue #152.
2017-01-25 16:32:20 -07:00
Michael Ossmann
ba4ffbb1e4 hackrf_transfer: made -n option compatible with -R (repeat TX mode).
-n limits the total number of samples transferred via USB.
This fixes issue #192.
2017-01-25 15:35:12 -07:00
schneider42
d329dac414 Merge branch 'master' into streaming 2017-01-25 11:30:29 +01:00
Mike Davis
ddb19a86fe Add vendor request for enabling/disabling gpio-based sync 2017-01-22 22:28:11 +02:00
Dominic Spill
11ef7f74f6 Tidy clang build warnings
- Remove transceiver enums from hackrf.h
 - convert uint64_ts to int64_ts for frequency maths
2016-09-15 13:50:50 -06:00
Stefan `Sec` Zehl
ad6f9df89a First receive streaming implementation 2016-08-13 21:54:12 +02:00
Radoslav Gerganov
8ba15ad0b1 Make the 'do_exit' flag static
Both libhackrf and hackrf_transfer are using boolean flag named
"do_exit" which is not static. This is problematic because the flag is
used for different things. This patch fixes the problem by making the
flag static in both places.
2016-08-05 16:53:36 +03:00
Josh Blum
cccde1b431 hackrf_transfer - cast with uint32_t
The compiler (MSVC 2013) didnt have the uint typedef,
switched to using uint32_t which is the type of sample_rate_hz.
2016-07-20 17:37:35 -07:00
Michael Ossmann
ab58c3c29c Merge pull request #261 from rgerganov/std-in-out
Add support for transmitting/receiving from stdin/stdout
2016-07-20 15:20:15 -06:00
Dominic Spill
1c34b19fb3 Merge uhwsin PPM correction changes 2016-07-20 22:00:49 +01:00
Dominic Spill
0e0119394d Fix sign comparison warnings 2016-05-30 18:55:04 -06:00
Radoslav Gerganov
51419b7efc Add support for transmitting/receiving from stdin/stdout
When '-' is used for filename, write samples to stdout when receiving or
read samples from stdin when transmitting. This allows using
hackrf_transfer in shell pipes with tools like csdr.
User info messages are written to stderr.
2016-05-29 13:41:34 +03:00
Dominic Spill
57ee59ceea Add error handling to hackrf_trasfer argument parsing 2016-01-14 17:33:00 +00:00
Dominic Spill
327e08a16c Merge pull request #191 from ckuethe/friendlier_rates
allow user to specify frequencies in scientific notation
2016-01-13 23:01:04 +00:00
Peter
d41704a48e Update hackrf_transfer.c 2016-01-13 22:24:18 +08:00
Peter
fed60c571c Update hackrf_transfer.c
Intro:
Some of the Hackrf board use a bad performance crystal, it will cause some program can't work---such as GNSS(GPS) simulation.  Most GPS receiver can capture the satellite
when the doppler within 10KHz, but 10ppm bias of the crystal will cause  15Khz doppler.  And my hackrf board uses a 16ppm crystal :(  normal
Of course, I can replace the crystal or use a external clock. But for most people, add a ppm correct function to hackrf_transfer is useful.
How to use:
1, measure your crystal's error
You can use a precision  counter to measure it.
Connect the hackrf's "clock out" to the counter, get the frequency Fh, then ,
ppm = (Fh - 10000000)/10 
 
You can use a standard clock source such as OCXO, TCXO, or Atom Clock, and a counter
to measure the crystal error too.

2, add an argument "-C ppm " when you use hackrf_transfer.

Eg. , your  crystal error is -8ppm ( In other words , your clock is slower than the standard clock), then you should add "-C -8" follow the hackrf_transfer command.

Hope you can understand my poor English:)

--------------------------
Thanks to Michael Ossmann;
Thanks to Jared Boone ;
Thanks to Benjamin Vernoux ;
Thanks to GPL.
2016-01-13 22:12:42 +08:00
Michael Ossmann
a1cbec96c6 credit for lines of code belongs in commit log 2015-07-16 08:35:38 -06:00
Chris Kuethe
2f422bc33a allow user to specify frequencies in MHz and scientific notation 2015-07-10 11:59:28 -07:00
Michael Ossmann
078bd869eb Merge pull request #188 from scateu/master
Add file repeat TX mode [-R].
2015-07-08 16:12:24 -06:00
Michael Ossmann
7d7992d5d6 Merge pull request #177 from ckuethe/master
Explain which gain setting was unacceptable
2015-07-08 16:11:51 -06:00
Peter Shipley
05416031c2 ChunkSize should be size entire file in bytes minus 8 bytes
Ref : https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
2015-07-08 15:36:41 -06:00
Chris Kuethe
c0c8d619ab Merge branch 'master' of https://github.com/mossmann/hackrf 2015-07-08 11:44:33 -07:00
scateu
2ca87b942a Add file repeat TX mode [-R]. 2015-07-08 18:44:22 +08:00
Dominic Spill
ce9ad343e0 Fix issue #113 - CPLD update fails on Windows
Using the patch from @supersat
2015-07-06 21:25:01 +01:00
Chris Kuethe
94b37453b7 these don't need to be errors any more 2015-05-29 00:32:20 -07:00