Skip to content

Instantly share code, notes, and snippets.

@plembo
Last active November 23, 2021 06:59
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save plembo/4d52f7c71739a54f1a023814bbb87e00 to your computer and use it in GitHub Desktop.
Save plembo/4d52f7c71739a54f1a023814bbb87e00 to your computer and use it in GitHub Desktop.
Gigabyte BXBT-1900 as a HTPC

Using a Gigabyte BXBT-1900 as an HTPC

Gigabyte mini PC with Intel Baytrail J1900 Celeron.

NOTE: I do not endorse the use of this machine as an HTPC. It's way too underpowered for that. Over time, I have found that a non-mobile i5 with 4 cores is the absolute minimum hardware required for an HTPC.

4 core CPU, but weak GPU. Old tech released in 2014, optimized for Windows 8.

Known for locking up without warning. That condition supposed to have been fixed by BIOS F8 (03/02/2016).

Mine had BIOS F8 already installed (which is good, because I've been unable to get it to boot off USB stick). I added 4G DDR3 SODIMM(1.35v) and 64G Sandisk SSD. O/S installed is Ubuntu 18.04 desktop.

In my testing locked up during playing of Vimeo video at 720p and higher resolution. Also experienced stuttering audio on playback of both video and audio files.

The following took me a few weeks to research and test. The system would have been unusable without these changes.

Note: Framerates for video played through browser at 720p and above are still sub standard.

BIOS Settings

Latest advice for avoiding the locking problem on Ubuntu 16.04 found here:

https://askubuntu.com/questions/768711/does-ubuntu-16-04-run-well-on-the-gb-bxbt-1900-brix-mini-pc

Recommended this config in the BIOS (hit F2 or DEL during system start to access):

BIOS Version: F8 
CPU SMART FAN Function: Enabled [fan controller]
CPU FAN Fail Detect: Disabled [HD video performance]
Wake system from S5: Disabled [no sleeping!]
Intel Virtualization: Disabled [HD video performance]
EIST: Disabled [EIST is Intel SpeedStep: HD video performance]
CPU C state Report: Disabled [helps prevent lock-up]
SATA Mode: AHCI Mode [legacy /OS SATA compatibility] 
SATA Port: KINGSTON SV300 (120.0GB) 
CSM Support: Enabled [legacy O/S UEFI compatibility module]
LAN PXE OpROM: Disabled [prevent PXE boot]
DVMT Pre-Allocated: 512M [HD video performance]
Onboard Audio: Enabled 
Onboard LAN: Enabled  
OS Selection: Windows 7
ERP Lowest Power State Mode: Enabled [prevents sleep mode, keeps HDMI signal alive]
Restore AC Power Loss: Power Off 
Secure Boot: Disabled [Ubuntu can't boot if enabled]
Secure Boot Mode: Standard [Secure Boot not required]
Fast Boot: Enabled
XHCI Hand Off: Enabled [any other setting prevents system poweroff]

See related articles on performance under FreeBSD and poweroff issue:

https://forums.freebsd.org/threads/some-notes-on-the-gigabyte-brix-gb-bxbt-2807-and-freebsd.49426/

https://superuser.com/questions/927346/gigabyte-brix-gb-bxbt-1900-wont-power-off

Kernel configuration

Per the kernel mailing list ( https://bugzilla.kernel.org/show_bug.cgi?id=109051), also add the following to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_idle.max_cstate=1"

Then run

update-grub

and reboot.

Pulseaudio configuration

Looks similar to https://forums.fedoraforum.org/showthread.php?303830-Fedora-21-Audio-Stuttering-Problems. Add the following to the end of the line "load-module module-udev-connect" in /etc/pulse/default.pa:

tsched=0

so the line looks like:

load-module module-udev-connect tsched=0

In addition, edit /etc/pulse/daemon.conf to add the following:

; realtime-scheduling = yes
realtime-scheduling = no

https://fitzcarraldoblog.wordpress.com/2017/04/20/stuttering-audio-in-linux-pulseaudio-strikes-again/

After making changes to pulse config, run the following as user (not root or sudo root) to restart pulse:

pulseaudio -k

Networking

I disabled NetworkManager and configured for traditional (ifupdown) networking in an effort to get the system to boot without the TV/monitor turned on. That didn't fix the problem, but networking was more reliable. This is for hardwired ethernet only. If you have to rely on wifi for connectivity, stick with NetworkManager.

  1. Install ifupdown (disabling netplan) and configure /etc/network/interfaces.
$ sudo apt install ifupdown
$ sudo reboot
# /etc/network/interfaces
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto enp3s0
iface enp3s0 inet static
    address 10.0.1.15
    netmask 255.255.255.0
    network 10.0.1.0
    broadcast 10.0.1.255
    gateway 10.0.1.1
    dns-nameservers 10.0.1.8
    dns-nameservers 10.0.1.9
    dns-search example.com
  1. Mask systemd-resolved (& recreate /etc/resolv.conf).
$ sudo systemctl stop systemd-resolved
$ sudo systemctl mask systemd-resolved
$ sudo rm /etc/resolv.conf
# /etc/resolv.conf
search example.com
nameserver 10.0.1.8
nameserver 10.0.1.9
nameserver 8.8.8.8

(We've got a pair of BIND servers here at the house, Google DNS is our fallback)

  1. Disable NetworkManager if installed and enabled.
$ sudo systemctl stop NetworkManager
$ sudo systemctl disable NetworkManager
$ sudo systemctl mask NetworkManager
$ sudo reboot
  1. Install and configure chrony (which will disable systemd-timesyncd)
$ sudo apt install chrony
$ sudo vi /etc/chrony/chrony.conf

The defaults will work fine for a desktop that doesn't need a local time server, but I like to at lease replace the ubuntu servers with the local us.pool.ntp.org counterparts

# pool ntp.ubuntu.com        iburst maxsources 4
# pool 0.ubuntu.pool.ntp.org iburst maxsources 1
# pool 1.ubuntu.pool.ntp.org iburst maxsources 1
# pool 2.ubuntu.pool.ntp.org iburst maxsources 2
server 0.us.pool.ntp.org iburst
server 1.us.pool.ntp.org iburst
server 2.us.pool.ntp.org iburst
server 3.us.pool.ntp.org iburst
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment