Marlin or Repetier are the two main firmware choices in the open source realm; I suggest using one of those. https://github.com/MarlinFirmware/Marlinhttps://www.repetier.com/documentation/repetier-firmware/