Controlling Native Klipper Printers

Hi, I am looking at picking up some of the newer printers that run klipper natively, such as the Creality K1 or K1 max. Is this a problem for repetier-server to control a printer that has klipper natively installed? I already am using it to control a few Vorons but the version of klipper on those is the integrated into repetier-server. The newer klipper printers have klipper already running on them and repetier-server would be running on a separate computer.

Comments

  • Yes that is an issue. Our klipper integration needs a connection to klipper serial pipe and starting with next release also to the klipper api socket. This means the server should run on the same device where klipper is running.

    A connection to mainsail which is most likely running on the creality if it uses klipper is currently not possible.
  • I see so is this likely something that can never happen unless klipper and repetier are running on the same computer?
  • At least for a while. If we would use mainsail for printing we have to strip a lot of functions and need a different logic. This is planned at a later stage to handle simple hosts as well for printers having no other direct access.
  • It looks like Creality has made the K1 series open source and gives you root access to the operating system. I will see if I can install the arm32 version of repetier-server directly on the printer and just use the original klipper config files.
  • Great. Be aware that they use different users causing access problems. You can however change the user for server in /lib/systemd/system/RepetierServer.service to the one klipper uses. After running 
    sudo systemctl daemon-reload
    it should run as that use on next restart.
  • null
    @vanfidel did this ever go anywhere? Any luck with the k1's?
  • @tourniquet63 No the Creality K1 series uses a processor with MIPS architecture. Unless there were a MIPS repetier server version release it would not be possible.
  • edited September 23
    Repetier said:
    Great. Be aware that they use different users causing access problems. You can however change the user for server in /lib/systemd/system/RepetierServer.service to the one klipper uses. After running 
    sudo systemctl daemon-reload
    it should run as that use on next restart.

    I am looking at this same thing on another printer now. I have managed to get repetier-server running fine and controlling the klipper printer. I just installed klipper through repetier-server and configured everything and it works. Unfortunately with this setup the built in printer screen is kind of glitchy. I was able to point moonraker and fluidd to the repetier-server klipper installation so the screen kind of works but not great. I want to try and point repetier-server to the native klipper that is installed is this possible? I found in the printer config file it is looking for a serial communication but can you just point your printer in repetier somehow to the UDS socket?

    I tried to add a new printer and selecting klipper as the firmware and setting connection method to Pupe/UNIX Socket and putting in /tmp/klippy_uds as my socket but that doesnt seem to work.
  • Problem pointing to existing klipper fails normally for 2 reasons:
    1. Permission to write to pipe/sockets from klipper due to klipper running as a different user. You could modify the systemd starter to use pi as user instead of repetierserver but be aware that every update will recreate old user so you must fix it again then.
    2. API socket has not serial path + .api as filename

    Moonraker support is planned and would fix the problem as well when finished.
  • OK so I have modified my service as below but the klipper socket is still owned by repetierserver user.  I made a cron job that just changes the permissions every minute for my printer klipper socket but is there a way to make that socket owned by the user mks (as I am assuming I did correctly for the other repetierserver files)

    [Unit]
    Description=Repetier-Server 3D Printer Server
    After=network.target

    [Service]
    Type=forking
    PermissionsStartOnly=true
    LimitNICE=-20
    Nice=-20
    User=mks
    KillMode=process
    TimeoutStopSec=30
    User=repetierserver
    Environment="LC_ALL=C"
    ExecStartPre=/bin/mkdir -p /var/lib/Repetier-Server
    ExecStartPre=/bin/chown -R mks /var/lib/Repetier-Server
    ExecStart=/usr/local/Repetier-Server/bin/RepetierServer -c /usr/local/Repetier-Server/etc/RepetierServer.xml --daemon
    Restart=on-failure
    RestartSec=0
    TasksMax=infinity

    [Install]
    WantedBy=multi-user.target



  • You did not delete 
    User=repetierserver

    in systemd file just add one with mks so not sure which is used.

    socket user is the one running klipper when it creates the file. Our versions get started with repetierserver as user but as I understand you are using native klipper on that device.

    Run
    ps aux
    and see if any process is using repetierserver as user to find if all have same user.
Sign In or Register to comment.