Hi all, i re-ask this question because I can't find answers on Google.
There is a segmentation fault error when I try to run an ofdm workflow
example on a USRP E312, I am currently working on Ubuntu 20.04 with
UHD 4.3 and GRC 3.8.
This is the terminal output from the E312.
---------------------------------------------------------------------------
root@ni-e31x-32132F0:~# python3 ofdm_loopback.py
[INFO] [UHD] linux; GNU C++ version 9.2.0; Boost_107100;
UHD_4.3.0.0-0-g1f8fd345
[INFO] [MPMD] Initializing 1 device(s) in parallel with args:
mgmt_addr=127.0.0.1,type=e3xx,product=e310_sg3,serial=32132F0,name=ni-e31x-32132F0,fpga=n/a,claimed=False
[INFO] [MPM.main] Launching USRP/MPM, version: 4.3.0.0-g1f8fd345
[INFO] [MPM.main] Spawning RPC process...
[WARNING] [MPM.PeriphManager] Skipping HW/SW compatibility check!
[INFO] [MPM.PeriphManager] Device serial number: 32132F0
[WARNING] [MPM.PeriphManager] Found more EEPROM paths than
daughterboards. Ignoring some of them.
[INFO] [MPM.RPCServer] RPC server ready!
[INFO] [MPM.RPCServer] Spawning watchdog task...
[INFO] [MPM.PeriphManager] init() called with device args
`fpga=n/a,mgmt_addr=127.0.0.1,name=ni-e31x-32132F0,product=e310_sg3'.
[INFO] [0/Radio#0] Performing CODEC loopback test on channel 0 ...
[INFO] [0/Radio#0] CODEC loopback test passed
[INFO] [0/Radio#0] Performing CODEC loopback test on channel 1 ...
[INFO] [0/Radio#0] CODEC loopback test passed
[WARNING] [MULTI_USRP] Calling multi_usrp::recv_async_msg() is
deprecated and can lead to unexpected behaviour. Prefer calling
tx_stream::recv_async_msg().
[INFO] [MULTI_USRP] 1) catch time transition at pps edge
[INFO] [MULTI_USRP] 2) set times next pps (synchronously)
Press Enter to quit: Fatal Python error: Segmentation fault
Thread 0xb6c09010 (most recent call first):
File "ofdm_loopback.py", line 132 in main
File "ofdm_loopback.py", line 140 in <module>
Segmentation fault
root@ni-e31x-32132F0:~#
------------------------------------------------------------------------
This is the python script generated from GRC
------------------------------------------------------------------------
1. #!/usr/bin/env python3
2. # -*- coding: utf-8 -*-
3.
4. #
5. # SPDX-License-Identifier: GPL-3.0
6. #
7. # GNU Radio Python Flow Graph
8. # Title: OFDM Loopback Example
9. # Description: Transmit a pre-defined signal (a complex sine) as
OFDM packets.
10. # GNU Radio version: 3.8.1.0
11.
12. from gnuradio import blocks
13. from gnuradio import digital
14. from gnuradio import gr
15. from gnuradio.filter import firdes
16. import sys
17. import signal
18. from argparse import ArgumentParser
19. from gnuradio.eng_arg import eng_float, intx
20. from gnuradio import eng_notation
21. from gnuradio import
uhdhttps://github.com/bastibl/gr-foo/tree/maint-3.9/lib
22. import time
23. import faulthandler; faulthandler.enable()
24.
25. class ofdm_loopback(gr.top_block):
26.
27. def __init__(self):
28. gr.top_block.__init__(self, "OFDM Loopback Example")
29.
30. ##################################################
31. # Variables
32. ##################################################
33. self.samp_rate = samp_rate = 100e3
34. self.packet_len = packet_len = 50
35. self.len_tag_key = len_tag_key = "packet_len"
36. self.frecuencia_central = frecuencia_central = 0
37. self.fft_len = fft_len = 64
38.
39. ##################################################
40. # Blocks
41. ##################################################
42. self.uhd_usrp_sink_0 = uhd.usrp_sink(
43. ",".join(("", "")),
44. uhd.stream_args(
45. cpu_format="fc32",
46. args='',
47. channels=list(range(0,1)),
48. ),
49. '',
50. )
51. self.uhd_usrp_sink_0.set_center_freq(frecuencia_central, 0)
52. self.uhd_usrp_sink_0.set_gain(10, 0)
53. self.uhd_usrp_sink_0.set_antenna('TX/RX', 0)
54. self.uhd_usrp_sink_0.set_samp_rate(samp_rate)
55. self.uhd_usrp_sink_0.set_time_unknown_pps(uhd.time_spec())
56. self.digital_ofdm_tx_0 = digital.ofdm_tx(
57. fft_len=fft_len,
58. cp_len=fft_len//4,
59. packet_length_tag_key=len_tag_key,
60. occupied_carriers=((-4,-3,-2,-1,1,2,3,4),),
61. pilot_carriers=((-6,-5,5,6),),
62. pilot_symbols=((-1,1,-1,1),),
63. sync_word1=None,
64. sync_word2=None,
65. bps_header=1,
66. bps_payload=2,
67. rolloff=0,
68. debug_log=False,
69. scramble_bits=False)
70. self.blocks_vector_source_x_0 =
blocks.vector_source_b(range(packet_len), True, 1, ())
71. self.blocks_stream_to_tagged_stream_0 =
blocks.stream_to_tagged_stream(gr.sizeof_char, 1, packet_len,
len_tag_key)
72.
73.
74.
75. ##################################################
76. # Connections
77. ##################################################
78. self.connect((self.blocks_stream_to_tagged_stream_0, 0),
(self.digital_ofdm_tx_0, 0))
79. self.connect((self.blocks_vector_source_x_0, 0),
(self.blocks_stream_to_tagged_stream_0, 0))
80. self.connect((self.digital_ofdm_tx_0, 0),
(self.uhd_usrp_sink_0, 0))
81. https://github.com/bastibl/gr-foo/tree/maint-3.9/lib
82. def get_samp_rate(self):
83. return self.samp_rate
84.
85. def set_samp_rate(self, samp_rate):
86. self.samp_rate = samp_rate
87. self.uhd_usrp_sink_0.set_samp_rate(self.samp_rate)
88.
89. def get_packet_len(self):
90. return self.packet_len
91.
92. def set_packet_len(self, packet_len):
93. self.packet_len = packet_len
94. self.blocks_stream_to_tagged_stream_0.set_packet_len(self.packet_len)
95. self.blocks_stream_to_tagged_stream_0.set_packet_len_pmt(self.packet_len)
96. self.blocks_vector_source_x_0.set_data(range(self.packet_len), ())
97.
98. def get_len_tag_key(self):
99. return self.len_tag_key
100.
101. def set_len_tag_key(self, len_tag_key):
102. self.len_tag_key = len_tag_key
103.
104. def get_frecuencia_central(self):
105. return self.frecuencia_central
106.
107. def set_frecuencia_central(self, frecuencia_central):
108. self.frecuencia_central = frecuencia_central
109. self.uhd_usrp_sink_0.set_center_freq(self.frecuencia_central, 0)
110.
111. def
get_fft_len(self):https://github.com/bastibl/gr-foo/tree/maint-3.9/lib
112. return self.fft_len
113.
114. def set_fft_len(self, fft_len):
115. self.fft_len = fft_len
116.
117.
118.
119. def main(top_block_cls=ofdm_loopback, options=None):
120. tb = top_block_cls()
121.
122. def sig_handler(sig=None, frame=None):
123. tb.stop()
124. tb.wait()
125. sys.exit(0)https://github.com/bastibl/gr-foo/tree/maint-3.9/lib
126.
127. signal.signal(signal.SIGINT, sig_handler)
128. signal.signal(signal.SIGTERM, sig_handler)
129.
130. tb.start()
131. try:
132. input('Press Enter to quit: ')
133. except EOFError:
134. pass
135. tb.stop()
136. tb.wait()
137.
138.
139. if __name__ == '__main__':
140. main()
141.
El mar, 6 jun 2023 a las 10:14, JORGE GONZALEZ ORELLANA
(<jorge.gonzale...@mail.pucv.cl>) escribió:
Hi Marcus.
My mistake, sorry
This is the terminal output from the E312.
---------------------------------------------------------------------------
root@ni-e31x-32132F0:~# python3 ofdm_loopback.py
[INFO] [UHD] linux; GNU C++ version 9.2.0; Boost_107100;
UHD_4.3.0.0-0-g1f8fd345
[INFO] [MPMD] Initializing 1 device(s) in parallel with args:
mgmt_addr=127.0.0.1,type=e3xx,product=e310_sg3,serial=32132F0,name=ni-e31x-32132F0,fpga=n/a,claimed=False
[INFO] [MPM.main] Launching USRP/MPM, version: 4.3.0.0-g1f8fd345
[INFO] [MPM.main] Spawning RPC
process...https://github.com/bastibl/gr-foo/tree/maint-3.9/lib
[WARNING] [MPM.PeriphManager] Skipping HW/SW compatibility check!
[INFO] [MPM.PeriphManager] Device serial number: 32132F0
[WARNING] [MPM.PeriphManager] Found more EEPROM paths than
daughterboards. Ignoring some of them.
[INFO] [MPM.RPCServer] RPC server ready!
[INFO] [MPM.RPCServer] Spawning watchdog task...
[INFO] [MPM.PeriphManager] init() called with device args
`fpga=n/a,mgmt_addr=127.0.0.1,name=ni-e31x-32132F0,product=e310_sg3'.
[INFO] [0/Radio#0] Performing CODEC loopback test on channel 0 ...
[INFO] [0/Radio#0] CODEC loopback test passed
[INFO] [0/Radio#0] Performing CODEC loopback test on channel 1 ...
[INFO] [0/Radio#0] CODEC loopback test passed
[WARNING] [MULTI_USRP] Calling multi_usrp::recv_async_msg() is
deprecated and can lead to unexpected behaviour. Prefer calling
tx_stream::recv_async_msg().
[INFO] [MULTI_USRP] 1) catch time transition at pps
edgehttps://github.com/bastibl/gr-foo/tree/maint-3.9/lib
[INFO] [MULTI_USRP] 2) set times next pps (synchronously)
Press Enter to quit: Fatal Python error: Segmentation fault
Thread 0xb6c09010 (most recent call first):
File "ofdm_loopback.py", line 132 in main
File "ofdm_loopback.py", line 140 in <module>
Segmentation fault
root@ni-e31x-32132F0:~#
------------------------------------------------------------------------
This is the python script generated from GRC
------------------------------------------------------------------------
1. #!/usr/bin/env python3
2. # -*- coding: utf-8 -*-
3.
4. #
5. # SPDX-License-Identifier: GPL-3.0
6. #
7. # GNU Radio Python Flow Graph
8. # Title: OFDM Loopback Example
9. # Description: Transmit a pre-defined signal (a complex sine)
as OFDM packets.
10. # GNU Radio version: 3.8.1.0
11.
12. from gnuradio import blocks
13. from gnuradio import digital
14. from gnuradio import gr
15. from gnuradio.filter import firdes
16. import sys
17. import signal
18. from argparse import ArgumentParser
19. from gnuradio.eng_arg import eng_float, intx
20. from gnuradio import eng_notation
21. from gnuradio import uhd
22. import time
23. import faulthandler; faulthandler.enable()
24.
25. class ofdm_loopback(gr.top_block):
26.
27. def __init__(self):
28. gr.top_block.__init__(self, "OFDM Loopback Example")
29.
30. ##################################################
31. # Variables
32. ##################################################
33. self.samp_rate = samp_rate = 100e3
34. self.packet_len = packet_len = 50
35. self.len_tag_key = len_tag_key = "packet_len"
36. self.frecuencia_central = frecuencia_central = 0
37. self.fft_len = fft_len = 64
38.
39. ##################################################
40. # Blocks
41. ##################################################
42. self.uhd_usrp_sink_0 = uhd.usrp_sink(
43. ",".join(("", "")),
44. uhd.stream_args(
45. cpu_format="fc32",
46. args='',
47. channels=list(range(0,1)),
48. ),
49. '',
50. )
51. self.uhd_usrp_sink_0.set_center_freq(frecuencia_central, 0)
52. self.uhd_usrp_sink_0.set_gain(10, 0)
53. self.uhd_usrp_sink_0.set_antenna('TX/RX', 0)
54. self.uhd_usrp_sink_0.set_samp_rate(samp_rate)
55. self.uhd_usrp_sink_0.set_time_unknown_pps(uhd.time_spec())
56. self.digital_ofdm_tx_0 = digital.ofdm_tx(
57. fft_len=fft_len,
58. cp_len=fft_len//4,
59. packet_length_tag_key=len_tag_key,
60. occupied_carriers=((-4,-3,-2,-1,1,2,3,4),),
61. pilot_carriers=((-6,-5,5,6),),
62. pilot_symbols=((-1,1,-1,1),),
63. sync_word1=None,
64. sync_word2=None,
65. bps_header=1,
66. bps_payload=2,
67. rolloff=0,
68. debug_log=False,
69. scramble_bits=False)
70. self.blocks_vector_source_x_0 =
blocks.vector_source_b(range(packet_len), True, 1, ())
71. self.blocks_stream_to_tagged_stream_0 =
blocks.stream_to_tagged_stream(gr.sizeof_char, 1, packet_len,
len_tag_key)
72.
73.
74.
75. ##################################################
76. # Connections
77. ##################################################
78. self.connect((self.blocks_stream_to_tagged_stream_0, 0),
(self.digital_ofdm_tx_0, 0))
79. self.connect((self.blocks_vector_source_x_0, 0),
(self.blocks_stream_to_tagged_stream_0, 0))
80. self.connect((self.digital_ofdm_tx_0, 0),
(self.uhd_usrp_sink_0, 0))
81.
82. def get_samp_rate(self):
83. return self.samp_rate
84.
85. def set_samp_rate(self, samp_rate):
86. self.samp_rate = samp_rate
87. self.uhd_usrp_sink_0.set_samp_rate(self.samp_rate)
88.
89. def get_packet_len(self):
90. return self.packet_len
91.
92. def set_packet_len(self, packet_len):
93. self.packet_len = packet_len
94. self.blocks_stream_to_tagged_stream_0.set_packet_len(self.packet_len)
95.
self.blocks_stream_to_tagged_stream_0.set_packet_len_pmt(self.packet_len)
96. self.blocks_vector_source_x_0.set_data(range(self.packet_len), ())
97.
98. def get_len_tag_key(self):
99. return self.len_tag_key
100.
101. def set_len_tag_key(self, len_tag_key):
102. self.len_tag_key = len_tag_key
103.
104. def get_frecuencia_central(self):
105. return self.frecuencia_central
106.
107. def set_frecuencia_central(self, frecuencia_central):
108. self.frecuencia_central = frecuencia_central
109. self.uhd_usrp_sink_0.set_center_freq(self.frecuencia_central, 0)
110.
111. def get_fft_len(self):
112. return self.fft_len
113.
114. def set_fft_len(self, fft_len):
115. self.fft_len = fft_len
116.
117.
118.
119. def main(top_block_cls=ofdm_loopback, options=None):
120. tb = top_block_cls()
121.
122. def sig_handler(sig=None, frame=None):
123. tb.stop()
124. tb.wait()
125. sys.exit(0)
126.
127. signal.signal(signal.SIGINT, sig_handler)
128. signal.signal(signal.SIGTERM, sig_handler)
129.
130. tb.start()
131. try:
132. input('Press Enter to quit: ')
133. except EOFError:
134. pass
135. tb.stop()
136. tb.wait()
137. i
138.
139. f __name__ == '__main__':
140. main()
El lun, 5 jun 2023 a las 17:33, Marcus Müller
(<marcus.muel...@ettus.com>) escribió:
HI Jorge,
you didn't attach screenshots, but that's OK: We would much
rather have you include
copy&pasted text. Images are always inferior when it comes to
understanding text messages.
Best regards,
Marcus
On 05.06.23 22:19, JORGE GONZALEZ ORELLANA via USRP-users wrote:
> Hi all, I have been trying to implement the OFDM blocks on a
USRP E312, I am currently
> working on Ubuntu 20.04 with GRC 3.8 y UHD 4.3.
>
> When I try to run the python script generated from the GRC,
a segmentation fault error
> appears on the E312, I tried to use the faulthandler module
to see the root of this
> error, but i cannot get an idea of what could it be.
>
> I attached some screenshots, so you can see what I mean
>
> thanks for your time
:)https://github.com/bastibl/gr-foo/tree/maint-3.9/lib
>
> _______________________________________________
> USRP-users mailing list -- usrp-users@lists.ettus.com
> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com