Search Results (Searched for: raspberry)
- ozntyr
- ozntyr
25 Sep 2025 09:04
5-Axis CNC Setup with LinuxCNC + Mesa Boards was created by ozntyr
5-Axis CNC Setup with LinuxCNC + Mesa Boards
Category: General LinuxCNC Questions
Hi everyone,I’ve been working on a CNC project for a while and I’d like some advice before committing to hardware. Here’s my situation:
- I originally built a 3-axis CNC router running on GRBL (ESP32) + a custom PCB. I used that setup for a long time and gained good experience with it.
- Later, I decided to upgrade to 5-axis by adding A and C axes to the same GRBL-based system. While it functions, I quickly discovered a limitation: ESP32 GRBL doesn’t support TCP, so the machine can’t act as a proper 5-axis system.
- Because of this, I started looking into LinuxCNC. At first I wanted to use my Raspberry Pi 5, but I read that the Pi version of LinuxCNC can’t really handle full 5-axis control.
- I then tried installing LinuxCNC on an old laptop, but since it has no parallel port, I searched for hardware solutions that use Ethernet. That’s how I found Mesa boards.
- The 7i76 series supports 5 axes and spindle control, but its encoder inputs are only for the spindle, not for axes.
- The 7i95 series seems more suitable because it supports encoder inputs for the axes as well. My thinking was that even though steppers usually work fine, it would be good to have encoder feedback to check for missed steps.
- When testing LinuxCNC setup, I couldn’t find any 7i95 options in PNCconf, which left me confused.
- My current hardware: 2.2 Nm NEMA 23 steppers with DM556 drivers on all axes (6 motors total, since Y has dual rails).
- I don’t have encoders yet, I was waiting to see which types are actually supported by the mesa boards.
- As another option, I do have a couple of 400 W Delta B3 servos, but not enough to equip all axes. I’ve considered using them if steppers turn out too weak, but that would mean buying more servos.
- My main goal with encoders is simply to check for missed steps on the steppers.
- Am I on the right track with the 7i95 + LinuxCNC setup for a 5-axis machine with encoder feedback?
- Would you recommend a different Mesa board or configuration for this?
- Are there any guides/resources for setting up a 4+ axis machine with Mesa boards and LinuxCNC?
- boksi
- boksi
22 Sep 2025 16:19 - 22 Sep 2025 16:23
Mesa smart serial or PktUART or serial over RS232 or udp for robot joints was created by boksi
Mesa smart serial or PktUART or serial over RS232 or udp for robot joints
Category: Advanced Configuration
[justify]Hello, I am looking for some advice here while still learning about Linuxcnc.I have robot arm with 6 custom drives and I would like to integrate it more with Linuxcnc and use kinematics module. Currently it is driven in joint space with mesa 6i25 via step/dir interface. From what I saw there are multiple ways to get joint positions into Linuxcnc. Have to tell here that encoders are in some way absolute as they use batteries and on power on send current position over uart and from that point and further on just behave as incremental and send A and B pulses (these pulses are added in software to first read out position). Position read is handled in drives. I am thinking about best way to transfer 6 encoder readings to Linuxcnc. Have to check with gear ratio but data from encoders would be at least 24 bits(with multiple turns) and lets fix it to be 4 bytes per encoder. Another thing is that this communication should be isolated from drives as step/dir are also isolated from drives.
My questions are :
1. Do I need this enc data only for handling robot joints limits and for first start up position read (as all loops are closed into drives)?
2. Are these encoders data needed every 1mS for servo tread (in respect that I want to move robot in Cartesian space)?
3. What would be constraints on timing and synchronization of these 6 encoder readings?
My idea is to use one additional mcu (stm32) to do "fast" communication with 6 drives (via uart, spi, i2c or can but most probably uart(RS485) with speeds in range from 1Mbps to 2Mbps ), do acquisition of 6 encoder channels and send it Linuxcnc. Mcu could issue 6 read commands "simultaneously" on 6 UARTs, wait for all responses (ISR with control logic in drives works at 16KHz so worst case ~62uS delayed response concerning priorities), pack data and send to Linuxcnc.
4. Which one would be best/easiest to use? Mesa smart serial, Mesa PktUART, pc serial port with custom protocol, ethernet -> UDP or something else?
- PC serial port seems to be slow with max speed of 1115200 - 128000bps, have to do isolation
- Mesa smart serial, as I see no isolation (if I want to use it just with bare 6i25 + RS422 chip, perhaps there are some add on boards which offer isolation? ) and concerning post from 29 Aug 2021 18:33 #219118
"
Replied by PCW on topic Mesa Smart Serial Interface Questions (expanding and/or encoder card options)
PWM would be possible on sserial as would encoders.
encoders use a lot of bits so it's not too practical to do multiple
encoders on a remote sserial card due to the current 96 bit
packet size limit (this has been expanded to 224 bits but no current
sserial remotes use more that 96 in and 96 out)
"
If I use stm32 for acquisition of all enc data, I would need 6 encoder * 32 bits -> 192 bits in total (possibly little more), is there new firmware for packet size of 224bits already available for 6i25? If so where I can find it? If I don't want to use stm32 then I need fpga firmware (or mesa board) with at least 6 smart serial blocks but in this case each one of 6 drives would have to cummunicate over smart serial, not sure here if drives could follow smart serial timings due other higher priority tasks (as read on forum after sending request mesa serial is expecting reply in some time ~20uS(not sure in which phase discovery or...)
- stmbl code available
- arduino code availale (work in progress as stated)
- Mesa PktUART, as I read available speeds can go very high around 10Mbps, have to provide isolation, Rx buffer size of 1024 bytes, would implementation be straight-forward or there could be some issues?
I would still plan to use it with stm32 which collects 6 position data (24bytes) and send it via PktUART. Only issue here would be number of available UARTs on stm32 but possibly this could be resolved with remapping RX/TX pins.
I suppose concerning fpga space, firmware for PktUART could be made along with 6 step gen for 6i25?
- Ethernet -> UDP seems to me as good option as it provides isolation and could be handled with available stm32 + W5500 and
seems that there is some source code already available
www.forum.linuxcnc.org/38-general-linuxc...or-linuxcnc?start=10
forum.linuxcnc.org/24-hal-components/287...rduino-over-ethernet
Thanks[/justify]
My questions are :
1. Do I need this enc data only for handling robot joints limits and for first start up position read (as all loops are closed into drives)?
2. Are these encoders data needed every 1mS for servo tread (in respect that I want to move robot in Cartesian space)?
3. What would be constraints on timing and synchronization of these 6 encoder readings?
My idea is to use one additional mcu (stm32) to do "fast" communication with 6 drives (via uart, spi, i2c or can but most probably uart(RS485) with speeds in range from 1Mbps to 2Mbps ), do acquisition of 6 encoder channels and send it Linuxcnc. Mcu could issue 6 read commands "simultaneously" on 6 UARTs, wait for all responses (ISR with control logic in drives works at 16KHz so worst case ~62uS delayed response concerning priorities), pack data and send to Linuxcnc.
4. Which one would be best/easiest to use? Mesa smart serial, Mesa PktUART, pc serial port with custom protocol, ethernet -> UDP or something else?
- PC serial port seems to be slow with max speed of 1115200 - 128000bps, have to do isolation
- Mesa smart serial, as I see no isolation (if I want to use it just with bare 6i25 + RS422 chip, perhaps there are some add on boards which offer isolation? ) and concerning post from 29 Aug 2021 18:33 #219118
"
Replied by PCW on topic Mesa Smart Serial Interface Questions (expanding and/or encoder card options)
PWM would be possible on sserial as would encoders.
encoders use a lot of bits so it's not too practical to do multiple
encoders on a remote sserial card due to the current 96 bit
packet size limit (this has been expanded to 224 bits but no current
sserial remotes use more that 96 in and 96 out)
"
If I use stm32 for acquisition of all enc data, I would need 6 encoder * 32 bits -> 192 bits in total (possibly little more), is there new firmware for packet size of 224bits already available for 6i25? If so where I can find it? If I don't want to use stm32 then I need fpga firmware (or mesa board) with at least 6 smart serial blocks but in this case each one of 6 drives would have to cummunicate over smart serial, not sure here if drives could follow smart serial timings due other higher priority tasks (as read on forum after sending request mesa serial is expecting reply in some time ~20uS(not sure in which phase discovery or...)
- stmbl code available
- arduino code availale (work in progress as stated)
- Mesa PktUART, as I read available speeds can go very high around 10Mbps, have to provide isolation, Rx buffer size of 1024 bytes, would implementation be straight-forward or there could be some issues?
I would still plan to use it with stm32 which collects 6 position data (24bytes) and send it via PktUART. Only issue here would be number of available UARTs on stm32 but possibly this could be resolved with remapping RX/TX pins.
I suppose concerning fpga space, firmware for PktUART could be made along with 6 step gen for 6i25?
- Ethernet -> UDP seems to me as good option as it provides isolation and could be handled with available stm32 + W5500 and
seems that there is some source code already available
www.forum.linuxcnc.org/38-general-linuxc...or-linuxcnc?start=10
forum.linuxcnc.org/24-hal-components/287...rduino-over-ethernet
Thanks[/justify]
- peterpan
- peterpan
22 Sep 2025 15:45
Trouble with Cia402 drive configuration was created by peterpan
Trouble with Cia402 drive configuration
Category: EtherCAT
I've been working on an EtherCAT build for a couple of months now, and wanted to avoid posting here, but it seems I have hit a wall.
For some background: I am completely new to LinuxCNC but wanted to build an EtherCAT AXYZ cnc with Cia402 drives. I got an EK1100, EL1008, and EL2008, and my brother gave me a ClearPath-EC Teknic Cia402 (CoE) drive. I had a raspberry pi 5 available, so I am testing my configuration on that right now. I used the Pre-packaged rasp-pi install (Debian 12) with LinuxCNC from the linuxcnc website, and had very little trouble following Rod's installation from repositories. From there I had a lot of trouble, but got a configuration based off of the sim.axis config working with the EtherCAT slaves, and was able to test I/O with no trouble.
Now, as I am attempting to incorporate the drive, but I can't get it into the OP state. The EtherCAT master recognizes it, and I can define pdos, but sdo 0x2000 and 0x2011 seem to just not exist, which I currently think has to do with the problem. I'm still having trouble wrapping my head around this, so let me know if there's anything else you need to help me. I would really appreciate the help!
teknic.com/files/downloads/ClearPath-EC_User_Manual.pdf
For some background: I am completely new to LinuxCNC but wanted to build an EtherCAT AXYZ cnc with Cia402 drives. I got an EK1100, EL1008, and EL2008, and my brother gave me a ClearPath-EC Teknic Cia402 (CoE) drive. I had a raspberry pi 5 available, so I am testing my configuration on that right now. I used the Pre-packaged rasp-pi install (Debian 12) with LinuxCNC from the linuxcnc website, and had very little trouble following Rod's installation from repositories. From there I had a lot of trouble, but got a configuration based off of the sim.axis config working with the EtherCAT slaves, and was able to test I/O with no trouble.
Now, as I am attempting to incorporate the drive, but I can't get it into the OP state. The EtherCAT master recognizes it, and I can define pdos, but sdo 0x2000 and 0x2011 seem to just not exist, which I currently think has to do with the problem. I'm still having trouble wrapping my head around this, so let me know if there's anything else you need to help me. I would really appreciate the help!
teknic.com/files/downloads/ClearPath-EC_User_Manual.pdf
- unknown
- unknown
20 Sep 2025 05:55
Replied by unknown on topic Recommendations for a dual NIC SBC or mini-pc
Recommendations for a dual NIC SBC or mini-pc
Category: EtherCAT
I apologise for the previous answer by the previous user, it really doesn't address your issue..
I'd go for this
www.hardkernel.com/shop/odroid-h4-plus/
I've been using the H3 Plus for a few years and had no issues with it. The only thing you need to do is use the non-kernel realtek drivers for the nic. I'm pretty sure Rod from the forum also uses one.
Waveshare also have this setup
www.waveshare.com/product/raspberry-pi/b...ule-box.htm?___SID=U
I'm currently running a mill with the C box but you're situation would be better suited to the A box.
I like the fact the case and connectors are well integrated, full size HDMI ports, all but the power switch, Serial console connector, and the connector to power it from a non-usb supply (meanwell would be a good choice) are on one side.
The only caveat is that the NIC is a realtek based one, but as long as the cnc stuff goes thru the RPi interface everything should be ok.
Langdons would please provide an answer relevant to the question, the user was looking for a small form factor PC, almost a similar size as a RPi5.
I'd go for this
www.hardkernel.com/shop/odroid-h4-plus/
I've been using the H3 Plus for a few years and had no issues with it. The only thing you need to do is use the non-kernel realtek drivers for the nic. I'm pretty sure Rod from the forum also uses one.
Waveshare also have this setup
www.waveshare.com/product/raspberry-pi/b...ule-box.htm?___SID=U
I'm currently running a mill with the C box but you're situation would be better suited to the A box.
I like the fact the case and connectors are well integrated, full size HDMI ports, all but the power switch, Serial console connector, and the connector to power it from a non-usb supply (meanwell would be a good choice) are on one side.
The only caveat is that the NIC is a realtek based one, but as long as the cnc stuff goes thru the RPi interface everything should be ok.
Langdons would please provide an answer relevant to the question, the user was looking for a small form factor PC, almost a similar size as a RPi5.
- krille
- krille
19 Sep 2025 17:29
RPi5 Scale settings was created by krille
RPi5 Scale settings
Category: Basic Configuration
Hi I has problem with my setup ini file I do not understand the behavior of this if I use 200 step for the scale in my z axle and then G0Z-100 and the movment stop at 40 mm
step 300 = 60 mm
step 400 = 81mm
step 500 = 78 mm
step 600 = 59 mm
Why can´'t I hit 100 mm in my set up I tryed many diferent value of steps with 50 increasment
computer = Raspberry Pi 5 ,breakoutboard db25 cinese make , stepperdriver DM542 , 1/4 800 steps , motors 200 steps
are there any kind to help me in the right direction
yours sinserly Krister
step 300 = 60 mm
step 400 = 81mm
step 500 = 78 mm
step 600 = 59 mm
Why can´'t I hit 100 mm in my set up I tryed many diferent value of steps with 50 increasment
computer = Raspberry Pi 5 ,breakoutboard db25 cinese make , stepperdriver DM542 , 1/4 800 steps , motors 200 steps
are there any kind to help me in the right direction
yours sinserly Krister
- nanowhat
- nanowhat
16 Sep 2025 21:07
If I were to run LinuxCNC on a raspberry pi (whatever variant), I could potentially handle the UI (buttons, maybe some LEDs, the MPG) through the GPIO pins, and move the digital/analog I/O to ethercat devices, which would completely eliminate the Mesa hardware. That would still require ethercat on one VLAN and general purpose ethernet on another.
I might try it each way and see what works.
Replied by nanowhat on topic VLANs or multiple ethernet cards?
VLANs or multiple ethernet cards?
Category: Computers and Hardware
That's what I figured.tagged on the PC ethernet port with subinterfaces (or however linux does it these days its been a minute) and exposing those segments as untagged to the devices.
If I were to run LinuxCNC on a raspberry pi (whatever variant), I could potentially handle the UI (buttons, maybe some LEDs, the MPG) through the GPIO pins, and move the digital/analog I/O to ethercat devices, which would completely eliminate the Mesa hardware. That would still require ethercat on one VLAN and general purpose ethernet on another.
I might try it each way and see what works.
- gene_weber
15 Sep 2025 13:07
MESA 7C81, DIN Tray & Ribbon Cable was created by gene_weber
MESA 7C81, DIN Tray & Ribbon Cable
Category: User Exchange
7C81 RPI FPGA board
1.5" RPI GPIO cable for 7C80 and 7C81
DIN Tray 107MM X 102MMFor 7C81, 7I94, 7I94T
The Raspberry PI, standoffs, and fans are NOT included.
Works perfectly. Selling because I bought a MASSO 3G Touch.
$75 plus shipping.
1.5" RPI GPIO cable for 7C80 and 7C81
DIN Tray 107MM X 102MMFor 7C81, 7I94, 7I94T
The Raspberry PI, standoffs, and fans are NOT included.
Works perfectly. Selling because I bought a MASSO 3G Touch.
$75 plus shipping.
- unknown
- unknown
14 Sep 2025 22:26
Replied by unknown on topic Installing 2.9.5 on Raspberry Pi 5
Installing 2.9.5 on Raspberry Pi 5
Category: Installing LinuxCNC
Quick question guys, are you having any issues when touching off ?
Similar to this
forum.linuxcnc.org/21-axis/57208-touch-off-ok-button-greyed-out
Similar to this
forum.linuxcnc.org/21-axis/57208-touch-off-ok-button-greyed-out
- dskinne6
- dskinne6
14 Sep 2025 07:18
Replied by dskinne6 on topic Installing 2.9.5 on Raspberry Pi 5
Installing 2.9.5 on Raspberry Pi 5
Category: Installing LinuxCNC
Now working, many thanks!
- farmer_mike
- farmer_mike
14 Sep 2025 04:59
Replied by farmer_mike on topic Getting (hopefully) close to an Rtelligent build
Getting (hopefully) close to an Rtelligent build
Category: EtherCAT
I halved the SDO values one more time and the servos are nice and quiet now. I will have to look at the HAL Oscilloscope to see how the tune is, but for now the tune is quiet and on scale.
Here are the files below. I used an ECT60 paired with a precision planetary gearbox for the Z axis of my milling machine. The X and Y axis are controlled by RS750E drives with a slight belt reduction.
Emergency stop button is wired into the ECT60 on input number 6. From the input of the ECT60, I mapped the E stop over to the HALUI emergency stop. Without the HALUI mapping, the drives would start back up as soon as the physical E stop was released. The limit switches and homing switches for the Z axis were straight forward.
Limit switches and homing switches for the RS750E drives were a little more complicated. I converted the drive input tags from s32 to u32 then bit sliced the u32 to break out the switches. I bet all the slicing could have been done in the XML file, but I could not figure that out.
When I first started the project, my plan was to run everything off of a laptop. I have since switched to a raspberry pi 4.
I still have a bit of work to do, but I want to thank everyone for their help so far.
Here are the files below. I used an ECT60 paired with a precision planetary gearbox for the Z axis of my milling machine. The X and Y axis are controlled by RS750E drives with a slight belt reduction.
Emergency stop button is wired into the ECT60 on input number 6. From the input of the ECT60, I mapped the E stop over to the HALUI emergency stop. Without the HALUI mapping, the drives would start back up as soon as the physical E stop was released. The limit switches and homing switches for the Z axis were straight forward.
Limit switches and homing switches for the RS750E drives were a little more complicated. I converted the drive input tags from s32 to u32 then bit sliced the u32 to break out the switches. I bet all the slicing could have been done in the XML file, but I could not figure that out.
When I first started the project, my plan was to run everything off of a laptop. I have since switched to a raspberry pi 4.
I still have a bit of work to do, but I want to thank everyone for their help so far.
###########################################################
#
# CIA 402 example snippet Hal
#
###########################################################
###########################################################
# Setup
###########################################################
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf ethercat-conf.xml
#loadusr -W /home/cnc/linuxcnc/configs/linuxcnc-cia402-single/python_control.py
loadrt lcec
loadrt cia402 count=3
loadrt pid names=0-pid,1-pid,2-pid
loadrt bitslice count=6 personality=32,32,32,32,32,32
addf bitslice.0 servo-thread
addf bitslice.1 servo-thread
addf bitslice.2 servo-thread
addf bitslice.3 servo-thread
addf bitslice.4 servo-thread
addf bitslice.5 servo-thread
loadrt conv_s32_u32 count=6
addf conv-s32-u32.0 servo-thread
addf conv-s32-u32.1 servo-thread
addf conv-s32-u32.2 servo-thread
addf conv-s32-u32.3 servo-thread
addf conv-s32-u32.4 servo-thread
addf conv-s32-u32.5 servo-thread
###########################################################
# Functions servo-thread
###########################################################
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf cia402.2.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf 0-pid.do-pid-calcs servo-thread
addf 1-pid.do-pid-calcs servo-thread
addf 2-pid.do-pid-calcs servo-thread
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf cia402.2.write-all servo-thread
addf lcec.write-all servo-thread
#########################################
#nets
#########################################
net emc-enable => iocontrol.0.emc-enable-in
sets emc-enable 1
#config
#
# Joint 0
#
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 786432
#from servo(ethercat) to cia402
net 0-statusword lcec.0.0.cia-statusword => cia402.0.statusword
net 0-opmode-display lcec.0.0.opmode-display => cia402.0.opmode-display
net 0-drv-act-pos lcec.0.0.actual-position => cia402.0.drv-actual-position
net 0-drv-act-velo lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity
#from motion to cia
net 0-enable <= joint.0.amp-enable-out => cia402.0.enable
net 0-amp-fault => joint.0.amp-fault-in <= cia402.0.drv-fault
net 0-pos-cmd <= joint.0.motor-pos-cmd => cia402.0.pos-cmd
net 0-pos-fb => joint.0.motor-pos-fb <= cia402.0.pos-fb
#from cia402 to servo(ethercat)
net 0-controlword cia402.0.controlword => lcec.0.0.cia-controlword
net 0-modes-of-operation cia402.0.opmode => lcec.0.0.opmode
net 0-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
net 0-drv-target-velo cia402.0.drv-target-velocity => lcec.0.0.target-velocity
net my-out-0 conv-s32-u32.0.in <= lcec.0.0.digitalinputs
net my-in-0 conv-s32-u32.0.out => bitslice.0.in
net my-bit-0 bitslice.0.out-00 joint.0.neg-lim-sw-in
net my-out-0 conv-s32-u32.1.in <= lcec.0.0.digitalinputs
net my-in-1 conv-s32-u32.1.out => bitslice.1.in
net my-bit-1 bitslice.1.out-01 joint.0.pos-lim-sw-in
net my-out-0 conv-s32-u32.2.in <= lcec.0.0.digitalinputs
net my-in-2 conv-s32-u32.2.out => bitslice.2.in
net my-bit-2 bitslice.2.out-02 joint.0.home-sw-in
#
# Joint 1
#
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale -786432
#from servo(ethercat) to cia402
net 1-statusword lcec.0.1.cia-statusword => cia402.1.statusword
net 1-opmode-display lcec.0.1.opmode-display => cia402.1.opmode-display
net 1-drv-act-pos lcec.0.1.actual-position => cia402.1.drv-actual-position
net 1-drv-act-velo lcec.0.1.actual-velocity => cia402.1.drv-actual-velocity
#from cia402 to servo(ethercat)
net 1-controlword cia402.1.controlword => lcec.0.1.cia-controlword
net 1-modes-of-operation cia402.1.opmode => lcec.0.1.opmode
net 1-drv-target-pos cia402.1.drv-target-position => lcec.0.1.target-position
net 1-drv-target-velo cia402.1.drv-target-velocity => lcec.0.1.target-velocity
#from motion to cia
net 1-enable <= joint.1.amp-enable-out => cia402.1.enable
net 1-amp-fault => joint.1.amp-fault-in <= cia402.1.drv-fault
net 1-pos-cmd <= joint.1.motor-pos-cmd => cia402.1.pos-cmd
net 1-pos-fb => joint.1.motor-pos-fb <= cia402.1.pos-fb
net my-out-1 conv-s32-u32.3.in <= lcec.0.1.digitalinputs
net my-in-3 conv-s32-u32.3.out => bitslice.3.in
net my-bit-3 bitslice.3.out-00 joint.1.pos-lim-sw-in
net my-out-1 conv-s32-u32.4.in <= lcec.0.1.digitalinputs
net my-in-4 conv-s32-u32.4.out => bitslice.4.in
net my-bit-4 bitslice.4.out-01 joint.1.neg-lim-sw-in
net my-out-1 conv-s32-u32.5.in <= lcec.0.1.digitalinputs
net my-in-5 conv-s32-u32.5.out => bitslice.5.in
net my-bit-5 bitslice.5.out-02 joint.1.home-sw-in
#
# Joint 2
#
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 96000
#from servo(ethercat) to cia402
net 2-statusword lcec.0.2.cia-statusword => cia402.2.statusword
net 2-opmode-display lcec.0.2.opmode-display => cia402.2.opmode-display
net 2-drv-act-pos lcec.0.2.actual-position => cia402.2.drv-actual-position
net 2-drv-act-velo lcec.0.2.actual-velocity => cia402.2.drv-actual-velocity
#from cia402 to servo(ethercat)
net 2-controlword cia402.2.controlword => lcec.0.2.cia-controlword
net 2-modes-of-operation cia402.2.opmode => lcec.0.2.opmode
net 2-drv-target-pos cia402.2.drv-target-position => lcec.0.2.target-position
net 2-drv-target-velo cia402.2.drv-target-velocity => lcec.0.2.target-velocity
#from motion to cia
net 2-enable <= joint.2.amp-enable-out => cia402.2.enable
net 2-amp-fault => joint.2.amp-fault-in <= cia402.2.drv-fault
net 2-pos-cmd <= joint.2.motor-pos-cmd => cia402.2.pos-cmd
net 2-pos-fb => joint.2.motor-pos-fb <= cia402.2.pos-fb
net 2-CCW-limit lcec.0.2.in-3 => joint.2.neg-lim-sw-in
net 2-CW-limit lcec.0.2.in-4 => joint.2.pos-lim-sw-in
net 2-in-home lcec.0.2.in-5 => joint.2.home-sw-in
net 2-in-6 lcec.0.2.in-6 => halui.estop.activate
#net spindle_speed spindle.0.speed-out => python_control.rpm_in
# This config file was created 2020-08-14 17:19:37.621705 by the update_ini script
# The original config files may be found in the /home/demo/linuxcnc/configs/et-3ax/et_3ax_CIA402.old directory
[EMC]
# The version string for this INI file.
VERSION = 1.1
MACHINE = EtherCAT Machine
DEBUG = 1
[DISPLAY]
DISPLAY = axis
EDITOR = gedit
#PYVCP = pyvcp_panel.xml
# places the pyvcp panel at the bottom of the Axis window
PYVCP_POSITION = RIGHT
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.100
# Path to help file
HELP_FILE = doc/help.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1
# Prefix to be used
PROGRAM_PREFIX = /home/demo/linuxcnc/nc_files
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 0
INCREMENTS = 1in .5in .25in .125in .0625in .025in .05in
#INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python
nc = /usr/bin/axis
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
BASE_PERIOD = 0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.005
[HAL]
HALFILE = cia402.hal
#SHUTDOWN = shutdown.hal
HALUI = halui
[HALUI]
[TRAJ]
HOME = 16 12 7
COORDINATES = XYZ
LINEAR_UNITS = in
ANGULAR_UNITS = deg
DEFAULT_LINEAR_VELOCITY = .25
MAX_LINEAR_VELOCITY = .5
MIN_LINEAR_VELOCITY = .01
DEFAULT_ANGULAR_VELOCITY = 360
MAX_ANGULAR_VELOCITY = 720
POSITION_FILE = position.txt
[EMCIO]
# Name of IO controller program, e.g., iov2 has tool changer stuff
EMCIO = iov2
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = cia402.tbl
TOOL_CHANGE_POSITION = 0 0 50.8
#RANDOM_TOOLCHANGER = 1
[KINS]
JOINTS = 3
KINEMATICS = trivkins kinstype=both coordinates=xyz
[AXIS_X]
MIN_LIMIT = 0.1
MAX_LIMIT = 17.9
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
BACKLASH = 0.0000
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
# is this applicable for ethercat????
#STEPGEN_MAXVEL = 1.25
#STEPGEN_MAXACCEL = 1.25
SCALE = 1
FERROR = 200
MIN_FERROR = 50
MIN_LIMIT = 0
MAX_LIMIT = 18
HOME = 16
HOME_OFFSET = 16
HOME_SEQUENCE = 0
HOME_SEARCH_VEL = -.125
HOME_LATCH_VEL = -.125
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
[AXIS_Y]
MIN_LIMIT = 0.1
MAX_LIMIT = 12.9
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
BACKLASH = 0.0000
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
# is this applicable for ethercat????
#STEPGEN_MAXVEL = 1.25
#STEPGEN_MAXACCEL = 1.25
STEP_SCALE = 1
FERROR = 2
MIN_FERROR = 20
MIN_LIMIT = 0
MAX_LIMIT = 13
HOME = 12
HOME_OFFSET = 12
HOME_SEQUENCE = 1
HOME_SEARCH_VEL = .125
HOME_LATCH_VEL = .125
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
# is this applicable for ethercat????
STEPGEN_MAXVEL = 1.25
STEPGEN_MAXACCEL = 1.25
STEP_SCALE = 1
FERROR = 200
MIN_FERROR = 20
MIN_LIMIT = 3.4
MAX_LIMIT = 8.1
HOME = 7
HOME_OFFSET = 7
HOME_SEQUENCE = 2
HOME_SEARCH_VEL = .125
HOME_LATCH_VEL = .125
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
[AXIS_Z]
MIN_LIMIT = 3.5
MAX_LIMIT = 8
MAX_VELOCITY = .5
MAX_ACCELERATION = 10
BACKLASH = 0.0000
<masters>
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="5">
<slave idx="0" type="generic" vid="00000A88" pid="0a880013" configPdos="true">
<!-- Joint 0 -->
<sdoConfig idx="2009" subIdx="1"><sdoDataRaw data ="00 32"/></sdoConfig> <!-- position p gain default is 1000 -->
<sdoConfig idx="2009" subIdx="2"><sdoDataRaw data ="00 08"/></sdoConfig> <!-- velocity p gain default is 256 -->
<sdoConfig idx="2009" subIdx="3"><sdoDataRaw data ="00 01"/></sdoConfig> <!-- position i gain default is 200 -->
<syncManager idx="0" dir="out"> </syncManager>
<syncManager idx="1" dir="out"> </syncManager>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="touchprobefunction0" halType="bit"/>
</pdo>
<pdo idx="1601">
<pdoEntry idx="6081" subIdx="00" bitLen="32" halPin="profile-velocity" halType="u32"/>
<pdoEntry idx="6083" subIdx="00" bitLen="32" halPin="target-accel" halType="u32"/>
<pdoEntry idx="6084" subIdx="00" bitLen="32" halPin="target-decel" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
</pdo>
<pdo idx="1602">
<pdoEntry idx="60ff" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="errorcode" halType="bit"/>
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="touchprobestat" halType="bit"/>
<pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="touchprobe1pos" halType="s32"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="digitalinputs" halType="s32"/>
</pdo>
<pdo idx="1a01">
<pdoEntry idx="606c" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
</pdo>
</syncManager>
<dcConf assignActivate="300" sync0Cycle="1000000"/>
</slave>
<slave idx="1" type="generic" vid="00000A88" pid="0a880013" configPdos="true">
<!-- Joint 1 -->
<sdoConfig idx="2009" subIdx="1"><sdoDataRaw data ="00 32"/></sdoConfig> <!-- position p gain default is 1000 -->
<sdoConfig idx="2009" subIdx="2"><sdoDataRaw data ="00 08"/></sdoConfig> <!-- velocity p gain default is 256 -->
<sdoConfig idx="2009" subIdx="3"><sdoDataRaw data ="00 01"/></sdoConfig> <!-- position i gain default is 200 -->
<syncManager idx="0" dir="out"> </syncManager>
<syncManager idx="1" dir="out"> </syncManager>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="607a" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60b8" subIdx="00" bitLen="16" halPin="touchprobefunction0" halType="bit"/>
</pdo>
<pdo idx="1601">
<pdoEntry idx="6081" subIdx="00" bitLen="32" halPin="profile-velocity" halType="u32"/>
<pdoEntry idx="6083" subIdx="00" bitLen="32" halPin="target-accel" halType="u32"/>
<pdoEntry idx="6084" subIdx="00" bitLen="32" halPin="target-decel" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
</pdo>
<pdo idx="1602">
<pdoEntry idx="60ff" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="603f" subIdx="00" bitLen="16" halPin="errorcode" halType="bit"/>
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="60b9" subIdx="00" bitLen="16" halPin="touchprobestat" halType="bit"/>
<pdoEntry idx="60ba" subIdx="00" bitLen="32" halPin="touchprobe1pos" halType="s32"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="digitalinputs" halType="s32"/>
</pdo>
<pdo idx="1a01">
<pdoEntry idx="606c" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
</pdo>
</syncManager>
<dcConf assignActivate="300" sync0Cycle="1000000"/>
</slave>
<!-- Joint 2 -->
<slave idx="2" type="generic" vid="00000a88" pid="0a880002" configPdos="true">
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<sdoConfig idx="2000" subIdx="0"><sdoDataRaw data ="88 13"/></sdoConfig> <!-- Max motor current (5.0) -->
<sdoConfig idx="2007" subIdx="3"><sdoDataRaw data ="01"/></sdoConfig> <!-- Input 3 - CCW Limit -->
<sdoConfig idx="2007" subIdx="4"><sdoDataRaw data ="02"/></sdoConfig> <!-- Input 4 - CW Limit -->
<sdoConfig idx="2007" subIdx="5"><sdoDataRaw data ="03"/></sdoConfig> <!-- Input 5 - Home Function -->
<sdoConfig idx="2007" subIdx="6"><sdoDataRaw data ="05"/></sdoConfig> <!-- Input 6 - Emergency Stop -->
<sdoConfig idx="2011" subIdx="0"><sdoDataRaw data ="01 00"/></sdoConfig> <!-- Closed loop -->
<sdoConfig idx="6098" subIdx="0"><sdoDataRaw data ="11 00"/></sdoConfig> <!-- Home mode 17 -->
<sdoConfig idx="607C" subIdx="0"><sdoDataRaw data ="00 00"/></sdoConfig> <!-- Home offset 0 -->
<sdoConfig idx="609A" subIdx="0"><sdoDataRaw data ="F4 01"/></sdoConfig> <!-- Home accelleration 500 -->
<sdoConfig idx="6099" subIdx="01"><sdoDataRaw data ="C4 09"/></sdoConfig> <!-- Home fast speed 2500-->
<sdoConfig idx="6099" subIdx="02"><sdoDataRaw data ="F4 01"/></sdoConfig> <!-- Home slow speed 500 -->
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<!-- Target Position -->
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<!-- Target Velocity -->
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
<!-- Digtial Outputs (manufacturer's extension ECT86/ECT60)-->
<pdoEntry idx="204A" subIdx="0" bitLen="16" halType="complex">
<complexEntry bitLen="1" halPin="out-1" halType="bit"/>
<complexEntry bitLen="1" halPin="out-2" halType="bit"/>
<complexEntry bitLen="14"/>
</pdoEntry>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="32" halPin="actual-torque" halType="s32"/>
<!-- Digtial_inputs (cia402 compatible) -->
<pdoEntry idx="60FD" subIdx="0" bitLen="32" halType="complex">
<complexEntry bitLen="1" halPin="CW-limit" halType="bit"/>
<complexEntry bitLen="1" halPin="CCW-limit" halType="bit"/>
<complexEntry bitLen="1" halPin="in-home" halType="bit"/>
<complexEntry bitLen="13"/>
<complexEntry bitLen="1" halPin="in-1" halType="bit"/>
<complexEntry bitLen="1" halPin="in-2" halType="bit"/>
<complexEntry bitLen="1" halPin="in-3" halType="bit"/>
<complexEntry bitLen="1" halPin="in-4" halType="bit"/>
<complexEntry bitLen="1" halPin="in-5" halType="bit"/>
<complexEntry bitLen="1" halPin="in-6" halType="bit"/>
<complexEntry bitLen="10"/>
</pdoEntry>
</pdo>
</syncManager>
</slave>
</master>
</masters>
- unknown
- unknown
14 Sep 2025 02:12
Replied by unknown on topic Installing 2.9.5 on Raspberry Pi 5
Installing 2.9.5 on Raspberry Pi 5
Category: Installing LinuxCNC
Just received notification and confirmed am64 permissions for the packages have been corrected. Thanks to Andy
- unknown
- unknown
12 Sep 2025 08:33
Replied by unknown on topic Installing 2.9.5 on Raspberry Pi 5
Installing 2.9.5 on Raspberry Pi 5
Category: Installing LinuxCNC
I've emailed those that have access, one gentleman is away and can not check, the other gent is on the other side of world, I'm In Australia he is US based, so we will just need to wait for answers.
- dskinne6
- dskinne6
12 Sep 2025 07:17
Replied by dskinne6 on topic Installing 2.9.5 on Raspberry Pi 5
Installing 2.9.5 on Raspberry Pi 5
Category: Installing LinuxCNC
I have the same issue with RPI5
- unknown
- unknown
10 Sep 2025 22:46
Replied by unknown on topic Installing 2.9.5 on Raspberry Pi 5
Installing 2.9.5 on Raspberry Pi 5
Category: Installing LinuxCNC
Taking an educated guess, it could be a permission issue, using the link you provided and removing the filename gets a directory listing in a browser, 403 is there when trying to download, other files are accessible.
Hopefully Andy will become aware of this, one option might be to access either the mailing lists, I'm banned due to comments on the origins of Code of Conducts and implementor, or GitHub.
Hopefully Andy will become aware of this, one option might be to access either the mailing lists, I'm banned due to comments on the origins of Code of Conducts and implementor, or GitHub.
- richcolvin
10 Sep 2025 19:19 - 10 Sep 2025 19:21
Installing 2.9.5 on Raspberry Pi 5 was created by richcolvin
Installing 2.9.5 on Raspberry Pi 5
Category: Installing LinuxCNC
When trying to install the update for 2.9.5 on a Raspberry Pi, I receive a security error when attempting to fetch
The error is:
Forbidden
You don't have permission to access this resource.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Forbidden
You don't have permission to access this resource.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Time to create page: 1.490 seconds