bigtreetech / SKR-Pico

204 stars 45 forks source link

UART connection for Orange Pi Zero 2W #22

Open mysteryjeans opened 11 months ago

mysteryjeans commented 11 months ago

Uart cable connector for RX & TX should be separate from 5V, 5V & GND.

Orange Pi Zero 2W has reserved GPIO pin 8 & 10 for UART0 for debugging & console.

If RX & TX cable were separate, then UART5_TX on GPIO pin 11 and UART5_RX on GPIO pin 13 can be utilised.

serial: /dev/ttyS5 restart_method: command

Screenshot_20231031_144604_Drive

andriib-huma commented 5 months ago

@mysteryjeans Any solution found?

mysteryjeans commented 5 months ago

@andriib-huma I had to use USB LAN to setup WiFi. Using UART5 for data, check the picture & screenshot of BOM file.

WhatsApp Image 2024-04-18 at 4 25 10 PM

image

andriib-huma commented 5 months ago

@mysteryjeans Thanks for update. I tried to use UART5 and for some reason did not get any success. Used Debian Bullseye from OrangePi website. Tested UART5 pins according to this guide. Saw pings according to the test. Did't get it working for actual MCU connection. Only via USB connection. Can I ask you to share orangepi-config/System/Hardware config? Is there any extra steps that you did to make it work?

mysteryjeans commented 5 months ago

@andriib-huma did you compiled MCU firmware with UART5? You need to put MCU in boot mode before flashing firmware.

I followed this guide https://youtu.be/qtmPxSt6baU?si=DljXsvXGmKQBSn27

