ASUS PN50 with Fedora 32

Table of Contents

Since my ASUS PN50 is planned to be running MythTV, I reinstalled it with Fedora 32 (wiping my RHEL 8 install).

lstopo --physical --cpuset --no-legend --of png lstopo-PN50-Ryzen5-4500U.png

Specs say 115 x 115 x 49 mm (WxDxH). CD case in the picture to give you a rough idea of the size.

Why Fedora

Simply because it is well documented, Fedora is my distyrubution of choice and Fedora release upgrades have been pain free to me for many years now.

Chosen Hardware Model

The specific PN50 I bought is a PN50-BR037MD but do note that ASUS offers a choice of CPUs and you can install up to 64 GiB RAM

Since the platform is new and the intended goal for this one is to be a PVR in the TV room, I went for the 6 core CPU and picked a packaging where 8 GiB RAM and 256 GB NVMe SSD are included.

Simply because I wanted something mid-range for the TV room and because if it turned out to be not working for me I did not want the hassle of shipping back RAM, SSD and machine separately.

No DVB-C Tuner

Note that while you see the word MythTV all over this post, I have no plans to directly connect a DVB-C tuner because I own a VBox network tuner that is supported by MythTV.

Used kickstart File

The kickstart file is minimal, all setup tasks will be done with Ansible.

redacted version of the kickstart file I used, click to expand
#version=DEVEL
# Use graphical install
graphical

# Use network installation
url --url="https://download.fedoraproject.org/pub/fedora/linux/releases/32/Everything/x86_64/os/"

# https://www.mythtv.org/wiki/Installing_MythTV_on_Fedora
# uses the Workstation flavour, so we install that.
%packages
@^workstation-product-environment
%end

# Keyboard layouts
keyboard --xlayouts='us'

# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=enp2s0f0 --ipv6=auto --activate
network  --hostname=mythtv.example.com

# Run the Setup Agent on first boot
firstboot --enable

# System services
services --enabled="chronyd,sshd"

# Be sure to only touch the NVMe and the SATA (there might be a medium in the µSD card slot at install time)
ignoredisk --only-use=nvme0n1,sda

# Partition clearing information
clearpart --all --initlabel

# Disk partitioning information
part /boot     --fstype="xfs"   --ondisk=nvme0n1 --size=1024
part /boot/efi --fstype="efi"   --ondisk=nvme0n1 --size=600  --fsoptions="umask=0077,shortname=winnt"
part pv.110    --fstype="lvmpv" --ondisk=nvme0n1 --size=51200  --grow
part pv.117    --fstype="lvmpv" --ondisk=sda     --size=102400 --grow
volgroup VG_mythtv --pesize=4096 pv.110 pv.117
logvol /                   --fstype="xfs"  --size=15360  --name=LV_root       --vgname=VG_mythtv
logvol /var                --fstype="xfs"  --size=8192   --name=LV_var        --vgname=VG_mythtv
logvol /var/log            --fstype="xfs"  --size=4096   --name=LV_var_log    --vgname=VG_mythtv
logvol /var/lib/containers --fstype="xfs"  --size=10240  --name=LV_containers --vgname=VG_mythtv
logvol /var/crash          --fstype="xfs"  --size=10240  --name=LV_var_crash  --vgname=VG_mythtv
logvol /home               --fstype="xfs"  --size=15360  --name=LV_home       --vgname=VG_mythtv
logvol swap                --fstype="swap" --hibernation --name=LV_swap       --vgname=VG_mythtv
logvol /video              --fstype="xfs"  --size=102400 --name=LV_video      --vgname=VG_mythtv

# System timezone, adjust to the server(s) you use
timezone Europe/Berlin --utc --ntpservers=ntp-1.example.com,ntp-2.example.com

# Root password
# see https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#rootpw for instructions on creating the crypted entry
rootpw --iscrypted [REDACTED]

# User creation
user                --name=mythtv  --password=[REDACTED] --iscrypted --gecos="mythtv"
user --groups=wheel --name=ansible --password=[REDACTED] --iscrypted --gecos="ansible"


%addon com_redhat_kdump --enable --reserve-mb='128'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

%post --log=/root/ks-post.log
# dump ssh public key to the root user
# obviously change this to your own pubkey
mkdir /root/.ssh
chown root.root /root/.ssh
chmod 700 /root/.ssh
cat <>/root/.ssh/authorized_keys
ssh-rsa [REDACTED]
EOF
chown root.root /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys

# dump ssh public key to the ansible user
mkdir /home/ansible/.ssh
cat </home/ansible/.ssh/authorized_keys
ssh-rsa [REDACTED]
EOF

chown -R ansible.ansible /home/ansible/.ssh
chmod 700 /home/ansible/.ssh
chmod 600 /home/ansible/.ssh/authorized_keys
restorecon -R /home/ansible/.ssh

# allow ansible to use passwordless sudo
cat </etc/sudoers.d/ansible
ansible ALL=NOPASSWD:   ALL
EOF
chmod 440 /etc/sudoers.d/ansible

echo "kickstarted at `date` for MythTV on Fedora 32 or later" >> /etc/motd

echo "remember to move /video off the NVMe (and thus onto the SATA SSD): pvmove -n LV_video /dev/nvme0n1p3" >> /etc/motd

%end

As pretty much always, I created one LVM volume group (VG) with two physical volumes (PS) and a bunch of logical volumes (LV). I explicitly left many many physical extents (PE) free. This allows me to extend LVs as needed later (and to create or move LVs onto specific PVs).

If you want, you can also create separate VGs for the SATA HDD and the NVMe, but I invite you to check out LVM in more detail, especially LVM Object Tags in the RHEL 7 LVM Admin guide. Or perhaps this post of mine.

example of settings and using tags on my devices, click to expand
[root@mythtv ~]# pvs -o+tags
  PV             VG        Fmt  Attr PSize    PFree   PV Tags
  /dev/nvme0n1p3 VG_mythtv lvm2 a--  <236.89g 160.12g        
  /dev/sda1      VG_mythtv lvm2 a--    <1.82t   1.72t        
[root@mythtv ~]# pvchange --addtag ssd /dev/nvme0n1p3
  Physical volume "/dev/nvme0n1p3" changed
  1 physical volume changed / 0 physical volumes not changed
[root@mythtv ~]# pvchange --addtag hdd /dev/sda1
  Physical volume "/dev/sda1" changed
  1 physical volume changed / 0 physical volumes not changed
[root@mythtv ~]# pvs -o+tags
  PV             VG        Fmt  Attr PSize    PFree   PV Tags
  /dev/nvme0n1p3 VG_mythtv lvm2 a--  <236.89g 160.12g ssd    
  /dev/sda1      VG_mythtv lvm2 a--    <1.82t   1.72t hdd
[root@mythtv ~]# lsblk
NAME                        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                           8:0    0   1.8T  0 disk 
└─sda1                        8:1    0   1.8T  0 part 
  └─VG_mythtv-LV_video      253:2    0   100G  0 lvm  /video
nvme0n1                     259:0    0 238.5G  0 disk 
├─nvme0n1p1                 259:1    0   600M  0 part /boot/efi
├─nvme0n1p2                 259:2    0     1G  0 part /boot
└─nvme0n1p3                 259:3    0 236.9G  0 part 
  ├─VG_mythtv-LV_root       253:0    0    15G  0 lvm  /
  ├─VG_mythtv-LV_swap       253:1    0  14.8G  0 lvm  [SWAP]
  ├─VG_mythtv-LV_home       253:3    0    15G  0 lvm  /home
  ├─VG_mythtv-LV_var_crash  253:4    0    10G  0 lvm  /var/crash
  ├─VG_mythtv-LV_containers 253:5    0    10G  0 lvm  /var/lib/containers
  ├─VG_mythtv-LV_var_log    253:6    0     4G  0 lvm  /var/log
  └─VG_mythtv-LV_var        253:7    0     8G  0 lvm  /var
[root@mythtv ~]# lvcreate -L 10G VG_mythtv -n test-hdd @hdd
  Logical volume "test-hdd" created.
[root@mythtv ~]# lvcreate -L 10G VG_mythtv -n test-ssd @ssd
  Logical volume "test-ssd" created.
[root@mythtv ~]# lsblk
NAME                        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                           8:0    0   1.8T  0 disk 
└─sda1                        8:1    0   1.8T  0 part 
  ├─VG_mythtv-LV_video      253:2    0   100G  0 lvm  /video
  └─VG_mythtv-test--hdd     253:8    0    10G  0 lvm  
