Advanced Search

Search Results (Searched for: )

  • Aciera
  • Aciera's Avatar
23 Dec 2025 14:32
Replied by Aciera on topic Linuxcnc 2.9.x and Glade GTK3 display issue

Linuxcnc 2.9.x and Glade GTK3 display issue

Category: Gmoccapy

might help to post your 'motion_control_test.ui'
  • mmt
  • mmt
  • Sirfrimfram
  • Sirfrimfram
23 Dec 2025 13:37

7i84 doesn't fault LInxuCNC when SSerial is interrupted

Category: Driver Boards

Hello PCW,

LinuxCNC does report an error as a popup, but I was wondering if there is a way to force a fault. There doesn't seem to be any pins that can easily be used.

The main way to do it that I see is checking the state of the hm2_7i96s.0.sserial.port-0.port_state pin and generating a misc fault if it is no longer in the run state (which appears to be 0x3).

Is there a cleaner way of doing that? The only 7i84 pins in HAL that show up are just I/O.

I've attached a txt file listing all of the mesa pins.




 
  • andypugh
  • andypugh's Avatar
23 Dec 2025 12:58 - 23 Dec 2025 12:59
Altaros tool changer driver was created by andypugh

Altaros tool changer driver

Category: Turning

Altaros make a relatively inexpensive 8-station tool changer for CNC lathes. www.altaros.cz/accessories/157-automatic...ead-for-8-tools.html  I don't have one to test with, but I have written a driver for it (as a user space Python HAL component). 

I needed to add .py to the end of the filename to upload it. This should be removed to install the file

loadusr -W ./altaros_ath
# pre-selecting a tool isn't applicable on a lathe 
net tool-prep-loop iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
# tool change loop is handled in the altaros_ath component
net tool-change iocontrol.0.tool-change => altaros_ath.tool-change
net tool-changed altaros_ath.tool-changed => iocontrol.0.tool-changed
net pocket iocontrol.0.tool-prep-pocket => altaros_ath.pocket-num
net oddeven sim_toolchanger.strobe => altaros_ath.strobe
net tool-step altaros_ath.actuate => sim_toolchanger.actuate

To install the component, place the "altaros_ath" file in the same directory as the INI file of the LinuxCNC config being run, and make it executable. (chmod +x altaros_ath)
  • Mr1576
  • Mr1576
23 Dec 2025 10:24
Replied by Mr1576 on topic qtdragon_hd updated handler issue

qtdragon_hd updated handler issue

Category: Qtvcp

Thanks for the reply.

To be perfectly honest I wasn't using the on screen buttons, just the arrow keys on my keyboard which I assumed would do the same thing once keyboard shortcuts were enabled 

Having tried the on screen buttons they actually work fine in jogging increments. So the issue appears to be with my keyboard?

I tried updating to 2.9.7 but I am getting all sorts of errors downloading from the repository. Perhaps I should start another thread in a different section for that.
  • Hakan
  • Hakan
23 Dec 2025 08:47

Long initialization of Ethercat on servo drive SV660N

Category: EtherCAT

Ran into a Yaskawa Servo with EoE that needs that have EoE disabled.

Time to open an issue github.com/linuxcnc-ethercat/linuxcnc-ethercat/issues/458
  • TripleM
  • TripleM
23 Dec 2025 08:40 - 23 Dec 2025 08:46

Bitfile for Mesa 7i96s + 7i85 (+Modbus (PKT-Pin))

Category: Driver Boards

ok, I will put the 7i85 on the Serialport from 7i84 and I modify the 7I96S_7I85D_51 Bitfile.
If I plug it in serial_0 i don´t have to change the hal-file?! 
sserial_port_0=2xxxxxxx

The bit file workflow was completed without errors, and the bit file was created. Can anything go wrong during flashing, other than it not working?
library IEEE;
use IEEE.std_logic_1164.all;  -- defines std_logic types
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

-- Copyright (C) 2007, Peter C. Wallace, Mesa Electronics
-- http://www.mesanet.com
--
-- This program is is licensed under a disjunctive dual license giving you
-- the choice of one of the two following sets of free software/open source
-- licensing terms:
--
--    * GNU General Public License (GPL), version 2.0 or later
--    * 3-clause BSD License
-- 
--
-- The GNU GPL License:
-- 
--     This program is free software; you can redistribute it and/or modify
--     it under the terms of the GNU General Public License as published by
--     the Free Software Foundation; either version 2 of the License, or
--     (at your option) any later version.
-- 
--     This program is distributed in the hope that it will be useful,
--     but WITHOUT ANY WARRANTY; without even the implied warranty of
--     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--     GNU General Public License for more details.
-- 
--     You should have received a copy of the GNU General Public License
--     along with this program; if not, write to the Free Software
--     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-- 
-- 
-- The 3-clause BSD License:
-- 
--     Redistribution and use in source and binary forms, with or without
--     modification, are permitted provided that the following conditions
--     are met:
-- 
--   * Redistributions of source code must retain the above copyright
--     notice, this list of conditions and the following disclaimer.
-- 
--   * Redistributions in binary form must reproduce the above
--     copyright notice, this list of conditions and the following
--     disclaimer in the documentation and/or other materials
--     provided with the distribution.
-- 
--   * Neither the name of Mesa Electronics nor the names of its
--     contributors may be used to endorse or promote products
--     derived from this software without specific prior written
--     permission.
-- 
-- 
-- Disclaimer:
-- 
--     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
--     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
--     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
--     FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
--     COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
--     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
--     BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
--     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
--     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
--     LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
--     ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
--     POSSIBILITY OF SUCH DAMAGE.
-- 

use work.IDROMConst.all;

package PIN_7I96S_7I85D_51_pkt is
	constant ModuleID : ModuleIDType :=( 
		(HM2DPLLTag,	x"00",	ClockLowTag,	x"01",	HM2DPLLBaseRateAddr&PadT,	HM2DPLLNumRegs,		x"00",	HM2DPLLMPBitMask),
		(WatchDogTag,	x"00",	ClockLowTag,	x"01",	WatchDogTimeAddr&PadT,		WatchDogNumRegs,		x"00",	WatchDogMPBitMask),
		(IOPortTag,		x"00",	ClockLowTag,	x"03",	PortAddr&PadT,					IOPortNumRegs,			x"00",	IOPortMPBitMask),
		(OutMTag,				x"00",	ClockLowTag,	x"01",	OutMDataAddr&PadT,		   OutMNumRegs,			x"00",	OutMMPBitMask),
		(PWMTag,			x"00",	ClockHighTag,	x"01",	PWMValAddr&PadT,				PWMNumRegs,				x"00",	PWMMPBitMask),
		(StepGenTag,	x"02",	ClockLowTag,	x"05",	StepGenRateAddr&PadT,		StepGenNumRegs,		x"00",	StepGenMPBitMask),
		(MuxedQcountTag,		MQCRev,	ClockLowTag,	x"06",	MuxedQcounterAddr&PadT,		MuxedQCounterNumRegs,x"00",	MuxedQCounterMPBitMask),
		(MuxedQCountSelTag,	x"00",	ClockLowTag,	x"01",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(SSerialTag,	x"00",	ClockLowTag,	x"01",	SSerialCommandAddr&PadT,	SSerialNumRegs,		x"10",	SSerialMPBitMask),
		(XFrmrOutTag,	x"00",	ClockLowTag,	x"01",	XFrmrDataAddr&PadT,			XFrmrNumRegs,			x"00",	XFrmrMPBitMask ),
		(InMTag,					x"00",	ClockLowTag,	x"01",	InMControlAddr&PadT,			InMNumRegs,				x"00",	InMMPBitMask),
		(LEDTag,			x"00",	ClockLowTag,	x"01",	LEDAddr&PadT,					LEDNumRegs,				x"00",	LEDMPBitMask),
		--(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		--(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(PktUARTTTag,			x"02",	ClockLowTag,	    x"01",	PktUARTTDataAddr&PadT,		    PktUARTTNumRegs,		x"00",	PktUARTTMPBitMask),  	--+++add
		(PktUARTRTag,			x"02",	ClockLowTag,	    x"01",	PktUARTRDataAddr&PadT,		    PktUARTRNumRegs,		x"00",	PktUARTRMPBitMask),		--+++add
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(NullTag,				x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"00000000"),
		(InMWidth0Tag,			x"00",	NullTag,			x"00",	NullAddr&PadT,					x"00",					x"00",	x"0000000B") -- hide this tag here until we find a better way
		);
			
	constant PinDesc : PinDescType :=(
	
-- 	Base func  sec unit sec func 	sec pin						 	      
		
																						--		
		IOPortTag & x"00" & InMTag & InMData0Pin,     			  		-- I/O 00 	embedded 7I96 Simple I/O
		IOPortTag & x"00" & InMTag & InMData1Pin,   			  		-- I/O 01   	
		IOPortTag & x"00" & InMTag & InMData2Pin,   			  		-- I/O 02   
		IOPortTag & x"00" & InMTag & InMData3Pin,  			  	   	    -- I/O 03		
		IOPortTag & x"00" & InMTag & InMData4Pin,   			   	 	-- I/O 04	
		IOPortTag & x"00" & InMTag & InMData5Pin,  			      	    -- I/O 05		
		IOPortTag & x"00" & InMTag & InMData6Pin,  			     		-- I/O 06   
		IOPortTag & x"00" & InMTag & InMData7Pin,       				-- I/O 07   	
		IOPortTag & x"00" & InMTag & InMData8Pin,    					-- I/O 08   
		IOPortTag & x"00" & InMTag & InMData9Pin,       				-- I/O 09   
		IOPortTag & x"00" & InMTag & InMDataAPin,       				-- I/O 10   
		IOPortTag & x"00" & XfrmrOutTag & XfrmrOut0Pin, 			  	-- I/O 11   
		IOPortTag & x"00" & XfrmrOutTag & XfrmrOut1Pin,  			 	-- I/O 12   
		IOPortTag & x"00" & XfrmrOutTag & XfrmrOut2Pin,  			 	-- I/O 13		
		IOPortTag & x"00" & XfrmrOutTag & XfrmrOut3Pin,  			 	-- I/O 14   	
		IOPortTag & x"00" & OutMTag & OutMData4Pin,   		            -- I/O 15   	
		IOPortTag & x"00" & OutMTag & OutMData5Pin,   		            -- I/O 16   	

		IOPortTag & x"00" & StepGenTag & StepGenStepPin,				-- I/O 17	embedded 7I96 Step/Dir/Enc/Serial
		IOPortTag & x"00" & StepGenTag & StepGenDirPin,					-- I/O 18	
		IOPortTag & x"01" & StepGenTag & StepGenStepPin,				-- I/O 19	
		IOPortTag & x"01" & StepGenTag & StepGenDirPin,					-- I/O 20	
		IOPortTag & x"02" & StepGenTag & StepGenStepPin,				-- I/O 21	
		IOPortTag & x"02" & StepGenTag & StepGenDirPin,					-- I/O 22	
		IOPortTag & x"03" & StepGenTag & StepGenStepPin,				-- I/O 23	
		IOPortTag & x"03" & StepGenTag & StepGenDirPin,					-- I/O 24	
		IOPortTag & x"04" & StepGenTag & StepGenStepPin,				-- I/O 25	
		IOPortTag & x"04" & StepGenTag & StepGenDirPin,					-- I/O 26	
		IOPortTag & x"02" & MuxedQCountTag & MuxedQCountQAPin,		    -- I/O 27
		IOPortTag & x"02" & MuxedQCountTag & MuxedQCountQBPin,		    -- I/O 28	
		IOPortTag & x"02" & MuxedQCountTag & MuxedQCountIDXPin,		    -- I/O 29	
		IOPortTag & x"00" & PktUARTRTag & PktURDataPin, 				-- I/O 30   +++add
		IOPortTag & x"00" & PktUARTTTag & PktUTDataPin,  				-- I/O 31   +++add
		IOPortTag & x"00" & PktUARTTTag & PktUTDrvEnPin,				-- I/O 32   +++add
		IOPortTag & x"00" & XfrmrOutTag & XfrmrRefPin,    				-- I/O 33
		
																		--		Expansion port
																		-- GPIO     DB25		HDR26
		IOPortTag & x"00" & SSerialTag & SSerialRX5Pin, 				-- I/O 34	PIN 1    PIN 1	 	
		IOPortTag & x"00" & SSerialTag & SSerialTX5Pin, 				-- I/O 35	PIN 14   PIN 2		
		IOPortTag & x"00" & SSerialTag & SSerialRX4Pin, 				-- I/O 36	PIN 2    PIN 3		
		IOPortTag & x"00" & SSerialTag & SSerialTX4Pin, 				-- I/O 37	PIN 15   PIN 4	
		IOPortTag & x"00" & SSerialTag & SSerialRX3Pin, 				-- I/O 38	PIN 3    PIN 5	
		IOPortTag & x"00" & SSerialTag & SSerialTX3Pin, 				-- I/O 39	PIN 16   PIN 6	
		IOPortTag & x"00" & SSerialTag & SSerialRX2Pin, 				-- I/O 40	PIN 4    PIN 7	
		IOPortTag & x"00" & SSerialTag & SSerialTX2Pin, 				-- I/O 41	PIN 17   PIN 8	
		IOPortTag & x"00" & SSerialTag & SSerialRX1Pin, 				-- I/O 42	PIN 5    PIN 9	
		IOPortTag & x"00" & SSerialTag & SSerialTX1Pin, 				-- I/O 43	PIN 6    PIN 11
		IOPortTag & x"00" & MuxedQCountSelTag & MuxedQCountSel0Pin, 	-- I/O 44	PIN 7    PIN 13
		IOPortTag & x"00" & MuxedQCountTag & MuxedQCountQAPin,		    -- I/O 45	PIN 8    PIN 15
		IOPortTag & x"00" & MuxedQCountTag & MuxedQCountQBPin,		    -- I/O 46	PIN 9    PIN 17
		IOPortTag & x"00" & MuxedQCountTag & MuxedQCountIDXPin,		    -- I/O 47	PIN 10   PIN 19
		IOPortTag & x"01" & MuxedQCountTag & MuxedQCountQAPin,		    -- I/O 48	PIN 11   PIN 21
		IOPortTag & x"01" & MuxedQCountTag & MuxedQCountQBPin,		    -- I/O 49	PIN 12   PIN 23
		IOPortTag & x"01" & MuxedQCountTag & MuxedQCountIDXPin,		    -- I/O 50	PIN 13   PIN 25

		LIOPortTag & x"00" & PWMTag  & PWMAOutPin, 						-- 7I96S analog out PWM
		LIOPortTag & x"00" & PWMTag  & PWMBDirPin, 						-- dummy for now
																										
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin, 
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,

		emptypin,emptypin,emptypin,emptypin,emptypin,
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin, -- added for IDROM v3
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,
		
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,
		emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin,emptypin);

end package PIN_7I96S_7I85D_51_pkt;
  • Hakan
  • Hakan
23 Dec 2025 08:16 - 23 Dec 2025 08:17
Replied by Hakan on topic refClockSyncCycles="-1", I got Messages.

refClockSyncCycles="-1", I got Messages.

Category: EtherCAT

Hello Mr tar_san,

the output of dmesg was very helpful. We need to fix all issues appearing,
the first one is your drive is a EoE-capable drive. Ethernet over Ethercat.
Unfortunately linuxcnc doesn't support that.
The best way is to disable eoe in the ethercat mastyer.
Remove the installed ethercat master.
Then download ethercat master from the official site
Configure using the --disable-eoe=true option
git clone https://gitlab.com/etherlab.org/ethercat
./bootstrap
./configure --sysconfdir=/etc --disable-eoe=true
make all modules
... and so on, continue to build and configure your system. Instructions are here.
gitlab.com/etherlab.org/ethercat/-/blob/stable-1.6/INSTALL.md

There is another possibility to disable EoE, but that disables EoE in the drive, and I would think
you need EoE for communication with some Yaskawa tuning software. Guessing, but not unlikely.

Test with the new ethercat master, the EoE messages should now be gone.
Let's see how many of the other messages are still there and then we act on them.

Referring to my previous post. Please add on the master line
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="1" syncToRefClock="true">
If syncToRefClock gives an error because it is not supported (yet), use the following syntax:
<master idx="0" appTimePeriod="1000000" refClockSyncCycles="-1">
Note the minus sign.

Let's see how far you come with those modifications. If there are still problems,
please show the output of dmesg again, and any errors from linuxcnc.
  • Nator
  • Nator
23 Dec 2025 08:10
Replied by Nator on topic Mesa Card Basics

Mesa Card Basics

Category: Driver Boards

HI PCW,
thank you for your Answer!
But for a better understanding. How is the communication between LinuxCNC and the Card done? With the LPT "communication" the LinuxCNC software gets a command to go 3mm in X direction, so "itself" sends the pulses on the LPT in the (hopefully) correct speed.
Does LinuxCNC still sends "pulses" when it has a mesa card and the card only corrects the jitters? Or is there some kind of communication so that LinuxCNC just sends go 3mm in that speed and the card does the pulses? LinuxCNC then know how long it takes for that movement and after this time it send the next command.
With the second approach it would probably be really hard to do something like probing.
Thanks !
  • cmorley
  • cmorley
23 Dec 2025 05:26
Replied by cmorley on topic qtdragon_hd updated handler issue

qtdragon_hd updated handler issue

Category: Qtvcp

I checked 2.9.7 and 2.9.3. I see no jogging with screen buttons issue.
I'm assuming you mean the screen buttons.
It could be a key repeat issue.

I would suggest updating your whole system to 2.9.7 before I'd suggest updating the handlerfile, but we should see if it's a system problem first.
  • Thllll
  • Thllll
23 Dec 2025 03:24
Probe Error causes Jog lockout was created by Thllll

Probe Error causes Jog lockout

Category: QtPyVCP

2.9.4, Probe Basic

Probing failure either a g38.2 or g38.3 locks out the jog, 
Estop cycle , machine power cycle , probe on or off, homing, locks out jogging in all directions. Any way to reset this without restarting Linuxcnc?
  • EW_CNC
  • EW_CNC's Avatar
23 Dec 2025 02:57

Ohmic Probe + Material Height Feature Request

Category: Plasmac

Ok, Sounds Good.
I'll update and give it a try.
Thanks!
  • snowgoer540
  • snowgoer540's Avatar
23 Dec 2025 01:35
Replied by snowgoer540 on topic Ohmic Probe + Material Height Feature Request

Ohmic Probe + Material Height Feature Request

Category: Plasmac

I finally got this to the finish line.  Thank you for what you provided, but from a qtplasmac standpoint all development on 2.9 has ceased.  I have pushed this update, and book ended it with some bug fixes, but to the master branch only (2.10).

github.com/LinuxCNC/linuxcnc/commit/4e26...712bc80a993377610a37

Your way seems like it would work though. 

All that said, I would encourage you to move to 2.10 and test these features if your production risks allow it.  There have been a fairy amount of bug fixes/feature updates since 2.9.
  • snowgoer540
  • snowgoer540's Avatar
23 Dec 2025 01:31
Replied by snowgoer540 on topic QtPlasmac Updates

QtPlasmac Updates

Category: Plasmac

QtPlasmaC updates - Master (v2.10):
  • change power button from ActionButton to QPushButton on 9x16 screen
  • allow probe test to be aborted when plasmac.probe-test-error goes true
  • reload material file before repopulating the GUI
  • allow Probe Height and Safe Height to be zero to follow component and docs
  • normalize distance decimal places for Parameters tab
  • tweak gcode filter decimal places
  • add Slat Height and Material Thickness probing option
  • PCW
  • PCW's Avatar
23 Dec 2025 00:43

7i84 doesn't fault LInxuCNC when SSerial is interrupted

Category: Driver Boards

LinuxCNC should report the error

If you need LinuxCNC to do a specific response to the error
you would need to set that up in the hal file
Displaying 241 - 255 out of 20697 results.
Time to create page: 0.377 seconds
Powered by Kunena Forum