What's New In The 3D Printer World

11 minutes reading time (2127 words)
Featured 

Chitu G code Explained

        Once again Scott Here to see if I can’t help you understand the something else I have seen questions about in the 3D printing community.  This Time around I’ll go over the G-code used By Chitu on their F mini control board and other custom made control boards used by Tronxy and several other companies now. This control board comes on the Tronxy X5SA, X5ST, X5S-E2, XY-3 and XY-2 to name a few.
 
PLEASE NOTE CHANGING THESE SETTING WILL change your printers behavior. Therefore I do not recommend changing settings yourself without understanding what each setting your adjusting does.

                So To start with G code files can not be written in word you are better off writing then in notepad because it does not leave artifacts in the background. Therefore any time you want to update the firmware you need to either edit the g code you have or start a new notepad document for it.

                I am going to do my best to explain each of the G codes in every day terms If I can think of how. Then if you want you can copy each line into a notepad document and edit and save it. Once saved to the SD card put the SD card into the control board and run that G code file as if it was a print and done. Make sure ever g code file you make has the save g code at the end.

                Please not that this is the first G code I have seen that is like this “ M8012 I200” in this case the M8012 is the code then “ I”  is the actual settings your adjusting  so in the above example it is 200.  The this example M8012 is the code for X Y max movement speed then the 200 is the mms. So if you wanted to slow down the max speed you could change it to 120 or 300 to speed it up depending on your printer.

 

Resume on power Lose

                M8000 I1  ; used if you have the resume on power lose module installed

                M8000 I0 ;   used if you do not have the resume on power lose module installed

Stepper Motor Direction

    X stepper motor

M8002 I-1 ;  current direction

M8002 I1 ;  Reverse direction

    Y stepper motor

M8003 I-1 ;  current direction

M8003 I1 ;  Reverse direction

    Z stepper motor

M8004 I-1 ;  current direction

M8004 I1 ;  Reverse direction

    E stepper motor

M8005 I-1 ;  current direction

M8005 I1 ;  Reverse direction

Movement configuration

    X axis Movement

M8005 X0 ; print head moves in X axis

M8005 X1 ; Bed moves in X axis

    Y axis Movement

M8005 Y0 ; print head moves in X axis

M8005 Y1 ; Bed moves in X axis

    Z axis Movement

M8005 Z0 ; print head moves in X axis

M8005 Z1 ; Bed moves in X axis

Speed settings:

speed is in mm/s; acceleration is in mm/ s^2 start speed. When the moving speed exceeds this speed, it takes this speed as the starting speed and begins to accelerate.Otherwise, it is in constant motion at the moving speed

            M8006 I120

JERK

            M8007 I10 ; Lower this is your getting ringing

ACCLELERATION

Acceleration, the larger the value is, the greater the actual average moving speed is.

            M8008 I1000

Axis Steps Per Millimeter

example, 1.8 degree stepper motor, pulley with 20 teeth, tooth pitch is 2.032mm, 1/16 microstepping are (20*2.032)/((360/1.8)*16)

            Set X and Y the same

M8009 S0.0125 ; adjust the 0.0125  to correct both at once

    independent X,Y stepper motor parameters

M8009 X0.0127 Y0.0127

    Z axis

    value of each step of Z. The calculation formula: lead /((360/1.8)*16),

M8010 S0.0025

    Extruder Calibration

    value of each step of E. This value is equal to the 1/3200 circumference of extruder gear. In addition

M8011 S0.010799

Max Movement / print speed

XY movement mm/s

M8012 I200

Z movement mm/s

M8013 I30

extruder mm/s

M8014 I120

Home Speed settings

    first home speed

Z-axis  

M8015 I8

X-axis and Y-axis

M8015 S30

    second home speed

 Z-axis returns

M8016 I4

X-axis and Y-axis

M8016 S5

Pre-extrusion before print

    Pre- extruded

M8017 I10

    max speed of pre-extrusion(mm/s)

     Feeding by non-reduction gear, max speed always above 100.

M8018 I20

E max speed

Not sure why this one is here because M8014 does the same thing

            M8019 I50

Retract

    Distance

M8020 S1.5 ; will set the retract to 1.5mm no matter what the slicer says
M8020 S0 ; Follows slicer retract settings

   Speed

M8033 S8 ;  will set retract speed to 8mms

M8033 S0 ; Follows slicer retract speed settings

Filament Diameter

            M8021 S1.75

Max hotend temperature

            M8022 I260

Min Hotend Temperature for extruder to turn on

            M8022 T170

Maximum temperature of hot bed

            M8023 I120

Temperature error detection

            M8023 T0 ; Enable temperature error detection

            M8023 T1 ; Forbidding temperature error detection 

Maximum distance of X, Y, Z,

exceeding the distance will cause the buzzer to buzz

     X

M8024 I330

    Y

M8025 I330

    Z

M8026 I439

number of extrusion head Or use of second E stepper driver If the second driver chip set is there. (tronxy E2 versions only)  
             Set the number of extrusion headat least 1, at most 3 at present


             M8027 I1

            Whether it is 3 in 1 out nozzle or 2 in 1 out nozzle, these two nozzles share a temperature sensor, share a heating rod
            0: not 3/2 in 1 out nozzle       1: 3/2 in 1 out nozzle
            

            M8027 S0 

        The second extrusion head will be used as Z. For some large equipment, two Z axes will be needed. Therefore E2 can be used as Z axis. 
            This order will force the number of extrusion heads to be 1      0: double Z double limit mode, the second limit connect to X+,
            1£ºdouble Z single limit mode, only connect to one limit switch . if to enable this function, place a tick in front of the command.

            M8027 Z0
        the second extrusion head will be used as Y
            if to enable this function, place a tick in front of the command.


            M8027 Y0

       The second extrusion head is used as the first one, because some machines use two motors to feed the wire
            If you need to enable this feature, place a tick in front of the command


            M8027 E0

Heated Bed

            M8027 T1 ; enable hot bed

            M8027 T1 ; disable hot bed

Advanced Settings

    Extra pri after retract

M8028 S0.00 ; Add to the 0.00 to add extra length on the prime length after retract.

    Home location

            M8029 I0 ; front left

M8029 I1 ; Unilateral maximum point limit

M8029 I2 ; Bilateral limit

            M8029 I3 ; Limit in the left rear of the machine

types for limit switch

            M8029 T0 , limit switch normally open, when not triggered, the signal level is open

            M8029 T1:XYZ limit switch normally closed, when not triggered, the signal level is closed

Filament out Detection

Uses same plus as auto bed level sensor

            M8029 D0 ; ban fault detection

            M8029 D1 ; enabled fault detection

Limit switch type for filament out detection

            M8029 P1 ; same with XYZ limit type

            M8029 P-1 ;  opposite to XYZ limit type

part cooling Fan

M8030 I0 ; fan is controlled by slicing software
M8030 Ixxx ; setting a temperature that is larger than 0 fan controlled by firmware

Coldend Fan

            M8030 I0 ; full speed from powering on control board

            M8030 I50 T-1 ; allows you to set what speed and temp the coldend fan comes on at

SD card displayed on screen

            M8034 I1 ; Yes

            M8034 I0 ; No

Auto level point setup

The maximum is 5 as regard to leveling setting, X, Y are floating number, if X, Y are small than 1, then it indicates the corresponding proportion of journey. Otherwise, it indicates the absolute coordinates of X and Y, the unit is mm.

            M8035  I3 ; the number of instruction is same with that of point

            M8036  X-20 Y0 ;  start point

            M8036  X50 Y50 ; second point

            M8036  X250 Y250 , Third point

            M8036 X£» ; ends auto level

Machine type

            M8080 I0 ; Cartesian

            M8080 I2 ; Corexy

Thermistor type

            M8081 I0 ; Ideal NTC 100K 1% 3950 B

            M8081 I2 ; corresponding to the type 2 sensor of marlin

Auto leveling setting

            M8083 I0 ; ban auto leveling

            M8083 I1;  enable auto leveling (leveling switch connect Z)

Z Height Offset(TORONXY HAS THE ONSCREEN)

I skipped this because Tronxy has it onscreen. Height difference of Z leveling limit = Z zero position-Z position for leveling limit.    0: forbid deviation, the route of Z is determined by¡°set Z as zero¡±,the printed

G code doesn’t need the automatic high leveling order. It's recommended to use this mode.   Non 0:Z is automatically determined when the leveling limit is triggered. Under this mode,

G29 automatic leveling order must be after the return to zero of G28 and before begin print. If the extrusion head is near to main board during limitation, the value is positive.

            M8084 Z4

Boot Screen

The minimum is 100ms,the maximum is 6000ms

            M8085 I500

standby mode to shutdown

 This function can only be used for the equipment installed with the power module.  The unit is second(s). When the value is 0, it indicates forbidding the function of shutdown after standby.

            M8085 P0

Max Fan speed

Max 256 with more noise, which can be adjusted through this parameter

            M8489 I256

Disable steppers  and turn off all heating after printing

            M8489 P0 ; Turn off all

            M8489 P1 ; G Code Controlled        

PID
I have not used these one will more than likely be hotend the other the bed

            M301 P22.2 I1.08 D114 ; enables PID

            M303 E0 S150 C5; enables PID

Laser Engraver

            M8520 I0 ; do not support the laser engraving

            M8520 I1 ; support laser engraving, there are more buttons inside to set speed

Wifi Setup

    Replace the  word networkname with your network's name leaving the quotation marks, Replace the word Password with your networks     password leaving quotation marks.

           M9005 '"Networkname","Password"'

SAVE

MUST DO THIS IN EVER G CODE SET YOU SEND THE PRINTER

            M8500




below is an example of a Gcode I personally used to do basic update to the X5SA. 


;Speed settings: speed is in mm/s; acceleration is in mm/ s^2 
;start speed.When the moving speed exceeds this speed, it takes this speed as the starting speed and begins to accelerate.
;Otherwise, it is in constant motion at the moving speed c3d
M8006 I120
; ==================================
;
;JERK
;
;maximum speed while turning a corner. There there will be a large number of reciprocating motion while filling.
;The noise is loud while this value is large. When the value is small, the speed is slow c3d
M8007 I10
; ==================================
;ACCLELERATION
;
;acceleration, the larger the value is, the greater the actual average moving speed is.
;However, the noise is loud. The actual speed is small when the value is small c3d
M8008 I3000
; ==================================
;MAX MOVEMENT / PRINT SPEED.
;
;maximum speed of various parameters. In order to ensure the stabilization of the machine, 
;please make settings according to the measured results
;maximum speed of XY movement mm/s
M8012 I200
; ==================================
;maximum speed of Z movement mm/s
M8013 I30
; ==================================
;maximum speed of the extruder mm/s
M8014 I120
; ==================================
;Z-axis home speed.When using makerware software,the home speed will be ignored while slicing,
;because gcode specified the home speed
;first home speed when Z-axis returns to zero, higher
M8015 I8
; ==================================
;first home speed when X-axis and Y-axis returns to zero, higher
M8015 S30
; ==================================
;second home speed when Z-axis returns to zero, slower
M8016 I4
; ==================================
;second home speed when X-axis and Y-axis returns to zero, slower
M8016 S5
; ==================================
;Thermal Protection.
;
; Tronxy Has this turned off
;Forbidding temperature error detection. The default temperature error detection will pop up the warning when the temperature 
;sensor is not well plugged in or the heating power is too small. Strongly suggest not forbidding this function
;1: Forbidding temperature error detection                  0: Enable temperature error detection
M8023 T0
; ==================================
;MAX TRAVEL (adjusted because I have bed lowering installed).
;
;maximum distance of Z
M8026 I439
; ==================================
;the duration of the boot screen,the minimum is 100ms,the maximum is 6000ms c3d
M8085 I500
; ==================================
M117 PRINTER NOW CUSTOMIZED
;SAVE
;
;¡¾Save command¡¿ This parameter must not be less, otherwise all parameters can not be saved to the device
;save the configuration
M8500

 

The Shop Is Back
Tronxy X5S to X5SA Upgrade kit installation

Related Posts

 

Comments 99

Guest - Bill Berg on Wednesday, 14 November 2018 22:42

Thank you. I'll try to locate the client.

Thank you. I'll try to locate the client.
Scott Worthington on Wednesday, 14 November 2018 22:50
http://www.cbd-3d.com/en/soft/client.html
Guest - Bill Berg on Thursday, 15 November 2018 03:18

Scott,
I installed the client - nice - thks for the link.
But I didn't notice how to see what's currently in the controller.
Am I missing something?
Just makes me feel better if know what was existing so that after I make any changes, if not acceptable, I know how to get back to what was there originally.

Scott, I installed the client - nice - thks for the link. But I didn't notice how to see what's currently in the controller. Am I missing something? Just makes me feel better if know what was existing so that after I make any changes, if not acceptable, I know how to get back to what was there originally.
Scott Worthington on Thursday, 15 November 2018 03:31

I don't recall exactly where just know that like I said the listed Gcode above is exactly what the the codes are unless I mention it in the article because the code that comes out is not readable... look at one of the first comments on here and you will see exactly what comes out. You really can't break this control board firmware.

I don't recall exactly where just know that like I said the listed Gcode above is exactly what the the codes are unless I mention it in the article because the code that comes out is not readable... look at one of the first comments on here and you will see exactly what comes out. You really can't break this control board firmware.
Guest - Bill Berg on Thursday, 15 November 2018 03:43

I saw that too - tried to look at one of the firmware updates and it's not readable.

Any chance that the x5sa is running custom firmware, or am I being too anal?

Appreciate your patience, (from someone who doesn't even have a printer yet :-))
-B

I saw that too - tried to look at one of the firmware updates and it's not readable. Any chance that the x5sa is running custom firmware, or am I being too anal? Appreciate your patience, (from someone who doesn't even have a printer yet :-)) -B
Scott Worthington on Thursday, 15 November 2018 03:51

Its is custom or tweaked chitu firmware which is exactly where the listed gcode is from my own x5sa ... version 1 and version 2 of the control board and version 3 and the chitu control board for the x5se2 all run the exact same firmware... after all I wrote the article using my personal printer for info.

Its is custom or tweaked chitu firmware which is exactly where the listed gcode is from my own x5sa ... version 1 and version 2 of the control board and version 3 and the chitu control board for the x5se2 all run the exact same firmware... after all I wrote the article using my personal printer for info.
Guest - Bill Berg on Thursday, 15 November 2018 15:12

If I may ask, how did you get those codes from the control board?

On another topic-
Is the SD card that comes with the x5sa posted anywhere for download? Would be nice to be able to review the build instructions while I'm waiting for delivery.

Regards,
-B

If I may ask, how did you get those codes from the control board? On another topic- Is the SD card that comes with the x5sa posted anywhere for download? Would be nice to be able to review the build instructions while I'm waiting for delivery. Regards, -B
Scott Worthington on Thursday, 15 November 2018 15:22

been a while and as I mentioned chitu client pulled it for me can't recall exact setups plus tronxy sent them to me. the X5S and X5SA are 99% exact same so look here on the site for some of the best build instructions out. look around the site there is a ton of info here.

been a while and as I mentioned chitu client pulled it for me can't recall exact setups plus tronxy sent them to me. the X5S and X5SA are 99% exact same so look here on the site for some of the best build instructions out. look around the site there is a ton of info here.
Guest - Bill Berg on Thursday, 15 November 2018 16:51

Thank you....Will look around the site as soon as my registration is approved.

-B

Thank you....Will look around the site as soon as my registration is approved. -B
Scott Worthington on Thursday, 15 November 2018 17:25

approved but the info I'm talking about is in the tech articles area and public view.

approved but the info I'm talking about is in the tech articles area and public view.
Bill Berg on Saturday, 17 November 2018 01:03

I looked around on the site but did not find any x5sa format files for Cura/Simplify3d/Slic3r/etc. Has anyone posted some of these to configure the slicer? Or do some come with the unit?

Regards,
-B

I looked around on the site but did not find any x5sa format files for Cura/Simplify3d/Slic3r/etc. Has anyone posted some of these to configure the slicer? Or do some come with the unit? Regards, -B
Scott Worthington on Saturday, 17 November 2018 01:09

I post my FFF file in the facebook groups not uploaded here as the software down't like it but I use S3D I use my X5S profile exact same settings I use for all my other printers pretty much except print area

I post my FFF file in the facebook groups not uploaded here as the software down't like it but I use S3D I use my X5S profile exact same settings I use for all my other printers pretty much except print area
Bill Berg on Saturday, 17 November 2018 01:17

Thank you. I was concerned that since the firmware on the x5sa board is different than the x5a some of the gcodes might also be different.

I joined the Tronxy X3, X1, X5 3D Printer Users (All models) group. Are there others that you recommend I join?

All these questions and I don't even have a printer yet :-(

-B

Thank you. I was concerned that since the firmware on the x5sa board is different than the x5a some of the gcodes might also be different. I joined the Tronxy X3, X1, X5 3D Printer Users (All models) group. Are there others that you recommend I join? All these questions and I don't even have a printer yet :-( -B
Scott Worthington on Saturday, 17 November 2018 01:22

sent you a message on FB to keep none topic post here limited... in case others decide to read all the comments...LOL

sent you a message on FB to keep none topic post here limited... in case others decide to read all the comments...LOL
Bill Berg on Saturday, 17 November 2018 02:27

Understood.
Didn't see it on the Tronxy X3, X1, X5 3D Printer Users (All models) group?

Understood. Didn't see it on the Tronxy X3, X1, X5 3D Printer Users (All models) group?
Guest - Bruno Boi on Thursday, 27 December 2018 13:03

Hi Scott !
Useful article for the community, thanks a lot for that.

I have found that some anycubic mega i3 have the same board and here you can find more Gcode commands:
https://www.thingiverse.com/groups/anycubic-i3-mega/forums/general/topic:31353

I did not tested it all, but I managed to save the configuration on a file on SD card with:

M8512 "config.gcode"

Below I paste what I found on the thingiverse forum.
----------------

;[code for testing];;
;M8510 ; Make the configuration take effect immediately, but do not save the configuration, mainly used in the occasion of temporary test configuration
;M8511 ;Reverted to a saved configuration, unsaved configuration lost, usually used with M8511
;M8512 "Configuration file.gcode" ; save the configuration to a file, the file is an absolute path
;M8520 I0 ;1: Support for laser engraving related configuration
; 0: does not support the relevant configuration of laser engraving, the related function is to set the speed in the more button
;M8520 T0 ;1: Support related test functions for manual leveling
; 0: does not support manual leveling related functions, the function is reflected in the operation of leveling
;M6010 T0 I4 ; Create a loop start point, start Loop0, loop four times
;M6011 T0 ; Check if Loop0 is completed, if it is not completed, continue the loop, otherwise continue
;M6020 X0.1 Y0.92 Z0.5 F6500 ; X, Y, Z and the ratio of the entire print stroke as values
;M6030 "file" ; run the file in the current relative path, if the file name has ':', it means absolute path
;M6031 ; Pause printing, but does not move the extrusion head
;M6032 "file" ; print the file from the sd card and prepare to read the file
; M6040 I0 ; restart, the parameters followed by the delay is how long mm
;M6045 I4000 "M24" ; Suspend current printing, execute M24 command after 4s delay to resume sd execution command
;M6046 I4000 "M0"; similar to M6045, but will not suspend the execution of the sd card, do not block the normal execution of the sd card
;M6050 S0.1 P0.04 ; mixing color configuration extrusion head 1 wire opening ratio of 0.1, Z for each 1 mm increase extrusion head 1 wire ratio increased by 0.04
;M6051 D0 P0 I1 ; The D0 pin level is pulled into 1 and there are 8 extended IO ports. The motherboard version must have an extended IO port at V3.6 or above.
On the side of the motherboard, there is a silk screen next to the IO port.
;M6051 D0 P1 I1 ; Wait for the D0 pin level to become 1, otherwise the command is blocked