nvme0n1                     259:0    0 238.5G  0 disk 
├─nvme0n1p1                 259:1    0   600M  0 part /boot/efi
├─nvme0n1p2                 259:2    0     1G  0 part /boot
└─nvme0n1p3                 259:3    0 236.9G  0 part 
  ├─VG_mythtv-LV_root       253:0    0    15G  0 lvm  /
  ├─VG_mythtv-LV_swap       253:1    0  14.8G  0 lvm  [SWAP]
  ├─VG_mythtv-LV_home       253:3    0    15G  0 lvm  /home
  ├─VG_mythtv-LV_var_crash  253:4    0    10G  0 lvm  /var/crash
  ├─VG_mythtv-LV_containers 253:5    0    10G  0 lvm  /var/lib/containers
  ├─VG_mythtv-LV_var_log    253:6    0     4G  0 lvm  /var/log
  ├─VG_mythtv-LV_var        253:7    0     8G  0 lvm  /var
  └─VG_mythtv-test--ssd     253:9    0    10G  0 lvm 

Post-kickstart General Setup with Ansible

As I mostly do these days, after installing with a minimal kickstart file, I used Ansible to;

  • ensure the clock is synchronised
  • enable persistent journal logs
  • install packages I wanted available
  • configure tuned
  • configure the host to be monitored by my CheckMK instance
  • install cockpit
example playbook, click to expand
- name: "MythTV server for HouseNet general setup"

  hosts:
    - mythtv

  become: yes

  vars:
    firewalld_zone: FedoraWorkstation
    tuned_profile:  balanced

  tasks:
    # ensure time is correct
    - name:         "CHRONYD | ensure chrony-wait is enabled"
      service:
        name:       chrony-wait
        enabled:    true
    - name:         "CHRONYD | ensure chronyd is enabled and running"
      service:
        name:       chronyd
        enabled:    true
        state:      started

    # enable persistent journal
    - name: "JOURNAL | ensure persistent logging for the systemd journal is possible"
      file:
        path: /var/log/journal
        state: directory
        owner: root
        group: systemd-journal

    # These are not needed for MythTV, it's just my usual tools collection
    - name: "ensure wanted packages for base OS use are installed"
      package:
        name:
          - powertop
          - tuned
          - tuned-utils
          - mailx
          - autofs
          - nfs-utils
          - hwloc-gui
          - numactl
          - nvme-cli
        state: present
        update_cache: no

    # ensure tuned is set up as I wish
    - name: "TUNED | ensure tuned.service is enabled and running"
      systemd:
        name:           tuned.service
        state:          started
        enabled:        true
    - name: "TUNED | check which tuned profile is active"
      command:        tuned-adm active
      register:       tuned_active_profile
      ignore_errors:  yes
      changed_when:   no
    - name: "TUNED | activate tuned profile {{ tuned_profile }}"
      command:        "tuned-adm profile {{ tuned_profile }}"
      when:           not tuned_active_profile.stdout is search('Current active profile:' ~ ' ' ~ tuned_profile)

    # monitoring
    # n.b. I manually install the agent with `dnf install http://check-mk.internal.pcfe.net/HouseNet/check_mk/agents/check-mk-agent-1.6.0p9-1.noarch.rpm` instead of pulling it from a repository
    - name: "MONITORING | ensure packages for monitoring are installed"
      package:
        name:
          - smartmontools
          - hdparm
          - check-mk-agent
        state: present
    - name: "MONITORING | ensure firewalld permits 6556/tcp in zone {{ firewalld_zone }} for check-mk-agent"
      firewalld:
        port:       6556/tcp
        permanent:  True
        state:      enabled
        immediate:  True
        zone:       "{{ firewalld_zone }}"
    - name: "MONITORING | ensure tarsnap cache is in fileinfo"
      lineinfile:
        path:       /etc/check_mk/fileinfo.cfg
        line:       "/usr/local/tarsnap-cache/cache"
        create: yes
    - name: "MONITORING | ensure entropy_avail plugin for Check_MK is present"
      template:
        src:        templates/check-mk-agent-plugin-entropy_avail.j2
        dest:       /usr/lib/check_mk_agent/plugins/entropy_avail
        mode:       0755
        group:      root
        owner:      root
    - name: "MONITORING | plugins from running CEE instance"
      get_url:
        url:        "http://check-mk.internal.pcfe.net/HouseNet/check_mk/agents/plugins/{{ item }}"
        dest:       "/usr/lib/check_mk_agent/plugins/{{ item }}"
        mode:       "0755"
      loop:
        - smart
        - lvm
    - name: "MONITORING | ensure check_mk.socket is started and enabled"
      systemd:
        name:       check_mk.socket
        state:      started
        enabled:    True

    # cockpit make the life on admins easier, give it a try.
    # it's on port 9090, example: https://mythtv.internal.pcfe.net:9090/
    - name: "COCKPIT | ensure packages for https://cockpit-project.org/ are installed"
      package:
        name:
          - cockpit
          - cockpit-selinux
          - cockpit-kdump
          - cockpit-storaged
          - cockpit-networkmanager
          - cockpit-system
          - cockpit-podman
        state: present
        update_cache: no
    - name: "COCKPIT | Ensure cockpit.socket is started and enabled"
      systemd:
        name:       cockpit.socket
        state:      started
        enabled:    True
    - name: "COCKPIT | ensure firewalld permits service cockpit in zone {{ firewalld_zone }}"
      firewalld:
        service:    cockpit
        zone:       "{{ firewalld_zone }}"
        permanent:  True
        state:      enabled
        immediate:  True

    # language packs
    - name: "PACKAGE | ensure my preferred langpacks are installed"
      package:
        name:
          - langpacks-en
          - langpacks-en_GB
          - langpacks-de
          - langpacks-fr
        state: present
        update_cache: no

    # podman
    - name: "PACKAGE | ensure podman is installed"
      package:
        name:
          - podman
          - podman-docker
        state: present
        update_cache: no

    # setroubleshoot, see also https://danwalsh.livejournal.com/20931.html
    - name: "PACKAGE | ensure setroubleshoot for headless server is installed"
      package:
        name:
          - setroubleshoot-server
          - setroubleshoot-plugins
        state: present
        update_cache: no

    # autofs, makes using NFS so much more pleasant
    - name: "Ensure autofs.service is started and enabled"
      systemd:
        name:       autofs.service
        state:      started
        enabled:    True

    # I do want all errata applied
    - name: "DNF | ensure all updates are applied"
      dnf:
        update_cache: yes
        name: '*'
        state: latest
      tags: apply_errata

