{"id":18368638,"url":"https://github.com/openbmc/obmc-console","last_synced_at":"2025-04-06T17:31:46.700Z","repository":{"id":54679294,"uuid":"54103782","full_name":"openbmc/obmc-console","owner":"openbmc","description":"OpenBMC host console infrastructure","archived":false,"fork":false,"pushed_at":"2025-03-21T00:18:04.000Z","size":2074,"stargazers_count":18,"open_issues_count":10,"forks_count":25,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-03-21T01:23:59.416Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openbmc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2016-03-17T09:06:30.000Z","updated_at":"2025-03-21T00:15:57.000Z","dependencies_parsed_at":"2023-10-03T12:06:00.691Z","dependency_job_id":"fe3ccb9a-26d7-483a-bb2e-a1b4c6e6e460","html_url":"https://github.com/openbmc/obmc-console","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fobmc-console","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fobmc-console/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fobmc-console/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openbmc%2Fobmc-console/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openbmc","download_url":"https://codeload.github.com/openbmc/obmc-console/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247522389,"owners_count":20952540,"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":[],"created_at":"2024-11-05T23:26:50.594Z","updated_at":"2025-04-06T17:31:46.241Z","avatar_url":"https://github.com/openbmc.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# obmc-console\n\n## To Build\n\nTo build this project, run the following shell commands:\n\n    meson setup build\n    meson compile -C build\n\nTo test:\n\n    dbus-run-session meson test -C build\n\n## To Run Server\n\nRunning the server requires a serial port (e.g. /dev/ttyS0):\n\n    touch obmc-console.conf\n    ./obmc-console-server --config obmc-console.conf ttyS0\n\n## To Connect Client\n\nTo connect to the server, simply run the client:\n\n    ./obmc-console-client\n\nTo disconnect the client, use the standard `~.` combination.\n\n## Underlying design\n\nThis shows how the host UART connection is abstracted within the BMC as a Unix\ndomain socket.\n\n                +---------------------------------------------------------------------------------------------+\n                |                                                                                             |\n                |       obmc-console-client       unix domain socket         obmc-console-server              |\n                |                                                                                             |\n                |     +----------------------+                           +------------------------+           |\n                |     |   client.2200.conf   |  +---------------------+  | server.ttyVUART0.conf  |           |\n            +---+--+  +----------------------+  |                     |  +------------------------+  +--------+-------+\n    Network    | 2200 +--\u003e                      +-\u003e+ @obmc-console.host0 +\u003c-+                        \u003c--+ /dev/ttyVUART0 |   UARTs\n            +---+--+  | console-id = \"host0\" |  |                     |  |  console-id = \"host0\"  |  +--------+-------+\n                |     |                      |  +---------------------+  |                        |           |\n                |     +----------------------+                           +------------------------+           |\n                |                                                                                             |\n                |                                                                                             |\n                |                                                                                             |\n                +---------------------------------------------------------------------------------------------+\n\nThis supports multiple independent consoles. The `console-id` is a unique\nportion for the unix domain socket created by the obmc-console-server instance.\nThe server needs to know this because it needs to know what to name the pipe;\nthe client needs to know it as it needs to form the abstract socket name to\nwhich to connect.\n\n## Mux Support\n\nIn some hardware designs, multiple UARTS may be available behind a Mux. Please\nreference\n[docs/mux-support.md](https://github.com/openbmc/obmc-console/blob/master/docs/mux-support.md)\nin that case.\n\n## Sample Development Setup\n\nFor developing obmc-console, we can use pseudo terminals (pty's) in Linux.\n\nThe socat command will output names of 2 pty's, one of which is the master and\nthe other one is the slave. The master pty can be used to emulate a UART.\n\n    $ socat -d -d pty,raw,echo=0,link=pty1 pty,raw,echo=0,link=pty2\n\n    $ obmc-console-server --console-id dev $(realpath pty2)\n\n    $ obmc-console-client -i dev\n\n    # this message should appear for the client\n    $ echo \"hi\" \u003e pty1\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Fobmc-console","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenbmc%2Fobmc-console","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenbmc%2Fobmc-console/lists"}