Can't connect to printer from Raspberry Pi

Unfortunately that didn't work. I verified that the LCD is no longer lighting up with the raspberry pi connected to the printer unless I turn the printer on. Before covering the pin with tape, the LCD backlight would turn on even if the printer was powered off and unplugged.

Trying port /dev/ttyACM0, baudrate 250000
Handshake attempt #1 with timeout 10.0s
Send: N0 M110 N0125
Handshake attempt #2 with timeout 10.0s
Send: N0 M110 N0
125
Handshake attempt #3 with timeout 10.0s
Send: N0 M110 N0*125

That is the intension with the tape to prevent backpowering:


How many USB cables did you try and what quality?

I've tried three and they all work just fine transferring data to and from my PC microphone. This printer uses a MINI USB port and not USB B.

I initially had an under power error but that was quickly resolved by switching power bricks used for the Pi. I'm pretty confident my USB cables are all good.

Creality's "this is a good cable" is VERY different than most devices (and humans) "this is a good cable". Cables which have the highest probability of working with Creality's printers are short, shielded, and have ferrite beads.

I see. That's a pain in the ass. If they had used USB B then i have about 20 cables that can handle the task. But Mini USB? I havent owned a good one since the PS2 days.

Well i just got back from Goodwill with a new cable marked USB 2.0 shielded with a ferrite tumbler and im having the same issue. I covered the power pin again.

Creality Printers are very susceptible to EMI interference plus they are EMI generators, a potentially wicked combination. For example, see My Creality Ender3 runs into a lot of communication issues. You can search this forum for "Creality EMI" and find other topics that contain potential fixes.

Also, please enable the serial.log in OctoPrint Settings (bottom of the Serial Connection page). This will capture the communications between OctoPrint and the printer which may help us troubleshoot. This log is included in the systeminfo bundle.

I've enabled the logging and attached a new copy to my original post. Here it is again:
octoprint-systeminfo-20230313182528.zip (63.7 KB)

After looking at your bundle it seems like the printer isn't responding at all. I'm wondering if the printer is even seen by the operating system. Please try the following and let us know.

  1. Unplug the USB cable to the printer.
  2. Login to the RPi via SSH (or a keyboard / monitor).
  3. Type sudo dmesg --clear (enter the pi password when prompted).
  4. Plug in the USB cable to the printer.
  5. Type dmesg >dmesg.log.
  6. Show us the (hopefully non-empty) contents of dmesg.log (use cat dmesg.log to look at it).

If the contents of dmesg.log is empty, then try another USB cable and keep trying cables until you see the printer being recognized by the operating system. OctoPrint can't connect to the printer if the operating system (OctoPi) can't see it.

[ 7841.884043] usb 1-1.3: new full-speed USB device number 7 using dwc_otg
[ 7842.018577] usb 1-1.3: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
[ 7842.018617] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 7842.018637] usb 1-1.3: Product: stm32f103xe
[ 7842.018654] usb 1-1.3: Manufacturer: Klipper
[ 7842.018671] usb 1-1.3: SerialNumber: 35FFD10542543939-----------
[ 7842.020700] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device

Honestly?

No wonder you do not get a connection.

Your printer once was utilized for the Klipper firmware solution.

Your OctoPrint setup misses the OctoKlipper plugin that is necessary to work with that.

The OctoKlipper plugin is not needed for a connection to OctoPrint at all, but you're on the right lines. OctoPrint can't communicate directly with the printer, it needs to communicate with the Klipper host that is installed on the Pi as well. Usually, Klipper then makes a serial port like /tmp/printer that OctoPrint connects to. See Installation - Klipper documentation for instructions.

The OctoKlipper plugin is an added bonus, but it is not the solution as you still need a working Klipper install & connection to OctoPrint first.

This is getting crazy. I feel like I'm setting up a gaming computer with linux in 1999.

OctoKlipper is the instance that communicates with the Klipper setup on the Pi.
And Klipper on the Pi communicates with the Klipper part on the printer.

It is to be known if Klipper is still on that Pi of the OP.

It doesn't say anything on that link about the OctoKlipper plugin. It describes connecting to /tmp/printer.

Sorry it isn't just plug and play but we are making progress! We have more questions, however...

Where did the printer come from (i.e. did you purchase it new or is it used)?

Since the printer appears to have Klipper firmware installed, you have two choices, install Klipper on your RPi or flash the printer with firmware based on Marlin.

I'd recommend returning to a Marlin-based firmware because there's more Marlin expertise in these forums but there are Klipper forums that could provide you with help in getting things working if you want to go that way.

If you stay with Klipper, make sure they support Debian 11 (Bullseye) as I believe that is the OS you have installed (OctoPi 1.0.0). If they only support Debian 10 (Buster), you would have to download OctoPi 0.18.0 and reimage your RPi.

Sure.

But it need some basic functionalities to control Klipper.
Or can you run Klipper on OctoPi/OctoPrint completely without a frontend?

But in all you are correct.

I'm trying to follow that guide but now I'm getting more errors trying to do the make flash command.

pi@octopi:~/klipper $ make flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32f103xe_35FFD1054254393922692257-if00
Flashing out/klipper.elf.hex to /dev/serial/by-id/usb-Klipper_stm32f103xe_35FFD1054254393922692257-if00 via avrdude
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x0d
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x10
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x49
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x47
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x81
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xbf
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x2b
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x82
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xbf
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x5b

avrdude done. Thank you.

make: *** [src/avr/Makefile:34: flash] Error 1

This name is implying to me that this board has an STM32F103 chip, which would be a 32 bit board not an 8 bit one, and so it won't flash with avrdude. I suspect that means your Klipper configuration is not correct. A 32 bit board in an Ender 3 would normally flash by putting a .bin file on an SD card and inserting it in the printer, then turning the printer on and waiting while it flashes, it doesn't take hex files which are for 8 bit boards. Unfortunately, Creality change the hardware on their printers so often that 'Ender 3' doesn't actually tell you much about what it has inside it, you will likely have to open it up and look at the board to see what version number is printed on the board (and it's bad enough that sometimes that is not enough :slightly_frowning_face:)

Is this a printer you have just got new, or 2nd hand from someone else? I guessed the latter, and I would say they might be able to help you get it setup if they are nice. To be honest wherever you got it from I would hope that they would be able to tell you how to get it to work, especially if it has been flashed with Klipper - this means that it is no longer plug & play - instead of the stock firmware (Marlin). If it's second hand, the previous user has setup this for themselves (I would guess) so they have done this all before and that would be good information.

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