{"id":22956787,"url":"https://github.com/isysxp/esp32_telnet_terminal","last_synced_at":"2026-05-17T06:31:00.356Z","repository":{"id":265951611,"uuid":"896793814","full_name":"Isysxp/ESP32_Telnet_Terminal","owner":"Isysxp","description":"A minimal VT52 telnet client using an ESP32-S3-Touch-LCD-4.3 display.","archived":false,"fork":false,"pushed_at":"2025-01-25T16:43:10.000Z","size":262,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-25T17:29:18.847Z","etag":null,"topics":["dec","esp32","lcd-display","telnet","vt52"],"latest_commit_sha":null,"homepage":"https://github.com/Isysxp/ESP32_Telnet_Terminal","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Isysxp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-01T10:25:22.000Z","updated_at":"2025-01-25T16:43:14.000Z","dependencies_parsed_at":"2025-01-25T17:24:33.162Z","dependency_job_id":"78930bf8-cc5b-4043-83ad-fbb1ac0a3ee6","html_url":"https://github.com/Isysxp/ESP32_Telnet_Terminal","commit_stats":null,"previous_names":["isysxp/esp32_telnet_terminal"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isysxp%2FESP32_Telnet_Terminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isysxp%2FESP32_Telnet_Terminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isysxp%2FESP32_Telnet_Terminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isysxp%2FESP32_Telnet_Terminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Isysxp","download_url":"https://codeload.github.com/Isysxp/ESP32_Telnet_Terminal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237679400,"owners_count":19349176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dec","esp32","lcd-display","telnet","vt52"],"created_at":"2024-12-14T17:11:43.710Z","updated_at":"2025-10-27T19:03:40.940Z","avatar_url":"https://github.com/Isysxp.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"**ESP32_Telnet_Terminal**\u003cbr\u003e\nThis simple application is a proof of concept build for the Waveshare 4.3\" LCD Display\nSee: https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-4.3\nIt implements a basic green screen terminal display and contains a Telnet client with a minimal Telnet protocol function.\nThe repo contains the app as an Arduino project and also a .sln file that may be open with Visual Studio with the Visual Micro extension.\nThe critical ESP32 settings are: USB mode and Upload mode set to USB-OTG and the PSRAM set to OPI mode.\nThe ESP32 board is set to ESP32S3 DEV MODULE.\nThe key library requirement is the GFX_Library_For_Arduino see: https://docs.arduino.cc/libraries/gfx-library-for-arduino/.\nESP_Terminal.ino contains an example of how to initialise this particular LCD display.\nParse.cpp contains the minimal Telnet client with a basic Telnet protocol negotiation process.\nThis in itself will, I hope, be of use as I was unable to find a suitable Telnet protocol interface app anywhere on the web.\nObviously a terminal requires a keyboard and this is achieved by running a paralell serial interface.\nAny of the standard serial terminal apps can be used here, I use TeraTerm see: https://github.com/TeraTermProject/teraterm/releases\nThe font used in the LCD display is built from a monospace TTF font converted to FABGL format using the fontool in the Arduino FABGL library.\nI will not go into any further detail here as generating suitable fonts is very involved.\nThe provided font is crammed into a 10x10 pixel block. As a result, the character spacing is such the some overlap of certain characters can be seen.\nThis is adequate for test purposes.\nThe terminal app does not respond to VT100 escape sequnces. These may be disabled in the telnet session using\nexport TERM=asr33\nunset LS_COLORS\nWith these settings, the display is not too bad and backspace works as well.\u003cbr\u003e\nI would note that sometime the display does not reset correctly such that the cursor is not at the top left of the screen.\nA power cycle usually fixes this.\u003cbr\u003e\nI hope you find this of interest.\n\u003cbr\u003e\u003cbr\u003e\nUpdate Dec 2024 \u003cbr\u003e\nThis display app will now work with various versions of vi.\u003cbr\u003e\nSetting the TERM variable is essential.\u003cbr\u003e\nFor most new Unices use: export TERM=vt52\u003cbr\u003e\nFor old unices eg BSD 2.11 use TERM=vt52; export TERM\u003cbr\u003e\nThe app also transmits ESC[?2l which should change your connected terminal to VT52 mode.\u003cbr\u003e\nI would note that the original VT52 terminal did not implement some escape codes. See: https://github.com/microsoft/terminal/blob/main/doc/specs/%23976%20-%20VT52%20escape%20sequences.md\u003cbr\u003e\nSpecifically, esc J and esc K are implemented in this app.\u003cbr\u003e\n\u003cbr\u003e\nNB: During the development of this app, it has become apparent that the LCD display can interfere with the WIFI such that\na connection to a telnet server becomes very unreliable. After some considerable debugging the following is suggested for the Arduino environment:\u003cbr\u003e\n1. Boards: ESP32 v 3.11\u003cbr\u003e\n2. Library: GFX for Arduino v 1.5.2\u003cbr\u003e\n3. Device: Waveshare ESP32-S3-LCD-4.3\u003cbr\u003e\n4. Config: Upload mode UART0 / Hardware CDC + USB mode Hardware CDC and JTAG + PSRAM enabled.\u003cbr\u003e\n#4 are the critical settings. In addition, altering the EXP32 TXPower seems to have an effect as well.\u003cbr\u003eTry: WiFi.setTxPower(WIFI_POWER_8_5dBm);\u003cbr\u003e\nAnd, do not rest the display on an active HDMI cable. This does for the wifi as well!!!!\u003cbr\u003e\n\u003cbr\u003e\nNB: This app seems to exacerbate the reported issue of ESP32s connecting to dual band routers. The ESP32 receives an IP address, connects to a host but fails to communicate any further.\u003cbr\u003e\nHowever, if the display is disabled, the communcation is OK. I suspect that this may be a timing problem. Using a single band AP, the app works fine.\u003cbr\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisysxp%2Fesp32_telnet_terminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisysxp%2Fesp32_telnet_terminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisysxp%2Fesp32_telnet_terminal/lists"}