USB oddity on Raspberry Pi with Ender 6 and other printers (power issue?)
I have two more-or-less identical setups using a Raspberry Pi (latest 4 with 4GB RAM). Both have the RPi camera, 1 usb camera and then 3 printers. They use the official power plug and no reports of voltage issues.
Setup1: 3x Voxelab Aquila
Setup2: 1x Aquila, 1x Creality Ender 3 V2 and added today 1x Creality Ender 6
All six printers use the same USB cable with the +ve blocked off. We have been running the setup for over a month 24/7 virtually and no issues.
I setup the Ender 6 today, and all was good. Then I moved the RPi and Ender 6 to their "home" and connected up the Aquila and Ender 3 again. However when I do this, the Ender 6 seems to have a melt down and the Ender 6 screen turns off. The ender 6 is stock firmware (latest) from Creality.
Troubleshoot led me to the connection of the Aquila and Ender 3, no matter if powered on, power lead connected but switched off or power lead off. I tested 5 different cables as well. No matter what the setup, the Ender 6 and the Aquila and/or the Ender 3 if connected at the same time the Ender 6 will not connect properly.
The Ender 3 and the Aquila are fine together. They have been running like 24/7 for over a month and continue to do so. Any idea what logs to look at? Could it be a limitation for data communication on the creality firmware.. seems weird one printer connecting will cause a second to stop.. when I have 3 on one RPi already.
Anyone use an Ender 6 with other printers, or maybe have some ideas? I assume its something to do with power or ground more than RS/RPi.
Console Log in RS for Ender 6:
1. Connected a second printer with the Ender 6
Mesg:22:38:30.331: Connection closed by os.
2. Removed second printer
Setup1: 3x Voxelab Aquila
Setup2: 1x Aquila, 1x Creality Ender 3 V2 and added today 1x Creality Ender 6
All six printers use the same USB cable with the +ve blocked off. We have been running the setup for over a month 24/7 virtually and no issues.
I setup the Ender 6 today, and all was good. Then I moved the RPi and Ender 6 to their "home" and connected up the Aquila and Ender 3 again. However when I do this, the Ender 6 seems to have a melt down and the Ender 6 screen turns off. The ender 6 is stock firmware (latest) from Creality.
Troubleshoot led me to the connection of the Aquila and Ender 3, no matter if powered on, power lead connected but switched off or power lead off. I tested 5 different cables as well. No matter what the setup, the Ender 6 and the Aquila and/or the Ender 3 if connected at the same time the Ender 6 will not connect properly.
The Ender 3 and the Aquila are fine together. They have been running like 24/7 for over a month and continue to do so. Any idea what logs to look at? Could it be a limitation for data communication on the creality firmware.. seems weird one printer connecting will cause a second to stop.. when I have 3 on one RPi already.
Anyone use an Ender 6 with other printers, or maybe have some ideas? I assume its something to do with power or ground more than RS/RPi.
Console Log in RS for Ender 6:
1. Connected a second printer with the Ender 6
Mesg:22:38:30.331: Connection closed by os.
2. Removed second printer
Mesg:22:38:39.438: Dtr: true Rts: true
Mesg:22:38:39.440: Connection started
Mesg:22:38:39.440: Printer reset requested false
Mesg:22:38:39.440: Dtr: false Rts: false
Mesg:22:38:39.462: Dtr: true Rts: true
Recv:22:38:39.647: Response while unconnected:I2C_EEPROM Check Successed!
Recv:22:38:39.647: I2C_EEPROM Check Successed!
Recv:22:38:39.735: Response while unconnected:***Initing card is OK***
Recv:22:38:39.735: ***Initing card is OK***
Recv:22:38:39.753: Response while unconnected:echo:SD card ok
Recv:22:38:39.753: echo:SD card ok
Recv:22:38:42.471: Send init commands because we had no signal from a reset, assuming reset not available.
Recv:22:38:42.472: pos absolute false
Send:22:38:42.472: N1 M110
Send:22:38:42.472: N3 M115 ; Get firmware capabilities and info
Send:22:38:42.472: N4 M220 S100 ; Speed multiplier 100%
Send:22:38:42.472: N5 M221 S100 ; Flow multiplier 100%
Send:22:38:42.472: N6 G92 E0
Send:22:38:42.472: N7 G90
Recv:22:38:42.472: pos absolute true
Send:22:38:42.472: N8 M82
Recv:22:38:44.534: Response while unconnected:===Initing RTS has finished===
Recv:22:38:44.534: ===Initing RTS has finished===
Recv:22:38:44.540: Response while unconnected:Error:Line Number is not Last Line Number+1, Last Line: 0
Recv:22:38:44.540: Error:Line Number is not Last Line Number+1, Last Line: 0
Recv:22:38:44.543: Resend: 1
Recv:22:38:44.543: Ignore due to resend: ok
Send:22:38:44.624: Resend: N1 M110
Recv:22:38:44.817: Response while unconnected:echo:Unknown command: "220 S100"
Recv:22:38:44.817: echo:Unknown command: "220 S100"
Recv:22:38:44.817: Connection verified by:ok
Recv:22:38:44.818: ok (2)
Send:22:38:44.818: Resend: N8 M82
Recv:22:38:44.825: Error:Line Number is not Last Line Number+1, Last Line: 1
Recv:22:38:44.827: Resend: 2
Recv:22:38:44.827: Ignore due to resend: ok
Send:22:38:44.921: Resend: N5 M221 S100 ; Flow multiplier 100%
Recv:22:38:44.929: Error:Line Number is not Last Line Number+1, Last Line: 2
Recv:22:38:44.931: Resend: 3
Recv:22:38:44.931: Ignore due to resend: ok
Send:22:38:45.013: Resend: N3 M115 ; Get firmware capabilities and info
Recv:22:38:45.035: FIRMWARE_NAME:Marlin Creality 3D SOURCE_CODE_URL:https://github.com/MarlinFirmware/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:Ender-6 EXTRUDER_COUNT:1 UUID:cede2a2f-41a2-4748-9b12-c55c62f367ff
Recv:22:38:45.037: Cap:SERIAL_XON_XOFF:0
Recv:22:38:45.040: Cap:BINARY_FILE_TRANSFER:0
Recv:22:38:45.040: Cap:EEPROM:1
Recv:22:38:45.043: Cap:VOLUMETRIC:1
Recv:22:38:45.045: Cap:AUTOREPORT_TEMP:1
Recv:22:38:45.046: Cap:PROGRESS:0
Recv:22:38:45.048: Cap:PRINT_JOB:1
Recv:22:38:45.048: Cap:AUTOLEVEL:0
Recv:22:38:45.051: Cap:Z_PROBE:0
Recv:22:38:45.051: Cap:LEVELING_DATA:0
Recv:22:38:45.054: Cap:BUILD_PERCENT:0
Recv:22:38:45.056: Cap:SOFTWARE_POWER:0
Recv:22:38:45.057: Cap:TOGGLE_LIGHTS:0
Recv:22:38:45.059: Cap:CASE_LIGHT_BRIGHTNESS:0
Recv:22:38:45.062: Cap:EMERGENCY_PARSER:0
Recv:22:38:45.065: Cap:PROMPT_SUPPORT:0
Recv:22:38:45.068: Cap:AUTOREPORT_SD_STATUS:0
Recv:22:38:45.068: Cap:THERMAL_PROTECTION:1
Recv:22:38:45.070: Cap:MOTION_MODES:0
Recv:22:38:45.074: Cap:CHAMBER_TEMPERATURE:0
Recv:22:38:45.074: ok
Send:22:38:45.074: Resend: N8 M82
Recv:22:38:45.081: Error:Line Number is not Last Line Number+1, Last Line: 3
Recv:22:38:45.084: Resend: 4
Recv:22:38:45.084: Ignore due to resend: ok
Send:22:38:45.166: Resend: N4 M220 S100 ; Speed multiplier 100%
Recv:22:38:45.173: ok
Send:22:38:45.174: Resend: N6 G92 E0
Recv:22:38:45.181: Error:Line Number is not Last Line Number+1, Last Line: 4
Recv:22:38:45.183: Resend: 5
Recv:22:38:45.183: Ignore due to resend: ok
Send:22:38:45.264: Resend: N5 M221 S100 ; Flow multiplier 100%
Recv:22:38:45.273: ok
Send:22:38:45.273: Resend: N7 G90
Recv:22:38:45.280: Error:Line Number is not Last Line Number+1, Last Line: 5
Recv:22:38:45.282: Resend: 6
Recv:22:38:45.282: Ignore due to resend: ok
Send:22:38:45.363: Resend: N6 G92 E0
Recv:22:38:45.376: ok
Send:22:38:45.376: Resend: N8 M82
Recv:22:38:45.383: Error:Line Number is not Last Line Number+1, Last Line: 6
Recv:22:38:45.386: Resend: 7
Recv:22:38:45.386: Ignore due to resend: ok
Send:22:38:45.467: Resend: N7 G90
Recv:22:38:45.474: ok
Send:22:38:45.474: Resend: N8 M82
Send:22:38:45.474: N9 G21 ; Use mm as unit
Send:22:38:45.474: N10 M114
Send:22:38:45.474: @getip
Send:22:38:45.477: N12 M155 S1
Send:22:38:45.477: M117 192.168.8.50:3344
Recv:22:38:45.489: ok (5)
Send:22:38:54.462: @getip
Send:22:38:54.465: M117 192.168.8.50:3344
Recv:22:38:54.470: ok
output from dmesg relating to the steps above
output from dmesg relating to the steps above
[ 1945.179229] usb 1-1.2: ch341-uart converter now attached to ttyUSB0 [ 1995.223521] ch341-uart ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32 [ 1995.224039] ch341-uart ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32 [ 1995.426165] usb 1-1.2: USB disconnect, device number 14 [ 1995.427102] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0 [ 1995.427193] ch341 1-1.2:1.0: device disconnected [ 1995.972992] usb 1-1.4: new full-speed USB device number 15 using xhci_hcd [ 1996.109103] usb 1-1.4: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64 [ 1996.109123] usb 1-1.4: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [ 1996.109139] usb 1-1.4: Product: USB Serial [ 1996.113854] ch341 1-1.4:1.0: ch341-uart converter detected [ 1996.119318] usb 1-1.4: ch341-uart converter now attached to ttyUSB0 [ 2003.551512] ch341-uart ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32 [ 2003.583034] ch341-uart ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32 [ 2003.619349] usb 1-1.4: USB disconnect, device number 15 [ 2003.620328] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0 [ 2003.620394] ch341 1-1.4:1.0: device disconnected [ 2004.173032] usb 1-1.2: new full-speed USB device number 16 using xhci_hcd [ 2004.309141] usb 1-1.2: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64 [ 2004.309160] usb 1-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [ 2004.309176] usb 1-1.2: Product: USB Serial [ 2004.313878] ch341 1-1.2:1.0: ch341-uart converter detected [ 2004.319372] usb 1-1.2: ch341-uart converter now attached to ttyUSB0
Comments
I am likely going to try the Marlin 2.0 fork by InsanityAutomation - https://github.com/InsanityAutomation/Marlin/tree/CrealityDwin_2.0
Firmware: https://github.com/InsanityAutomation/Marlin/blob/CrealityDwin_2.0/Hex Files/firmware_Ender6_DW7.4.bin.zip
Screen: https://github.com/InsanityAutomation/Marlin/blob/CrealityDwin_2.0/TM3D_DWINCombinedScreens_V4.7z
My Aquilas had their own version of Marlin 1.x from Voxelab/FlashForge and didnt disconnect like the E6 is doing. Hopefully this resolves my issue - I will test on Sunday most likely.
Plan B is a Klipper option.. https://3dprintbeginner.com/how-to-install-klipper-on-creality-ender-6/
Are all printers on the same 220V phase? To be 100% sure set in printer config USB Reconnect on Timeout to never.
I have updated the Ender 6 firmware to the InsanityAutomation version of Marlin 2.0.9 - I will test the USB issues tomorrow.
Both my Ender 3 and Aquila have a 24v LED bar attached to the power supply. I wonder if that is the underlying cause.
But strange i have a various mixture for Aqulias and Ender 3s all with the same LED bar and they dont have issues with each other..
I will dig into it further and will update as i progress, but seems it is a power issue.
I am unsure why the borrowed Ender 3 does not cause the issue, maybe when I opened the Ender 3/Aquila I caused the PSU earth to connect to the printer frame by damaging the paint coating.
I am building an enclosure, so the PSUs will be removed from the printer which will fix this issue for me.
But there can be a problem with earth since pi power supply has no own earth, so it gets it from printers and if they differ you might get in trouble like you.
But it works, and that is all that matters <span></span>. Thanks for the help, our details on the Power was spot on.
Anyway that worked. Another thing that helped ALOT was to tape over the 5v port on the USB cable to stop the NUC/Raspberry from sharing power with the Ender 6 which is causing noise / dirty power due to ground fault issues.
Once I did that it worked much better. I then added a UPS (battery backup) with proper voltage regulation and it 100% fixed everything. I live in a region with crappy power supply over main lines and it's not clean energy to be honest. The UPS and voltage regulator seems to help.
I suspect the USB port location on the Ender 6 combined with the metal frame pieces causes some grounding issues and with un-insulated USB connectors can cause noise on the lines. Isolating them and stopping the 5v transfer between the NUC/Pi and the Ender 6 helps. Just my 2 cents.
I ran a 2m cable out the bottom and added extra insulation around the areas it gets to the frame and at the board as an extra.
Now just have to get a good level bed... im trying the InsanityAutomation fork - https://github.com/InsanityAutomation/Marlin/tree/CrealityDwin_2.0
Firmware: https://github.com/InsanityAutomation/Marlin/blob/CrealityDwin_2.0/Hex Files/firmware_Ender6_DW7.4.bin.zip
Screen: https://github.com/InsanityAutomation/Marlin/blob/CrealityDwin_2.0/TM3D_DWINCombinedScreens_V4.7z
With the manual mesh option. Hopefully it works well soon haha.
If you want to go a step further you can just add a BLTouch and then compile Marlin (I am not saying Marlin is better, use whatever firmware, Repetier admins please don't delete this, I am not advertising some other firmware to be a jerk, I love your work), there is a Github repo with good notes: https://github.com/ginge/Ender6
Anyway compile Marlin 2.0.8 with the proper adjustments and flash it (with or even without a probe) and you will get way better results. The stock Creality firmware uses an old Marlin (but stable, I get it) and it has lots of useful bed level assistant options disabled.
With a probe + proper firmware the Ender 6 is a dream machine, hands down. If you spent the money on an Ender 6 it's worth the extra $ to just get a probe. Assuming you do get a probe (do it, trust me, I do this for a living and a passion, it's worth it with the Ender, even if you know how to level any other printer like a probe) - you can then use a simple Bed Level Visualizer, you just run a quick GCode command to get the probe data and paste it into a visualizer and you'll instantly see what adjustments to make - an example: https://mkdev.co.uk/mesh-visualizer/
Other print servers also have plugins for this and it's amazing. In fact, Repetier Server is so dang good I switched to it for our entire operation but that is the ONLY feature I miss. I seen a thread about the reasons why they haven't added this yet and it's complicated but we need it so bad.