File:  [NetBSD Developer Wiki] / wikisrc / laptops.mdwn
Revision 1.33: download - view: text, annotated - select for diffs
Sun Oct 4 18:20:19 2020 UTC (2 months ago) by nia
Branches: MAIN
CVS tags: HEAD
capitals police

This page lists and links to pages about laptops, notebooks,
and portable computers that work well with NetBSD, are of interest
to developers, and are standardized or easy to find.

This page references lots of different device drivers. All of them
are built-in to GENERIC kernels and you don't need to load them.

[[!toc ]]

---

# Generic laptop support

## Graphics

NetBSD 9.0 supports Intel integrated graphics up to Kaby Lake,
Nvidia graphics up to Maxwell, and AMD graphics up to GCNv1.

Anything newer than this will work, but will use `llvmpipe`
instead of hardware acceleration for OpenGL.

The support includes connecting external monitors over HDMI,
DisplayPort, and DisplayPort over USB-C.

For the Intel driver, there may be slight graphical corruptions
when using X11 without a compositor. Xfce/MATE include their own
compositors, but lightweight window managers can benefit from
having `picom` running.

## CPU frequency adjustment

On most ACPI and some non-ACPI laptops, the `sysutils/estd` package
can be used to automatically adjust the CPU frequency depending on
system load, and potentially prolong battery life. This modifies the
`frequency` variables exposed by
[[!template id=man name="sysctl" section="8"]].

## Suspend

On ACPI systems, suspend-to-RAM is supported through
`sysctl hw.acpi.sleep.state=3`.  This can be triggered through various
events (such as lid close) with
[[!template id=man name="powerd" section="8"]].

Suspend on NetBSD currently seems to work best on ThinkPads.

## Input

Many x86 laptops use Synaptics touchpads over an emulated PS/2 interface,
which is supported through [[!template id=man name="pms" section="4"]],
with various adjustable Synaptics-specific sysctl variables.

## WiFi

Many x86 laptops with Intel processors will have WiFi cards supported
by the
[[!template id=man name="iwm" section="4"]] driver, or 
[[!template id=man name="iwn" section="4"]] for older models.
Atheros 11n miniPCIe cards are supported by the
[[!template id=man name="athn" section="4"]] driver.

See the
[[!template id=man name="afterboot" section="8"]] man page for details
on connecting to WiFi networks.

USB 11n WiFi adapters such as
[[!template id=man name="urtwn" section="4"]] and
[[!template id=man name="run" section="4"]] can also be used,
and most/all generic USB ethernet adapters are also well supported.
For a fairly complete list, see 
[[!template id=man name="usb" section="4"]].

Unfortunately, WiFi hardware is not particularly standardized compared
to most other aspects of modern laptops.

## Audio

Essentially all modern x86 laptops use the 
[[!template id=man name="hdaudio" section="4"]] driver.

In the case that switching between speakers and the headphone port
is not handled automatically by the hardware, the `dacsel`
[[!template id=man name="mixerctl" section="1"]] variable can be
modified.

## Sensors

Regardless of whether the system is ACPI, NetBSD will
expose all sensors (e.g. for temperature and battery)
via [[!template id=man name="envstat" section="8"]].

---

# IBM / Lenovo

The [[!template id=man name="thinkpad" section="4"]] driver provides
support for various ThinkPad-specific sensors and function keys.

A number of NetBSD developers use ThinkPads to hack on NetBSD
and for everyday usage.

## ThinkPad X1 Carbon (Ivy Bridge, i7)

Installled with Coreboot and TianoCore (UEFI) firmware.

Destroy the GPT data with `gpt destroy wd0` before installing to the entire disk.

Hardware support is basically perfect aside from the fingerprint reader, for which no driver exists.

* GPU acceleration works.
* WiFi is supported through the [[!template id=man name="iwn" section="4"]] driver.
* SD card reader is supported through the [[!template id=man name="sdhc" section="4"]] driver.
* Suspend/resume works.

## ThinkPad T22

Works perfect (sound, display, all devices, infrared port not tested).

## ThinkPad X60s

Everything works.

## ThinkPad X41

Works fine (sound, display, all devices, bluetooth, modem not tested).

## ThinkPad X61s

Everything works. Requires `PCI_BUS_FIXUP` and `PCI_ADDR_FIXUP` [[!template
id=man name="options" section="4"]].

## ThinkPad X220

* Video acceleration works, but when using `xf86-video-intel` (the default),
  it's advisable to set `Option "AccelMethod"  "uxa"` in `xorg.conf`.
* Ethernet is supported through the [[!template id=man name="wm" section="4"]] driver.
* WiFi is supported through the [[!template id=man name="iwn" section="4"]] driver.
* Suspend and resume work.

## ThinkPad X230

* Accelerated graphics.
* Ethernet is supported through the [[!template id=man name="wm" section="4"]] driver.
* WiFi is supported through the [[!template id=man name="iwn" section="4"]] driver.

## ThinkPad X250

* Accelerated graphics.
* Connecting externals displays works with the miniDP and VGA ports.
* SD card reader is supported through the [[!template id=man name="rtsx" section="4"]] driver.
* Ethernet is supported through the [[!template id=man name="wm" section="4"]] driver.
* WiFi is supported through the [[!template id=man name="iwm" section="4"]] driver.
* Extra trackpoint buttons: run at least 9.0_STABLE for fixes to the Synaptics driver.
* Brightness buttons do not work in 9.0 by default. You can bind them to
  xrandr in your window manager.
* Webcam will depend on upcoming xhci isochronous pipe support.
* To record from the internal mic, set `mixerctl -w record.source=ADC02`
* Some spam from [[!template id=man name="hdaudio" section="4"]] on some 
  reboots, the chip doesn't seem to reset properly. Disappears and boots
  normally after a few seconds.
  [[!template id=pr number=51734]]
* Suspend and resume work.

## ThinkPad X260

* Accelerated graphics.
* SD card reader is supported through the [[!template id=man name="rtsx" section="4"]] driver.
* Ethernet is supported through the [[!template id=man name="wm" section="4"]] driver.
* WiFi is supported through the [[!template id=man name="iwm" section="4"]] driver.
* Extra trackpoint buttons: run at least 9.0_STABLE for fixes to the Synaptics driver.
* Webcam will depend on upcoming xhci isochronous pipe support.
* Suspend and resume work.

---

# Asus

Eee PCs were previously very popular hardware, so they're widely available
cheaply, tend to work quite well, and what works is documented.

## EeePC 701

[[!table data="""
GPU | WiFi | SD card reader | Ethernet | Audio | Webcam | Suspend/Resume
Supported | Supported | Supported | Supported | Supported | Supported | Supported
"""]]

## EeePC 900

[[!table data="""
GPU | WiFi | SD card reader | Ethernet | Audio | Webcam | Suspend/Resume
Supported | Supported | Supported | Supported | Supported | Supported | Supported
"""]]

## EeePC 901

[[!table data="""
GPU | WiFi | SD card reader | Ethernet | Audio | Webcam | Suspend/Resume
Supported | Supported | Supported | Supported | Supported | Supported | Supported
"""]]

## EeePC 1000HA

[[!table data="""
GPU | WiFi | SD card reader | Ethernet | Audio | Webcam | Suspend/Resume
Supported | Supported | Supported | Supported | Supported | Supported | Supported
"""]]

---

# PINE64

A number of NetBSD developers use Pinebooks to hack on NetBSD
and for everyday usage.

Pinebook and Pinebook Pro do not use ACPI, so certain aspects are
different compared to x86 laptops.

## Pinebook (Allwinner A64)

* Support for the display and HDMI output is provided through the Allwinner Display Engine driver.
  This provides kernel modesetting and a full-resolution video framebuffer, however,
  the 3D acceleration features of the GPU are not yet accessible - Mesa llvmpipe is used instead.
* The CPU frequency can be adjusted automatically with `estd` or with `sysctl machdep.cpufreq.*`.
* [[!template id=man name="uvideo" section="4"]] webcam works.
* External WiFI adapters can be used. Support for the internal WiFi - after WiFi system rework?

## Pinebook Pro (Rockchip RK3399)

* Support for the display output is provided through the Rockchip DRM driver.
  This provides kernel modesetting and a full-resolution video framebuffer, however,
  the 3D acceleration features of the GPU are not yet accessible - Mesa llvmpipe is used instead.
  Currently, you can't connect external displays through USB-C.
* The CPU frequency can be adjusted automatically with `estd` or with `sysctl machdep.cpufreq.*`.
* [[!template id=man name="uvideo" section="4"]] webcam works.
* External WiFI adapters can be used. Support for the internal WiFi - after WiFi system rework?
  Internal Broadcom WiFi is supported via the [[!template id=man name="bwfm" section="4"]] driver in -current.
  However, external adapters may still be more stable.
* The display backlight can be adjusted with `sysctl`.

### Pinebook Pro CPU affinity

After setting `security.models.extensions.user_set_cpu_affinity=1` in `/etc/sysctl.conf`,
you can run an intensive command on only the "big" CPUs:

`$ schedctl -A 4,5 make package`

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb