NetBSD on ZotacNano - hpaluch/hpaluch.github.io GitHub Wiki
NetBSD on Zotac Nano PC
Testing NetBSD 11.0_BETA on Zotac Nano CI327 with Intel HD Graphics 500.
Please see ZotacNano for other HW/OS details.
PCI looks like:
nbsd-zotac# pcictl pci0 list -N
000:00:0: Intel Apollo Lake Host Bridge (host bridge, revision 0x0b) [pchb0]
000:02:0: Intel Apollo Lake Graphics (12EU) (VGA display, revision 0x0b) [i915drmkms0]
000:13:2: Intel Apollo Lake Fast SPI (miscellaneous serial bus, revision 0x0b)
000:14:0: Intel Apollo Lake HD Audio (mixed mode multimedia, HD Audio 1.0, revision 0x0b) [hdaudio0]
000:15:0: Intel Apollo Lake TXE HECI1 (miscellaneous communications, revision 0x0b)
000:18:0: Intel Apollo Lake SATA (SATA mass storage, AHCI 1.0, revision 0x0b) [ahcisata0]
000:19:0: Intel Apollo Lake PCIe A0 (PCI bridge, revision 0xfb) [ppb0]
000:19:2: Intel Apollo Lake PCIe A2 (PCI bridge, revision 0xfb) [ppb1]
000:20:0: Intel Apollo Lake PCIe B1 (PCI bridge, revision 0xfb) [ppb2]
000:21:0: Intel Apollo Lake USB Host (xHCI) (USB serial bus, xHCI, revision 0x0b) [xhci0]
000:26:0: Intel product 5ac8 (miscellaneous serial bus, revision 0x0b)
000:28:0: Intel Apollo Lake eMMC (SD Host Controller system, interface 0x01, revision 0x0b) [sdhc0]
000:30:0: Intel product 5ad0 (SD Host Controller system, interface 0x01, revision 0x0b) [sdhc1]
000:31:0: Intel Apollo Lake LPC (ISA bridge, revision 0x0b) [pcib0]
000:31:1: Intel Apollo Lake SMBus (SMBus serial bus, revision 0x0b) [ichsmb0]
001:00:0: Intel Dual Band Wireless AC 3165 (miscellaneous network, revision 0x81) [iwm0]
002:00:0: Realtek Semiconductor 8168/8111 10/100/1000 Ethernet (ethernet network, revision 0x0c) [re0]
003:00:0: Realtek Semiconductor 8168/8111 10/100/1000 Ethernet (ethernet network, revision 0x0c) [re1]
Note: according to https://wiki.gentoo.org/wiki/Intel my Zotac Nano is actually known
as "Broxton" ("Goldmont" Celeron CPU), platform "Apollo Lake". So firmware
has prefix bxt.
WARNING! NetBSD 11 Beta crashes on i915 DRM driver. Affected image:
Found 2 ways to boot:
- append
-x(Debug output) to boot command - or disable module entirely with
userconf disable i915drmkms
WARNING! Even in case of option 1. there is still problem that it does not work properly (X-Server freezes or reports):
{drm:netbsd:gen8_de_irq_handler.isra.0+0xcac} hotplug event received, stat 0x00000020, dig 0x10001a18, pins 0x00000040, long 0x00000040
{drm:netbsd:intel_hpd_irq_handler+0xea} digital hpd on [ENCODER:119:DDI C] - long
{drm:netbsd:intel_set_cdclk+0x62} Changing CDCLK to 144000 kHz, VCO 1152000 kHz, ref 19200 kHz, bypass 19200 kHz, voltage level 6
{drm:netbsd:gen8_de_irq_handler.isra.0+0xcac} hotplug event received, stat 0x00000020, dig 0x10001a18, pins 0x00000040, long 0x00000040
{drm:netbsd:intel_hpd_irq_handler+0xea} digital hpd on [ENCODER:119:DDI C] - long
{drm:netbsd:intel_reference_shared_dpll+0x86} using PORT PLL C for pipe A
{drm:netbsd:intel_set_cdclk+0x62} Changing CDCLK to 288000 kHz, VCO 1152000 kHz, ref 19200 kHz, bypass 19200 kHz, voltage level 12
{drm:netbsd:intel_audio_codec_enable+0x76} ELD on [CONNECTOR:120:DP-2], [ENCODER:119:DDI C]
Asynchronous wait on fence i915drmkms0:X[552]:2 timed out (hint:0xffffffff807816ec)
But Some interesting pointers:
- https://mail-index.netbsd.org/netbsd-users/2022/12/12/msg029351.html
- downloaded firmware tarball from: https://gitlab.com/kernel-firmware/linux-firmware/-/archive/main/linux-firmware-main.tar.gz?ref_type=heads
- in my case I needed at least firmware
/libdata/firmware/i915drmkms/i915/bxt_dmc_ver1_07.bin - it helped a bit but not entirely - lot of rendering artifacts after
startxand dmesg revealed new errors:
{drm:netbsd:gen8_de_irq_handler.isra.0+0x2c7} *ERROR* Fault errors on pipe A: 0x00000080
{drm:netbsd:gen8_de_irq_handler.isra.0+0x2c7} *ERROR* Fault errors on pipe A: 0x00000080
{drm:netbsd:gen8_de_irq_handler.isra.0+0x2c7} *ERROR* Fault errors on pipe A: 0x00000080
Asynchronous wait on fence i915drmkms0:X[2268]:132 timed out (hint:0xffffffff807816ec)
However following hint helped:
- source: https://mail-index.netbsd.org/netbsd-users/2022/12/12/msg029351.html
- first run:
mkdir -p /etc/X11/xorg.conf.d - here is my
/etc/X11/xorg.conf.d/modesetting.conf(copy from mailing list - by RVP):
# /etc/X11/xorg.conf.d/modesetting.conf - fix for: Mesa DRI Intel(R) HD Graphics 500 (APL 2) (0x5a85)
# https://mail-index.netbsd.org/netbsd-users/2022/12/12/msg029351.html
# Copyright RVP
# Depends on kernel DRM
#
Section "Device"
Identifier "Card0"
Driver "modesetting"
# Option "SWcursor" "on"
# Option "ShadowFB" "off"
# Option "AccelMethod" "none"
EndSection
Which is interesting because it just selects driver (modesetting instead of
intel) - which is actually same resolution as on Linux (LEAP 15).
Here is diff for comparison:
$ fgrep LoadModule /var/log/Xorg.0.log | awk '{print $4,$5}' > ~/lm-Xorg.0.log
$ fgrep LoadModule /var/log/Xorg.0.log.old | awk '{print $4,$5}' > ~/lm-Xorg.0.log.old
$ diff -y lm-Xorg.0.log.old lm-Xorg.0.log
LoadModule: "glx" LoadModule: "glx"
LoadModule: "intel" <
LoadModule: "modesetting" LoadModule: "modesetting"
LoadModule: "vesa" | LoadModule: "glamoregl"
LoadModule: "wsfb" | LoadModule: "fb"
LoadModule: "dri2" <
LoadModule: "kbd" LoadModule: "kbd"
LoadModule: "ws" LoadModule: "ws"
So we can see that wrong configuration (on the left) loads intel and dri2
module.
Now you should be able to proceed with install
Generally I'm not alone, more affected users in the past:
Summary
To get working Intel graphics under NetBSD on Zotac Nano you need to:
- Boot with
boot -x- to enable tracing messages that avoid early hard crash of kernel - Use provided
/etc/X11/xorg.conf.d/modesetting.conffrom RVP on mailing list
As special bonus: this Intel driver is not affected by SIGSEGV bug on exit - see thread on https://mail-index.netbsd.org/netbsd-users/2025/12/18/msg033661.html