Skip to content

BlockDownloadStream class in sdo\client.py appears to be missing an object definition #624

@Eqqm4n

Description

@Eqqm4n

Hello-
In sdo\client.py the BlockDownloadStream class refers to the self.crc_supported attribute on lines 680, 738, and 812, but this class attribute does not appear to be defined (and as a side note, the BlockUploadStream class does define one).

I ran across this issue when a host's block transfer request was rejected by the device, causing the library to go down one of these broken code paths:

2026-01-05 14:42:37,387 - canopen_client - ERROR - Full traceback:
Traceback (most recent call last):
  File "C:\nVent_work\zephyr_root\zephyr_repo\nvent_projects\canopen_sim\canopen_sim\canopen_client.py", line 724, in upload_firmware
    with self.node.sdo.open(index, subindex, "wb",
         ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
                          size=total_size,
                          ^^^^^^^^^^^^^^^^
                          block_transfer=True) as fp:
                          ^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python313\Lib\site-packages\canopen\sdo\client.py", line 213, in open
    raw_stream = BlockDownloadStream(self, index, subindex, size, request_crc_support=request_crc_support)
  File "C:\Program Files\Python313\Lib\site-packages\canopen\sdo\client.py", line 655, in __init__
    response = sdo_client.request_response(request)
  File "C:\Program Files\Python313\Lib\site-packages\canopen\sdo\client.py", line 86, in request_response
    return self.read_response()
           ~~~~~~~~~~~~~~~~~~^^
  File "C:\Program Files\Python313\Lib\site-packages\canopen\sdo\client.py", line 74, in read_response
    raise SdoAbortedError(abort_code)
canopen.sdo.exceptions.SdoAbortedError: Code 0x05040001, Unknown SDO command specified
2026-01-05 14:42:37,391 - canopen_client - ERROR - Error uploading firmware: Code 0x05040001, Unknown SDO command specified
Exception ignored in: <canopen.sdo.client.BlockDownloadStream object at 0x000001F2DDEF6A40>
Traceback (most recent call last):
  File "C:\Program Files\Python313\Lib\site-packages\canopen\sdo\client.py", line 793, in close
    if self.crc_supported:
AttributeError: 'BlockDownloadStream' object has no attribute 'crc_supported'
2026-01-05 14:42:38,548 - canopen_client - INFO - Disconnected from CAN bus

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions