LinuxCNC installation + 7I96S

More
16 Oct 2025 19:37 #336566 by jmp97
Replied by jmp97 on topic LinuxCNC installation + 7I96S
I have installed: 8168 driver

When I enter this in the terminal:
cpufreq-info | grep "current policy"

I get this:
current policy: frequency should be within 800 MHz and 3.20 GHz.

I cannot change to a constant 3.20 GHz.

Please Log in or Create an account to join the conversation.

More
16 Oct 2025 20:03 #336567 by PCW
Replied by PCW on topic LinuxCNC installation + 7I96S
The only reason I asked about the CPU frequency is that the tmax values are in CPU clocks
(on X86 hardware). Knowing the CPU frequency allows the times to be calculated.

Please Log in or Create an account to join the conversation.

More
16 Oct 2025 21:06 #336569 by jmp97
Replied by jmp97 on topic LinuxCNC installation + 7I96S
So what is it due to?

Should I change the network card?

For this: www.amazon.es/Euqvos-Gigabit-Desktop-PCI...ef=asc_df_B09SXXYV4R ?

Please Log in or Create an account to join the conversation.

More
16 Oct 2025 21:24 #336570 by jmp97
Replied by jmp97 on topic LinuxCNC installation + 7I96S
I have executed this in a terminal:
sudo cyclictest -l 10000 -m -p 80 -i 1000 -q -v

He has given me this:

0: 9996: 2
0: 9997: 2
0: 9998: 2
0: 9999: 2
T: 0 ( 2995) P:80 I:1000 C: 10000 Min: 2 Act: 2 Avg: 2 Max: 7

It seems that by switching to r8168, I am no longer getting the error.

I currently have 3 axes, but I will be installing 5 simultaneous axes. Is it advisable to change the network card?

Please Log in or Create an account to join the conversation.

More
16 Oct 2025 21:30 #336571 by PCW
Replied by PCW on topic LinuxCNC installation + 7I96S
Normally the DKMS 8168 driver will fix the Ethernet latency issues

If it's not sufficient, one additional step to do is to  use isolcpus
to isolate the last processor and then pin the Ethernet IRQ to that
processor.
 

Please Log in or Create an account to join the conversation.

More
16 Oct 2025 22:56 #336576 by jmp97
Replied by jmp97 on topic LinuxCNC installation + 7I96S
Can you explain how to do it?

Now I just need to configure the INI to mm and the speeds. I'm getting errors from

hm2/hm2_7i965.0: stepgen.00.maxvel is too big for current step timings & position-scale, clipping to max possible

Please Log in or Create an account to join the conversation.

More
16 Oct 2025 23:11 #336577 by PCW
Replied by PCW on topic LinuxCNC installation + 7I96S
For isolcpus:http://wiki.linuxcnc.org/cgi-bin/wiki.pl?The_Isolcpus_Boot_Parameter_And_GRUB2

For pinning the IRQ there is a script for testing here: 

 

File Attachment:

File Name: pinirq_2025-10-16.txt
File Size:1 KB


to run, first download the script then:

chmod +x pinirq.txt

then

sudo ./pinirq.txt [ethernet_device_name]

 
Attachments:

Please Log in or Create an account to join the conversation.

More
26 Oct 2025 18:43 #337237 by jmp97
Replied by jmp97 on topic LinuxCNC installation + 7I96S
I have a problem that I can't solve.

I replaced the Ethernet network card with an Intel one. At first everything seemed to be working fine, but then I started getting “joint tracking error” problems. LinuxCNC simply stops the machine.

I increased SERVO_PERIOD in the INI from 1000000 to 4000000 (I can't increase it any further, LinuxCNC won't let me exit emergency mode).

When I move the axes quickly with the arrow keys, it seems to respond better, but it still stops.

What could be the problem? The PC is new with an Intel I5. Only LinuxCNC is in use, nothing else is running. Everything is disabled in the BIOS.

It's causing me serious mental problems

Please Log in or Create an account to join the conversation.

  • tommylight
  • tommylight's Avatar
  • Away
  • Moderator
  • Moderator
More
26 Oct 2025 19:10 #337238 by tommylight
Replied by tommylight on topic LinuxCNC installation + 7I96S
Does LinuxCNC complain about latency issues when running?
What does
ip a
in a terminal return?
Upload here the hal and ini files so we can have a look.

Please Log in or Create an account to join the conversation.

More
26 Oct 2025 19:57 - 26 Oct 2025 19:59 #337246 by jmp97
Replied by jmp97 on topic LinuxCNC installation + 7I96S
No, it does not show an error at the beginning when the machine stops. The movement error occurs when you try to move the motors afterwards.

My INI

[EMC] # The version string for this INI file. VERSION = 1.1 # Name of machine, for use with display, etc. MACHINE = HM2-Stepper # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others #DEBUG = 0x00000003 #DEBUG = 0x00000007 DEBUG = 0 [DISPLAY] # Name of display program, e.g., tklinuxcnc #DISPLAY = tklinuxcnc DISPLAY = axis update_period = 0.05 show_trail = True # Cycle time, in seconds, that display will sleep between polls CYCLE_TIME = 0.0500 # Path to help file HELP_FILE = tklinuxcnc.txt # Initial display setting for position, RELATIVE or MACHINE POSITION_OFFSET = RELATIVE # Initial display setting for position, COMMANDED or ACTUAL POSITION_FEEDBACK = ACTUAL # Highest value that will be allowed for feed override, 1.0 = 100% MAX_FEED_OVERRIDE = 1.5 # Prefix to be used PROGRAM_PREFIX = ../../nc_files/ # Introductory graphic INTRO_GRAPHIC = linuxcnc.gif INTRO_TIME = 5 [FILTER] PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image PROGRAM_EXTENSION = .py Python Script png = image-to-gcode gif = image-to-gcode jpg = image-to-gcode py = python3 [RS274NGC] # File containing interpreter variables PARAMETER_FILE = hm2-stepper.var [EMCMOT] EMCMOT = motmod # Timeout for comm to emcmot, in seconds COMM_TIMEOUT = 1.0 # Servo task period, in nanoseconds SERVO_PERIOD = 4000000 [TASK] # Name of task controller program, e.g., milltask TASK = milltask # Cycle time, in seconds, that task controller will sleep between polls CYCLE_TIME = 0.010 [HAL] # The run script first uses halcmd to execute any HALFILE # files, and then to execute any individual HALCMD commands. # list of hal config files to run through halcmd # files are executed in the order in which they appear HALFILE = hm2-stepper-eth.hal # list of halcmd commands to execute # commands are executed in the order in which they appear #HALCMD = save neta [HALUI] #No Content [TRAJ] COORDINATES = X Y Z LINEAR_UNITS = mm ANGULAR_UNITS = degree # Ajuste seguro de velocidad inicial MAX_LINEAR_VELOCITY = 20 [EMCIO] # Name of IO controller program, e.g., io EMCIO = io # cycle time, in seconds CYCLE_TIME = 0.100 # tool table file TOOL_TABLE = tool.tbl [KINS] KINEMATICS = trivkins JOINTS = 3 [AXIS_X] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_0] # # Step timing is 40 us steplen + 40 us stepspace # That gives 80 us step period = 12.5 KHz step freq # # Bah, even software stepping can handle that, hm2 doesn't buy you much with # such slow steppers. # # Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch # # This gives a maxvel of 12.5/1 = 12.5 ips # TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.01 # scale is 200 steps/rev * 5 revs/inch SCALE = -400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [AXIS_Y] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_1] TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.005 SCALE = -400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [AXIS_Z] MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 MAX_VELOCITY = 20 MAX_ACCELERATION = 100 [JOINT_2] TYPE = LINEAR MAX_VELOCITY = 20 MAX_ACCELERATION = 100 # Set Stepgen max 20% higher than the axis STEPGEN_MAX_VEL = 24 STEPGEN_MAX_ACC = 120 BACKLASH = 0.004 SCALE = 400 MIN_LIMIT = -10000.0 MAX_LIMIT = 10000.0 FERROR = 0.050 MIN_FERROR = 0.005 #HOME = 0.000 #HOME_OFFSET = 0.10 #HOME_SEARCH_VEL = 0.10 #HOME_LATCH_VEL = -0.01 #HOME_USE_INDEX = YES #HOME_IGNORE_LIMITS = YES HOME_SEQUENCE = 0 # these are in nanoseconds DIRSETUP = 200 DIRHOLD = 200 STEPLEN = 8000 STEPSPACE = 8000 [HOSTMOT2] DRIVER=hm2_eth BOARD_IP=192.168.1.121 BOARD=7i96s CONFIG="num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=0000"

My HAL:

# HAL file for HostMot2 with 3 steppers # # Derived from Ted Hyde's original hm2-servo config # # Based up work and discussion with Seb & Peter & Jeff # GNU license references - insert here. www.linuxcnc.org # # # ######################################## # Firmware files are in /lib/firmware/hm2/7i43/ # Must symlink the hostmot2 firmware directory of sanbox to # /lib/firmware before running EMC2... # sudo ln -s $HOME/emc2-sandbox/src/hal/drivers/mesa-hostmot2/firmware /lib/firmware/hm2 # # See also: # <www.linuxcnc.org/docs/devel/html/man/man...ml#config%20modparam> # and wiki.linuxcnc.org/cgi-bin/emcinfo.pl?HostMot2 # # ##################################################################### # ################################### # Core EMC/HAL Loads # ################################### # kinematics loadrt [KINS]KINEMATICS # motion controller, get name and thread periods from ini file loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS # hostmot2 driver loadrt hostmot2 # load low-level driver loadrt [HOSTMOT2](DRIVER) board_ip=[HOSTMOT2](BOARD_IP) config=[HOSTMOT2](CONFIG) # load estop latch component loadrt estop_latch # ################################################ # THREADS # ################################################ addf hm2_[HOSTMOT2](BOARD).0.read servo-thread addf motion-command-handler servo-thread addf motion-controller servo-thread # revel in the free time here from not having que run PID addf hm2_[HOSTMOT2](BOARD).0.write servo-thread addf estop-latch.0 servo-thread # ###################################################### # Axis-of-motion Specific Configs (not the GUI) # ###################################################### # ################ # X [0] Axis # ################ # axis enable chain newsig emcmot.00.enable bit sets emcmot.00.enable FALSE net emcmot.00.enable <= joint.0.amp-enable-out net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.00.enable # position command and feedback net emcmot.00.pos-cmd <= joint.0.motor-pos-cmd net emcmot.00.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-cmd net motor.00.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-fb net motor.00.pos-fb => joint.0.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirsetup [JOINT_0]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirhold [JOINT_0]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.steplen [JOINT_0]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.stepspace [JOINT_0]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-scale [JOINT_0]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.step_type 0 # ################ # Y [1] Axis # ################ # axis enable chain newsig emcmot.01.enable bit sets emcmot.01.enable FALSE net emcmot.01.enable <= joint.1.amp-enable-out net emcmot.01.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.01.enable # position command and feedback net emcmot.01.pos-cmd <= joint.1.motor-pos-cmd net emcmot.01.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-cmd net motor.01.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-fb net motor.01.pos-fb => joint.1.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirsetup [JOINT_1]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirhold [JOINT_1]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.steplen [JOINT_1]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.stepspace [JOINT_1]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-scale [JOINT_1]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.step_type 0 # ################ # Z [2] Axis # ################ # axis enable chain newsig emcmot.02.enable bit sets emcmot.02.enable FALSE net emcmot.02.enable <= joint.2.amp-enable-out net emcmot.02.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.02.enable # position command and feedback net emcmot.02.pos-cmd <= joint.2.motor-pos-cmd net emcmot.02.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-cmd net motor.02.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-fb net motor.02.pos-fb => joint.2.motor-pos-fb # timing parameters setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirsetup [JOINT_2]DIRSETUP setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirhold [JOINT_2]DIRHOLD setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.steplen [JOINT_2]STEPLEN setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.stepspace [JOINT_2]STEPSPACE setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-scale [JOINT_2]SCALE setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAX_VEL setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAX_ACC setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.step_type 0 # # The Mesa AnyIO output pins can be in open-drain mode (drive low, float # high) or push/pull mode (drive low, drive high). # # When a logical output is 1 in open-drain mode, the FPGA lets the pin # float and it gets pulled high to +5V via a 10K resistor. # # When a logical output is 1 in push/pull mode, the FPGA pushes the pin # high but only to +3.3V. This is problematic on some kinds of inputs. # #setp hm2_[HOSTMOT2](BOARD).0.gpio.048.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.049.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.054.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.055.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.060.is_opendrain 1 #setp hm2_[HOSTMOT2](BOARD).0.gpio.061.is_opendrain 1 # ################################################## # Standard I/O Block - EStop, Etc # ################################################## # A basic estop loop that only includes the hostmot watchdog. net user-enable iocontrol.0.user-request-enable => estop-latch.0.reset net enable-latch estop-latch.0.ok-out => iocontrol.0.emc-enable-in net watchdog hm2_[HOSTMOT2](BOARD).0.watchdog.has_bit => estop-latch.0.fault-in # create signals for tool loading loopback net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed

(Use CL57T stepper drivers)

Thanks
Last edit: 26 Oct 2025 19:59 by jmp97.

Please Log in or Create an account to join the conversation.

Time to create page: 0.087 seconds
Powered by Kunena Forum