Hi Scott ! Useful article for the community, thanks a lot for that. I have found that some anycubic mega i3 have the same board and here you can find more Gcode commands: https://www.thingiverse.com/groups/anycubic-i3-mega/forums/general/topic:31353 I did not tested it all, but I managed to save the configuration on a file on SD card with: M8512 "config.gcode" Below I paste what I found on the thingiverse forum. ---------------- ;[code for testing];; ;M8510 ; Make the configuration take effect immediately, but do not save the configuration, mainly used in the occasion of temporary test configuration ;M8511 ;Reverted to a saved configuration, unsaved configuration lost, usually used with M8511 ;M8512 "Configuration file.gcode" ; save the configuration to a file, the file is an absolute path ;M8520 I0 ;1: Support for laser engraving related configuration ; 0: does not support the relevant configuration of laser engraving, the related function is to set the speed in the more button ;M8520 T0 ;1: Support related test functions for manual leveling ; 0: does not support manual leveling related functions, the function is reflected in the operation of leveling ;M6010 T0 I4 ; Create a loop start point, start Loop0, loop four times ;M6011 T0 ; Check if Loop0 is completed, if it is not completed, continue the loop, otherwise continue ;M6020 X0.1 Y0.92 Z0.5 F6500 ; X, Y, Z and the ratio of the entire print stroke as values ;M6030 "file" ; run the file in the current relative path, if the file name has ':', it means absolute path ;M6031 ; Pause printing, but does not move the extrusion head ;M6032 "file" ; print the file from the sd card and prepare to read the file ; M6040 I0 ; restart, the parameters followed by the delay is how long mm ;M6045 I4000 "M24" ; Suspend current printing, execute M24 command after 4s delay to resume sd execution command ;M6046 I4000 "M0"; similar to M6045, but will not suspend the execution of the sd card, do not block the normal execution of the sd card ;M6050 S0.1 P0.04 ; mixing color configuration extrusion head 1 wire opening ratio of 0.1, Z for each 1 mm increase extrusion head 1 wire ratio increased by 0.04 ;M6051 D0 P0 I1 ; The D0 pin level is pulled into 1 and there are 8 extended IO ports. The motherboard version must have an extended IO port at V3.6 or above. On the side of the motherboard, there is a silk screen next to the IO port. ;M6051 D0 P1 I1 ; Wait for the D0 pin level to become 1, otherwise the command is blocked
Scott Worthington on Thursday, 27 December 2018 14:36

Thanks for the info wonder where they go the codes because those are not listed from chitu... I tried to comment on the post but thingiverse is acting up they seam to comment about someone else doing this article and I want to make sure they know I'm the writer and if they have questions they can ask me. I'll do my best to answer.

Thanks for the info wonder where they go the codes because those are not listed from chitu... I tried to comment on the post but thingiverse is acting up they seam to comment about someone else doing this article and I want to make sure they know I'm the writer and if they have questions they can ask me. I'll do my best to answer.
Guest - Rahmi on Friday, 18 January 2019 04:28

Hi Scott,

I have a question. I fried my x stepper driver while adjusting stepper voltage. I was wondering is there any code that allowes me to use second extruder stepper driver as X ?
Regards
Rahmi

Hi Scott, I have a question. I fried my x stepper driver while adjusting stepper voltage. I was wondering is there any code that allowes me to use second extruder stepper driver as X ? Regards Rahmi
Scott Worthington on Friday, 18 January 2019 04:35

If there is I do not know of one and unless you have the newest control board for the e2 then while the plug for the second extruder might be there there is not a second driver chip set on the control board. Chitu stepper drivers are adjusted differently than most others

If there is I do not know of one and unless you have the newest control board for the e2 then while the plug for the second extruder might be there there is not a second driver chip set on the control board. Chitu stepper drivers are adjusted differently than most others
Guest - Rahmi Uluc on Friday, 18 January 2019 06:57

Thank you so much for quick reply, I really appreciate that.
I have an X5SA it has a stepper driver labelled as E2.
I have 5 stepper drivers X - Y - Z (parallels) - E1 and E2.
I am guessing I have the newest control board.
After I fried my boards X stepper driver I remembered seeing your post and the g codes you shared, such using second extruder as Y or Z. I thought there could be another G code for E2 to X conversion as well.
I guess we will never know the answer unless they release the codes if they are exist.
Thank you so much again for sharing all the codes, I was able to use my printer properly after you releasing gcodes on this post.
In 2019 we are still dealing with potentiometers on mainboards.
I believe this great community and supportive people like you will keep making everything easier for final users.

Regards
Rahmi

Thank you so much for quick reply, I really appreciate that. I have an X5SA it has a stepper driver labelled as E2. I have 5 stepper drivers X - Y - Z (parallels) - E1 and E2. I am guessing I have the newest control board. After I fried my boards X stepper driver I remembered seeing your post and the g codes you shared, such using second extruder as Y or Z. I thought there could be another G code for E2 to X conversion as well. I guess we will never know the answer unless they release the codes if they are exist. Thank you so much again for sharing all the codes, I was able to use my printer properly after you releasing gcodes on this post. In 2019 we are still dealing with potentiometers on mainboards. I believe this great community and supportive people like you will keep making everything easier for final users. Regards Rahmi
Already Registered? Login Here
Guest
Sunday, 22 December 2024

To keep the site live and make improvements Please consider Donating. Thank you for your donation.