Files
server/usr/share/doc/qemu-system-common/system/s390x/3270.html
2026-01-07 20:52:11 +01:00

239 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>3270 devices &mdash; QEMU Debian 1:8.2.2+ds-0ubuntu1.11 documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=86f27845" />
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css?v=08e6c168" />
<link rel="shortcut icon" href="../../_static/qemu_32x32.png"/>
<script src="../../_static/jquery.js?v=8dae8fb0"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../../_static/documentation_options.js?v=802af9f6"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../../_static/custom.js?v=2ab9f71d"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Subchannel passthrough via vfio-ccw" href="vfio-ccw.html" />
<link rel="prev" title="The virtual channel subsystem" href="css.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" style="background: #802400" >
<a href="../../index.html" class="icon icon-home">
QEMU
<img src="../../_static/qemu_128x128.png" class="logo" alt="Logo"/>
</a>
<div class="version">
8.2.2
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../about/index.html">About QEMU</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">System Emulation</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../introduction.html">Introduction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../invocation.html">Invocation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../device-emulation.html">Device Emulation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../keys.html">Keys in the graphical frontends</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mux-chardev.html">Keys in the character backend multiplexer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../monitor.html">QEMU Monitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../images.html">Disk Images</a></li>
<li class="toctree-l2"><a class="reference internal" href="../virtio-net-failover.html">QEMU virtio-net standby (net_failover)</a></li>
<li class="toctree-l2"><a class="reference internal" href="../linuxboot.html">Direct Linux Boot</a></li>
<li class="toctree-l2"><a class="reference internal" href="../generic-loader.html">Generic Loader</a></li>
<li class="toctree-l2"><a class="reference internal" href="../guest-loader.html">Guest Loader</a></li>
<li class="toctree-l2"><a class="reference internal" href="../barrier.html">QEMU Barrier Client</a></li>
<li class="toctree-l2"><a class="reference internal" href="../vnc-security.html">VNC security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tls.html">TLS setup for network services</a></li>
<li class="toctree-l2"><a class="reference internal" href="../secrets.html">Providing secret data to QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="../authz.html">Client authorization</a></li>
<li class="toctree-l2"><a class="reference internal" href="../gdb.html">GDB usage</a></li>
<li class="toctree-l2"><a class="reference internal" href="../replay.html">Record/replay</a></li>
<li class="toctree-l2"><a class="reference internal" href="../managed-startup.html">Managed start up options</a></li>
<li class="toctree-l2"><a class="reference internal" href="../bootindex.html">Managing device boot order with bootindex properties</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpu-hotplug.html">Virtual CPU hotplug</a></li>
<li class="toctree-l2"><a class="reference internal" href="../pr-manager.html">Persistent reservation managers</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../targets.html">QEMU System Emulator Targets</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../target-arm.html">Arm System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-avr.html">AVR System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-m68k.html">ColdFire System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-mips.html">MIPS System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-ppc.html">PowerPC System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-openrisc.html">OpenRISC System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-riscv.html">RISC-V System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-rx.html">RX System emulator</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../target-s390x.html">s390x System emulator</a><ul class="current">
<li class="toctree-l4 current"><a class="reference internal" href="../target-s390x.html#device-support">Device support</a></li>
<li class="toctree-l4"><a class="reference internal" href="../target-s390x.html#architectural-features">Architectural features</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../target-sparc.html">Sparc32 System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-sparc64.html">Sparc64 System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-i386.html">x86 System emulator</a></li>
<li class="toctree-l3"><a class="reference internal" href="../target-xtensa.html">Xtensa System emulator</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../security.html">Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="../multi-process.html">Multi-process QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="../confidential-guest-support.html">Confidential Guest Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="../vm-templating.html">QEMU VM templating</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../user/index.html">User Mode Emulation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../interop/index.html">System Emulation Management and Interoperability</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../specs/index.html">System Emulation Guest Hardware Specifications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../devel/index.html">Developer Information</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" style="background: #802400" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">QEMU</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">System Emulation</a></li>
<li class="breadcrumb-item"><a href="../targets.html">QEMU System Emulator Targets</a></li>
<li class="breadcrumb-item"><a href="../target-s390x.html">s390x System emulator</a></li>
<li class="breadcrumb-item active">3270 devices</li>
<li class="wy-breadcrumbs-aside">
<a href="https://gitlab.com/qemu-project/qemu/blob/master/docs/system/s390x/3270.rst" class="fa fa-gitlab"> Edit on GitLab</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="devices">
<h1>3270 devices<a class="headerlink" href="#devices" title="Link to this heading"></a></h1>
<p>The 3270 is the classic green-screen console of the mainframes (see the
<a class="reference external" href="https://en.wikipedia.org/wiki/IBM_3270">IBM 3270 Wikipedia article</a>).</p>
<p>The 3270 data stream is not implemented within QEMU; the device only provides
TN3270 (a telnet extension; see <a class="reference external" href="https://tools.ietf.org/html/rfc854">RFC 854</a>
and <a class="reference external" href="https://tools.ietf.org/html/rfc1576">RFC 1576</a>) and leaves the heavy
lifting to an external 3270 terminal emulator (such as <code class="docutils literal notranslate"><span class="pre">x3270</span></code>) to make a
single 3270 device available to a guest. Note that this supports basic
features only.</p>
<p>To provide a 3270 device to a guest, create a <code class="docutils literal notranslate"><span class="pre">x-terminal3270</span></code> linked to
a <code class="docutils literal notranslate"><span class="pre">tn3270</span></code> chardev. The guest will see a 3270 channel device. In order
to actually be able to use it, attach the <code class="docutils literal notranslate"><span class="pre">x3270</span></code> emulator to the chardev.</p>
<section id="example-configuration">
<h2>Example configuration<a class="headerlink" href="#example-configuration" title="Link to this heading"></a></h2>
<ul>
<li><p>Make sure that 3270 support is enabled in the guests Linux kernel. You need
<code class="docutils literal notranslate"><span class="pre">CONFIG_TN3270</span></code> and at least one of <code class="docutils literal notranslate"><span class="pre">CONFIG_TN3270_TTY</span></code> (for additional
ttys) or <code class="docutils literal notranslate"><span class="pre">CONFIG_TN3270_CONSOLE</span></code> (for a 3270 console).</p></li>
<li><p>Add a <code class="docutils literal notranslate"><span class="pre">tn3270</span></code> chardev and a <code class="docutils literal notranslate"><span class="pre">x-terminal3270</span></code> to the QEMU command line:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">-</span><span class="n">chardev</span> <span class="n">socket</span><span class="p">,</span><span class="nb">id</span><span class="o">=</span><span class="n">ch0</span><span class="p">,</span><span class="n">host</span><span class="o">=</span><span class="mf">0.0.0.0</span><span class="p">,</span><span class="n">port</span><span class="o">=</span><span class="mi">2300</span><span class="p">,</span><span class="n">wait</span><span class="o">=</span><span class="n">off</span><span class="p">,</span><span class="n">server</span><span class="o">=</span><span class="n">on</span><span class="p">,</span><span class="n">tn3270</span><span class="o">=</span><span class="n">on</span>
<span class="o">-</span><span class="n">device</span> <span class="n">x</span><span class="o">-</span><span class="n">terminal3270</span><span class="p">,</span><span class="n">chardev</span><span class="o">=</span><span class="n">ch0</span><span class="p">,</span><span class="n">devno</span><span class="o">=</span><span class="n">fe</span><span class="mf">.0.000</span><span class="n">a</span><span class="p">,</span><span class="nb">id</span><span class="o">=</span><span class="n">terminal0</span>
</pre></div>
</div>
</li>
<li><p>Start the guest. In the guest, use <code class="docutils literal notranslate"><span class="pre">chccwdev</span> <span class="pre">-e</span> <span class="pre">0.0.000a</span></code> to enable
the device.</p></li>
<li><p>On the host, start the <code class="docutils literal notranslate"><span class="pre">x3270</span></code> emulator:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">x3270</span> <span class="o">&lt;</span><span class="n">host</span><span class="o">&gt;</span><span class="p">:</span><span class="mi">2300</span>
</pre></div>
</div>
</li>
<li><p>In the guest, locate the 3270 device node under <code class="docutils literal notranslate"><span class="pre">/dev/3270/</span></code> (say,
<code class="docutils literal notranslate"><span class="pre">tty1</span></code>) and start a getty on it:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">systemctl</span> <span class="n">start</span> <span class="n">serial</span><span class="o">-</span><span class="n">getty</span><span class="o">@</span><span class="mi">3270</span><span class="o">-</span><span class="n">tty1</span><span class="o">.</span><span class="n">service</span>
</pre></div>
</div>
<p>This should get you an additional tty for logging into the guest.</p>
</li>
<li><p>If you want to use the 3270 device as the Linux kernel console instead of
an additional tty, you can also append <code class="docutils literal notranslate"><span class="pre">conmode=3270</span> <span class="pre">condev=000a</span></code> to
the guests kernel command line. The kernel then should use the 3270 as
console after the next boot.</p></li>
</ul>
</section>
<section id="restrictions">
<h2>Restrictions<a class="headerlink" href="#restrictions" title="Link to this heading"></a></h2>
<p>3270 support is very basic. In particular:</p>
<ul class="simple">
<li><p>Only one 3270 device is supported.</p></li>
<li><p>It has only been tested with Linux guests and the x3270 emulator.</p></li>
<li><p>TLS/SSL is not supported.</p></li>
<li><p>Resizing on reattach is not supported.</p></li>
<li><p>Multiple commands in one inbound buffer (for example, when the reset key
is pressed while the network is slow) are not supported.</p></li>
</ul>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="css.html" class="btn btn-neutral float-left" title="The virtual channel subsystem" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="vfio-ccw.html" class="btn btn-neutral float-right" title="Subchannel passthrough via vfio-ccw" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2025, The QEMU Project Developers.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
<!-- Empty para to force a blank line after "Built with Sphinx ..." -->
<p></p>
<p>This documentation is for QEMU version 8.2.2.</p>
<p><a href="../../about/license.html">QEMU and this manual are released under the
GNU General Public License, version 2.</a></p>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>