<!-- retain these comments for translator revision tracking -->
<!-- $Id$ -->

 <sect1 id="hardware-supported">
 <title>Supported Hardware</title>
<para>

&debian; does not impose hardware requirements beyond the requirements
of the Linux kernel and the GNU tool-sets.  Therefore, any
architecture or platform to which the Linux kernel, libc,
<command>gcc</command>, etc. have been ported, and for which a &debian;
port exists, can run &debian;. Please refer to the Ports pages at
<ulink url="&url-ports;"></ulink> for
more details on &arch-title; architecture systems which have been
tested with &debian-gnu;.

</para><para>

Rather than attempting to describe all the different hardware
configurations which are supported for &arch-title;, this section
contains general information and pointers to where additional
information can be found.

</para>

  <sect2><title>Supported Architectures</title>
<para>

&debian; GNU/Linux &release; supports &archnumb; major architectures and several
variations of each architecture known as <quote>flavors</quote>.

</para><para>

<informaltable>
<tgroup cols="4">
<thead>
<row>
  <entry>Architecture</entry><entry>&debian; Designation</entry>
  <entry>Subarchitecture</entry><entry>Flavor</entry>
</row>
</thead>

<tbody>
<row>
  <entry>AMD64 &amp; Intel 64</entry>
  <entry>amd64</entry>
  <entry></entry>
  <entry></entry>
</row>

<!--
<row>
  <entry morerows="1">Intel x86-based</entry>
  <entry morerows="1">i386</entry>
  <entry>default x86 machines</entry>
  <entry>default</entry>
</row><row>
  <entry>Xen PV domains only</entry>
  <entry>xen</entry>
</row>

<row>
  <entry>ARM</entry>
  <entry>armel</entry>
  <entry>Marvell Kirkwood and Orion</entry>
  <entry>marvell</entry>
</row>
-->

<row>
  <entry>ARM with hardware FPU</entry>
  <entry>armhf</entry>
  <entry>multiplatform</entry>
  <entry>armmp</entry>
</row>

<row>
  <entry>64bit ARM</entry>
  <entry>arm64</entry>
  <entry></entry>
  <entry></entry>
</row>

<!--
<row>
  <entry morerows="2">64bit MIPS (little-endian)</entry>
  <entry morerows="2">mips64el</entry>
  <entry>MIPS Malta</entry>
  <entry>5kc-malta</entry>
</row><row>
  <entry>Cavium Octeon</entry>
  <entry>octeon</entry>
</row><row>
  <entry>Loongson 3</entry>
  <entry>loongson-3</entry>
</row>

<row>
  <entry morerows="2">32bit MIPS (little-endian)</entry>
  <entry morerows="2">mipsel</entry>
  <entry>MIPS Malta</entry>
  <entry>4kc-malta</entry>
</row><row>
  <entry>Cavium Octeon</entry>
  <entry>octeon</entry>
</row><row>
  <entry>Loongson 3</entry>
  <entry>loongson-3</entry>
</row>

<row>
  <entry morerows="0">IBM/Motorola PowerPC</entry>
  <entry morerows="0">powerpc</entry>
  <entry></entry>
  <entry></entry>
  <entry>PowerMac</entry>
  <entry>pmac</entry>
</row><row>
  <entry>PReP</entry>
  <entry>prep</entry>
</row>
-->

<row>
  <entry>Power Systems</entry>
  <entry>ppc64el</entry>
  <entry>IBM POWER8 or newer machines</entry>
  <entry></entry>
</row>

<row>
  <entry>64bit RISC-V (little-endian)</entry>
  <entry>riscv64</entry>
  <entry></entry>
  <entry></entry>
</row>

<row>
  <entry>64bit IBM S/390</entry>
  <entry>s390x</entry>
  <entry>IPL from VM-reader and DASD</entry>
  <entry>generic</entry>
</row>

</tbody></tgroup></informaltable>

</para>

<para>

This document covers installation for the <emphasis>&arch-title;</emphasis>
architecture using the <emphasis>&arch-kernel;</emphasis> kernel.
If you are looking
for information on any of the other &debian;-supported architectures
take a look at the
<ulink url="http://www.debian.org/ports/">&debian;-Ports</ulink> pages.

</para>
<para condition="new-arch">

This is the first official release of &debian-gnu; for the &arch-title;
architecture.  We feel that it has proven itself sufficiently to be
released. However, because it has not had the exposure (and hence
testing by users) that some other architectures have had, you may
encounter a few bugs. Use our
<ulink url="&url-bts;">Bug Tracking System</ulink> to report any
problems; make sure to mention the fact that the bug is on the
&arch-title; platform using the <emphasis>&arch-kernel;</emphasis> kernel.
It can be necessary to use the
<ulink url="&url-list-subscribe;">debian-&arch-listname; mailing list</ulink>
as well.

</para>
  </sect2>

<!-- supported cpu docs -->
&supported-amd64.xml;
&supported-arm.xml;
&supported-i386.xml;
&supported-powerpc.xml;
&supported-s390.xml;

  <sect2 arch="x86" id="laptops"><title>Laptops</title>
<para>

From a technical point of view, laptops are normal PCs, so all information
regarding PC systems applies to laptops as well. Installations
on laptops nowadays usually work out of the box, including things like
automatically suspending the system on closing the lid and laptop specfic
hardware buttons like those for disabling the wifi interfaces (<quote>airplane
mode</quote>). Nonetheless sometimes the hardware vendors use specialized or
proprietary hardware for some laptop-specific functions which
might not be supported. To see if your particular laptop works well
with GNU/Linux, see for example the
<ulink url="&url-x86-laptop;">Linux Laptop pages</ulink>.

</para>
   </sect2>

  <sect2 condition="defaults-smp">
  <title>Multiple Processors</title>
<para>

Multiprocessor support &mdash; also called <quote>symmetric
multiprocessing</quote> or SMP &mdash; is available for this
architecture.  Having multiple processors in a computer was originally
only an issue for high-end server systems but has become common in
recent years nearly everywhere with
the introduction of so called <quote>multi-core</quote> processors.  These contain
two or more processor units, called <quote>cores</quote>, in one physical chip.

</para><para>

The standard &debian; &release; kernel image has been compiled with SMP support.
It is also usable on non-SMP systems without problems.

</para>
  </sect2>

  <sect2 condition="smp-alternatives">
<title>Multiple Processors</title>

<para>

Multiprocessor support &mdash; also called <quote>symmetric
multiprocessing</quote> or SMP &mdash; is available for this architecture.
The standard &debian; &release; kernel image has been compiled with
<firstterm>SMP-alternatives</firstterm> support. This means that the kernel
will detect the number of processors (or processor cores) and will
automatically deactivate SMP on uniprocessor systems.

</para><para>
Having multiple processors in a computer was originally
only an issue for high-end server systems but has become common in
recent years nearly everywhere with
the introduction of so called <quote>multi-core</quote> processors.  These contain
two or more processor units, called <quote>cores</quote>, in one physical chip.

</para>
  </sect2>

  <sect2 condition="supports-smp">
  <title>Multiple Processors</title>
<para>

Multiprocessor support &mdash; also called <quote>symmetric
multiprocessing</quote> or SMP &mdash; is available for this architecture.
However, the standard &debian; &release; kernel image does not support
SMP.  This should not prevent installation, since the standard,
non-SMP kernel should boot on SMP systems; the kernel will simply use
only the first CPU.

</para><para>

In order to take advantage of multiple processors, you'll have to
replace the standard &debian; kernel.<phrase arch="linux-any">  You can find a discussion of how
to do this in <xref linkend="kernel-baking"/>.  At this time
(kernel version &kernelversion;) the way you enable SMP is to select
<quote>&smp-config-option;</quote> in the <quote>&smp-config-section;</quote>
section of the kernel config.</phrase>

</para>
  </sect2>

  <sect2 condition="supports-smp-sometimes">
  <title>Multiple Processors</title>
<para>

Multiprocessor support &mdash; also called <quote>symmetric
multiprocessing</quote> or SMP &mdash; is available for this architecture,
and is supported by a precompiled &debian; kernel image. Depending on your
install media, this SMP-capable kernel may or may not be installed by
default. This should not prevent installation, since the standard,
non-SMP kernel should boot on SMP systems; the kernel will simply use
the first CPU.

</para><para>

In order to take advantage of multiple processors, you should check to see
if a kernel package that supports SMP is installed, and if not, choose an
appropriate kernel package.

</para><para>

You can also build your own customized kernel to support SMP.<phrase arch="linux-any"> You can find
a discussion of how to do this in <xref linkend="kernel-baking"/>.  At this
time (kernel version &kernelversion;) the way you enable SMP is to select
<quote>&smp-config-option;</quote> in the <quote>&smp-config-section;</quote>
section of the kernel config.</phrase>

</para>
  </sect2>

  <sect2 id="gfx" arch="not-s390"><title>Graphics Hardware Support</title>
<para>  
&debian;'s support for graphical interfaces is determined by the
underlying support found in X.Org's X11 system, and the kernel. Basic
framebuffer graphics is provided by the kernel, whilst desktop
environments use X11. Whether advanced graphics card features such as
3D-hardware acceleration or hardware-accelerated video are available,
depends on the actual graphics hardware used in the system and in some
cases on the installation of additional <quote>firmware</quote> blobs
(see <xref linkend="hardware-firmware"/>).

</para>

<para arch="x86">

On modern PCs, having a graphical display usually works out of the
box. For quite a lot of hardware, 3D acceleration also works well out of
the box, but there is still some hardware that needs binary firmware blobs
to work well. In some cases there have been reports about hardware on
which installation of additional graphics card firmware was required
even for basic graphics support.
</para>

<para arch="arm">

Nearly all ARM machines have the graphics hardware built-in, rather
than being on a plug-in card. Some machines do have expansion slots
which will take graphics cards, but that is a rarity. Hardware
designed to be headless with no graphics at all is quite common.
Whilst basic framebuffer video provided by the kernel should work on
all devices that have graphics, fast 3D graphics invariably needs
binary drivers to work. The situation is changing quickly but at
the time of the &releasename; release free drivers for nouveau (Nvidia
Tegra K1 SoC) and freedreno (Qualcomm Snapdragon SoCs) are available in
the release. Other hardware needs non-free drivers from 3rd parties.

</para>
<para>
Details on supported graphics hardware and pointing devices can be found at
<ulink url="&url-xorg;"></ulink>.  &debian; &release; ships
with X.Org version &x11ver;.

</para>
  </sect2>

&network-cards.xml;
&accessibility-hardware.xml;
&supported-peripherals.xml;

 </sect1>

 <sect1 arch="not-s390" id="hardware-firmware">
 <title>Devices Requiring Firmware</title>
<para>

Besides the availability of a device driver, some hardware also requires
so-called <firstterm>firmware</firstterm> or <firstterm>microcode</firstterm>
to be loaded into the device before it can become operational. This is most
common for network interface cards (especially wireless NICs), but for example
some USB devices and even some hard disk controllers also require firmware.

</para><para>

With many graphics cards, basic functionality is available without
additional firmware, but the use of advanced features requires an
appropriate firmware file to be installed in the system.

</para><para>

On many older devices which require firmware to work, the firmware file was
permanently placed in an EEPROM/Flash chip on the device itself by the
manufacturer.  Nowadays most new devices do not have the firmware embedded
this way anymore, so the firmware file must be uploaded into the device by
the host operating system every time the system boots.

</para><para>

In most cases firmware is non-free according to the criteria used by the
&debian-gnu; project and thus cannot be included in the main distribution.
If the device driver itself is included in
the distribution and if &debian-gnu; legally can distribute the firmware,
it will often be available as a separate package from the non-free-firmware section
of the archive (prior to &debian-gnu; 12.0: from the non-free section).

</para><para>

However, this does not mean that such hardware cannot be used during
installation. Starting with &debian-gnu; 12.0, following the <ulink
url="https://www.debian.org/vote/2022/vote_003">2022 General
Resolution about non-free firmware</ulink>, official installation
images can include non-free firmware packages. By default, &d-i; will
detect required firmware (based on kernel logs and modalias
information), and install the relevant packages if they are found on
an installation medium (e.g. on the netinst). The package manager gets
automatically configured with the matching components so that those
packages get security updates. This usually means that the
non-free-firmware component gets enabled, in addition to main.

</para><para>

Users who wish to disable firmware lookup entirely can do so by
setting the <userinput>firmware=never</userinput> boot parameter.
It's an alias for the longer
<userinput>hw-detect/firmware-lookup=never</userinput> form.

</para><para>

Unless firmware lookup is disabled entirely, &d-i; still supports
loading firmware files or packages containing firmware from a
removable medium, such as a USB stick.  See <xref
linkend="loading-firmware"/> for detailed information on how to load
firmware files or packages during the installation.

Note that &d-i; is less likely to prompt for firmware files now that
non-free firmware packages can be included on installation images.

</para><para>

If the &d-i; prompts for a firmware file and you do not have this firmware
file available or do not want to install a non-free firmware file on your
system, you can try to proceed without loading the firmware.  There are
several cases where a driver prompts for additional firmware because it may
be needed under certain circumstances, but the device does work without it
on most systems (this e.g.  happens with certain network cards using the tg3
driver).

</para>
 </sect1>