Feel free to use parts or all of it. Do tell if you have improvements.

Firmware updates

While I was hoping that on a mid-2020 released, UEFI enabled, machine I could comfortably apply vendor “BIOS updates” through fwupd, as of 2020-10-02, ASUS did not (yet) seem to have it in LVFS, but I hope this will improve in the future.

So I updated to the 0416 firmware by;

  1. downloading a zip from the vendor
  2. unzipping to /boot/efi/EFI/ (I could also have extracted it to a USB stick)
  3. entering uefi (aka BIOS) setup by pressing Del during power on self test (POST)
  4. choosing Tool / Start ASUS EzFlash
  5. selecting the extracted PN50-ASUS-0416.CAP
  6. letting the tool apply the upgrade

Firmware Settings

I changed the following from the shipped defaults (note that some options, e.g. detailed Trusted Computing options, only show up after save & reset of the parent option);

  • Advanced / Trusted Computing: Enable
  • Advanced / Network Stack Configuration / Network Stack: Enabled
  • Advanced / Network Stack Configuration / Ipv4 PXE Suport: Enabled
  • Advanced / Network Stack Configuration / Ipv6 PXE Suport: Enabled
  • Advanced / Onboard Devices Configuration: all (LAN, WLAN, BT, CIR, HDMI CEC) Enabled
  • Advanced / APM / Restore AC Power Loss: Last State
  • Advanced / APM / Power On By PCI-E: Enabled
  • Advanced / Platform Configuration / PSS Support: Enabled
  • Advanced / Platform Configuration / SVM Mode: Enabled
  • Boot / Boot Configuration / Boot Logo Display: Full Screen
  • Boot / Boot Configuration / Wait for ‘F1’ If Error: Disabled
  • Boot / Boot Configuration / Fast Boot: Disabled
  • Boot / Secure Boot: Enabled

Some of these are for my comfort (e.g. CEC), others are because I have no plans to run Windows on this hardware and thus no need for Windows specific dumb downs of the options (e.g. boot logo size).

Notes

  1. Leave Advanced / APM / Power On By RTC set to Disabled if you plan to set the wakeup time from Linux.
  2. If your PXE setup does not serve signed files, leave Secure Boot disabled until you finished installing. It’s OK to enable this after installation, Fedora has all the needed bits signed.
  3. MCTP and DASH are off in the default settings, while I did enable them after upgrading to version 0416, these two setting do not seem to stick (others like e.g. enabling PXE boot or setting last state for AC state after power loss do stick). Every time I look on a subsequent visit to the firmware settings they are again Disabled.

Detailed Hardware Info

Memory

SKU PN50-BR037MD came with one Hynix HMA81GS6DJR8N-XN 8 GiB memory module.

[root@mythtv ~]# grep ^MemTotal /proc/meminfo
MemTotal:        7610132 kB
dmidecode -t memory # click to expand
[root@mythtv ~]# dmidecode -t memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 3.2.0 present.

Handle 0x0030, DMI type 16, 23 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: None
        Maximum Capacity: 32 GB
        Error Information Handle: 0x002F
        Number Of Devices: 2

Handle 0x0037, DMI type 17, 84 bytes
Memory Device
        Array Handle: 0x0030
        Error Information Handle: 0x0036
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8 GB
        Form Factor: SODIMM
        Set: None
        Locator: DIMM 0
        Bank Locator: P0 CHANNEL A
        Type: DDR4
        Type Detail: Synchronous Unbuffered (Unregistered)
        Speed: 3200 MT/s
        Manufacturer: Hynix
        Serial Number: [REDACTED]
        Asset Tag: Not Specified
        Part Number: HMA81GS6DJR8N-XN    
        Rank: 1
        Configured Memory Speed: 3200 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 1.2 V
        Configured Voltage: 1.2 V
        Memory Technology: DRAM
        Memory Operating Mode Capability: Volatile memory
        Firmware Version: Unknown
        Module Manufacturer ID: Bank 1, Hex 0xAD
        Module Product ID: Unknown
        Memory Subsystem Controller Manufacturer ID: Unknown
        Memory Subsystem Controller Product ID: Unknown
        Non-Volatile Size: None
        Volatile Size: 8 GB
        Cache Size: None
        Logical Size: None

Handle 0x003A, DMI type 17, 84 bytes
Memory Device
        Array Handle: 0x0030
        Error Information Handle: 0x0039
        Total Width: Unknown
        Data Width: Unknown
        Size: No Module Installed
        Form Factor: Unknown
        Set: None
        Locator: DIMM 0
        Bank Locator: P0 CHANNEL B
        Type: Unknown
        Type Detail: Unknown
        Speed: Unknown
        Manufacturer: Unknown
        Serial Number: Unknown
        Asset Tag: Not Specified
        Part Number: Unknown
        Rank: Unknown
        Configured Memory Speed: Unknown
        Minimum Voltage: Unknown
        Maximum Voltage: Unknown
        Configured Voltage: Unknown
        Memory Technology: Unknown
        Memory Operating Mode Capability: Unknown
        Firmware Version: Unknown
        Module Manufacturer ID: Unknown
        Module Product ID: Unknown
        Memory Subsystem Controller Manufacturer ID: Unknown
        Memory Subsystem Controller Product ID: Unknown
        Non-Volatile Size: None
        Volatile Size: None
        Cache Size: None
        Logical Size: None

CPU

6 cores, 6 threads, AMD Ryzen 5 4500U

[root@mythtv ~]# lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   48 bits physical, 48 bits virtual
CPU(s):                          6
On-line CPU(s) list:             0-5
Thread(s) per core:              1
Core(s) per socket:              6
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       AuthenticAMD
CPU family:                      23
Model:                           96
Model name:                      AMD Ryzen 5 4500U with Radeon Graphics
Stepping:                        1
Frequency boost:                 enabled
CPU MHz:                         1397.078
CPU max MHz:                     2375.0000
CPU min MHz:                     1400.0000
BogoMIPS:                        4741.23
Virtualization:                  AMD-V
L1d cache:                       192 KiB
L1i cache:                       192 KiB
L2 cache:                        3 MiB
L3 cache:                        8 MiB
NUMA node0 CPU(s):               0-5
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full AMD retpoline, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxs
                                 r sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl n
                                 onstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse
                                 4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy ab
                                 m sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_
                                 nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcal
                                 l fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveop
                                 t xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf
                                  xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushb
                                 yasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overfl
                                 ow_recov succor smca

PCI Devices

