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

    Duet 3 and jetson Nano?

    Scheduled Pinned Locked Moved
    General Discussion
    8
    111
    9.4k
    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.
    • gtj0undefined
      gtj0
      last edited by

      Those packages have been up there for a while now but both @chrishamm and I forgot to tell anyone. šŸ™‚

      1 Reply Last reply Reply Quote 1
      • HebigTundefined
        HebigT
        last edited by HebigT

        @gtj0

        I did a fresh install (both L4T & DSF) and I'm running into an issue:

        Monitoring DCS shows "Kernel SPI buffer" warning & "Duet is not available"

        jpomo@jpomo-desktop:~$ sudo /opt/dsf/bin/DuetControlServer
        Duet Control Server v1.2.3.0
        Written by Christian Hammacher for Duet3D
        Licensed under the terms of the GNU Public License Version 3
        
        [info] Settings loaded
        [info] Environment initialized
        **[warn] Kernel SPI buffer size is smaller than RepRapFirmware buffer size (4096 configured vs 8192 required)
        [error] Duet is not available**
        
        

        Here are my config files -

        http.json:

        {
          "Logging": {
            "LogLevel": {
              "Default": "Information"
            }
          },
          "Kestrel": {
            "Endpoints": {
              "Http": {
                "Url": "http://127.0.0.1"
              }
            }
          },
          "KeepAliveInterval": 30,
          "ModelRetryDelay": 5000,
          "UseCors": true,
          "UseStaticFiles": true,
          "SocketPath": "/var/run/dsf/dcs.sock",
          "WebSocketBufferSize": 8192
        }
        

        config.json

          "LogLevel": "info",
          "SocketDirectory": "/var/run/dsf",
          "SocketFile": "dcs.sock",
          "Backlog": 4,
          "SocketPollInterval": 2000,
          "BaseDirectory": "/opt/dsf/sd",
          "HostUpdateInterval": 4000,
          "ConfigUpdateInterval": 5000,
          "MaxMessageAge": 60.0,
          "SpiDevice": "/dev/spidev0.0",
          "SpiFrequency": 1000000,
          "SpiTransferTimeout": 500,
          "MaxSpiRetries": 3,
          "SpiPollDelay": 25,
          "GpioChipDevice": "/dev/gpiochip0",
          "TransferReadyPin": 13,
          "BufferedPrintCodes": 32,
          "BufferedMacroCodes": 16,
          "MaxBufferSpacePerChannel": 1536,
          "ModelUpdateInterval": 125,
          "MaxMachineModelLockTime": -1,
          "FileInfoReadLimitHeader": 12288,
          "FileInfoReadLimitFooter": 262144,
          "MaxLayerHeight": 0.9,
        

        Additonally,

        sudo systemctl status duetcontrolserver:

        jpomo@jpomo-desktop:~$ sudo systemctl status duetcontrolserver
        ā— duetcontrolserver.service - Duet Control Server
           Loaded: loaded (/usr/lib/systemd/system/duetcontrolserver.service; enabled; vendor preset: ena
           Active: active (running) since Mon 2020-01-13 13:09:55 MST; 589ms ago
         Main PID: 17421 (DuetControlServ)
            Tasks: 9 (limit: 4182)
           CGroup: /system.slice/duetcontrolserver.service
                   └─17421 /opt/dsf/bin/DuetControlServer
        
        Jan 13 13:09:55 jpomo-desktop systemd[1]: Started Duet Control Server.
        Jan 13 13:09:56 jpomo-desktop DuetControlServer[17421]: Duet Control Server v1.2.3.0
        Jan 13 13:09:56 jpomo-desktop DuetControlServer[17421]: Written by Christian Hammacher for Duet3D
        Jan 13 13:09:56 jpomo-desktop DuetControlServer[17421]: Licensed under the terms of the GNU Publi
        
        

        sudo systemctl status duetwebserver:

        ā— duetwebserver.service - Duet Web Server
           Loaded: loaded (/usr/lib/systemd/system/duetwebserver.service; enabled; vendor preset: enabled)
           Active: active (running) since Mon 2020-01-13 12:52:11 MST; 18min ago
         Main PID: 4592 (DuetWebServer)
            Tasks: 19 (limit: 4182)
           CGroup: /system.slice/duetwebserver.service
                   └─4592 /opt/dsf/bin/DuetWebServer
        
        Jan 13 13:10:26 jpomo-desktop DuetWebServer[4592]:    at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
        Jan 13 13:10:26 jpomo-desktop DuetWebServer[4592]:    at DuetAPIClient.BaseConnection.Connect(ClientInitMessage initMessage, String socketPath, CancellationToken cancellationToken
        Jan 13 13:10:26 jpomo-desktop DuetWebServer[4592]:    at DuetWebServer.Services.ModelObserver.Execute() in /home/christian/duet/DuetSoftwareFramework/src/DuetWebServer/Services/Mo
        Jan 13 13:10:31 jpomo-desktop DuetWebServer[4592]: warn: DuetWebServer.Services.ModelObserver[0]
        Jan 13 13:10:31 jpomo-desktop DuetWebServer[4592]:       Failed to synchronize machine model
        Jan 13 13:10:31 jpomo-desktop DuetWebServer[4592]: System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (99): Cannot assign requested address /var/run/dsf/dcs.sock
        Jan 13 13:10:31 jpomo-desktop DuetWebServer[4592]:    at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
        Jan 13 13:10:31 jpomo-desktop DuetWebServer[4592]:    at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
        Jan 13 13:10:31 jpomo-desktop DuetWebServer[4592]:    at DuetAPIClient.BaseConnection.Connect(ClientInitMessage initMessage, String socketPath, CancellationToken cancellationToken
        Jan 13 13:10:31 jpomo-desktop DuetWebServer[4592]:    at DuetWebServer.Services.ModelObserver.Execute() in /home/christian/duet/DuetSoftwareFramework/src/DuetWebServer/Services/Mo
        

        As far as I know, I have set the correct GPIO pin and SPI frequency.

        Any advice is appreciated!

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

          Have a look at the note in https://duet3d.dozuki.com/Wiki/Getting_Started_With_Duet_3#Section_Enabling_SPI I haven't tested this on a Jetson Nano, though.

          Duet software engineer

          1 Reply Last reply Reply Quote 0
          • gtj0undefined
            gtj0
            last edited by

            @jpomo10 It's an easy fix...

            Create a file named /etc/modprobe.d/spidev.conf and put 1 line in it...

            options spidev bufsiz=8192
            

            Then reboot. You should be good to go after that.

            1 Reply Last reply Reply Quote 0
            • HebigTundefined
              HebigT
              last edited by

              @chrishamm @gtj0

              Thank you for your help on this.

              @gtj0 said in Duet 3 and jetson Nano?:

              @jpomo10 It's an easy fix...

              Create a file named /etc/modprobe.d/spidev.conf and put 1 line in it...

              options spidev bufsiz=8192
              

              Then reboot. You should be good to go after that.

              This fixed the buffersize problem, but still getting Duet is not available:

              jpomo@jpomo-desktop:~$ sudo /opt/dsf/bin/DuetControlServer
              Duet Control Server v1.2.3.0
              Written by Christian Hammacher for Duet3D
              Licensed under the terms of the GNU Public License Version 3
              
              [info] Settings loaded
              [info] Environment initialized
              [error] Duet is not available
              
              

              Any other ideas of what might be causing it?

              Thanks!

              1 Reply Last reply Reply Quote 0
              • gtj0undefined
                gtj0
                last edited by gtj0

                What's the contents of /opt/dsf/conf/config.json ?

                Also start duetcontrolserver with -l debug

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

                  My best guess is that you don't have the GPIO pin for the transfer ready line configured yet. Unfortunately this part is a bit counter-intuitive because the pin index in the gpiochip device likely varies from the sysfs index but with the right tool you can dump the indices and figure out what device/index you need to use.

                  Duet software engineer

                  gtj0undefined 1 Reply Last reply Reply Quote 0
                  • HebigTundefined
                    HebigT @gtj0
                    last edited by

                    @gtj0

                    {
                      "LogLevel": "info",
                      "SocketDirectory": "/var/run/dsf",
                      "SocketFile": "dcs.sock",
                      "Backlog": 4,
                      "SocketPollInterval": 2000,
                      "BaseDirectory": "/opt/dsf/sd",
                      "HostUpdateInterval": 4000,
                      "ConfigUpdateInterval": 5000,
                      "MaxMessageAge": 60.0,
                      "SpiDevice": "/dev/spidev0.0",
                      "SpiFrequency": 500000,
                      "SpiTransferTimeout": 500,
                      "MaxSpiRetries": 3,
                      "SpiPollDelay": 25,
                      "GpioChipDevice": "/dev/gpiochip0",
                      "TransferReadyPin": 13,
                      "BufferedPrintCodes": 32,
                      "BufferedMacroCodes": 16,
                      "MaxBufferSpacePerChannel": 1536,
                      "ModelUpdateInterval": 125,
                      "MaxMachineModelLockTime": -1,
                      "FileInfoReadLimitHeader": 12288,
                      "FileInfoReadLimitFooter": 262144,
                      "MaxLayerHeight": 0.9,
                      "LayerHeightFilters": [
                        {
                          "Pattern": "layer_height\\D\u002B(?\u003Cmm\u003E(\\d\u002B\\.?\\d*))",
                          "Options": 17
                        },
                        {
                          "Pattern": "Layer height\\D\u002B(?\u003Cmm\u003E(\\d\u002B\\.?\\d*))",
                          "Options": 17
                        },
                        {
                          "Pattern": "layerHeight\\D\u002B(?\u003Cmm\u003E(\\d\u002B\\.?\\d*))",
                          "Options": 17
                        },
                        {
                          "Pattern": "layer_thickness_mm\\D\u002B(?\u003Cmm\u003E(\\d\u002B\\.?\\d*))",
                          "Options": 17
                        },
                        {
                          "Pattern": "layerThickness\\D\u002B(?\u003Cmm\u003E(\\d\u002B\\.?\\d*))",
                          "Options": 17
                        }
                      ],
                      "FilamentFilters": [
                        {
                          "Pattern": "filament used\\D\u002B(((?\u003Cmm\u003E\\d\u002B\\.?\\d*)mm)(\\D\u002B)?)\u002B",
                          "Options": 17
                        },
                        {
                          "Pattern": "filament used\\D\u002B(((?\u003Cm\u003E\\d\u002B\\.?\\d*)m([^m]|$))(\\D\u002B)?)\u002B",
                          "Options": 17
                        },
                        {
                          "Pattern": "material\\#\\d\u002B\\D\u002B(?\u003Cmm\u003E\\d\u002B\\.?\\d*)",
                          "Options": 17
                        },
                        {
                          "Pattern": "filament length\\D\u002B(((?\u003Cmm\u003E\\d\u002B\\.?\\d*)\\s*mm)(\\D\u002B)?)\u002B",
                          "Options": 17
                        },
                        {
                          "Pattern": "Filament used per extruder:\\r\\n;\\s*(?\u003Cname\u003E.\u002B)\\s\u002B=\\s*(?\u003Cmm\u003E[0-9.]\u002B)",
                          "Options": 17
                        }
                      ],
                      "GeneratedByFilters": [
                        {
                          "Pattern": "generated by\\s\u002B(.\u002B)",
                          "Options": 17
                        },
                        {
                          "Pattern": ";\\s*Sliced by\\s\u002B(.\u002B)",
                          "Options": 17
                        },
                        {
                          "Pattern": ";\\s*(KISSlicer.*)",
                          "Options": 17
                        },
                        {
                          "Pattern": ";\\s*Sliced at:\\s*(.\u002B)",
                          "Options": 17
                        },
                        {
                          "Pattern": ";\\s*Generated with\\s*(.\u002B)",
                          "Options": 17
                        }
                      ],
                      "PrintTimeFilters": [
                        {
                          "Pattern": "estimated printing time = ((?\u003Ch\u003E(\\d\u002B))h\\s*)?((?\u003Cm\u003E(\\d\u002B))m\\s*)?((?\u003Cs\u003E(\\d\u002B))s)?",
                          "Options": 17
                        },
                        {
                          "Pattern": ";TIME:(?\u003Cs\u003E(\\d\u002B\\.?\\d*))",
                          "Options": 17
                        },
                        {
                          "Pattern": "Build time: ((?\u003Ch\u003E\\d\u002B) hours\\s*)?((?\u003Cm\u003E\\d\u002B) minutes\\s*)?((?\u003Cs\u003E(\\d\u002B) seconds))?",
                          "Options": 17
                        },
                        {
                          "Pattern": "Estimated Build Time:\\s\u002B((?\u003Ch\u003E(\\d\u002B\\.?\\d*)) hours\\s*)?((?\u003Cm\u003E(\\d\u002B\\.?\\d*)) minutes\\s*)?((?\u003Cs\u003E(\\d\u002B\\.?\\d*)) seconds)?",
                          "Options": 17
                        }
                      ],
                      "SimulatedTimeFilters": [
                        {
                          "Pattern": "; Simulated print time\\D\u002B(?\u003Cs\u003E(\\d\u002B\\.?\\d*))",
                          "Options": 17
                        }
                      ]
                    }
                    
                    1 Reply Last reply Reply Quote 0
                    • gtj0undefined
                      gtj0 @chrishamm
                      last edited by

                      @chrishamm Yeah I know which one he needs to use.

                      1 Reply Last reply Reply Quote 0
                      • gtj0undefined
                        gtj0
                        last edited by

                        And yeah, 13 is the right pin on the nano

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

                          AFAIR I used this guide to figure out the right gpiochip index. You can further diagnose why DCS cannot connect by launching it with the --log-level debug parameter.

                          Duet software engineer

                          1 Reply Last reply Reply Quote 0
                          • gtj0undefined
                            gtj0
                            last edited by

                            @jpomo10 Turn on debug from the command line or the "LogLevel" in config.json

                            1 Reply Last reply Reply Quote 0
                            • HebigTundefined
                              HebigT
                              last edited by

                              @chrishamm @gtj0

                              jpomo@jpomo-desktop:~$ sudo /opt/dsf/bin/DuetControlServer
                              Duet Control Server v1.2.3.0
                              Written by Christian Hammacher for Duet3D
                              Licensed under the terms of the GNU Public License Version 3
                              
                              [info] Settings loaded
                              [info] Environment initialized
                              [debug] Lost connection to Duet
                                 System.OperationCanceledException: Board is not available (no header)
                                 at DuetControlServer.SPI.DataTransfer.ExchangeHeader() in /home/christian/duet/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 965
                                 at DuetControlServer.SPI.DataTransfer.PerformFullTransfer(Boolean mustSucceed) in /home/christian/duet/DuetSoftwareFramework/src/DuetControlServer/SPI/DataTransfer.cs:line 154
                              [error] Duet is not available
                              
                              chrishammundefined 1 Reply Last reply Reply Quote 0
                              • gtj0undefined
                                gtj0
                                last edited by

                                Hmmm. Your SpiFrequency is actually on the low side. Try increasing it to 2000000 (2MHz)

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

                                  @jpomo10 Check the SPI connection. This error message indicates that DCS could not receive any data over SPI.

                                  Duet software engineer

                                  HebigTundefined 1 Reply Last reply Reply Quote 0
                                  • HebigTundefined
                                    HebigT @chrishamm
                                    last edited by

                                    @chrishamm @gtj0

                                    OK, I increased SPI to 2MHz but no change.

                                    To rule-out hardware problems, I set-up a raspberry pi according to the instructions in the getting started guide.

                                    I was able to connect to the Duet3 (thermistors and endstops were reading correctly) but the Duet never responds to gcode sent through the console. e.g. M122 just hangs forever with no response.

                                    I had the exact same problem with the Jetson before I did my fresh install.

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

                                      Do you have RRF 3.0 (non-beta) installed on the Duet 3? If yes, please share your config.g.

                                      Duet software engineer

                                      HebigTundefined 1 Reply Last reply Reply Quote 0
                                      • HebigTundefined
                                        HebigT @chrishamm
                                        last edited by HebigT

                                        @chrishamm

                                        Yes, I'm running 3.0 I'll downgrade today to see if that fixes the issue.

                                        M115
                                        FIRMWARE_NAME: RepRapFirmware for Duet 3 MB6HC v0.6 or 1.0 FIRMWARE_VERSION: 3.0 ELECTRONICS: Duet 3 MB6HC FIRMWARE_DATE: 2020-01-03b3<LF>ok<LF>
                                        
                                        ; Configuration file for Duet 3 (firmware version 3)
                                        ; executed by the firmware on start-up
                                        ;
                                        ; generated by RepRapFirmware Configuration Tool v2.1.5 on Thu Jan 09 2020 15:58:52 GMT-0700 (Mountain Standard Time)
                                        
                                        ; General preferences
                                        G90                                                              ; send absolute coordinates...
                                        M83                                                              ; ...but relative extruder moves
                                        M550 P"Duet 3"                                                   ; set printer name
                                        
                                        M667 S1                                                          ; select CoreXY mode
                                        
                                        ; Drives
                                        M569 P0.0 S1                                                     ; physical drive 0.0 goes forwards
                                        M569 P0.2 S1                                                     ; physical drive 0.2 goes forwards
                                        M569 P0.1 S1                                                     ; physical drive 0.1 goes forwards
                                        M569 P0.5 S1                                                     ; physical drive 0.5 goes forwards
                                        M569 P0.3 S1                                                     ; physical drive 0.3 goes forwards
                                        M569 P0.4 S1                                                     ; physical drive 0.4 goes forwards
                                        M584 X0.0 Y0.2 Z0.1 E0.5:0.3:0.4                                 ; set drive mapping
                                        M350 X16 Y16 Z16 E16:16:16 I1                                    ; configure microstepping with interpolation
                                        M92 X100.00 Y100.00 Z1600.00 E409.00:409.00:100.00               ; set steps per mm
                                        M566 X900.00 Y900.00 Z12.00 E120.00:120.00:120.00                ; set maximum instantaneous speed changes (mm/min)
                                        M203 X30000.00 Y30000.00 Z1200.00 E300000.00:300000.00:300000.00 ; set maximum speeds (mm/min)
                                        M201 X6000.00 Y6000.00 Z400.00 E2500.00:2500.00:500.00           ; set accelerations (mm/s^2)
                                        M906 X1400 Y1400 Z1000 E1000:1000:400 I30                        ; set motor currents (mA) and motor idle factor in per cent
                                        M84 S120                                                         ; Set idle timeout
                                        
                                        ; Axis Limits
                                        M208 X-35 Y-49 Z0 S1                                             ; set axis minima
                                        M208 X328.5 Y243 Z300 S0                                         ; set axis maxima
                                        
                                        ; Endstops
                                        M574 X1 S0 P"io6.in"                                             ; configure active-low endstop for low end on X via pin io6.in
                                        M574 Y1 S0 P"io7.in"                                             ; configure active-low endstop for low end on Y via pin io7.in
                                        M574 Z1 S1 P"io8.in"                                             ; configure active-high endstop for low end on Z via pin io8.in
                                        
                                        ; Z-Probe
                                        M558 P5 C"io5.in" H5 F120 T6000                                  ; set Z probe type to switch and the dive height + speeds
                                        G31 P500 X0 Y0 Z2.5                                              ; set Z probe trigger value, offset and trigger height
                                        M557 X-20:215 Y-34:195 S20                                       ; define mesh grid
                                        
                                        ; Heaters
                                        M308 S0 P"temp0" Y"thermistor" T100000 B4138                     ; configure sensor 0 as thermistor on pin temp0
                                        M950 H0 C"out0" T0                                               ; create bed heater output on out0 and map it to sensor 0
                                        M143 H0 S210                                                     ; set temperature limit for heater 0 to 210C
                                        M307 H0 B1 S1.00                                                 ; enable bang-bang mode for the bed heater and set PWM limit
                                        M140 H0                                                          ; map heated bed to heater 0
                                        M308 S1 P"temp1" Y"thermistor" T100000 B4725                     ; configure sensor 1 as thermistor on pin temp1
                                        M950 H1 C"out1" T1                                               ; create nozzle heater output on out1 and map it to sensor 1
                                        M143 H1 S300                                                     ; set temperature limit for heater 1 to 300C
                                        M307 H1 B0 S1.00                                                 ; disable bang-bang mode for the nozzle heater and set PWM limit
                                        M308 S2 P"temp2" Y"thermistor" T100000 B4725                     ; configure sensor 2 as thermistor on pin temp2
                                        M950 H2 C"out2" T2                                               ; create nozzle heater output on out2 and map it to sensor 2
                                        M143 H2 S300                                                     ; set temperature limit for heater 2 to 300C
                                        M307 H2 B0 S1.00                                                 ; disable bang-bang mode for the nozzle heater and set PWM limit
                                        
                                        ; Fans
                                        M950 F0 C"out4" Q500                                             ; create fan 0 on pin out4 and set its frequency
                                        M106 P0 S0 H-1                                                   ; set fan 0 value. Thermostatic control is turned off
                                        M950 F1 C"out5" Q500                                             ; create fan 1 on pin out5 and set its frequency
                                        M106 P1 S0 H-1                                                   ; set fan 1 value. Thermostatic control is turned off
                                        M950 F2 C"out7" Q500                                             ; create fan 2 on pin out7 and set its frequency
                                        M106 P2 S1 H1 T45                                                ; set fan 2 value. Thermostatic control is turned on
                                        M950 F3 C"out8" Q500                                             ; create fan 3 on pin out8 and set its frequency
                                        M106 P3 S1 H2 T45                                                ; set fan 3 value. Thermostatic control is turned on
                                        
                                        ; Tools
                                        M563 P0 S"L-Hemera" D0 H1 F0                                     ; define tool 0
                                        G10 P0 X0 Y0 Z0                                                  ; set tool 0 axis offsets
                                        G10 P0 R0 S0                                                     ; set initial tool 0 active and standby temperatures to 0C
                                        M563 P1 S"R-Hemera" D1 H2 F1                                     ; define tool 1
                                        G10 P1 X0 Y0 Z0                                                  ; set tool 1 axis offsets
                                        G10 P1 R0 S0                                                     ; set initial tool 1 active and standby temperatures to 0C
                                        
                                        ; Custom settings are not defined
                                        
                                        ; Miscellaneous
                                        M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000"               ; set voltage thresholds and actions to run on power loss
                                        
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • chrishammundefined
                                          chrishamm administrators
                                          last edited by

                                          @jpomo10 Don't downgrade, the recommended RRF version is still 3.0. I just tried to use your config.g on my Duet 3 / Raspi and I can still execute commands when config.g has been processed. Also make sure the diag LED on the Duet 3 blinks when powered on.

                                          If the error message in the DCS log remains "no header" then I can only say that the Jetson does not receive any SPI data. Perhaps it's best to check your SPI connection once more.

                                          Duet software engineer

                                          1 Reply Last reply Reply Quote 0
                                          • gtj0undefined
                                            gtj0
                                            last edited by

                                            @jpomo10 are you using the original 26pin to 40pin cable provided with the Duet3 or did you make one of your own?

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