Connection issues between 6HC and Pi 3B
-
Hi guys, having a lot of trouble getting my Duet 3 6HC talking to the SBC Pi. Really causing me a bit of a headache, been trying for nearly two days haha
Duet works with the Paneldue with a microsd in the Duet, and can move axis around using move functions, but once I remove the microsd from the duet, add the Pi with the cable it doesn't talk to it. Just says failed to connect to duet3 and failed to start Duet Control Server.
I have looked at trying to run it without, but would need to get a ethernet to wifi thingo as well and I need this up and running ASAP. It is also a very large printer, with 4 Z axis motors, a Toolboard, bltouch, lots of fans etc. so i would likely benefit from the easier firmware tweaks that the SBC would provide.
Not many posts on here which actually explain a solution to the issue, I do not have a case which interfers with the pins, just the provided ribbon cable plugged straight in( the correct way) also have both powered separately for now.
I have updated the Duet to V 3.3(from 3.1 that it was shipped with), confirmed via M115 in YAT
and the Pi 3B is running the latest DuetPi from github -
@alastair1 it would help people who can answer your question if you included your config file
-
A cable fault is not impossible; ribbon connectors can be a bit touchy if pulled around.
I'm running a 6HC and Pi setup, it's not given any problem at all; just put the DuetPi SD card in and everything started up, with the Pi powered from the Duet - twice - I did a full reload of the system after experimenting with beta firmware.
I'd suggest you try switching to power from the Duet, in case something is not synchronising properly?
Do you have a keyboard and monitor connected to the Pi & is the web control accessible through that?
-
Thanks guys, I'm not really sure why the config file would make a difference? Would that actually affect connection between the two via the cable?
I was planning to do the config after I got them talking, as it would put less wear and tear on the little microSD but I did a basic config using the reprap config tool and put it on the SD card( it should be attached) I still couldn't get them to talk. There are a lot of tweaks I need to make obviously for a fully custom, very large printer like this and taking the microsd in and out is already getting old.
I've also replaced the cable as well and hasn't solved it.
Kind of given up on the SBC for now, luckily from my understanding it doesn't really change the config. So just moving on with trying to get all the firmware written so I can start making spaghet
Can't get the 6HC to talk nicely to the Toolboard either over CAN unfortunately, the cable is 5 meters( can't be much less than this haha) and is a good quality, well made RJ11 urgh. I know the default CAN ID for the toolboard should be 121 and I do have that in my config. Both LEDs on as they should be on the Toolboard but no movement and CAN warnings on the PanelDue as expected.config_v4_wPi.g
-
@alastair1 lets sort out the SBC connection before the CAN connection
@alastair1 said in Connection issues between 6HC and Pi 3B:
DuetPi from github
I assume 3.3?What does M122 set from YAT report? there is a section on the SBC connection.
-
Thanks for the help! If I have the USB plugged into the Duet and give the M112 command via YAT I get "Emergency Stop! Reset the controller to continue." Not sure about SBC connection?
As an aside, I tested a much shorter RJ11 for the CAN but issue remains. Really appreciate the CAN status LEDs, great idea.
-
@alastair1 M122 not M112.
Please get the output over USB from duet 3 -
@jay_s_uk I'm blind , too many M115's
This is the full readout:
=== Diagnostics ===<LF>RepRapFirmware for Duet 3 MB6HC version 3.3 (2021-06-15 21:45:47) running on Duet 3 MB6HC v1.01 or later (standalone mode)<LF>Board ID: 08DJM-9P63L-DJ3T8-6JKD6-3SD6S-1U4M8<LF>Used output buffers: 1 of 40 (2 max)<LF>=== RTOS ===<LF>Static ram: 150904<LF>Dynamic ram: 91128 of which 64 recycled<LF>Never used RAM 112096, free system stack 192 words<LF>Tasks: NETWORK(ready,12.1%,548) HEAT(delaying,0.0%,403) Move(notifyWait,0.0%,352) CanReceiv(notifyWait,0.0%,944) CanSender(notifyWait,0.0%,374) CanClock(delaying,0.0%,339) TMC(notifyWait,7.5%,93) MAIN(running,79.8%,1114) IDLE(ready,0.6%,29), total 100.0%<LF>Owned mutexes: USB(MAIN)<LF>=== Platform ===<LF>Last reset 00:16:58 ago, cause: power up<LF>Last software reset time unknown, reason: User, GCodes spinning, available RAM 109240, slot 0<LF>Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a<LF>Error status: 0x00<LF>Aux0 errors 0,0,0<LF>Step timer max interval 125<LF>MCU temperature: min 19.7, current 23.4, max 23.6<LF>Supply voltage: min 23.8, current 23.9, max 23.9, under voltage events: 0, over voltage events: 0, power good: yes<LF>12V rail voltage: min 12.1, current 12.2, max 12.3, under voltage events: 0<LF>Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0<LF>Driver 0: position 0, standstill, reads 47642, writes 14 timeouts 0, SG min/max 0/0<LF>Driver 1: position 0, standstill, reads 47642, writes 14 timeouts 0, SG min/max 0/0<LF>Driver 2: position 0, standstill, reads 47642, writes 14 timeouts 0, SG min/max 0/0<LF>Driver 3: position 0, standstill, reads 47645, writes 11 timeouts 0, SG min/max 0/0<LF>Driver 4: position 0, standstill, reads 47645, writes 11 timeouts 0, SG min/max 0/0<LF>Driver 5: position 0, standstill, reads 47645, writes 11 timeouts 0, SG min/max 0/0<LF>Date/time: 1970-01-01 00:00:00<LF>Slowest loop: 1.98ms; fastest: 0.05ms<LF>=== Storage ===<LF>Free file entries: 10<LF>SD card 0 detected, interface speed: 25.0MBytes/sec<LF>SD card longest read time 9.5ms, write time 0.0ms, max retries 0<LF>=== Move ===<LF>DMs created 125, maxWait 0ms, bed compensation in use: none, comp offset 0.000<LF>=== MainDDARing ===<LF>Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1<LF>=== AuxDDARing ===<LF>Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1<LF>=== Heat ===<LF>Bed heaters = -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1<LF>=== GCodes ===<LF>Segments left: 0<LF>Movement lock held by null<LF>HTTP is idle in state(s) 0<LF>Telnet is idle in state(s) 0<LF>File is idle in state(s) 0<LF>USB is ready with "M122" in state(s) 0<LF>Aux is idle in state(s) 0<LF>Trigger is idle in state(s) 0<LF>Queue is idle in state(s) 0<LF>LCD is idle in state(s) 0<LF>SBC is idle in state(s) 0<LF>Daemon is idle in state(s) 0<LF>Aux2 is idle in state(s) 0<LF>Autopause is idle in state(s) 0<LF>Code queue is empty.<LF>=== CAN ===<LF>Messages queued 5098, received 0, lost 0, longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 49 (min 48), ts 5092/0/0<LF>Tx timeouts 0,0,5,0,0,0 last cancelled message type 30 dest 127<LF><LF>=== Network ===<LF>Slowest loop: 0.28ms; fastest: 0.00ms<LF>Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions<LF>HTTP sessions: 0 of 8<LF>- Ethernet -<LF>State: disabled<LF>Error counts: 0 0 0 0 0<LF>Socket states: 0 0 0 0 0 0 0 0<LF>ok<LF>
SBC is idle in state? Not sure if that means that the Duet is connected to it, but I can't get anything via the DWC when viewing the Pi HDMI output.
-
@alastair1 said in Connection issues between 6HC and Pi 3B:
(standalone mode)
this gives it away. The duet isn't booted in SBC mode.
Do you have an SD card installed?
Are you getting that M122 with the pi on and powered? -
Yes I did have it in that instance as I have been moving between the two trying to get something to work, after I removed it and rebooted with just the SBC microSD it remained in standalone according to the M122(as well as becoming completely unresponsive to the PanelDue, so I just reimaged the SBC microSD to have a "clean" DuetPi install. Then restarted the system with that reimaged SD in the SBC and nothing in the Duet 3, both HDMI output and the duet.local web interface just say failed to connect to duet3.local.
Doing the M122 readout again it does seem to be in SBC mode now, but obviously no functionality at all.
=== Diagnostics ===<LF>RepRapFirmware for Duet 3 MB6HC version 3.3 (2021-06-15 21:45:47) running on Duet 3 MB6HC v1.01 or later (SBC mode)<LF>Board ID: 08DJM-9P63L-DJ3T8-6JKD6-3SD6S-1U4M8<LF>Used output buffers: 1 of 40 (1 max)<LF>=== RTOS ===<LF>Static ram: 150904<LF>Dynamic ram: 59980 of which 0 recycled<LF>Never used RAM 143308, free system stack 200 words<LF>Tasks: SBC(ready,4.2%,606) HEAT(delaying,0.0%,405) Move(notifyWait,0.0%,352) CanReceiv(notifyWait,0.0%,944) CanSender(notifyWait,0.0%,374) CanClock(delaying,0.0%,339) TMC(notifyWait,7.0%,93) MAIN(running,88.8%,1272) IDLE(ready,0.0%,29), total 100.0%<LF>Owned mutexes: USB(MAIN)<LF>=== Platform ===<LF>Last reset 00:05:00 ago, cause: power up<LF>Last software reset time unknown, reason: User, GCodes spinning, available RAM 109240, slot 0<LF>Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a<LF>Error status: 0x00<LF>Step timer max interval 14997<LF>MCU temperature: min 14.4, current 23.3, max 23.5<LF>Supply voltage: min 23.8, current 23.9, max 23.9, under voltage events: 0, over voltage events: 0, power good: yes<LF>12V rail voltage: min 12.1, current 12.2, max 12.2, under voltage events: 0<LF>Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0<LF>Driver 0: position 0, standstill, reads 45558, writes 11 timeouts 0, SG min/max 0/0<LF>Driver 1: position 0, standstill, reads 45558, writes 11 timeouts 0, SG min/max 0/0<LF>Driver 2: position 0, standstill, reads 45558, writes 11 timeouts 0, SG min/max 0/0<LF>Driver 3: position 0, standstill, reads 45558, writes 11 timeouts 0, SG min/max 0/0<LF>Driver 4: position 0, standstill, reads 45558, writes 11 timeouts 0, SG min/max 0/0<LF>Driver 5: position 0, standstill, reads 45559, writes 11 timeouts 0, SG min/max 0/0<LF>Date/time: 1970-01-01 00:00:00<LF>Slowest loop: 0.12ms; fastest: 0.00ms<LF>=== Storage ===<LF>Free file entries: 10<LF>SD card 0 not detected, interface speed: 37.5MBytes/sec<LF>SD card longest read time 0.0ms, write time 0.0ms, max retries 0<LF>=== Move ===<LF>DMs created 125, maxWait 0ms, bed compensation in use: none, comp offset 0.000<LF>=== MainDDARing ===<LF>Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1<LF>=== AuxDDARing ===<LF>Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1<LF>=== Heat ===<LF>Bed heaters = -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1<LF>=== GCodes ===<LF>Segments left: 0<LF>Movement lock held by null<LF>HTTP is idle in state(s) 0<LF>Telnet is idle in state(s) 0<LF>File is idle in state(s) 0<LF>USB is ready with "m122" in state(s) 0<LF>Aux is idle in state(s) 0<LF>Trigger is idle in state(s) 0<LF>Queue is idle in state(s) 0<LF>LCD is idle in state(s) 0<LF>SBC is idle in state(s) 0<LF>Daemon is idle in state(s) 0<LF>Aux2 is idle in state(s) 0<LF>Autopause is idle in state(s) 0<LF>Code queue is empty.<LF>=== CAN ===<LF>Messages queued 1502, received 0, lost 0, longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 49 (min 49), ts 1502/0/0<LF>Tx timeouts 0,0,106,0,0,0 last cancelled message type 30 dest 127<LF><LF>=== SBC interface ===<LF>State: 0, failed transfers: 1, checksum errors: 0<LF>Last transfer: 271128ms ago<LF>RX/TX seq numbers: 0/1<LF>SPI underruns 0, overruns 0<LF>Disconnects: 0, timeouts: 0, IAP RAM available 0x2c83c<LF>Buffer RX/TX: 0/0-0<LF>ok<LF>
Something I have noticed is that when using BalenaEtcher it always seems to say imaging failed just before finishing the verification process, but when I use the Win32 Disk Imager there are no error notices etc. It is a 16GB SanDisk Class 10 microSD, but I have had it a while.
-
@alastair1 at least its in SBC mode now.
Can you post a photo of the cable between the pi and the duet 3?
and if the SBC boots to the desktop, I wouldn't be too worried yet, although it may be an idea to source another SD card just in case -
@alastair1
Make sure you use "run as administrator" when starting Balena Etcher on windows.It may fail otherwise.
-
This post is deleted! -
Seems to be working now, I obviously can't nail it down completely but I switched to a Pi 4B instead of the 3B and reimaged the same microSD with DuetPi-lite. I used the exact same wpa_supplicant file I previously made and I can now access it via Duet3.local
Making some progress in the config but still can't seem to get the toolboard talking which is a little frustrating. Just the constant red flashing indicator light. I have held both button 1 and 2 down from before I power it on until its fully booted but as soon as I release them it begins flashing again with no comms.
Learning to write the firmware is pretty fun!
-
@alastair1 what sequence of lights is the toolboard flashing?
Do you have a copy of the toolboard firmware in the /firmware directory?
-
Just continous, which matches with the no CAN communication error code.
Firmware is in firmware directory and is visible by DWC.
Wiring wise, I have a RJ11 cable up to the tool distribution board which is receiving 24v power and then a 4 pin cable to the toolboard. Distribution board is mounted above the extruder, so will move obviously but because minimising mass isn't critical seemed like a good way to do the wiring especially as my current requirements for the hotend are more than that toolboard can supply etc so need a SSR anyway.
I have the two jumpers removed from port 1 that it is wired to.
-
Is the red light on the toolboard flashing in time with the one on the main board? If so, it may be working OK.
Try sending M122 B121? The board address will have been reset to its default by the two button reset.
If it's not working I'd double-check all the wiring.
Do you have the termination jumper installed on the tool board next to CAN_OUT, and the CAN cable to CAN_IN ?
If it's a generic RJ11 cable, check it is wired identically at both ends - some reverse the wire sequence end to end.
Is it using the same power supply as the main board? If not, the grounds (PSU -) must be linked between the different power sources.
-
Yep it was a CAN wiring issue, thanks for that! it now flashes in time with the mainboard and is receiving packets when M122 is run. Unfortunately I am yet to be able to make the Toolboard actually drive anything or receive sensor inputs. Fans etc, heaters, thermistor etc. isn't working or reporting any value at all. May well be a configuration issue though and I have attached the current config as downloaded from DWCconfig.g
Additionally with homing I am having a lot of trouble getting the axis to move more than the say 5mm back off distance that is set, it simply just moves 5mm and stops each time, irrespective of the switch or not.
Currently I have my limit switches wired NO between the IN and GND of the respective IO ports.
Fun times and a lot of learning
-
I don't see anything obvious, but I am still learning the fine details of Duet configs myself...
Try adding this at the top of the file, between the general and drives sections?
; CAN Bus boot wait G4 S2 ;wait for expansion boards to start
-
Posting your config.g again to make it easy to read without downloading by using the </> formatting ; Configuration file for Duet 3 (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.5 on Mon Oct 25 2021 21:55:29 GMT+1100 (Australian Eastern Daylight Time) ; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Duet 3" ; set printer name ; Drives M569 P0.0 S1 ; physical drive 0.0 goes forwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M569 P0.2 S1 M569 P0.3 S1 ; physical drive 0.0 goes forwards M569 P0.4 S1 ; physical drive 0.1 goes forwards M569 P0.5 S1 ; physical drive 0.2 goes forwards M569 P121.0 S1 ; physical drive 121.0 goes forwards M584 X0.0 Y0.1 Z0.2:0.3:0.4:0.5 E121.0 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X44.44 Y44.44 Z640.00 E420.00 ; set steps per mm M566 X900.00 Y900.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2) M906 X2000 Y2000 Z2000 E1000 I50 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X500 Y1600 Z200 S0 ; set axis maxima ; Endstops M574 X2 S1 P"io1.in" ; configure switch-type (e.g. microswitch) endstop for high end on X via pin io1.in M574 Y1 S1 P"io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io2.in M574 Z2 S1 P"io3.in" ; configure switch-type (e.g. microswitch) endstop for high end on Z via pin io3.in ; Z-Probe M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed M557 X15:215 Y15:195 S20 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"121.temp0" Y"thermistor" B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin 121.temp0 M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S230 ; set temperature limit for heater 1 to 230C M302 S-300 R-300 ; Fans ; Tools M563 P0 S"extruder" D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; Custom settings are not defined
what happens when you run M98 P"0/sys/config.g"