[root@mythtv ~]# lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Renoir IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:02.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe GPP Bridge
00:02.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe GPP Bridge
00:02.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe GPP Bridge
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus
00:08.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 51)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Device 24: Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Device 24: Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Device 24: Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Device 24: Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Device 24: Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Device 24: Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Device 24: Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir Device 24: Function 7
01:00.0 USB controller: ASMedia Technology Inc. ASM1042A USB 3.0 Host Controller
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0e)
02:00.1 Serial controller: Realtek Semiconductor Co., Ltd. Device 816a (rev 0e)
02:00.2 Serial controller: Realtek Semiconductor Co., Ltd. Device 816b (rev 0e)
02:00.3 IPMI Interface: Realtek Semiconductor Co., Ltd. Device 816c (rev 0e)
02:00.4 USB controller: Realtek Semiconductor Co., Ltd. Device 816d (rev 0e)
03:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)
04:00.0 Non-Volatile memory controller: SK hynix Device 1527
05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Renoir (rev c3)
05:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Device 1637
05:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor
05:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Renoir USB 3.1
05:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Renoir USB 3.1
05:00.5 Multimedia controller: Advanced Micro Devices, Inc. [AMD] Raven/Raven2/FireFlight/Renoir Audio Processor (rev 01)
05:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller
05:00.7 Signal processing controller: Advanced Micro Devices, Inc. [AMD] Raven/Raven2/Renoir Sensor Fusion Hub
06:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81)
06:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81)

For lack of need, I have not yet used

  • WLAN
  • Bluetooth

FIXME: do a quick smoke test on both.

USB Devices

[root@mythtv ~]# lsusb
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 003: ID 8087:0029 Intel Corp. AX200 Bluetooth
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[root@mythtv ~]# lsusb -t
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 10000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
    |__ Port 4: Dev 3, If 0, Class=Vendor Specific Class, Driver=rtsx_usb, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M

Wired Network Interface

[root@mythtv ~]# ethtool -i enp2s0f0
driver: r8169
version: 5.8.12-200.fc32.x86_64
firmware-version: 
expansion-rom-version: 
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

Wireless Network Interface

[root@mythtv ~]# ethtool -i wlp3s0
driver: iwlwifi
version: 5.8.12-200.fc32.x86_64
firmware-version: 55.d9698065.0 cc-a0-55.ucode
expansion-rom-version: 
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

I have no use for it and might remove it to free that M.2 slot.

Topology

[root@mythtv ~]# lstopo
Machine (7432MB total)
  Package L#0
    NUMANode L#0 (P#0 7432MB)
    L3 L#0 (4096KB)
      L2 L#0 (512KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 + PU L#0 (P#0)
      L2 L#1 (512KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 + PU L#1 (P#1)
      L2 L#2 (512KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2 + PU L#2 (P#2)
    L3 L#1 (4096KB)
      L2 L#3 (512KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3 + PU L#3 (P#3)
      L2 L#4 (512KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4 + PU L#4 (P#4)
      L2 L#5 (512KB) + L1d L#5 (32KB) + L1i L#5 (32KB) + Core L#5 + PU L#5 (P#5)
  HostBridge
    PCIBridge
      PCI 02:00.0 (Ethernet)
        Net "enp2s0f0"
    PCIBridge
      PCI 03:00.0 (Network)
        Net "wlp3s0"
    PCIBridge
      PCI 04:00.0 (NVMExp)
        Block(Disk) "nvme0n1"
    PCIBridge
      PCI 05:00.0 (VGA)
    PCIBridge
      PCI 06:00.0 (SATA)
        Block(Disk) "sda"
      PCI 06:00.1 (SATA)
  Misc(MemoryModule)
  Misc(MemoryModule)

NVMe

On my PN50-BR037MD, ASUS put in a SK hynix HFS256GD9TNG-62A0A NVMe SSD (238.5GiB aka 256 GB).

The SK hynix specifications say

Performance (up to) value
Sequential Read 2500MB/s
Sequential Write 770MB/s
Random Read 120K IOPS
Random Write 170K IOPS

With the following notes

  • performance
    • IOmeter1.1 is used for measuring. Measurements are performed on 1GB of LBA range with a queue depth 32.
    • System variations may affect results. (Test Pre-condition : Secure erased and NTFS formatted of a secondary drive)
  • sequential read or write
    • Set to 128KiB alignment
    • 1MB/sec = 1,000,000 bytes/sec was used in sequential performances.
  • random read or write
    • Set to 4KiB alignment, 4 threads condition

SATA bay

The 2.5" SATA bay can accommodate both 7mm and 9,5mm high devices. source; page 33 of the User Manual but not 15mm ones.

2TB HDD Addition

