Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pressing the restart button is needed always #2

Closed
dgrammatiko opened this issue Jan 30, 2022 · 91 comments
Closed

Pressing the restart button is needed always #2

dgrammatiko opened this issue Jan 30, 2022 · 91 comments

Comments

@dgrammatiko
Copy link

So I followed the instructions about getting a new firmware on the Pico, eg: on a plain board jumper on the usb-power, adding the boot number pressing the restart button then copying the file removing the boot number and then pressing the restart button.

The problem is that I always need to kill the Klipper service then press the restart button on the board and then restart the Klipper service

Use raspi-config to set the country before use.

pi@raspberrypi:~ $ ls /dev/serial/by-id/*
ls: cannot access '/dev/serial/by-id/*': No such file or directory
pi@raspberrypi:~ $ sudo service klipper stop
pi@raspberrypi:~ $ sudo service klipper stop
pi@raspberrypi:~ $ sudo service klipper stop
pi@raspberrypi:~ $ sudo service klipper start
pi@raspberrypi:~ $ ls /dev/serial/by-id/*
ls: cannot access '/dev/serial/by-id/*': No such file or directory
pi@raspberrypi:~ $ sudo service klipper stop
pi@raspberrypi:~ $ sudo service klipper start
pi@raspberrypi:~ $ ls /dev/serial/by-id/*
/dev/serial/by-id/usb-Klipper_rp2040_45503571280EB038-if00

I guess there's a bug in the boot loader

@Revilo91
Copy link

unfortunately i face the same issue, is there any help or bugfix for the future?

please reopen this issue

@dgrammatiko dgrammatiko reopened this Feb 18, 2022
@bartlammers
Copy link

Exactly the same here, really annoying having to press the button on the board each time, hoping it will work.

@bartlammers
Copy link

@dgrammatiko did you get this fixed somehow? Seeing as you closed it initially?

@dgrammatiko
Copy link
Author

@bartlammers no I switched back to my skr1.4 :(

@jlot2
Copy link

jlot2 commented Mar 10, 2022

I'm also experiencing the same issue both when trying to do a firmware restart via console, host reboot, or a save and restart after editing the printer.cfg file. It reconnects normally maybe 1 out of 20 times (I'm in the middle of setting up my V0 for the first time so there's lots of firmware restarts).

Each time doesn't work, my klippy.log shows the following:
mcu 'mcu': Starting serial connect
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00'
webhooks client 1929910032: New connection
webhooks client 1929910032: Client info {'program': 'Moonraker', 'version': 'v0.7.1-452-ga700725'}
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00'
mcu 'mcu': Unable to open serial port: [Errno 2] could not open port /dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00: [Errno 2] No such file or directory: '/dev/serial/by-id/usb-Klipper_rp2040_45503571278D5038-if00'

I'm also connecting my Pi Zero 2W to the pico via USB. I wonder if this is issue affects only when connected via USB. I don't have GPIO pins soldered on my Pi yet, so I can't try to replicate it over UART yet.

@jakep82
Copy link

jakep82 commented Mar 22, 2022

Same issue here. Board doesn't enumerate properly after bootup or a USB disconnect/reconnect. I've also tried UART and experience the same issue. After pressing the restart button on the board it connects properly and begins working, but this is a dealbreaker so I'll likely be requesting a return. Running Klipper Git version: v0.10.0-317-gb4b19b8f

After USB disconnect/reconnect

[  486.895871] usb 1-1.2: USB disconnect, device number 15
[  488.317369] usb 1-1.2: new full-speed USB device number 16 using dwc_otg
[  488.527389] usb 1-1.2: device descriptor read/64, error -32
[  488.847366] usb 1-1.2: device descriptor read/64, error -32
[  489.177381] usb 1-1.2: new full-speed USB device number 17 using dwc_otg
[  489.377368] usb 1-1.2: device descriptor read/64, error -32
[  489.697409] usb 1-1.2: device descriptor read/64, error -32
[  489.817473] usb 1-1-port2: attempt power cycle
[  490.577355] usb 1-1.2: new full-speed USB device number 18 using dwc_otg
[  491.017387] usb 1-1.2: device not accepting address 18, error -32
[  491.217424] usb 1-1.2: new full-speed USB device number 19 using dwc_otg
[  491.657397] usb 1-1.2: device not accepting address 19, error -32
[  491.657547] usb 1-1-port2: unable to enumerate USB device

After pressing reset button

[  494.717429] usb 1-1.2: new full-speed USB device number 20 using dwc_otg
[  494.951673] usb 1-1.2: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
[  494.951699] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  494.951714] usb 1-1.2: Product: rp2040
[  494.951729] usb 1-1.2: Manufacturer: Klipper
[  494.951744] usb 1-1.2: SerialNumber: 455035712814D208
[  494.953083] cdc_acm 1-1.2:1.0: ttyACM1: USB ACM device

@jlot2
Copy link

jlot2 commented Mar 22, 2022

@jakep82 I've since added the GPIO header to my Pi Zero 2 W and I'm definitely seeing this happen less, but it still happens occasionally. It's maybe 1 out of 10 times, but it's better than it happening 9 out of 10 times like it was over USB-C. I think it's usually when I make an update to my printer.cfg and do a "Save and Restart".

I have the back cover on my Voron V0.1, so I can't easily access the reset button on the Pico, so I've always just cycled the main power switch on the printer.

@jakep82
Copy link

jakep82 commented Mar 22, 2022

@jlot2 This doesn't work for me. The board won't connect after initial boot regardless of whether it's connected via USB or UART. I've fully updated my system and reflashed the board after a make distclean, but still no dice. It will only connect after pressing the reset button.

@bartlammers
Copy link

I contacted someone from BTT about this and they suggested it has to do with the power supply. No luck changing them up for me, but maybe it can help someone else?

@bartlammers
Copy link

To add, I tried with a different Pi (4) instead of my Zero2, to no effect. Also going to UART had no improvement.
Starting in bootloader mode does work well btw, so could it be a bootloader issue?

@jakep82
Copy link

jakep82 commented Mar 22, 2022

@bartlammers Are you saying it works if you leave the boot jumper on the board? That's probably the only thing I haven't tried, but I would be surprised if the board operated correctly with the jumper in place.

@bartlammers
Copy link

@bartlammers Are you saying it works if you leave the boot jumper on the board? That's probably the only thing I haven't tried, but I would be surprised if the board operated correctly with the jumper in place.

Indeed, but that does mean you are in bootloader mode and won't be able to run it, just flash

@NAPCAL
Copy link

NAPCAL commented May 22, 2022

Note: I am using the Raspberry Pi Pico official, not running into this issue via USB communications. Klipper shows v0.10.0-323-g80492432

@mitofun
Copy link

mitofun commented May 23, 2022

yep have the same issue
in order to start the klipper need to press the reset button on the skr pico
also the gcode for leds does not work!((((

@mitofun
Copy link

mitofun commented May 23, 2022

Note: I am using the Raspberry Pi Pico official, not running into this issue via USB communications. Klipper shows v0.10.0-323-g80492432

i consider the skr pico as the compact and small boars- once you use the usb it is not so compact so far! also the connection pins are not so confirtable for use! beter to solder it from the back and the cables position down instead of the sides! also very useful would be the thermosensors on tms drivers! and a fan switching on automaticall ) the radiator is uselss as it have not any use to get the temperature off the drivers!

@bartlammers
Copy link

Just installed a new SKR Pico that I ordered to test and with this one it works just fine it seems (did about 10 cold starts now, completely powering off in the meantime). Is there something changed compared to the first batch perhaps?

@mitofun
Copy link

mitofun commented May 24, 2022

mine dated 2022-3-14

@fraserws
Copy link

Any updates on this, mine is only working like 1 out of 10 times while changing nothing.

@fraserws
Copy link

Just to clarify, for me to temporarily solve this issue I must; restart the firmware via mainsail and press the reset button during the restart process, after which the green led comes on and the connection succeeds.

@mitofun
Copy link

mitofun commented Jun 12, 2022

The Btt sending the new board to me - regarding the issue the Btt subject me to do this one image
To sure cut these two pins but nothing works !

@mitofun
Copy link

mitofun commented Jun 12, 2022

image

@mitofun
Copy link

mitofun commented Jun 12, 2022

image

@mitofun
Copy link

mitofun commented Jun 12, 2022

Just to clarify, for me to temporarily solve this issue I must; restart the firmware via mainsail and press the reset button during the restart process, after which the green led comes on and the connection succeeds.
Will it start suscessfully after power recycle ?

@fraserws
Copy link

Ok, I seemed to have resolved this. The problem seemed to be the fact that i was adding unnecessary arguments in the boot config file as mainsailos was already reconfigured to work.

So if anyone is facing the same issue as me I recommend a clean install of mainsail and then to flash the board as usual and then adding the appropriate printer.cfg file to the pi.

Hope this helps.

@bartlammers
Copy link

Ok, I seemed to have resolved this. The problem seemed to be the fact that i was adding unnecessary arguments in the boot config file as mainsailos was already reconfigured to work.

So if anyone is facing the same issue as me I recommend a clean install of mainsail and then to flash the board as usual and then adding the appropriate printer.cfg file to the pi.

Hope this helps.

Weird then, how swapping the board for a new one solved the issues for me, not changing anything else on the Pi. Literally flashed the same compiled firmware to both boards.

@mitofun
Copy link

mitofun commented Jun 12, 2022

Ok, I seemed to have resolved this. The problem seemed to be the fact that i was adding unnecessary arguments in the boot config file as mainsailos was already reconfigured to work.

So if anyone is facing the same issue as me I recommend a clean install of mainsail and then to flash the board as usual and then adding the appropriate printer.cfg file to the pi.

Hope this helps.

Does not help in my case - waiting for a new board

@boverby
Copy link

boverby commented Jun 14, 2022

my setup has same problem. It tested without any obvious problems until last week when OS, klipper and moonraker were updated [apply forehead to desk].

These are the results of trying to revert klipper / FW back to dec 13 to match original firmware from skr pico GitHub page,

cd /home/pi/klipper
git reset 323268ea02700b2fd3b6accda310845ba29c894e

kiauh reports klipper now at v0.10.0-180
build firmware using kiauh

install jumper, reset

Jun 14 10:06:57 p6 kernel: [ 2055.249940] usb 1-1.4: USB disconnect, device number 9
Jun 14 10:06:57 p6 kernel: [ 2055.554286] usb 1-1.4: new full-speed USB device number 10 using dwc_otg
Jun 14 10:06:57 p6 kernel: [ 2055.686909] usb 1-1.4: New USB device found, idVendor=2e8a, idProduct=0003, bcdDevice= 1.00
Jun 14 10:06:57 p6 kernel: [ 2055.686928] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun 14 10:06:57 p6 kernel: [ 2055.686942] usb 1-1.4: Product: RP2 Boot
Jun 14 10:06:57 p6 kernel: [ 2055.686955] usb 1-1.4: Manufacturer: Raspberry Pi
Jun 14 10:06:57 p6 kernel: [ 2055.686967] usb 1-1.4: SerialNumber: E0C9125B0D9B
Jun 14 10:06:57 p6 kernel: [ 2055.687987] usb-storage 1-1.4:1.0: USB Mass Storage device detected
Jun 14 10:06:57 p6 kernel: [ 2055.688665] scsi host0: usb-storage 1-1.4:1.0
Jun 14 10:06:57 p6 mtp-probe: checking bus 1, device 10: "/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4"
Jun 14 10:06:57 p6 mtp-probe: bus: 1, device: 10 was not an MTP device
Jun 14 10:06:57 p6 kernel: [ 2055.751178] usbcore: registered new interface driver uas
Jun 14 10:06:57 p6 mtp-probe: checking bus 1, device 10: "/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4"
Jun 14 10:06:57 p6 mtp-probe: bus: 1, device: 10 was not an MTP device
Jun 14 10:06:58 p6 kernel: [ 2056.725520] scsi 0:0:0:0: Direct-Access     RPI      RP2              3    PQ: 0 ANSI: 2
Jun 14 10:06:58 p6 kernel: [ 2056.732852] sd 0:0:0:0: [sda] 262144 512-byte logical blocks: (134 MB/128 MiB)
Jun 14 10:06:58 p6 kernel: [ 2056.734307] sd 0:0:0:0: [sda] Write Protect is off
Jun 14 10:06:58 p6 kernel: [ 2056.754412] sd 0:0:0:0: Attached scsi generic sg0 type 0
Jun 14 10:06:58 p6 kernel: [ 2056.797987]  sda: sda1
Jun 14 10:06:58 p6 kernel: [ 2056.803892] sd 0:0:0:0: [sda] Attached SCSI removable disk

[ check of /proc/partitions show pico mounted as partition /dev/sda1 on my machine]

root@p6:/mnt# mkdir -p /mnt/sda1
root@p6:/mnt# mount /dev/sda1 /mnt/sda1
root@p6:/mnt# ls /mnt/sda1
INDEX.HTM  INFO_UF2.TXT

root@p6:/mnt# cp /home/pi/klipper/out/klipper.uf2 /mnt/sda1

first test
remove jumper, reset pico

Jun 14 10:09:00 p6 kernel: [ 2177.873961] usb 1-1.4: USB disconnect, device number 10
Jun 14 10:09:00 p6 kernel: [ 2178.394753] usb 1-1.4: new full-speed USB device number 11 using dwc_otg
Jun 14 10:09:00 p6 kernel: [ 2178.529548] usb 1-1.4: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
Jun 14 10:09:00 p6 kernel: [ 2178.529576] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun 14 10:09:00 p6 kernel: [ 2178.529608] usb 1-1.4: Product: rp2040
Jun 14 10:09:00 p6 kernel: [ 2178.529623] usb 1-1.4: Manufacturer: Klipper
Jun 14 10:09:00 p6 kernel: [ 2178.529637] usb 1-1.4: SerialNumber: 45503571270BC008
Jun 14 10:09:00 p6 kernel: [ 2178.530945] cdc_acm 1-1.4:1.0: ttyACM1: USB ACM device
Jun 14 10:09:00 p6 mtp-probe: checking bus 1, device 11: "/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4"
Jun 14 10:09:00 p6 mtp-probe: bus: 1, device: 11 was not an MTP device
Jun 14 10:09:00 p6 mtp-probe: checking bus 1, device 11: "/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4"
Jun 14 10:09:00 p6 mtp-probe: bus: 1, device: 11 was not an MTP device

root@p6:~# ls /dev/serial/by-id
usb-Klipper_rp2040_45503571270BC008-if00

firmware restart -- works

second test:
reboot pi host , pico still powered
no device created
reset required to reconnect

third test

power down pico (klipper will notice lost mcu)
reboot pi host
after host goes login, check fluidd page
   should report "unknown"
   klipper.log reports unable to open serial port
power up pico
   serial port is found and fluidd shows happy machine

This looks like the sensitivity to power up sequence means something has changed in the mcu resetting flowchart/command on klipper side

ps results same for

v0.10.0-180-g323268ea-dirty-20220614_100528-p6   ( my build from december git)
v0.10.0-181-ge9c37688   (github download)
v0.10.0-462-gea4f6d6a  (build from most current)

@boverby
Copy link

boverby commented Jun 20, 2022

continued discovery. Tried another raspberry pi 3 with older OS [buster] and never had klipper installed.

these lines are captured from journalctl: same result. I do not think it is on the pi side...

Jun 20 11:45:07 taz kernel: usb 1-1.3: new full-speed USB device number 4 using dwc_otg
...
Jun 20 11:45:07 taz kernel: usb 1-1.3: device descriptor read/64, error -32
Jun 20 11:45:07 taz kernel: usb 1-1.3: device descriptor read/64, error -32
Jun 20 11:45:07 taz kernel: usb 1-1.3: new full-speed USB device number 5 using dwc_otg
Jun 20 11:45:07 taz kernel: usb 1-1.3: device descriptor read/64, error -32
Jun 20 11:45:07 taz kernel: usb 1-1.3: device descriptor read/64, error -32
Jun 20 11:45:07 taz kernel: usb 1-1-port3: attempt power cycle
...
Jun 20 11:45:07 taz kernel: usb 1-1.3: new full-speed USB device number 7 using dwc_otg
...
Jun 20 11:45:08 taz kernel: usb 1-1.3: device not accepting address 7, error -32
Jun 20 11:45:08 taz kernel: usb 1-1-port3: unable to enumerate USB device

[press reset button on pico]

Jun 20 11:59:23 taz kernel: usb 1-1.3: new full-speed USB device number 8 using dwc_otg
Jun 20 11:59:23 taz kernel: usb 1-1.3: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
Jun 20 11:59:23 taz kernel: usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun 20 11:59:23 taz kernel: usb 1-1.3: Product: rp2040
Jun 20 11:59:23 taz kernel: usb 1-1.3: Manufacturer: Klipper
Jun 20 11:59:23 taz kernel: usb 1-1.3: SerialNumber: 45503571270BC008
Jun 20 11:59:23 taz mtp-probe[1449]: checking bus 1, device 8: "/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3"
Jun 20 11:59:23 taz mtp-probe[1449]: bus: 1, device: 8 was not an MTP device
Jun 20 11:59:23 taz kernel: cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device
Jun 20 11:59:23 taz kernel: usbcore: registered new interface driver cdc_acm
Jun 20 11:59:23 taz kernel: cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Jun 20 11:59:23 taz mtp-probe[1453]: checking bus 1, device 8: "/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3"
Jun 20 11:59:23 taz mtp-probe[1453]: bus: 1, device: 8 was not an MTP device

more discovery:
removed or commented out restart lines in [mcu] stanza. Now the board requires reset on power-up, but successfully finds serial port after additional klipper or firmware restarts. I suspect this because the pico is NOT restarted. (good news/bad news)

[mcu]
serial: /dev/serial/by-id/usb-Klipper_rp2040_45503571270BC008-if00
###restart_method: command   ### from github config
###restart_method: rpi_usb       ### earlier attempt to get usb to reset , did not work

@kaibsora
Copy link

kaibsora commented Feb 3, 2023

@thijstriemstra
Copy link

There's also a thorough document explaining this bug here: https://github.com/matthew-humphrey/3DP-Build-Log/blob/main/RP2040-USB-Bug/README.md

So glad i found that document, thanks @dflemstr

@two-cees
Copy link

two-cees commented Mar 26, 2023

What helped me running the skr pico over USB was to install CanBoot first and then run klipper on top over USB Canboot for SKR Pico in USB mode. Restarting now works 95% reliable for me.

This worked for me with two SKR Picos and a Picobilical. My RPI4 wouldn't even boot from a complete power off with all three RP2040 controllers plugged in. Now it at least turns on and recognizes the MCUs. Thanks!

@Abdallah-alhamadi
Copy link

Abdallah-alhamadi commented Mar 29, 2023

what worked for me is that i power up first desktop completely and check fluid is running (i don't have pi ) ....then power pico up from external power supply

@NAPCAL
Copy link

NAPCAL commented Mar 29, 2023

The RP2040 on the SKR Pico and Pico type boards; the RP2040 is a low current device and puts the USB connection to sleep (low power), and RPi and other devices stop detecting it on the USB port.

@ivek81cro
Copy link

Same problem, reset picobilical pcb every time

@jangrewe
Copy link

jangrewe commented Apr 8, 2023

What helped me running the skr pico over USB was to install CanBoot first and then run klipper on top over USB Canboot for SKR Pico in USB mode. Restarting now works 95% reliable for me.

Thank you, @Elias23! After spending a whole afternoon and nearly ripping the fsckin' SKR Pico out of my shiny new LDO v0 build, your CanBoot workaround seems to do the trick.

For clarification, if anybody else wants to try: You don't need to reconfigure your printer.cfg. All you'll be doing is adding CanBoot as a bootloader to the Pico, and then Klipper "after" that. No need for CAN2USB adapters or anything similar. Just flash CanBoot & Klipper, and move on with setting your printer up!

Thanks again, @Elias23! ❤️

@apollo-mg
Copy link

Can confirm. Working for me 100% of the time using CANBOOT as the bootloader, RPi Zero 2 W, UART/GPIO connection between them. What a great solution to a problem BTT refuses to acknowledge. Thanks to the person who figured this out!

@Dyllaann
Copy link

Dyllaann commented Apr 9, 2023

I'm having serious trouble getting CanBoot to work. Flashing exactly like instructions.

Using a Raspberry Pi 3B, trying to flash SKR Pico.
After successful flash, I remove the boot jumper and click the reset button once. While having dmesg -w open, all I see is this

[ 1080.789419] usb 1-1.3: USB disconnect, device number 69
[ 1081.097272] usb 1-1.3: new full-speed USB device number 70 using dwc_otg
[ 1096.493452] usb 1-1.3: device descriptor read/64, error -110
[ 1112.109581] usb 1-1.3: device descriptor read/64, error -110
[ 1112.297592] usb 1-1.3: new full-speed USB device number 71 using dwc_otg
[ 1127.725725] usb 1-1.3: device descriptor read/64, error -110
[ 1143.341865] usb 1-1.3: device descriptor read/64, error -110
[ 1143.450117] usb 1-1-port3: attempt power cycle
[ 1144.053859] usb 1-1.3: new full-speed USB device number 72 using dwc_otg
[ 1147.037874] usb 1-1.3: device not accepting address 72, error -32
[ 1152.441937] usb 1-1.3: new full-speed USB device number 74 using dwc_otg
[ 1156.286035] usb 1-1.3: new full-speed USB device number 75 using dwc_otg
[ 1157.237958] usb 1-1.3: device descriptor read/64, error -32
[ 1163.570052] usb 1-1.3: device descriptor read/64, error -32
[ 1163.758005] usb 1-1.3: new full-speed USB device number 76 using dwc_otg
[ 1179.182075] usb 1-1.3: device descriptor read/64, error -110
[ 1194.798227] usb 1-1.3: device descriptor read/64, error -110

Clicking the reset button again just adds another new full-speed USB device number XX using dwc_otg to the list, then to be followed by more error -110.
I have not yet managed to get anything show up under ls /dev/serial/by-id.

To clarify: hitting reset does not make it work for me. Doesn't matter how many times I press it.
Anyone seen this behavior and/or knows a fix?

@tpawyant
Copy link

What helped me running the skr pico over USB was to install CanBoot first and then run klipper on top over USB Canboot for SKR Pico in USB mode. Restarting now works 95% reliable for me.

Thank you, @Elias23! After spending a whole afternoon and nearly ripping the fsckin' SKR Pico out of my shiny new LDO v0 build, your CanBoot workaround seems to do the trick.

For clarification, if anybody else wants to try: You don't need to reconfigure your printer.cfg. All you'll be doing is adding CanBoot as a bootloader to the Pico, and then Klipper "after" that. No need for CAN2USB adapters or anything similar. Just flash CanBoot & Klipper, and move on with setting your printer up!

Thanks again, @Elias23! ❤️

Do you have a simple way of explaining you summary of what to do? My V02 is struggling with usb connectivity issues. Specifically the picobilical via USB.

@JoaquinBerrios
Copy link

Looks like this was addressed in a commit last week in Klipper. I built firmware for a couple of RP2040 boards using the fixed usbserial.c from this commit and they connect via USB with no issues so far. Just thought I would share for other having this issue to try and see if this resolves it for them.
Klipper3d/klipper@bec1d95

@tpawyant
Copy link

tpawyant commented May 3, 2023

I believe I applied the update last week, and about 3 prints later, I received the same error.

@tpawyant
Copy link

tpawyant commented May 3, 2023

Just happned as I was trying to print EM test cubes:
image

@hubertron
Copy link

Ok, I seemed to have resolved this. The problem seemed to be the fact that i was adding unnecessary arguments in the boot config file as mainsailos was already reconfigured to work.

So if anyone is facing the same issue as me I recommend a clean install of mainsail and then to flash the board as usual and then adding the appropriate printer.cfg file to the pi.

Hope this helps.

Can you show your new boot config?

@hubertron
Copy link

Looks like this was addressed in a commit last week in Klipper. I built firmware for a couple of RP2040 boards using the fixed usbserial.c from this commit and they connect via USB with no issues so far. Just thought I would share for other having this issue to try and see if this resolves it for them. Klipper3d/klipper@bec1d95

How would one get this? Update klipper in mainsail and reflash?

@JoaquinBerrios
Copy link

@hubertron, yes you should just need to update Klipper, rebuild the firmware for your MCUs and reflash. It's a good practice in general to keep the versions of Klipper on your host (pi) and MCUs at the same version. They usually work fine if the versions are close to each other, but may become incompatible when significant feature changes are introduced or deprecated if you only upgrade the host.

@slashbeast
Copy link

I, as many others, found this issue using Google, so I'd like to leave a note here.

I had similar issue to many of the above, RPi 4B 4GB were not booting with SKR Pico over USB unless I clicked the reset button on SKR Pico. It was deadlocking somewhere in bootloader.

I found that RPi 3B works just fine everytime, I flashed latest Klipper to SKR Pico and still the same thing.

Turns out my Raspberry Pi 4 were from buggy revision 'Rev 1.1'. I tried today the 'Rev 1.5' that have many things fixed, including support for USB-C PD, and SKR Pico no longer needs pressing the reset button, it just work, every time.

Anecdotal, but if you are facing this issue and no other fix worked for you, check your RPi revision

# dmesg |grep 'Machine model
[    0.000000] Machine model: Raspberry Pi 4 Model B Rev 1.5

Cheers.

@kaibsora
Copy link

kaibsora commented Aug 8, 2023

I, as many others, found this issue using Google, so I'd like to leave a note here.

I had similar issue to many of the above, RPi 4B 4GB were not booting with SKR Pico over USB unless I clicked the reset button on SKR Pico. It was deadlocking somewhere in bootloader.

I found that RPi 3B works just fine everytime, I flashed latest Klipper to SKR Pico and still the same thing.

Turns out my Raspberry Pi 4 were from buggy revision 'Rev 1.1'. I tried today the 'Rev 1.5' that have many things fixed, including support for USB-C PD, and SKR Pico no longer needs pressing the reset button, it just work, every time.

Anecdotal, but if you are facing this issue and no other fix worked for you, check your RPi revision

# dmesg |grep 'Machine model
[    0.000000] Machine model: Raspberry Pi 4 Model B Rev 1.5

Cheers.

While this might be the case, and I'm glad you have found a work around to your issue, I have it with a 3b+ and a btt cb1. My previous reply should point to the actual reason this happens, which is due to a widespread issue with rev 1 pico chips, not directly tied to the skr pico/ or rpi

@slashbeast
Copy link

Sorry to hijack the issue, seems like there's many issues that might give very similar problem here and perhaps this is why some solutions work for only subset of affected people. Was a bit hyped finding it out and decided to share it as it was really driving me nuts.

@ChaosBlades
Copy link

I think this issue should be reopened. It is still a valid ongoing issue for this board.

Pi4B Rev 1.5
RP2040 B2 Stepping
Latest version of Klipper Flashed

I have this issue 95% of the time via USB or UART. Plan on going through workarounds today.

@apollo-mg
Copy link

I think this issue should be reopened. It is still a valid ongoing issue for this board.

Pi4B Rev 1.5 RP2040 B2 Stepping Latest version of Klipper Flashed

I have this issue 95% of the time via USB or UART. Plan on going through workarounds today.

BTT is never going to do anything about it. CANBoot is about the only sure thing.

@apollo-mg
Copy link

@ChaosBlades
Copy link

BTT is never going to do anything about it. CANBoot is about the only sure thing.
https://github.com/Polar-Ted/RP2040Canboot_Install

Oh I am well aware. Still a valid open issue.

That was the first thing I tried. Just finished 10 power drains without a single connection problem.

@apollo-mg
Copy link

Nice! Glad someone stumbled on that a while back. Only realistic way to use these boards.

@andythilo
Copy link

I've just bought a LDO Voron 0.2 and came with a SKR Pico and Picobilical. Having this same issue with my RPI 4b. I've only just installed Klipper/Mailsail and complied firmwares for the SKR and Picobilical and if the RPI is powered from the Picobilcal, neither MCU will start. Both boards have to have their reset buttons pressed, then a firmware start in klipper for it to work. Has a fix been found for this? Looked at the Canboot but confused by the instructions lol

@slashbeast
Copy link

I've just bought a LDO Voron 0.2 and came with a SKR Pico and Picobilical. Having this same issue with my RPI 4b. I've only just installed Klipper/Mailsail and complied firmwares for the SKR and Picobilical and if the RPI is powered from the Picobilcal, neither MCU will start. Both boards have to have their reset buttons pressed, then a firmware start in klipper for it to work. Has a fix been found for this? Looked at the Canboot but confused by the instructions lol

I might be able to offer you some help, while I do not run katapult (formally known as canboot) on SKR Pico, I do have it on Manta and EBB boards.

  • First try if you need to reboot both MCUs if you flash latest 0.12 line of Klipper to those, chances are that you could have older Klipper currently there, that might help.
  • After that check cat /proc/cpuinfo and verify if you are not running RPi4 of revision older than 1.5, if it's the case, this will deadlock on boot on you anyway and this is not fault of RP2040.
  • Flash katapult built for rp2040 in USB mode, ignore entirely the CANBUS aspect of it, the idea here is that initial hardware initialization is done by katapult and it then just chain load klipper. You build and flash katapult, then you boot it by double-pressing the reset button, after that you use the katapult's scripts/flashtool.py to flash klipper built with 8kB offset on the board.

Hope that gets you running, if not, check Discord spaces of klipper and voron for more help.

@andythilo
Copy link

I've just bought a LDO Voron 0.2 and came with a SKR Pico and Picobilical. Having this same issue with my RPI 4b. I've only just installed Klipper/Mailsail and complied firmwares for the SKR and Picobilical and if the RPI is powered from the Picobilcal, neither MCU will start. Both boards have to have their reset buttons pressed, then a firmware start in klipper for it to work. Has a fix been found for this? Looked at the Canboot but confused by the instructions lol

I might be able to offer you some help, while I do not run katapult (formally known as canboot) on SKR Pico, I do have it on Manta and EBB boards.

  • First try if you need to reboot both MCUs if you flash latest 0.12 line of Klipper to those, chances are that you could have older Klipper currently there, that might help.
  • After that check cat /proc/cpuinfo and verify if you are not running RPi4 of revision older than 1.5, if it's the case, this will deadlock on boot on you anyway and this is not fault of RP2040.
  • Flash katapult built for rp2040 in USB mode, ignore entirely the CANBUS aspect of it, the idea here is that initial hardware initialization is done by katapult and it then just chain load klipper. You build and flash katapult, then you boot it by double-pressing the reset button, after that you use the katapult's scripts/flashtool.py to flash klipper built with 8kB offset on the board.

Hope that gets you running, if not, check Discord spaces of klipper and voron for more help.

Hi

Thanks for the reply. Klipper is latest, I've only just installed but will check. I've also only just bought the RPI, but again will check revision.

I'll have a look at flashing katapult but I'm quite a noob at all this so might be beyond me. I do perhaps have a much simpler (for me lol) solution which is to put a 24VDC timer relay on the MCU's. I tested this morning and it only needs 10s delay from powering the RPI to powering the MCUs for it all to work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests