Search Results (Searched for: raspberry pi 3)

31 Dec 2025 14:44
I did a similar thing a few years back, I used Clough42's Electronic lead screw project and made a few changes to the program to make this work for my needs. all I needed to do was mount an encoder and put a motor on one of my dividing heads. I have since taken apart the electronics as I needed them for other projects but I am now using the DR-DRO Raspberry Pi-based rotary controller for stuff like this. The DR-DRO is much more flexible to do crazy stuff on manual machines. I am thinking about doing the same setup on my mh800e that is retrofitted to linuxcnc
24 Dec 2025 05:57
Oh no, something else not quite right with my build. The halrun binary seems to be missing. I will try to find out how that dropped out. I will need it for the project where I plan to use this pi3.
24 Dec 2025 05:19
Another latency test. The previous one I shared was run a couple minutes with nothing else running. This time I gave it the works. How about 10mS latency.
24 Dec 2025 04:49
Here are the error reports I get trying to wake QtDragon. seems to be a complaint about the ngc path. I'm using run-in-place. I've got to look at this again. Just writing it up gave me more ideas.
24 Dec 2025 04:12
Wow, I can hardly believe I did this to a pi 3. The simulation is running. Next I want to check if gpio and a couple other basics work. The latency numbers look a bit sad.
Still no luck starting QtDragon.
23 Dec 2025 15:43
Got LinuxCNC built. Running latency test. Tried running Axis and QtDragon, gui just crashes, need to spend a little more time on it, maybe tomorrow. I think I got some missing dependencies going on.
20 Dec 2025 22:51 - 23 Dec 2025 19:08
This is catching my interest. I think I will try it. I have at my fingertips a Pi 3 Model B+ but it is not working, not sure why. Maybe I dropped it a while back. I also have a Pi 3 Model B V1.2, I have it running a fresh install of Debian 12 Bookworm.

Now it is installing LXDE.
Next up is realtime kernel, I'm looking at linux-image-6.1.0-41-rt-arm64
And then LinuxCNC....
Fingers crossed...
20 Dec 2025 11:16
There are no premade RPi3 images available for download.

You have a couple of options.
1: Someone maybe able to make one, but it would require that person having access to a Rpi3.
2: Find someone with Linux knowledge who can also speak english and is willing to help.
3: Have a go following someone's instructions, all is not lost if you make a mistake.
4: Look into using grbl.

A bit of a warning regarding the RPi3, you may have latency issues, which there may not be a solution for fixing it. Increasing thread period may not give smooth operation.

Saying that you don't understand all the time wont help. I'm sorry I really wish it was different.
20 Dec 2025 11:01 - 20 Dec 2025 11:08
Replied by unknown on topic PicoBOB-DLX
Yeah std breakout board, a lot of the generic Chinese one have a 0-10v converter. Mesa also sells something called spinx1 store.mesanet.com/index.php?route=produc...oduct&product_id=205 which could be connected to the 2nd port on the 7i92T.
Glass sensor would require a buffer circuit of sorts I guess, PCW would have the best advice regarding that.

I've been using an original 7i92 for years (the change was to a different FPGA for the T) and had no issues........plus a number of other cards as things grew ;)


