Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    G29 fails when saving on SBC

    Scheduled Pinned Locked Moved
    General Discussion
    5
    12
    606
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Tapetenhobelundefined
      Tapetenhobel
      last edited by

      Hi,
      I replaced my Duet2 wifi with the mini and hooked it to a Raspberry Pi 4. Everything is running fine, but one of my macros fails when it's trying to read or save the heightmap.
      Errors are:

      Jan 23 15:42:33 duet3 DuetControlServer[5006]: [error] G29: Failed to load height map from file : Access to the path '/opt/dsf/sd/sys/' is denied.
      Jan 23 15:42:33 duet3 DuetControlServer[5006]: [info] 99 points probed, min error 0.004, max error 0.326, mean 0.157, deviation 0.085
      Jan 23 15:42:33 duet3 DuetControlServer[5006]: [info] Height map saved to file heightmap.csv
      Jan 23 15:42:33 duet3 DuetControlServer[5006]: [error] G29: Failed to save height map to file : Access to the path '/opt/dsf/sd/sys/' is denied.
      

      I'm using the official image, uploaded my, previously running, macros and the rest of the config, made some final touches and tried to print.
      The heightmap.csv is saved, but not with it's new name (65.0C_heightmap.csv) in sys.
      Are macros banned from reading and writing to sys?

      Sapphire Pro, Mini 5+, BLTouch, PanelDue 3 5"
      Anycubic i3 Mega, SKR 1.4, Klipper

      1 Reply Last reply Reply Quote 0
      • Phaedruxundefined
        Phaedrux Moderator
        last edited by

        Can you post the results of m122 please?

        Z-Bot CoreXY Build | Thingiverse Profile

        1 Reply Last reply Reply Quote 0
        • Tapetenhobelundefined
          Tapetenhobel
          last edited by

          Sure:

          === Diagnostics ===
          RepRapFirmware for Duet 3 Mini 5+ version 3.2 running on Duet 3 Mini5plus WiFi (SBC mode)
          Board ID: QVSU6-Y196U-D65J0-40KML-NF03Z-7NHS0
          Used output buffers: 1 of 40 (21 max)
          === RTOS ===
          Static ram: 98732
          Dynamic ram: 96024 of which 76 recycled
          Never used RAM 50384, free system stack 124 words
          Tasks: Linux(ready,103) HEAT(blocked,316) CanReceiv(blocked,947) CanSender(blocked,358) CanClock(blocked,360) TMC(blocked,75) MAIN(running,464) IDLE(ready,20) AIN(blocked,264)
          Owned mutexes: HTTP(MAIN)
          === Platform ===
          Last reset 00:12:40 ago, cause: software
          Last software reset at 2021-01-23 16:25, reason: User, none spinning, available RAM 50176, slot 1
          Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task Linu Freestk 0 n/a
          Error status: 0x00
          Aux0 errors 0,0,0
          Aux1 errors 0,0,0
          Supply voltage: min 0.0, current 24.1, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes
          Driver 0: position 17600, standstill, SG min/max 0/6, read errors 0, write errors 1, ifcnt 102, reads 43031, writes 19, timeouts 0, DMA errors 0
          Driver 1: position 0, standstill, SG min/max 0/20, read errors 0, write errors 1, ifcnt 102, reads 43031, writes 19, timeouts 0, DMA errors 0
          Driver 2: position 12262, standstill, SG min/max 0/72, read errors 0, write errors 1, ifcnt 104, reads 43028, writes 21, timeouts 0, DMA errors 0
          Driver 3: position 0, standstill, SG min/max 0/0, read errors 0, write errors 1, ifcnt 85, reads 43034, writes 12, timeouts 3, DMA errors 0, failedOp 0x71
          Driver 4: position 0, standstill, SG min/max 0/0, read errors 0, write errors 1, ifcnt 68, reads 43041, writes 9, timeouts 0, DMA errors 0
          Driver 5: position 0, assumed not present
          Driver 6: position 0, assumed not present
          Date/time: 2021-01-23 16:37:58
          Cache data hit count 1887771265
          Slowest loop: 178.55ms; fastest: 0.07ms
          === Storage ===
          Free file entries: 10
          SD card 0 not detected, interface speed: 0.0MBytes/sec
          SD card longest read time 0.0ms, write time 0.0ms, max retries 0
          === Move ===
          DMs created 83, maxWait 318940ms, bed compensation in use: mesh, comp offset -0.031
          === MainDDARing ===
          Scheduled moves 65, completed moves 65, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
          === AuxDDARing ===
          Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
          === Heat ===
          Bed heaters = 0 -1, chamberHeaters = -1 -1
          Heater 1 is on, I-accum = 0.0
          === GCodes ===
          Segments left: 0
          Movement lock held by null
          HTTP* is doing "M122" in state(s) 0
          Telnet is idle in state(s) 0
          File is idle in state(s) 0
          USB is idle in state(s) 0
          Aux is idle in state(s) 0
          Trigger* is idle in state(s) 0
          Queue is idle in state(s) 0
          LCD is idle in state(s) 0
          SBC is idle in state(s) 0
          Daemon is idle in state(s) 0
          Aux2 is idle in state(s) 0
          Autopause is idle in state(s) 0
          Code queue is empty.
          === CAN ===
          Messages queued 6851, send timeouts 6848, received 0, lost 0, longest wait 0ms for reply type 0, free buffers 16
          === SBC interface ===
          State: 4, failed transfers: 0
          Last transfer: 3ms ago
          RX/TX seq numbers: 26731/26731
          SPI underruns 0, overruns 0
          Number of disconnects: 0, IAP RAM available 0x10eec
          Buffer RX/TX: 0/0-0
          === Duet Control Server ===
          Duet Control Server v3.2.0
          Code buffer space: 4096
          Configured SPI speed: 8000000 Hz
          Full transfers per second: 35.20
          Maximum length of RX/TX data transfers: 2920/796
          

          Sapphire Pro, Mini 5+, BLTouch, PanelDue 3 5"
          Anycubic i3 Mega, SKR 1.4, Klipper

          1 Reply Last reply Reply Quote 0
          • Phaedruxundefined
            Phaedrux Moderator
            last edited by

            Can you post the commands or macros you are using the create the heightmap? Does a simple g29 work to create heightmap.csv?

            Z-Bot CoreXY Build | Thingiverse Profile

            Tapetenhobelundefined 1 Reply Last reply Reply Quote 0
            • Tapetenhobelundefined
              Tapetenhobel @Phaedrux
              last edited by

              @Phaedrux said in G29 fails when saving on SBC:

              Can you post the commands or macros you are using the create the heightmap? Does a simple g29 work to create heightmap.csv?

              Yes, the heightmap.csv is saved, but not with the new name. Loading the map from Console with the full path also works OK.
              Here's the macro, I think I found it here somewhere:

              ; 0:/macros/primeline.g
              ; Home axes, wait for temps, create heightmap, and wipe a primeline
               
              ; Determine if we need to Home first or not
              if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
                  G28		                                               ; Home all axes
               
              G90                                                        ; Absolute Positioning.
              G1 Z30 F1000                                               ; [BLTouch] Last chance to check nozzle cleanliness.
              
              G1 X110 Y110 F3000
                 G30
                 
              G29 S1 [P{"0:/sys/" ^ heat.heaters[0].active ^ "C_heightmap.csv"}] ; Load bed mesh for the slicer set bed temp.
              if result > 1                                             ; If the file doesn't exist, perform mesh and save.
                 M291 P{"Creating a height map for the bed temp of " ^ heat.heaters[0].active ^ "C."} T10
                 M150 R255 B255 P128 S10
                 M116                                                   ; Wait for temps
                 G29                                                    ; Perform mesh now.
                 G29 S3 [P{"0:/sys/" ^ heat.heaters[0].active ^ "C_heightmap.csv"}] ; Save heightmap.csv based on commanded temp
               
              M400                                                       ; Finish all moves, clear the buffer.
              M83                                                        ; Extruder relative mode.
              M116                                                       ; Wait for temps
               
              ; Charge! tune
              ;M98 P/macros/Tunes/Charge!.g	
              M150 R255 B255 P128 S20
              
              G1 Z3.0 F3000                                             ; move z up little to prevent scratching of surface
              G1 X0.1 Y20 Z0.3 F5000.0                                  ; move to start-line position
               
              M117 "Printing Wipe Line"
              G1 X0.1 Y200.0 Z0.3 F1500.0 E15                           ; draw 1st line
              G1 X0.4 Y200.0 Z0.3 F5000.0                               ; move to side a little
              G1 X0.4 Y20 Z0.3 F1500.0 E30                              ; draw 2nd line
               
              G92 E0                                                    ; reset extruder
              

              Sapphire Pro, Mini 5+, BLTouch, PanelDue 3 5"
              Anycubic i3 Mega, SKR 1.4, Klipper

              1 Reply Last reply Reply Quote 0
              • chrishammundefined
                chrishamm administrators
                last edited by chrishamm

                It sounds like you upgraded from an older version but for some reason the permissions were not correctly set. Please open a terminal on your Pi or connect over SSH and run this sudo chown -R dsf.dsf /opt/dsf. Then you should be able to save the heightmap again.

                I just tried to save a custom heightmap using G29 P"foo.csv" and it worked as expected.

                Duet software engineer

                Tapetenhobelundefined 1 Reply Last reply Reply Quote 0
                • Tapetenhobelundefined
                  Tapetenhobel @chrishamm
                  last edited by

                  @chrishamm said in G29 fails when saving on SBC:

                  It sounds like you upgraded from an older version but for some reason the permissions were not correctly set. Please open a terminal on your Pi or connect over SSH and run this sudo chown -R dsf.dsf /opt/dsf. Then you should be able to save the heightmap again.

                  I just tried to save a custom heightmap using G29 P"foo.csv" and it worked as expected.

                  Sorry for the late reply.
                  Well, that was my first ideal also, so I setup everything from scratch, same result, before I posted here 🙂
                  All the files where uploaded from DWC, so I assume they have their rights set correct.
                  The problem is: saving the heightmap works itself from DWC's Console, but not from the Macro above.
                  I realize that the topic is misleading, but I can't change it. To sum it up:

                  • Saving a heightmap with a different name (G29 P"foo.csv" from Console works fine, no issues
                  • Reading and saving a heightmap from within a macro leads to [error] G29: Failed to save height map to file : Access to the path '/opt/dsf/sd/sys/' is denied.

                  Sapphire Pro, Mini 5+, BLTouch, PanelDue 3 5"
                  Anycubic i3 Mega, SKR 1.4, Klipper

                  Vetiundefined 1 Reply Last reply Reply Quote 0
                  • chrishammundefined
                    chrishamm administrators
                    last edited by

                    @Tapetenhobel The square brackets are not needed so I'd remove them. But thanks for reporting this problem, I can confirm there is at least an issue with G29 (S0) when you attempt to save to a dynamic filename. That will be fixed in the next build but your macro shouldn't be affected anyway. I just tried G29 followed by G29 S3 and it worked as expected on my setup (without square brackets).

                    Duet software engineer

                    Tapetenhobelundefined 1 Reply Last reply Reply Quote 0
                    • Vetiundefined
                      Veti @Tapetenhobel
                      last edited by

                      @Tapetenhobel said in G29 fails when saving on SBC:

                      [error] G29: Failed to save height map to file : Access to the path '/opt/dsf/sd/sys/' is denied.

                      check the linux permission and ownership of that folder and the folders leading up to it

                      1 Reply Last reply Reply Quote 0
                      • Tapetenhobelundefined
                        Tapetenhobel @chrishamm
                        last edited by

                        @chrishamm
                        OK, I will give it a try and report back. Thanks

                        Sapphire Pro, Mini 5+, BLTouch, PanelDue 3 5"
                        Anycubic i3 Mega, SKR 1.4, Klipper

                        1 Reply Last reply Reply Quote 0
                        • Tapetenhobelundefined
                          Tapetenhobel
                          last edited by

                          @chrishamm
                          OK, obviously removing the square brackets fixed it. Out of curiosity, why are the brackets a problem on SBC?

                          Sapphire Pro, Mini 5+, BLTouch, PanelDue 3 5"
                          Anycubic i3 Mega, SKR 1.4, Klipper

                          1 Reply Last reply Reply Quote 0
                          • dc42undefined
                            dc42 administrators
                            last edited by dc42

                            G29 S0 (or G29 without parameters) does not support a filename parameter. See https://duet3d.dozuki.com/Wiki/Gcode#Section_G29_Mesh_bed_probe. This facility was supported when G29 was first introduced into RRF, but was removed subsequently because it required additional RAM. Use G29 S0 followed by G29 S3 to probe and save the height map to a named file.

                            Duet WiFi hardware designer and firmware engineer
                            Please do not ask me for Duet support via PM or email, use the forum
                            http://www.escher3d.com, https://miscsolutions.wordpress.com

                            1 Reply Last reply Reply Quote 1
                            • First post
                              Last post
                            Unless otherwise noted, all forum content is licensed under CC-BY-SA