I added a Seagate SATA 6 Gb/s, 2,5", BarraCuda 2 TB (ST2000LM015) HDD.

You can find specifications on the Seagate website.

I expect any 7mm or 9,5mm 2.5" SATA device to work in the slot.

Quick dd Test of the SATA HDD

Since I anyway write spinning rust once full of zeroes after purchasing them (so that each block has a chance to trigger badblock reallocation), I might as well paste the numbers I got from dd, over 100MB/s is a bit more than will go through the 1Gib/s ethernet connection and should be more than ample to deal with a few HD video streams (AFAIR that’s below 20 MB/s but I’m unsure if it was even below 10);

[root@mythtv ~]# lsblk
NAME                        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                           8:0    0   1.8T  0 disk 
└─sda1                        8:1    0   1.8T  0 part 
  └─VG_mythtv-LV_video      253:2    0   100G  0 lvm  /video
nvme0n1                     259:0    0 238.5G  0 disk 
├─nvme0n1p1                 259:1    0   600M  0 part /boot/efi
├─nvme0n1p2                 259:2    0     1G  0 part /boot
└─nvme0n1p3                 259:3    0 236.9G  0 part 
  ├─VG_mythtv-LV_root       253:0    0    15G  0 lvm  /
  ├─VG_mythtv-LV_swap       253:1    0  14.8G  0 lvm  [SWAP]
  ├─VG_mythtv-home          253:3    0    15G  0 lvm  /home
  ├─VG_mythtv-LV_var_crash  253:4    0    10G  0 lvm  /var/crash
  ├─VG_mythtv-LV_containers 253:5    0    10G  0 lvm  /var/lib/containers
  ├─VG_mythtv-LV_var_log    253:6    0     4G  0 lvm  /var/log
  └─VG_mythtv-LV_var        253:7    0     8G  0 lvm  /var
[root@mythtv ~]# dd if=/dev/zero of=/video/banana status=progress
106536235008 bytes (107 GB, 99 GiB) copied, 828 s, 129 MB/s
dd: writing to '/video/banana': No space left on device
208085249+0 records in
208085248+0 records out
106539646976 bytes (107 GB, 99 GiB) copied, 827.585 s, 129 MB/s
[root@mythtv ~]# rm /video/banana
rm: remove regular file '/video/banana'? y
set up an LV with fiolesystem covering the rest of the HDD, click to expand
[root@mythtv ~]# date
Sat Oct  3 20:53:26 CEST 2020
[root@mythtv ~]# lvcreate -l 100%FREE VG_mythtv -n banana /dev/sda1
  Logical volume "banana" created.
[root@mythtv ~]# lsblk
NAME                        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                           8:0    0   1.8T  0 disk 
└─sda1                        8:1    0   1.8T  0 part 
  ├─VG_mythtv-LV_video      253:2    0   100G  0 lvm  /video
  └─VG_mythtv-banana        253:8    0   1.7T  0 lvm  
nvme0n1                     259:0    0 238.5G  0 disk 
├─nvme0n1p1                 259:1    0   600M  0 part /boot/efi
├─nvme0n1p2                 259:2    0     1G  0 part /boot
└─nvme0n1p3                 259:3    0 236.9G  0 part 
  ├─VG_mythtv-LV_root       253:0    0    15G  0 lvm  /
  ├─VG_mythtv-LV_swap       253:1    0  14.8G  0 lvm  [SWAP]
  ├─VG_mythtv-LV_home       253:3    0    15G  0 lvm  /home
  ├─VG_mythtv-LV_var_crash  253:4    0    10G  0 lvm  /var/crash
  ├─VG_mythtv-LV_containers 253:5    0    10G  0 lvm  /var/lib/containers
  ├─VG_mythtv-LV_var_log    253:6    0     4G  0 lvm  /var/log
  └─VG_mythtv-LV_var        253:7    0     8G  0 lvm  /var
[root@mythtv ~]# mkfs.xfs /dev/mapper/VG_mythtv-banana
meta-data=/dev/mapper/VG_mythtv-banana isize=512    agcount=4, agsize=115540736 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=462162944, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=225665, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
[root@mythtv ~]# mkdir /mnt/testing
[root@mythtv ~]# mount /dev/mapper/VG_mythtv-banana /mnt/testing
[root@mythtv ~]# dd if=/dev/zero of=/mnt/testing/fillfile status=progress
1878867808768 bytes (1.9 TB, 1.7 TiB) copied, 18569 s, 101 MB/s
dd: writing to '/mnt/testing/fillfile': No space left on device
3669666553+0 records in
3669666552+0 records out
1878869274624 bytes (1.9 TB, 1.7 TiB) copied, 18568.9 s, 101 MB/s

