G29 fails when saving on SBC
-
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? -
Can you post the results of m122 please?
-
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
-
Can you post the commands or macros you are using the create the heightmap? Does a simple g29 work to create heightmap.csv?
-
@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
-
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. -
@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
.
-
@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).
-
@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
-
@chrishamm
OK, I will give it a try and report back. Thanks -
@chrishamm
OK, obviously removing the square brackets fixed it. Out of curiosity, why are the brackets a problem on SBC? -
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.