Canable (clone) with Duet 3 Toolboard 1LC

Basic Information:

Printer Model: TAZ 6
MCU / Printerboard: Duet 3 6HC, Canable (clone) and Toolboard 1LC
Host / SBC: RPi 5
klippy.log (21.1 KB)

I’m trying to setup a Canable (clone) with Duet 3 Toolboard 1LC. I have read through docs, forum and blog posts and I can’t figure out if I’m doing something wrong/stupid or if it’s a compatibility issue or a bug. The closeted I have come to getting it working leaves me with conflicting pins between the two on PB9. Thanks for your help.

Klipper error

Configured MCU 'mcu' (1024 moves)
Config error
Traceback (most recent call last):
  File "/home/mike/klipper/klippy/klippy.py", line 135, in _connect
    cb()
  File "/home/mike/klipper/klippy/mcu.py", line 748, in _connect
    self._send_config(None)
  File "/home/mike/klipper/klippy/mcu.py", line 687, in _send_config
    cmdlist[i] = pin_resolver.update_command(cmd)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mike/klipper/klippy/pins.py", line 53, in update_command
    return re_pin.sub(pin_fixup, cmd)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/mike/klipper/klippy/pins.py", line 50, in pin_fixup
    raise error("pin %s is reserved for %s" % (
pins.error: pin PB9 is reserved for CAN

Canable

  • On candleLight_fw - canbus_query.py can0 - Total 0 uuids found
  • On klipper - canbus_query.py can0 - Total 1 uuids found
  • CAN bus interface has only two options PB8/PB9 or PD0/PD1. Choosing PD0/PD1 seems to softbrick the board.
[*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32)  --->
    Processor model (STM32F072)  --->
    Bootloader offset (No bootloader)  --->
    Clock Reference (24 MHz crystal)  --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12))  --->
    CAN bus interface (CAN bus (on PB8/PB9))  --->
    USB ids  --->
(1000000) CAN bus speed
()  GPIO pins to set at micro-controller startup

Toolboard 1LC

  • Flashed with klipper firmware
  • CAN Pins: CAN0_TX:PA24 CAN0_RX:PA25
  • Thermistor Pins: TEMP0:PB9 TEMP1:PA2
[*] Enable extra low-level configuration options
    Micro-controller Architecture (SAMC21/SAMD21/SAMD51/SAME5x)  --->
    Processor model (SAMC21G18 (Duet 3 Toolboard 1LC))  --->
    Bootloader offset (16KiB bootloader (Arduino M0, Duet 3 Bootloader))  --->
    Clock Reference (12Mhz crystal)  --->
    Communication interface (CAN bus (on PA25/PA24))  --->
(1000000) CAN bus speed
()  GPIO pins to set at micro-controller startup

Wiring

  • Both ends are terminated with 120 ohm resistors, I did double check with a mulimeter. =)
  • CAN high to CAN high and CAN low to CAN low

/etc/network/interfaces.d/can0 with the following contents: (from CANBUS - Klipper documentation)

allow-hotplug can0
iface can0 can static
    bitrate 1000000
    up ip link set $IFACE txqueuelen 128

ifconfig

can0: flags=193<UP,RUNNING,NOARP>  mtu 16
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 128  (UNSPEC)
        RX packets 9029  bytes 64860 (63.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2564  bytes 14949 (14.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Thank you again for reading my post and your help

I am guessing your error is in your [extruder] config block:
sensor_pin = toolboard_vref_scaled:PB9
that would be your main mcu - I guess you typoed a _ vs a :

What is vref_scaled?! - I did not read that one until today

EDIT: This was the wrong assumption.

Thank you for your reply. I’m new to klipper and basing my config off of someone else’s config (generic Duet 3 6HC, sample duet3 1lc and printer-lulzbot-taz6-2017) which is a blessing and a curse, but as far as I understand toolboard_vref_scaled is aliased to the code below and vref_scaled has to do with scaling of the of the temp sensor readings.

[adc_scaled toolboard_vref_scaled]
vref_pin: toolboard:PA7
vssa_pin: toolboard:PA6

Unfortunately toolboard_vref_scaled:toolboard:PB9 isn’t syntactically correct, “Invalid pin description ‘toolboard_vref_scaled:toolboard:PB9’ Format is: [chip_name:] pin_name”. If I omit the scaling / alias and change the line to sensor_pin: toolboard:PB9 I still end up with a pin collision error “pin PB9 is reserved for CAN”.

Ah ok looks like that is something used on Duet hardware.
After reading the 6Hc and 1LC sample configs I guess [adc_scaled vref_scaled] is for your 6HC and [adc_scaled toolboard_vref_scaled] is for the 1LC
Out of the schematics PB9 looks right
Sry

I will edit my comment with some strikethroughs :joy:

It’s all good. =)

I feel like the issue is trying to uses the Canable as a USB-to-CAN bus bridge, but I haven’t figured out the klipper setup to use the Canable with candlelight_fw (which seems to be possible if I’m reading things correctly). sudo ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0 returns Total 0 uuids found so I’m not sure how to address the hardware.

Just use the Canable with candleLight.
The only thing you need to configure is the can0 linux interface config.
The Canable does not get mentioned in your printer.cfg this way - only your toolhead gets.

If the candleLight Canable is connected, your can0 is as your initail post and klipper is stopped you should be able to discover uuids

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.