This how good the support from Mesa is. Some users have bought clones from AliExpress (I'd recommend the genuine thing) and he's been happy to help those users out. TBH PCW has helped me out when I got bored and tried to build a clone of a 7c81 based on a Spartan6 FPGA dev board. Which does work either via SPI to Raspberry Pi 4/5 or a PC with a parallel port using the EPP protocol.

You may find some forum users very biased towards Mesa, some build machines professionally and only use Mesa, other have converted a mill or a lathe....or many other machines that I have probably missed. But they all swear by Mesa products.
Not that there aren't other options, but it's the best way if you "just wanna make chips".
19 Dec 2025 19:27
what is kernel and what is compiler, how use or how install and use. what is repos and scratch. not understand code nerd super engineer language. (translator not help this)
19 Dec 2025 18:49 - 19 Dec 2025 18:58
It appears to work fine. Any further suggestions would be appreciated.

Full HAL file attached.
 
19 Dec 2025 18:48
And here is the Snippet:
# --- SPINDLE PWM CONFIGURATION ---

# Load and Add Functions
# (Ensure loadrt pwmgen and loadrt scale are at the top of your file)
addf pwmgen.make-pulses base-thread
addf pwmgen.update servo-thread

# 3. Connect Spindle Enable
# This turns the PWM generator on only when the spindle is active and needs to be eliminated.
# (removed) net spindle-on spindle.0.on => pwmgen.0.enable

#Inverted Voltage Corrections
# First you need to add the next two lines above
# loadrt not count=1
# addf not.0 servo-thread

# set the Frequency
# first we need to set a frequency for the PWM in order for it to smooth the output
setp pwmgen.0.pwm-freq 100.0

# Calibration
# When using a 0-10v output signal, you may need to invert the PWM output
# so that the 5 axis breakout board will output 0V at spindle off,and
# 10v when the spindle is full on. The Negative sign before the 60000 usually does this.
# unfortunately the resting (spindle off) voltage is 10.0V - bad -very bad!
# rather we leave everything alone and creat a not.0 variable that reverses the values
setp pwmgen.0.scale 60000
setp pwmgen.0.offset 0.0
setp pwmgen.0.enable 1

# Connect Spindle Speed Command
# This signal carries the RPM requested by G-code (S command)
net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value

# Prepare to invert it
net spindle-pwm-raw pwmgen.0.pwm => not.0.in

# Connect and invert the PWM Output to Physical GPIO
# This is the "Writer" for GPIO18
net spindle-pwm-final not.0.out => hal_gpio.GPIO18-out

#End Spindle Code
19 Dec 2025 18:34 - 19 Dec 2025 18:47
I wanted to create a control voltage for my spindle using a Raspberry Pi 5 connected to a Byte2Bot parallel daughter board (Misnomer Alert – it is actually a DB25 daughterboard and has little to do with a parallel port) connected to a parallel port breakout board provided by Byte2Bot.  The parallel port breakout board has a terminal for PWM that will produce a voltage. The question is how to do it. Here is what I discovered:

This issue continues in the attachments:
LinuxCNCQuestionA
LinuxCNCQuestionB
LinuxCNCQuestionC  
18 Dec 2025 11:20
cnc@raspberrypi:~$ ls /dev/spidev*

ls: cannot access '/dev/spidev*': No such file or directory
16 Dec 2025 19:15
Hi,I have been fighting with Remora on a Raspberry Pi for about 3 months now and I am running out of ideas, so I’m asking for some help.Hardware / versions
  • Raspberry Pi: (model + RAM ).
  • BTT Octopus: (exact version, e.g. v1.1, STM32F446).
  • LinuxCNC: version from the official RPi image.
  • Remora: 1.1.0 – STM32 firmware for the Octopus from the 1.1.0 release, LinuxCNC component compiled from 
    Code:
    remora-1.1.0/LinuxCNC/Components/Remora/remora.c
    .
Why I switched from SKROn SKR 1.4 with Remora 0.1.0 I constantly get “bad SPI payload” and E‑STOP, even after improving the wiring (short cable, ground every second wire, shielded cable, common GND). In that old Remora version there are no 
Code:
SPI_clk_div
 / 
Code:
PRU_base_freq
 parameters, so I cannot slow down the SPI clock from the LinuxCNC side.Because of that I moved to a BTT Octopus with Remora 1.1.0, which gives me 
Code:
SPI_clk_div
 and 
Code:
PRU_base_freq
 so I can reduce SPI speed.What happens on the Octopus
  • SPI now looks stable: when I run the heater/wire only (no axis motion) I don’t get any “bad SPI payload” at all.
  • I load the component like this:
Code:
loadrt remora SPI_clk_div=128 PRU_base_freq=40000
(Values can be changed, this is just what I’m testing now.)
  • The motors move, in the correct direction, but I have two problems:
  1. Jog incremental overshoot
    In incremental jog (for example 1 mm or 10 mm) when I press the jog “+” button and release it, the axis moves noticeably more than the requested increment.
    It looks like Remora/stepgen continues to output steps for a short time after LinuxCNC has stopped the move.
  2. Joint following error after a few cm of travel
    With conservative parameters (see JOINT_0 below) the axis can travel a few centimetres and then I get a joint following error.
    With SKR + Remora 0.1.0, using the same HAL/INI values for SCALE, acceleration, max velocity and FERROR, I never had following errors – only the “bad SPI payload” issue.
Current 
Code:
[JOINT_0]
 section in my INI
Code:
[JOINT_0] TYPE = LINEAR HOME = 0 HOME_OFFSET = -10 MIN_LIMIT = -0.001 MAX_LIMIT = 450 MAX_VELOCITY = 10 MAX_ACCELERATION = 200 STEPGEN_MAXACCEL = 300 SCALE = (current value – was 50 originally) FERROR = 50 MIN_FERROR = 20 HOME_SEARCH_VEL = -1.5 HOME_LATCH_VEL = -0.5 HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0
Relevant HAL fragment (Octopus / Remora connection)
Code:
loadrt remora SPI_clk_div=128 PRU_base_freq=40000 # add remora and motion functions to threads addf remora.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf remora.update-freq servo-thread addf remora.write servo-thread # --- Joint 0 (X) --- setp remora.joint.0.scale [JOINT_0]SCALE setp remora.joint.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL net xpos-cmd <= joint.0.motor-pos-cmd => remora.joint.0.pos-cmd net xpos-fb <= remora.joint.0.pos-fb => joint.0.motor-pos-fb net j0enable <= joint.0.amp-enable-out => remora.joint.0.enable
(If anything in this mapping looks obviously wrong, please point it out.)What I have already tried
  • Reduced 
    Code:
    MAX_VELOCITY
    , 
    Code:
    MAX_ACCELERATION
     and 
    Code:
    STEPGEN_MAXACCEL
     a lot and increased 
    Code:
    FERROR
    /
    Code:
    MIN_FERROR
    . This delays the following error but does not remove it.
  • Tried to tune 
    Code:
    SCALE
     using G‑code (G91 / G0 X100 and measuring real travel). Even with reasonable SCALE values I still see overshoot in incremental jog: the axis moves clearly more than the selected increment.
  • On SKR 1.4 with old Remora 0.1.0, with the same mechanical setup and same SCALE / accel / maxvel / FERROR, jogging and running G‑code worked fine (no following errors, no overshoot). The only issue there is the fixed, too‑fast SPI that causes “bad SPI payload”.
Questions
  1. Is this kind of jog overshoot in incremental mode a known configuration issue with Remora 1.1.0 + Octopus (for example related to PRU_base_freq, servo thread period, or some Remora parameter), or is it more likely that I have a clear mistake in my HAL/INI?
  2. What SPI / PRU settings do people successfully use on a BTT Octopus with Remora 1.x? Is 
    Code:
    SPI_clk_div=128
     and 
    Code:
    PRU_base_freq=40000
     reasonable, or should I change these?
  3. Does anyone have a working LinuxCNC config (INI/HAL) for Remora 1.1.0 + Octopus in plain step/dir mode and would be willing to share the relevant 
    Code:
    loadrt remora
     line and joint settings?
  4. Are there any STM32/Octopus‑specific considerations in Remora (different expectations for SCALE, FERROR, etc.) when migrating from an LPC/SKR setup?
My main goals are:
  • to get rid of the jog overshoot in incremental mode,
  • to choose sane parameters so joint following error does not appear every few centimetres at reasonable speeds.
Any hints, working examples, or “known good” values for an Octopus setup would be very much appreciated.

my octopus config.txt:
Code:
{   "Board": "BIGTREETECH OCTOPUS",   "Modules": [     { "Thread": "Servo", "Type": "Reset Pin", "Comment": "Reset pin", "Pin": "PC_15" },     { "Thread": "Base", "Type": "SPI", "Comment": "SPI interface to Raspberry Pi", "CS Pin": "PA_4" },     { "Thread": "Base", "Type": "Stepgen", "Comment": "X - Joint 0 stepgen", "Joint Number": 0, "Step Pin": "PF_13", "Direction Pin": "PF_12", "Enable Pin": "PF_14" },     { "Thread": "Base", "Type": "Stepgen", "Comment": "Y - Joint 1 stepgen", "Joint Number": 1, "Step Pin": "PG_0", "Direction Pin": "PG_1", "Enable Pin": "PF_15" },     { "Thread": "Base", "Type": "Stepgen", "Comment": "U - Joint 2 stepgen", "Joint Number": 2, "Step Pin": "PF_11", "Direction Pin": "PG_3", "Enable Pin": "PG_5" },     { "Thread": "Base", "Type": "Stepgen", "Comment": "V - Joint 3 stepgen", "Joint Number": 3, "Step Pin": "PG_4", "Direction Pin": "PC_1", "Enable Pin": "PA_0" },     { "Thread": "Base", "Type": "Stepgen", "Comment": "B - Joint 4 stepgen", "Joint Number": 4, "Step Pin": "PF_9", "Direction Pin": "PF_10", "Enable Pin": "PG_2" }, {     "Thread": "Servo",     "Type": "Digital Pin",             "Comment":                      "X limit",             "Pin":                          "PG_6",             "Mode":                         "Input",             "Data Bit":                     0     }, {     "Thread": "Servo",     "Type": "Digital Pin",             "Comment":                      "Y limit",             "Pin":                          "PG_9",             "Mode":                         "Input",             "Data Bit":                     1     }, {     "Thread": "Servo",     "Type": "Digital Pin",             "Comment":                      "U limit",             "Pin":                          "PG_10",             "Mode":                         "Input",             "Data Bit":                     2     }, {     "Thread": "Servo",     "Type": "Digital Pin",             "Comment":                      "V limit",             "Pin":                          "PG_11",             "Mode":                         "Input",             "Data Bit":                     3     }, {     "Thread": "Servo",     "Type": "Digital Pin",             "Comment":                      "B limit",             "Pin":                          "PG_12",             "Mode":                         "Input",             "Data Bit":                     4     },    {     "Thread": "Servo",     "Type": "PWM",             "Comment":                      "PWM for heating",             "SP[i]":                        5,             "PWM Pin":                      "PA_1",             "PWM Max":                      256,             "Hardware PWM":                 "True",             "Variable Freq":                "True",             "Period SP[i]":                  1,             "Period us":                    500     }   ] }


my .ini file:
Code:
[EMC] MACHINE = Remora-XYUV DEBUG = 0 VERSION = 1.1 [DISPLAY] DISPLAY = axis EDITOR = gedit FOAM = 1 GEOMETRY = XY;UV POSITION_OFFSET = RELATIVE POSITION_FEEDBACK = ACTUAL ARCDIVISION = 64 GRIDS = 10mm 20mm 50mm 100mm MAX_FEED_OVERRIDE = 1.2 MIN_SPINDLE_OVERRIDE = 0.5 MAX_SPINDLE_OVERRIDE = 1.2 DEFAULT_LINEAR_VELOCITY = 2.50 MIN_LINEAR_VELOCITY = 0 MAX_LINEAR_VELOCITY = 25.00 DEFAULT_ANGULAR_VELOCITY = 36.00 MIN_ANGULAR_VELOCITY = 0 MAX_ANGULAR_VELOCITY = 45.00 INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 PROGRAM_PREFIX = ~/linuxcnc/nc_files OPEN_FILE = ./foam.ngc INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm [KINS] JOINTS = 5 KINEMATICS = trivkins coordinates=XYUVB [FILTER] PROGRAM_EXTENSION = .py Python Script py = python [TASK] TASK = milltask CYCLE_TIME = 0.010 [RS274NGC] PARAMETER_FILE = linuxcnc.var [EMCMOT] EMCMOT = motmod COMM_TIMEOUT = 1.0 COMM_WAIT = 0.010 BASE_PERIOD = 100000 SERVO_PERIOD = 1000000 [HAL] HALFILE = remora-xyuvb.hal POSTGUI_HALFILE = postgui_call_list.hal [TRAJ] AXES = 5 COORDINATES = X Y U V B LINEAR_UNITS = mm ANGULAR_UNITS = degree DEFAULT_LINEAR_VELOCITY = 2.50 MAX_LINEAR_VELOCITY = 25.00 NO_FORCE_HOMING = 1 [EMCIO] EMCIO = io CYCLE_TIME = 0.100 TOOL_TABLE = tool.tbl EXTERNAL_OUTPUT_0 = motion.analog-out-00 [AXIS_X] MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 MIN_LIMIT = 10 MAX_LIMIT = 450 [JOINT_0] TYPE = LINEAR HOME = 0 HOME_OFFSET = -10 MIN_LIMIT = -0.001 MAX_LIMIT = 450 MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = 50 FERROR = 1 MIN_FERROR = .25 HOME_OFFSET = 0.000 HOME_SEARCH_VEL = -1.5 HOME_LATCH_VEL = -0.5 HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 [AXIS_Y] MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 [JOINT_1] TYPE = LINEAR HOME = 0 HOME_OFFSET = -10 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = -50 FERROR = 1 MIN_FERROR = .25 HOME_OFFSET = 0.000 HOME_SEARCH_VEL = -1.5 HOME_LATCH_VEL = -0.5 HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 1 [AXIS_U] MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 MIN_LIMIT = 10 MAX_LIMIT = 450 [JOINT_2] TYPE = LINEAR HOME = 0 HOME_OFFSET = -10 MIN_LIMIT = -0.001 MAX_LIMIT = 450 MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = -50 FERROR = 1 MIN_FERROR = .25 HOME_OFFSET = 0.000 HOME_SEARCH_VEL = -1.5 HOME_LATCH_VEL = -0.5 HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 [AXIS_V] MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 [JOINT_3] TYPE = LINEAR HOME = 0 HOME_OFFSET = -10 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 STEPGEN_MAXACCEL = 937.5 SCALE = -50 FERROR = 1 MIN_FERROR = .25 HOME_OFFSET = 0.000 HOME_SEARCH_VEL = -1.5 HOME_LATCH_VEL = -0.5 HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 1 [AXIS_B] MAX_VELOCITY = 23.75 MAX_ACCELERATION = 750.0 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 [JOINT_4] TYPE = LINEAR HOME = 0 HOME_OFFSET = 1 MIN_LIMIT = -0.001 MAX_LIMIT = 200.0 MAX_VELOCITY = 23.75 # MAX_ACCELERATION = 750.0 MAX_ACCELERATION = 500.0 # STEPGEN_MAXACCEL = 937.5 STEPGEN_MAXACCEL = 537.5 SCALE = 50 FERROR = 1 MIN_FERROR = .25 HOME_OFFSET = 0.000 HOME_SEARCH_VEL = 1 HOME_LATCH_VEL = 0.1 HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 2

my .hal file:
Code:
# --- load the realtime components loadrt [KINS]KINEMATICS loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=5 loadrt remora # --- estop loopback, SPI comms enable and feedback net user-enable-out      <= iocontrol.0.user-enable-out        => remora.SPI-enable net user-request-enable  <= iocontrol.0.user-request-enable    => remora.SPI-reset net remora-status        <= remora.SPI-status                  => iocontrol.0.emc-enable-in # --- add the remora and motion functions to threads addf remora.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread addf remora.update-freq servo-thread addf remora.write servo-thread # ------- Joint 0 (X / Tower 1) ------- setp remora.joint.0.scale         [JOINT_0]SCALE setp remora.joint.0.maxaccel      [JOINT_0]STEPGEN_MAXACCEL net xpos-cmd      <= joint.0.motor-pos-cmd  => remora.joint.0.pos-cmd   net j0pos-fb      <= remora.joint.0.pos-fb  => joint.0.motor-pos-fb net j0enable      <= joint.0.amp-enable-out => remora.joint.0.enable net X-stop        remora.input.0          => joint.0.home-sw-in joint.0.neg-lim-sw-in joint.0.pos-lim-sw-in # ------- Joint 1 (Y / Tower 1) ------- setp remora.joint.1.scale         [JOINT_1]SCALE setp remora.joint.1.maxaccel      [JOINT_1]STEPGEN_MAXACCEL net ypos-cmd      <= joint.1.motor-pos-cmd  => remora.joint.1.pos-cmd net j1pos-fb      <= remora.joint.1.pos-fb  => joint.1.motor-pos-fb  net j1enable      <= joint.1.amp-enable-out => remora.joint.1.enable net Y-min         remora.input.1            => joint.1.home-sw-in joint.1.neg-lim-sw-in joint.1.pos-lim-sw-in # ------- Joint 2 (U / Tower 2) ------- setp remora.joint.2.scale         [JOINT_2]SCALE setp remora.joint.2.maxaccel      [JOINT_2]STEPGEN_MAXACCEL net upos-cmd      <= joint.2.motor-pos-cmd  => remora.joint.2.pos-cmd net j2pos-fb      <= remora.joint.2.pos-fb  => joint.2.motor-pos-fb net j2enable      <= joint.2.amp-enable-out => remora.joint.2.enable net U-min         remora.input.2            => joint.2.home-sw-in joint.2.neg-lim-sw-in joint.2.pos-lim-sw-in # ------- Joint 3 (V / Tower 2) ------- setp remora.joint.3.scale         [JOINT_3]SCALE setp remora.joint.3.maxaccel      [JOINT_3]STEPGEN_MAXACCEL net vpos-cmd      <= joint.3.motor-pos-cmd  => remora.joint.3.pos-cmd net j3pos-fb      <= remora.joint.3.pos-fb  => joint.3.motor-pos-fb net j3enable      <= joint.3.amp-enable-out => remora.joint.3.enable net V-min         remora.input.3            => joint.3.home-sw-in joint.3.neg-lim-sw-in joint.3.pos-lim-sw-in # ------- Joint 4 (B / Rotary Table) ------- setp remora.joint.4.scale         [JOINT_4]SCALE setp remora.joint.4.maxaccel      [JOINT_4]STEPGEN_MAXACCEL net bpos-cmd      <= joint.4.motor-pos-cmd  => remora.joint.4.pos-cmd net j4pos-fb      <= remora.joint.4.pos-fb  => joint.4.motor-pos-fb net j4enable      <= joint.4.amp-enable-out => remora.joint.4.enable net B-min         remora.input.4            => joint.4.home-sw-in joint.4.neg-lim-sw-in joint.4.pos-lim-sw-in net heat_pwm motion.analog-out-00 => remora.SP.5
Displaying 121 - 135 out of 189 results.
Time to create page: 0.864 seconds
Powered by Kunena Forum