`[include shell_command.cfg] [include mainsail.cfg] [virtual_sdcard] path: /home/klipper/printer_data/gcodes on_error_gcode: CANCEL_PRINT

[mcu] serial: /dev/ttyS5 restart_method: command

[printer] kinematics: corexy max_velocity: 400

max_accel: 30000

max_accel_to_decel: 24000

max_accel: 10000 max_accel_to_decel: 8000 max_z_velocity: 30 max_z_accel: 500

square_corner_velocity: 18 # 5 is default value

[respond] default_type: echo default_prefix:

[force_move] enable_force_move: true

#####################################################################

X/Y/Z Stepper Settings

#####################################################################

[stepper_x] step_pin: gpio11 dir_pin: !gpio10 enable_pin: !gpio12 rotation_distance: 40 microsteps: 16 endstop_pin: tmc2209_stepper_x:virtual_endstop position_min: -3 position_endstop: -3 position_max: 224 homing_speed: 40 homing_retract_dist: 0

homing_positive_dir: true

[tmc2209 stepper_x] uart_pin: gpio9 tx_pin: gpio8 uart_address: 0 run_current: 0.9 diag_pin: ^gpio4 driver_SGTHRS: 90 interpolate: true stealthchop_threshold: 0

[stepper_y] step_pin: gpio6 dir_pin: gpio5 enable_pin: !gpio7 microsteps: 16 rotation_distance: 40

endstop_pin: ^gpio3

endstop_pin: tmc2209_stepper_y:virtual_endstop homing_retract_dist: 0 position_min: 0 position_endstop: 181 position_max: 181 homing_speed: 40

homing_positive_dir: true

[tmc2209 stepper_y] uart_pin: gpio9 tx_pin: gpio8 uart_address: 2 run_current: 0.9 diag_pin: ^gpio3 driver_SGTHRS: 85 interpolate: true stealthchop_threshold: 0

[stepper_z] step_pin: !gpio19 dir_pin: gpio28 enable_pin: !gpio2 microsteps: 32 rotation_distance: 8

endstop_pin: ^!gpio25

endstop_pin: tmc2209_stepper_z:virtual_endstop

endstop_pin: probe:z_virtual_endstop position_min: -1 position_max: 150 homing_speed: 10 homing_retract_dist: 0

[tmc2209 stepper_z] uart_pin: gpio9 tx_pin: gpio8 uart_address: 1 run_current: 0.9

diag_pin: ^gpio25

driver_SGTHRS: 90

stealthchop_threshold: 999999

#####################################################################

Extruder Settings

#####################################################################

[extruder] step_pin: gpio14 dir_pin: !gpio13 enable_pin: !gpio15 microsteps: 16

rotation_distance: 22.67895 Sherpa Micro

gear_ratio: 50:10 Sherpa Micro

rotation_distance: 53.494165 # LGX Lite gears clone, Hammingbird gear_ratio: 44:10, 37:17 # LGX Lite gears clone, Hammingbird full_steps_per_rotation: 200 nozzle_diameter: 0.4 filament_diameter: 1.75 heater_pin: gpio23 sensor_type: ATC Semitec 104NT-4-R025H42G sensor_pin: gpio27

control: pid

pid_Kp: 22.2

pid_Ki: 1.08

pid_Kd: 114

min_temp: 0 max_temp: 310 max_extrude_cross_section: 1 pressure_advance: 0.04

Sherpa Micro Annex Firmware

max_extrude_only_distance: 1400.0 max_extrude_only_velocity: 120.0 max_extrude_only_accel: 1500

[tmc2209 extruder] uart_pin: gpio9 tx_pin: gpio8 uart_address: 3 run_current: 0.700 hold_current: 0.500 stealthchop_threshold: 0 interpolate: true

#####################################################################

Probe

#####################################################################

[safe_z_home] home_xy_position: 100.2, 34.08

A X, Y coordinate (e.g. 100, 100) where the Z homing should be

performed. This parameter must be provided.

speed: 50.0

Speed at which the toolhead is moved to the safe Z home

coordinate. The default is 50 mm/s

z_hop: 5

Distance (in mm) to lift the Z axis prior to homing. This is

applied to any homing command, even if it doesn't home the Z axis.

If the Z axis is already homed and the current Z position is less

than z_hop, then this will lift the head to a height of z_hop. If

the Z axis is not already homed the head is lifted by z_hop.

The default is to not implement Z hop.

z_hop_speed: 15.0

Speed (in mm/s) at which the Z axis is lifted prior to homing. The

default is 15 mm/s.

move_to_previous: False

When set to True, the X and Y axes are reset to their previous

positions after Z axis homing. The default is False.

[output_pin probe_enable] pin: gpio29 # The control IO pin value: 0 # Probe default retracted

Probe deploy command

[gcode_macro PROBE_DOWN] gcode: SET_PIN PIN=probe_enable VALUE=1

Probe stow command

[gcode_macro PROBE_UP] gcode: SET_PIN PIN=probe_enable VALUE=0

[probe] pin: ^!gpio22 # The detection IO, ^ means high-level triggered, V2 should be ^! means low-level triggered. deactivate_on_each_sample: False x_offset: 9.98 # Actual installed offset of MicroProbe y_offset: 55.92 # Actual installed offset of MicroProbe

z_offset: 0.0 # Actual installed offset of MicroProbe

speed: 5 samples: 2 samples_tolerance: 0.02 activate_gcode: PROBE_DOWN G4 P500 # Allow 500 milliseconds for the probe to deploy deactivate_gcode: PROBE_UP

[filament_switch_sensor filament_sensor] switch_pin: ^!gpio16 pause_on_runout: TRUE event_delay: 1.0 pause_delay: 0.5

#####################################################################

Bed Settings

#####################################################################

[bed_screws] screw1: 20, 20 screw2: 200, 20 screw3: 200, 160 screw4: 20, 160

[bed_mesh] speed: 250 horizontal_move_z: 3 mesh_min: 20, 60 mesh_max: 200, 160 probe_count: 8, 8 fade_start: 1 fade_end: 10 fade_target: 0 algorithm: bicubic

[screws_tilt_adjust] screw1: 1, 0 screw1_name: front left screw screw2: 200, 0 screw2_name: front right screw screw3: 200, 120 screw3_name: rear right screw screw4: 1, 120 screw4_name: rear left screw horizontal_move_z: 5.0 speed: 200.0 screw_thread: CW-M3

[heater_bed] heater_pin: gpio21 sensor_type: EPCOS 100K B57560G104F sensor_pin: gpio26

control: pid

pid_Kp: 54.027

pid_Ki: 0.770

pid_Kd: 948.182

min_temp: 0 max_temp: 130

#####################################################################

Cooling Settings

#####################################################################

[heater_fan hotend_fan] pin: gpio20 heater: extruder heater_temp: 50.0

[fan] pin: gpio17

[heater_fan air_filter_fan] pin: gpio18 heater: heater_bed heater_temp: 45.0

#####################################################################

Sensor Settings

#####################################################################

[temperature_sensor skr_pico] sensor_type: temperature_mcu min_temp: 0 max_temp: 90

[temperature_sensor orangepi] sensor_type: temperature_host min_temp: 10 max_temp: 90

#####################################################################

Input Shaper

#####################################################################

[include PIS.cfg]

[input_shaper] shaper_freq_x: 69.8 shaper_type_x: mzv shaper_freq_y: 61.6 shaper_type_y: mzv

[gcode_shell_command plot_graph] command: bash /home/klipper/printer_data/config/scripts/plot_graphs.sh timeout: 500.0 verbose: True

#####################################################################

Macros

##################################################################### [gcode_macro M80] gcode: SET_STEPPER_ENABLE STEPPER=stepper_x ENABLE=1 SET_STEPPER_ENABLE STEPPER=stepper_y ENABLE=1 SET_STEPPER_ENABLE STEPPER=stepper_z ENABLE=1

[gcode_macro M600] gcode: PAUSE

[gcode_macro SENSORLESS_DELAY] gcode:

Pause to ensure driver stall flag is clear

G4 P2000

[gcode_macro SENSORLESS_HOME_X] gcode:

Home

G280 X
# Move away
G1 X{ printer.toolhead.axis_minimum.x + 5 } F3000
M400

[gcode_macro SENSORLESS_HOME_Y] gcode: G280 Y G1 Y{ printer.toolhead.axis_maximum.y - 5 } F3000 M400

[gcode_macro SENSORLESS_HOME_Z] gcode: {% if "z" in printer.toolhead.homed_axes %} G1 Z130 F1500 M400 G280 Z {% else %} G280 Z G1 Z{ printer.toolhead.axis_maximum.z - 8 } F1200 M400 G280 Z
{% endif %}

M400

[gcode_macro PROBE_HOME_Z] gcode: {% if "xy" not in printer.toolhead.homed_axes %} G280 {% else %} G280 Z {% endif %}

[gcode_macro G28] rename_existing: G280 gcode: {% set flag_O = params.O|default("false") %} {% set flag_X = params.X|default("false") %} {% set flag_Y = params.Y|default("false") %} {% set flag_Z = params.Z|default("false") %}

{% if (flag_Y == "false" and flag_X == "false" and flag_Z == "false") %} {% set flag_X = "true" %} {% set flag_Y = "true" %} {% set flag_Z = "true" %} {% endif %}

{% if flag_O !="false" and 'x' in printer.toolhead.homed_axes %} {% set flag_X = "false" %} {% endif %}

{% if flag_O !="false" and 'y' in printer.toolhead.homed_axes %} {% set flag_Y = "false" %} {% endif %}

{% if flag_O !="false" and 'z' in printer.toolhead.homed_axes %} {% set flag_Z = "false" %} {% endif %}

{% if flag_Y != "false" %} SENSORLESS_HOME_Y {% endif %}

{% if flag_X != "false" %} SENSORLESS_HOME_X {% endif %}

{% if flag_Z != "false" %} PROBE_HOME_Z {% endif %}

[gcode_macro START_PRINT] gcode: {% set BED_TEMP = params.BED|default(60)|int %} {% set EXTRUDER_TEMP = params.EXTRUDER|default(220)|int %} CLEAR_PAUSE

G90 ; use absolute coordinates G92 E0 ; reset extruder

M104 S0 ; Setting extruder temp to cool down without waiting

{% if "xyz" not in printer.toolhead.homed_axes %} G28 ; home all axis {% endif %}

SCREWS_TILT_CALCULATE MAX_DEVIATION=0.1 # Abort print if mesh deviation is > 0.1 G1 X{ printer.toolhead.axis_minimum.x + 5 } Y{ printer.toolhead.axis_maximum.y - 5 } Z50 F6000

M190 S{BED_TEMP} M104 S140

G28 Z

BED_MESH_CALIBRATE PROFILE=default

BED_MESH_PROFILE LOAD=default G1 X{ printer.toolhead.axis_minimum.x + 5 } Y{ printer.toolhead.axis_maximum.y - 5 } Z50 F6000

M109 S{EXTRUDER_TEMP} DRAW_LINE SPEED=1800 G1 E-1.5 F900

[gcode_macro CANCEL_PRINT] rename_existing: BASE_CANCEL_PRINT gcode: M220 S100 ; Reset Speed factor override percentage to default (100%) M221 S100 ; Reset Extrude factor override percentage to default (100%) G91 ; Set coordinates to relative {% if printer.extruder.temperature >= 170 %} G1 F1800 E-1 ; Retract filament 3 mm to prevent oozing {% endif %} ;if all axis are homed, lift the hotend to leave room for hot filament to ooze and to keep it clear of the bed. {% if printer.toolhead.homed_axes == "xyz" %} G1 F1200 Z20 ; Move Z Axis up 10 mm to allow filament ooze freely G90 ; Set coordinates to absolute G1 X{ printer.toolhead.axis_minimum.x + 5 } Y{ printer.toolhead.axis_maximum.y - 5 } F3600 ; Move Printer Head Out of Way ; M84 ; Disable stepper motors - don't so the gantry stays aligned {% endif %} ;set part fan speed to zero. M140 S0 M104 S0 M106 S0

CLEAR_PAUSE BASE_CANCEL_PRINT

[gcode_macro END_PRINT] gcode:

# Move nozzle away from print while retracting
G91 ;releative positioning
G1 E-2 F2700 ;Retract a bit
G1 E-2 Z0.2 F2400 ;Retract and raise Z
G1 X-3 Y-3 F3000 ;Wipe out
G1 Z10 F1800 ;Raise Z more

# Turn off bed, extruder, and fan
M140 S0
M104 S0
M106 S0

G90 ; Absolute Positioning
G1 X{ printer.toolhead.axis_minimum.x + 5 } Y{ printer.toolhead.axis_maximum.y - 5 } F6000 ; Move Printer Head Out of Way
M84 X Y E ;Disable all steppers but Z

[gcode_macro DRAW_LINE] gcode: {% set SPEED = params.SPEED|default(900)|int %} G92 E0 ;Reset Extruder G1 Z2.0 F1800 ;Move Z Axis up G1 X5.3 Y40 Z0.3 F5000 ;Move to start position G1 X5.3 Y140.0 Z0.3 F{SPEED} E10 ;Draw the first line G1 X5.0 Y140.0 Z0.3 F{SPEED} ;Move to side a little G1 X5.0 Y40 Z0.3 F{SPEED}.0 E20 ;Draw the second line G92 E0 ;Reset Extruder G1 Z2.0 F3000 ;Move Z Axis up

G4 P2000

[gcode_macro WAIT_FOR_BED_TEMP] gcode:

Parameters

{% set s = params.S|float %}

{% if (s-20) > 0 %}
    TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s-20} MAXIMUM={s+1}  ; Wait for bed temp (within 1 degree)
{% endif %}

[gcode_macro TEST_SPEED] gcode:

Speed

{% set speed  = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %}
# Iterations
{% set iterations = params.ITERATIONS|default(5)|int %}
# Acceleration
{% set accel  = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %}
# Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions)
{% set bound = params.BOUND|default(20)|int %}
# Size for small pattern box
{% set smallpatternsize = SMALLPATTERNSIZE|default(20)|int %}

# Large pattern
    # Max positions, inset by BOUND
    {% set x_min = printer.toolhead.axis_minimum.x + bound %}
    {% set x_max = printer.toolhead.axis_maximum.x - bound %}
    {% set y_min = printer.toolhead.axis_minimum.y + bound %}
    {% set y_max = printer.toolhead.axis_maximum.y - bound %}

# Small pattern at center
    # Find X/Y center point
    {% set x_center = (printer.toolhead.axis_minimum.x|float + printer.toolhead.axis_maximum.x|float ) / 2 %}
    {% set y_center = (printer.toolhead.axis_minimum.y|float + printer.toolhead.axis_maximum.y|float ) / 2 %}

    # Set small pattern box around center point
    {% set x_center_min = x_center - (smallpatternsize/2) %}
    {% set x_center_max = x_center + (smallpatternsize/2) %}
    {% set y_center_min = y_center - (smallpatternsize/2) %}
    {% set y_center_max = y_center + (smallpatternsize/2) %}

# Save current gcode state (absolute/relative, etc)
SAVE_GCODE_STATE NAME=TEST_SPEED

# Output parameters to g-code terminal
{ action_respond_info("TEST_SPEED: starting %d iterations at speed %d, accel %d" % (iterations, speed, accel)) }

# Home and get position for comparison later:
    M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
    G28
    # QGL if not already QGLd (only if QGL section exists in config)
    {% if printer.configfile.settings.quad_gantry_level %}
        {% if printer.quad_gantry_level.applied == False %}
            QUAD_GANTRY_LEVEL
            G28 Z
        {% endif %}
    {% endif %} 
    # Move 50mm away from max position and home again (to help with hall effect endstop accuracy - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/24)
    G90
    G1 X{printer.toolhead.axis_maximum.x-50} Y{printer.toolhead.axis_maximum.y-50} F{30*60}
    M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
    G28 X Y
    G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
    G4 P1000 
    GET_POSITION

# Go to starting position
G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60}

# Set new limits
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2}

{% for i in range(iterations) %}
    RESPOND PREFIX="TEST_SPEED:" MSG="{"starting iteration no %d at speed %d, accel %d" % (i + 1, speed, accel)}"
    # Large pattern diagonals
    G0 X{x_min} Y{y_min} F{speed*60}
    G0 X{x_max} Y{y_max} F{speed*60}
    G0 X{x_min} Y{y_min} F{speed*60}
    G0 X{x_max} Y{y_min} F{speed*60}
    G0 X{x_min} Y{y_max} F{speed*60}
    G0 X{x_max} Y{y_min} F{speed*60}

    # Large pattern box
    G0 X{x_min} Y{y_min} F{speed*60}
    G0 X{x_min} Y{y_max} F{speed*60}
    G0 X{x_max} Y{y_max} F{speed*60}
    G0 X{x_max} Y{y_min} F{speed*60}

    # Small pattern diagonals
    G0 X{x_center_min} Y{y_center_min} F{speed*60}
    G0 X{x_center_max} Y{y_center_max} F{speed*60}
    G0 X{x_center_min} Y{y_center_min} F{speed*60}
    G0 X{x_center_max} Y{y_center_min} F{speed*60}
    G0 X{x_center_min} Y{y_center_max} F{speed*60}
    G0 X{x_center_max} Y{y_center_min} F{speed*60}

    # Small patternbox
    G0 X{x_center_min} Y{y_center_min} F{speed*60}
    G0 X{x_center_min} Y{y_center_max} F{speed*60}
    G0 X{x_center_max} Y{y_center_max} F{speed*60}
    G0 X{x_center_max} Y{y_center_min} F{speed*60}
{% endfor %}

# Restore max speed/accel/accel_to_decel to their configured values
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel} 

# Re-home and get position again for comparison:
    M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
    G28 # This is a full G28 to fix an issue with CoreXZ - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/12
    # Go to XY home positions (in case your homing override leaves it elsewhere)
    G90
    G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
    G4 P1000 
    GET_POSITION

# Restore previous gcode state (absolute/relative, etc)
RESTORE_GCODE_STATE NAME=TEST_SPEED

[gcode_macro AXES_SHAPER_CALIBRATION] description: Run standard input shaper test for all axes gcode: {% set verbose = params.VERBOSE|default(true) %} {% set min_freq = params.FREQ_START|default(5)|float %} {% set max_freq = params.FREQ_END|default(133.3)|float %} {% set hz_per_sec = params.HZ_PER_SEC|default(1)|float %}

TEST_RESONANCES AXIS=X FREQ_START={min_freq} FREQ_END={max_freq} HZ_PER_SEC={hz_per_sec}
M400
TEST_RESONANCES AXIS=Y FREQ_START={min_freq} FREQ_END={max_freq} HZ_PER_SEC={hz_per_sec}
M400

{% if verbose %}
    RESPOND MSG="Graphs generation... Please wait a minute or two and look in the configured folder."
{% endif %}
RUN_SHELL_COMMAND CMD=plot_graph PARAMS=SHAPER

[gcode_macro BELTS_SHAPER_CALIBRATION] description: Run custom demi-axe test to analyze belts on CoreXY printers gcode: {% set verbose = params.VERBOSE|default(true) %} {% set min_freq = params.FREQ_START|default(5)|float %} {% set max_freq = params.FREQ_END|default(133.33)|float %} {% set hz_per_sec = params.HZ_PER_SEC|default(1)|float %}

TEST_RESONANCES AXIS=1,1 OUTPUT=raw_data NAME=b FREQ_START={min_freq} FREQ_END={max_freq} HZ_PER_SEC={hz_per_sec}
M400
TEST_RESONANCES AXIS=1,-1 OUTPUT=raw_data NAME=a FREQ_START={min_freq} FREQ_END={max_freq} HZ_PER_SEC={hz_per_sec}
M400

{% if verbose %}
    RESPOND MSG="Graphs generation... Please wait a minute or two and look in the configured folder."
{% endif %}
RUN_SHELL_COMMAND CMD=plot_graph PARAMS=BELTS

[gcode_macro EXCITATE_AXIS_AT_FREQ] description: Maintain a specified input shaper excitating frequency for some time to diagnose vibrations gcode: {% set FREQUENCY = params.FREQUENCY|default(25)|int %} {% set TIME = params.TIME|default(10)|int %} {% set AXIS = params.AXIS|default("x")|string|lower %}

TEST_RESONANCES OUTPUT=raw_data AXIS={AXIS} FREQ_START={FREQUENCY-1} FREQ_END={FREQUENCY+1} HZ_PER_SEC={1/(TIME/3)}
M400

*# <---------------------- SAVE_CONFIG ---------------------->

*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.

*

*# [extruder]

*# control = pid

*# pid_kp = 21.848

*# pid_ki = 1.601

*# pid_kd = 74.556

*

*# [heater_bed]

*# control = pid

*# pid_kp = 67.001

*# pid_ki = 2.774

*# pid_kd = 404.517

*

*# [probe]

*# z_offset = 0.570

*

*# [bed_mesh default]

*# version = 1

*# points =

*# 0.064375, 0.056250, 0.054375, 0.056250, 0.050625, 0.063125, 0.062500, 0.055000

*# 0.068125, 0.065000, 0.046250, 0.059375, 0.075000, 0.043125, 0.058750, 0.051875

*# 0.068750, 0.053750, 0.046875, 0.033125, 0.045000, 0.024375, 0.048750, 0.033750

*# 0.075000, 0.065000, 0.058750, 0.041875, 0.041250, 0.032500, 0.034375, 0.03`

andriib-huma commented 5 months ago

@mysteryjeans Thanks again. I was also inspired to give my first printer a new coat of paint because of The 100 Project)). So I was able to to make it work. Not sure why it didn't in the first place. But I reflashed the SD Card, enabled UART5, connected everything, and it worked.

So I will leave some of my steps for troubleshooting the issues.

  1. /boot/orangepiEnv.txt should look like this

verbosity=1 bootlogo=false console=both disp_mode=1920x1080p60 overlay_prefix=sun50i-h616 rootdev=UUID=6cd6cb54-48bc-4b6a-a615-2abfb7d74fe0 rootfstype=ext4 overlays=ph-uart5 dtoverlay=pi3-miniuart-bt usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

  1. My printer.cfg

[mcu] serial: /dev/ttyS5 restart_method: command

  1. Created the flash image using ./kiauh/kiauh.sh -> 4) [Advanced]-> 2) [Build only] -> Знімок екрана 2024-04-18 о 18 07 42

And then copied to BTT Pico with USB and Bootloader jumpers installed. Also before I copied, I pressed Reset button.

  1. Connected same as on attached picture by @mysteryjeans. And it worked. (Didn't work for the first time, and I still not sure why)