Hello Marc, The output shown below is an attempt to send a bit stream using fpga.upload_to_ram_and_program( ) . This is being sent to a tcpborphserver running on port 7130. On the board side, only this server is running by itself. (no multiple running servers). It appears to connect to the board, but an attempt to upload a bitstream raises an exception in code file transport_katcp.py
I can sudo kill the tcpborphserver, and restart another one on the original port 7147. When I do that, everything connects perfectly and the bitstream works fine. My current hypothesis is that port 7130 is being blocked by a firewall. everyone is welcome to try to replicate this error on your own. [START] connect to zcu216 [xxx.177.143.srv] . . . KatcpTransport class created on port 7130 [DONE] connect to zcu216 [START] fpga.upload_to_ram_and_program( ) self.sendfile started on thread. obtained an upload_result. Okay. 2024-12-09 18:24:24.54 ERROR xxx.177.143.srv transport_katcp.py:662 - xxx.177.143.srv: no programming informs yet. Odd? ERROR:xxx.177.143.srv:xxx.177.143.srv: no programming informs yet. Odd? Traceback (most recent call last): File "/home/xpswhite/cfpga/casper_venv/lib/python3.8/site-packages/casperfpga-0.4.4.dev1336+py38.276ee44-py3.8-linux-x86_64.egg/casperfpga/transport_katcp.py", line 660, in upload_to_ram_and_program inf = unhandled_informs_queue.get(block=True, timeout=timeout) File "/usr/lib/python3.8/queue.py", line 178, in get raise Empty _queue.Empty During handling of the above exception, another exception occurred: Traceback (most recent call last): File "acqworker.py", line 223, in <module> main( which_buf ) File "acqworker.py", line 122, in main fpga.upload_to_ram_and_program(fullpath) File "/home/xpswhite/cfpga/casper_venv/lib/python3.8/site-packages/casperfpga-0.4.4.dev1336+py38.276ee44-py3.8-linux-x86_64.egg/casperfpga/casperfpga.py", line 375, in upload_to_ram_and_program rv = self.transport.upload_to_ram_and_program( File "/home/xpswhite/cfpga/casper_venv/lib/python3.8/site-packages/casperfpga-0.4.4.dev1336+py38.276ee44-py3.8-linux-x86_64.egg/casperfpga/transport_katcp.py", line 663, in upload_to_ram_and_program raise RuntimeError('%s: no programming informs yet. ' RuntimeError: xxx.177.143.srv: no programming informs yet. Odd? The telnet debug log during the above, telnet> set debug Will turn on socket level debugging. telnet> open xxx.177.143.srv 7130 Trying xxx.177.143.srv... Connected to xxx.177.143.srv. Escape character is '^]'. #version-connect katcp-library v0.2.0-285-gcb88d0b-dirty 2021-05-06T22:29:36 #version-connect katcp-protocol 5.0-M #version-connect kernel 5.4.0-xilinx-v2020.2 #1\_SMP\_Thu\_Jul\_15\_16:49:16\_UTC\_2021 #log info 1653629001.060 raw new\_client\_connection\_xxx.177.143.cli:58576 #client-connected xxx.177.143.cli:58576 #log info 1653629001.067 raw received\_end\_of\_file\_from\_xxx.177.143.cli:58576 #client-disconnected xxx.177.143.cli:58576 #log info 1653629001.070 raw new\_client\_connection\_xxx.177.143.cli:58578 #client-connected xxx.177.143.cli:58578 #log info 1653629001.073 raw received\_end\_of\_file\_from\_xxx.177.143.cli:58578 #client-disconnected xxx.177.143.cli:58578 #log info 1653629001.077 raw new\_client\_connection\_xxx.177.143.cli:58592 #client-connected xxx.177.143.cli:58592 #log error 1653629001.079 raw fpga\_not\_programmed #log error 1653629001.581 raw fpga\_not\_programmed #log error 1653629002.084 raw fpga\_not\_programmed #log error 1653629002.085 raw fpga\_not\_programmed #log error 1653629002.588 raw fpga\_not\_programmed #log error 1653629003.090 raw fpga\_not\_programmed #log info 1653629003.095 raw awaiting\_transfer\_on\_port\_2157 #log error 1653629003.121 kcpfpg unable\_to\_create\_client\_connection\_to\_server\_localhost:\_Connection\_refused #log info 1653629003.122 raw job\_858\_completed\_with\_code\_2 #log info 1653629013.202 raw received\_end\_of\_file\_from\_xxx.177.143.cli:58592 #client-disconnected xxx.177.143.cli:58592 I made a few edits to transport_katcp.py starting below line 624. You can see the prints corresponding to the output above. if port == -1: port = random.randint(2000, 2500) # start the request thread and join request_queue = queue.Queue() request_thread = threading.Thread(target=makerequest, args=(request_queue, )) old_timeout = self._timeout self._timeout = timeout request_thread.start() request_thread.join() request_result = request_queue.get() if request_result != '': raise RuntimeError('progremote request(%s) on host %s failed' % (request_result, self.host)) # start the upload thread and join upload_queue = queue.Queue() unhandled_informs_queue = queue.Queue() print("self.sendfile started on thread.") upload_thread = threading.Thread(target=self.sendfile, args=( filename, self.host, port, upload_queue, )) self.unhandled_inform_handler = \ lambda msg: unhandled_informs_queue.put(msg) upload_thread.start() if not wait_complete: self.unhandled_inform_handler = None self._timeout = old_timeout return True upload_thread.join() # wait for the file upload to complete upload_result = upload_queue.get() if upload_result != '': raise RuntimeError('upload(%s)' % upload_result) print("obtained an upload_result. Okay.") # wait for the '#fpga ready' inform done = False while not done: try: inf = unhandled_informs_queue.get(block=True, timeout=timeout) except queue.Empty: self.logger.error('%s: no programming informs yet. Odd?' % self.host) raise RuntimeError('%s: no programming informs yet. ' 'Odd?' % self.host) if (inf.name == 'fpga') and (inf.arguments[0].decode() == 'ready'): done = True On Monday, December 9, 2024 at 12:45:32 AM UTC-5 Marc wrote: > > > Hello > > Try doing a "telnet xxx.177.143.xxx 7130", issuing a "log-level debug" and > then re-running your code, while keeping that telnet session open. > > With a bit of luck it should provide some feedback. > > Running multiple instances of tcpborphserver can be problematic - for one > the register names are local to each process, and so could get out of sync. > Other problems may occur too. > > regards > > marc > > > > On Mon, Dec 9, 2024 at 3:27 AM Ken Semanov <shapki...@gmail.com> wrote: > >> A call to read_raw( ) eventually flows execution to within the method >> called def katcprequest( ) located in the following file, (236) >> >> >> https://github.com/casper-astro/casperfpga/blob/master/src/transport_katcp.py >> >> Therein, self.blocking_request() is called at 261. The returned >> 'reply' raises the exception on line 266. >> >> >> - File >> >> "/home/xpswhite/cfpga/casper_venv/lib/python3.8/site-packages/casperfpga-0.4.4.dev1336+py38.276ee44-py3.8-linux-x86_64.egg/casperfpga/transport_katcp.py", >> >> line 297, in katcprequest >> - raise KatcpRequestFail( >> - casperfpga.transport_katcp.KatcpRequestFail: Request write on host >> xxx.177.143.xxx failed. >> - Request: ?write counted_capt_buffer_ctrl 0 \0\0\0\0 >> - Reply: !write fail >> >> >> I am currently using a tcpborphserver3 listening on port 7130. This >> differs from the default port of 7147 >> >> >> - $ ps aux | grep tcp >> - root 497 1.0 0.0 5804 3108 ? Ss May25 5:24 >> /bin/tcpborphserver3 -b /lib/firmware >> - root 1087 0.0 0.0 3692 1896 ? Ss 00:45 0:00 >> /bin/tcpborphserver3 -b /lib/firmware -p 7130 >> - casper 1319 0.0 0.0 5832 684 ttyPS0 S+ 03:24 0:00 >> grep --color=auto tcp >> >> >> If the above write error is suppressed, the code errors in the same >> place with reads. The client is able to connect just fine to port 7130, >> but these reads and writes to software registers fail in the following way >> shown above. The content of the request "looks" to be just fine. During >> reads, it actually returns the number 4 in the reply, which is correct. So >> something else is populating errors in re >> >> A possible fix here is to inform the blocking_request() call with the new >> port I am using. Is there a way to inform this call with the particular >> port? >> >> Another possible fix is that port 7130 must be let through a firewall on >> the SoC board. >> >> Your thoughts? >> >> -- >> You received this message because you are subscribed to the Google Groups >> "cas...@lists.berkeley.edu" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to casper+un...@lists.berkeley.edu. >> To view this discussion visit >> https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/79eb0468-fe39-44a4-86f2-4fd9dcef47d5n%40lists.berkeley.edu >> >> <https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/79eb0468-fe39-44a4-86f2-4fd9dcef47d5n%40lists.berkeley.edu?utm_medium=email&utm_source=footer> >> . >> > > > -- > The use of google poses numerous > <https://jwz.org/xscreensaver/google.html> grave privacy risks > > > *Disclaimer* > > The information contained in this communication from the sender is > confidential. It is intended solely for use by the recipient and others > authorized to receive it. If you are not the recipient, you are hereby > notified that any disclosure, copying, distribution or taking action in > relation of the contents of this information is strictly prohibited and may > be unlawful. > -- You received this message because you are subscribed to the Google Groups "casper@lists.berkeley.edu" group. To unsubscribe from this group and stop receiving emails from it, send an email to casper+unsubscr...@lists.berkeley.edu. To view this discussion visit https://groups.google.com/a/lists.berkeley.edu/d/msgid/casper/63e4dd56-e226-42ca-9361-d47b708b20acn%40lists.berkeley.edu.