Thomas Kolb
3b7628882c
utils: open output file in binary mode
2023-05-12 13:49:20 +02:00
Thomas Kolb
d17b7b3309
RX: added some asserts
2023-05-12 13:48:18 +02:00
Thomas Kolb
afb25a69d8
Use dynamic linking for liquid-dsp again
2023-05-12 13:47:05 +02:00
Thomas Kolb
7d5b67a257
Add layer 1 software loopback test
2023-05-12 13:46:02 +02:00
Thomas Kolb
c8e0516e80
Implement time-based carrier sensing
...
In the following events, the modem cannot switch to transmit mode for the
given time:
- after a preamble has been received, for 500 ms
- after a packet has been successfully decoded, for 1 ms
- after receive mode was initially enabled, for 500 ms
Note that the times are that long to work around the RX/TX switching of
the hackrf and can be hopefully reduced to <10 milliseconds in a later
version.
2022-05-07 21:17:53 +02:00
Thomas Kolb
886a78018f
RX: write correct sample rate to debug file
2022-05-07 20:13:01 +02:00
Thomas Kolb
b2d6c713e1
Briefly start in TX mode to ensure correct RX frequency
...
Obviously SoapyHackRF does not set the correct RX frequency on startup.
This is a crude but effective workaround.
2022-05-07 20:12:03 +02:00
Thomas Kolb
ec99cedaf4
rx: improvements made during on-air testing
...
- limit frequency adjustment range
- pre-filter the baseband signal to remove out-of-band interference
- reset the frequency acquisition periodically (every 30s) if no preamble is found
2022-04-10 21:58:32 +02:00
Thomas Kolb
2d0bf7eeda
sdr: fixed enumeration output
2022-04-08 16:17:17 +02:00
Thomas Kolb
96f10f7fb6
sdr: add gain configuration
2022-04-08 16:17:00 +02:00
Thomas Kolb
715cda83a8
RX: process samples in larger chunks
2022-04-07 21:17:37 +02:00
Thomas Kolb
3e74093fc7
Retry transmitting zeros
2022-04-07 20:58:08 +02:00
Thomas Kolb
31475907d3
Switch to IPv6
2022-04-07 20:44:07 +02:00
Thomas Kolb
bfe27d3ead
Added script for setting up the tun device
2022-04-07 20:34:21 +02:00
Thomas Kolb
47fc177e87
Reorganize Soapy stream management; flush tx buffer
2022-04-03 18:11:52 +02:00
Thomas Kolb
152d2f02f6
Basic transmitter-only main loop
2022-03-05 21:38:05 +01:00
Thomas Kolb
3bc1d9625f
sdr: various fixes; use Kaiser filter for resampling
2022-03-05 21:37:33 +01:00
Thomas Kolb
85663d5304
Added SDR abstraction layer
2022-03-03 22:19:03 +01:00
Thomas Kolb
88145d74ba
rx: added function to determine whether rx is busy
2022-03-01 21:51:41 +01:00
Thomas Kolb
45156e64a0
Show packets as hexdump instead of text
2022-02-27 22:01:51 +01:00
Thomas Kolb
9817896914
rx: make receiver more robust
2022-02-27 21:25:33 +01:00
Thomas Kolb
934b18e382
Integrate TUN device interface
...
Packets are now read from the TUN device and transmitted. The signal
goes through a channel emulator and is then received + decoded. If
decoding is successful, the result is written back to the TUN device
(which does not make much sense, but works for testing).
Unfortunately, there still seems to be a problem in the receiver: packet
loss is very high even at extremely high SNRs.
2022-02-27 20:21:14 +01:00
Thomas Kolb
890baf577f
Moved config.h to src/ top level
2022-02-27 18:41:16 +01:00
Thomas Kolb
8a8ddc5ea3
rx: integrate AGC
2022-02-27 16:59:14 +01:00
Thomas Kolb
a60b8b1f87
Moved results.h to src/ top level
2022-02-27 16:02:51 +01:00
Thomas Kolb
1787d0d351
layer1: implement per-packet modulation/coding
...
This allows a higher layer to adjust data rate based on the current
channel conditions. For example, the SNR could be measured and if it
becomes too low for the current modulation/code, a lower-order
modulation or stronger code could be used.
2022-02-17 21:39:18 +01:00
Thomas Kolb
0ed7109335
Clean up debug output
2022-02-16 21:46:56 +01:00
Thomas Kolb
876bafd6f9
Moved receiver to separate module
2022-02-16 20:52:46 +01:00
Thomas Kolb
a5634ed736
Move the transmission chain to a separate "tx" module
2022-02-13 21:29:35 +01:00
Thomas Kolb
97772fa12b
Removed unused packet_demod
2022-02-13 20:06:14 +01:00
Thomas Kolb
513a399ae4
Refactoring: moved layer1-related stuff to subdirectory
2022-02-13 20:05:47 +01:00
Thomas Kolb
a124c04021
plot_spectrum: ensure that the t and f array sizes match
2022-02-13 19:54:07 +01:00
Thomas Kolb
89f04b3ad0
plot_constellation: added guard lines
2022-02-13 19:53:17 +01:00
Thomas Kolb
eb3fc5f9c7
Use data whitening
2022-02-12 22:06:49 +01:00
Thomas Kolb
87b844a2da
Implement CRC check and phase tracking
2022-02-12 21:58:53 +01:00
Thomas Kolb
947615f5cd
First complete RX chain
...
Decoding of the test message works down to ~10 dB SNR.
Still missing:
- Phase tracking during header and payload.
- CRC calculation and check.
- Data whitening.
2022-02-11 17:56:26 +01:00
Thomas Kolb
042c05f9f3
Decode the received header
2022-02-10 22:33:51 +01:00
Thomas Kolb
f2c95a125d
Use new frequency+phase estimation method for preamble
2022-02-06 18:04:31 +01:00
Thomas Kolb
8060137c1d
Move frequency estimation to separate module
2022-02-05 20:33:56 +01:00
Thomas Kolb
465d9a1c26
main: restructure state management; evaluate a found preamble
2022-02-03 22:18:24 +01:00
Thomas Kolb
423f1d6416
correlator: added functions for phase and frequency estimation
2022-02-03 22:17:37 +01:00
Thomas Kolb
c17c7e060f
Integrate preamble search
2022-02-01 21:35:43 +01:00
Thomas Kolb
b6713909f7
Make initial frequency sync much faster
...
The NCO frequency is now only adjusted every 8 symbols. That means that
the frequency error over the last 8 symbols before the adjustment is
(almost) constant, giving a good estimation result. Therefore, the
adjustment factor can be much larger than previously, leading to faster
acquisition time.
2022-01-30 20:23:41 +01:00
Thomas Kolb
c1dd039d6b
First shot at frequency synchronization
...
Supports only the BPSK part so far (ramp-up, preamble).
2022-01-30 20:05:20 +01:00
Thomas Kolb
09465591ed
Added symsync to the receiver chain
2022-01-29 22:37:55 +01:00
Thomas Kolb
f983635c14
Fixed output size of transmission_filter_packet()
2022-01-29 22:14:25 +01:00
Thomas Kolb
d522a1d6bd
Implemented pulse shaping
...
The pulse shaper currently uses an RRC filter with beta=0.2.
2022-01-29 22:05:17 +01:00
Thomas Kolb
a6fed80149
Added script for plotting the spectrum of signal dumps
2022-01-29 22:03:51 +01:00
Thomas Kolb
a1f62a3b0a
packet_mod: implement FEC and modulation for the header
2022-01-23 16:28:53 +01:00
Thomas Kolb
9a1107ff38
Added correlator + small test program
2022-01-22 22:42:05 +01:00
Thomas Kolb
6c21618f1f
Document the packet_mod interface
2021-10-17 22:51:10 +02:00
Thomas Kolb
62ff2938ac
Some python debug plot scripts
2021-10-17 19:46:30 +02:00
Thomas Kolb
874d8d5073
Fixed the modulator + test demodulation
2021-10-17 19:45:54 +02:00
Thomas Kolb
9ba470adeb
Initial implementation of packet modulation
...
Not really tested yet…
2021-10-17 19:26:38 +02:00
Thomas Kolb
0b237a47cb
Initial commit: infrastructure
2021-10-17 19:25:42 +02:00