To be clear, this is not a benchmark, it is a number falling out of a process I do anyway. I mean I did not even stop using the machine for other taskjs, so the above numbers really are nothing more than a rough indication.

FIXME: take the time to do some fio tests, although there’s already a couple in my RHEL 8 on PN50 post and this will be a VDR, not a server.

Disappointments

Note that for a PVR the lack of HW watchdog and IPMI are OK, but this does put a dampener on my plans to buy more of these machines for more important tasks. Shame, with their ability to have 64 GiB RAM and Ryzen 7 CPU models, they had much promise.

The ACPI BIOS Errors are not nice, I expected better from ASUS :-( Then again my past use of ASUS has always been motherboards, never coimplete systems.

Watchdog is Disabled

And I found no option in the UEFI setup to enable it, maybe I overlooked it.

[root@mythtv ~]# journalctl -b --grep "sp5100"
-- Logs begin at Sat 2020-10-03 11:28:33 CEST, end at Sat 2020-10-03 14:55:01 CEST. --
Oct 03 12:44:57 mythtv.[…] kernel: sp5100_tco: SP5100/SB800 TCO WatchDog Timer Driver
Oct 03 12:44:57 mythtv.[…] kernel: sp5100-tco sp5100-tco: Using 0xfed80b00 for watchdog MMIO address
Oct 03 12:44:57 mythtv.[…] kernel: sp5100-tco sp5100-tco: Watchdog hardware is disabled

No IPMI

Not that I expected it to, again revisit firmware setup to be sure.

[root@mythtv ~]# journalctl -b --grep "ipmi"
-- Logs begin at Sat 2020-10-03 11:28:33 CEST, end at Sat 2020-10-03 14:55:01 CEST. --
Oct 03 12:44:57 mythtv.[…] kernel: IPMI message handler: version 39.2
Oct 03 12:44:57 mythtv.[…] kernel: ipmi device interface
Oct 03 12:44:57 mythtv.[…] kernel: ipmi_si: IPMI System Interface driver
Oct 03 12:44:57 mythtv.[…] kernel: ipmi_si: Unable to find any System Interface(s)

BIOS 0416 has ACPI BIOS Errors

Hopefully this will improve with future firmware versions. Another thing that is OKish for the DVR use case but speaks against buying more PN50 for more serious use than watching TV.

I also saw those on RHEL8 with default BIOS options

ACPI BIOS Errors, click to expand
[root@mythtv ~]# uname -r
5.8.12-200.fc32.x86_64
[root@mythtv ~]# journalctl -b --grep "ACPI BIOS"
-- Logs begin at Sat 2020-10-03 11:28:33 CEST, end at Sat 2020-10-03 14:51:57 CEST. --
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\SMIB], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.M291.WLAN], AE_NOT_FOUND (20200528/dswload2-162)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.VER1], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CCI0], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CCI1], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CCI2], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CCI3], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CTL0], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CTL1], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CTL2], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CTL3], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CTL4], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CTL5], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CTL6], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.CTL7], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI0], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI1], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI2], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI3], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI4], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI5], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI6], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI7], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI8], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGI9], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGIA], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGIB], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGIC], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGID], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGIE], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGIF], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO0], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO1], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO2], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO3], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO4], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO5], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO6], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO7], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO8], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGO9], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGOA], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGOB], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGOC], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGOD], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGOE], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Failure creating named object [\_SB.PCI0.SBRG.EC0.MGOF], AE_ALREADY_EXISTS (20200528/dsfield-637)
[…] kernel: ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.SBRG.EC0.OKEC], AE_NOT_FOUND (20200528/psargs-330)

I did expect better from ASUS.

Positive Surprises

The retail package came with, in addition to the items listed in the manual, a complement of

  • 2.5" strorage device screws, coated.
  • a VESA mount plate with all the screws.

Thank you ASUS, small things like that are appreciated.

Wished Improvements

More appreciated though would be a better job with the firmware.

I’d like to see;

  • fewer BIOS errors, ideally none
  • details on the BIOS options in the manual (like I am used from ASUS motherboards)
  • no to be filled by O.E.M. strings