1. 19

Hi there!

I’m planning to build a custom workstation for fun. Some of my design goals here -

  1. I won’t be running a lot of graphics heavy games, although might will do a bit of video editing occasionally. So, a decent video card will do.
  2. Network
    • Support for Bluetooth/WiFi with open source drivers
    • High speed ethernet (with good support for open source drivers again).
  3. Display
    • Support Multi/Dual-Monitors
    • Display - support DP cable
  4. Good if it can support *BSD operating systems too - as I plan to install and tinker with them too. (Would be a killer to have them too. But not a dealbreaker though if I can get a good build for Linux)
  5. Planning to have 16 gigs of RAM to start with. But, should be upgradable at a later point.
  6. Storage - SSD for boot drive. HDD for other storage.
  7. I’m not sure if I should go with a custom sound card. Any recommendations/suggestions welcome.

Are there any recommendations for hardware?

  1. 6

    While no one has explicitly said this yet, you should avoid Nvidia.

    There was an article by Drew DeVault posted here yesterday which included a good section on my Nvidia is a pain in the ass.
    https://drewdevault.com/2019/02/10/Wayland-misconceptions-debunked.html#wayland-doesnt-support-nvidia

    1. 4

      Things that’ve worked for me:

      • Storage – Samsung SSDs. Spinny disks, Toshibas aren’t bad–I’d use an SSD for the main disk and then bulk storage on spinning rust…and expect to replace the spinning rust after 3-5 years (just had two disks die on me this weekend >:( ).

      • Graphics – All of the AMD cards are now fully open-source drivers iirc, so any of the new cards should see you nicely unless you do CUDA.

      • Memory – Might as well spring for 32GB and forget about things for a while especially if you do containers, VMs, or run Slack. :P Cheapo Kingston or Crucial (I think?) has served me fine here.

      That’s all I’ve got, though processor-wise make sure to update the firmware if you get an AMD Ryzen or Threadripper board–last gen they had an annoying temperature sensing bug that needed patching. Also, watch out for their compatabilty with the Vive wireless stuff if that matters to you.

      1. 4

        What’s this about a temperature bug? Are you talking about the temperature offset added to tCTL?

        Samsung SSDs seconded.

        1. 1

          Yep, ran into this on a 1700X. Scared the hell out of me until I got it sorted out.

        2. 4

          Graphics – All of the AMD cards are now fully open-source drivers iirc, so any of the new cards should see you nicely unless you do CUDA.

          Caveat for OpenBSD: The amdgpu driver has not yet been imported, so many newer AMD cards aren’t supported. Check the man page before buying.

          Integrated Intel GPUs are another good bet.

          1. 1

            AMD graphics are well supported, but require binary blob firmware. Not an issue if you are pragmatic, but might be of you are going for a purist free software station.

            Sadly, if you want fully free drivers, your best need is, ironically, cards supported by nouveau, which means the best you can get is something like a GTX 700 series (excluding the popular GTX 750 and 750Ti).

            Also, while AMD has excellent open source drivers, it takes a while for them to be backported to the various BSDs. Best to check them explicitly for the card you consider getting.

            Intel is another good option, but this heavily restricts your available output ports and puts some restrictions on the CPU choice as well (no Xeon or AMD). Newer Intel graphics require a binary blob for some features/best performance, but I believe the drivers do mostly function without the firmware as well. I don’t know for sure though.

          2. 3

            I recently had the same goals and ended up splurging on something wildly overpowered - many of the prices are very high/wrong, e.g. I’m using a stock AMD cooler, drives were previously in a NAS, large monitor was obtained on craigslist. PCPartpicker is a decent starting point for trying to figure out a build with constraints.

            1. Graphics I haven’t had great luck with desktop environment stability with AMDGPU & display sleep. It seemed like a newer Linux kernel fixes it, but keeping ZFS kernel modules, AMDGPU, and my kernel version playing nice together has not been attempted. This card is way overpowered for what I’m doing, but I’d like to try OpenCL at some point. The BSD build below has a cheap, silent video card, and perhaps I should have picked something more along those lines.

            2. Networking The 802.11ac networking performance is marginally worse than my 2017 MacBook Pro - iperf3 for both of them is usually around 130-200 megabits. The Bluetooth stack has a habit of dying if you disable and reenable it; a reboot does not appear to fix it, only physically disconnecting the power from the wall for a few seconds appears to help. The Gigabit card works great, but my office is at the opposite end of my apartment.

            3. Display I’d suggest not bothering with 1080p monitors anymore and going directly to HiDPI. If you’re going to use multiple monitors, make sure they’re at the same resolution, Gnome on X11 can’t change scaling per-monitor. If Wayland is an option this isn’t as bad.

            4. BSD Don’t buy NVidia, BSD hates it. Curious about TRIM support on SSDs among the BSDs

            5. Memory Make sure you understand which RAM slots can be populated at particular clock speeds. This informed my RAM purchase because my RAM cannot be clocked to it’s maximum with all the slots populated.

            6. Storage I use one M.2 SSD as boot/root (no encryption). My HDDs are in a ZFS pool with mirror vdevs. I tried to get ZFS as root working, but it’s not there yet and the instructions took me hours to attempt migrate the install from EXT4 and ended up not working. I’d suggest not bothering unless you’re going to run a Solaris or FreeBSD OS and can devote an entire device to it. I’m currently using the second SSD as an L2ARC, but for my mediaserver usage, it doesn’t seem to be very helpful at all, so I’m considering disabling it. Definitely look into ZFS for HDD storage. Be sure to mount stuff noatime and turn on trim support on SSDs. You can increase a lot of the ZFS worker counts as these defaults were set back in the days of slow disks 10 years ago.

            I thought that I would hate seeing the cool LED CPU cooler, and got a case without a window, but now I wish had one since my power supply has fancy blinkenlights as well.

            The machine runs Ubuntu with Gnome for general use and golang development and can pretty readily handle virtualizing MacOS inside a qemu+kvm guest.

            This OpenBSD Ryzen build is another good starting point and has a cheap, quiet, well-supported AMD graphics card to boot. This reddit wiki has good reference builds.

            1. 3

              I think I can help! I believe I had the same, or very similar issue to your #1. Almost every time it went to sleep, I would have a complete system freeze during wake-up, or within a few seconds afterwards. I have two different things you can try to solve this.

              1. Disable DisplayPort 1.2 on your monitor using your monitor’s on-screen display.

              (or)

              1. Disable AMD GPU “Direct Code” by adding amdgpu.dc=0 to your kernel cmdline. This was optional up until kernel 4.17 when it was set as the default.
              1. 3

                BSD Don’t buy NVidia, BSD hates it

                Huh? Afaik, Nvidia was the best option on freebsd, with nvidia releasing drivers specifically for it, so they didn’t have to be ported from the linux versions of amd and intel drivers. (Still would recommend amd as the best option on linux and quite serviceable on freebsd, but.)

                1. 1

                  Interesting. You could use the 2nd SSD as backup for boot/root. You know, since you already bought it. Alternatively, disable it for now to use for replacing the first when it fails.

                2. 3

                  I ordered from a linux/bsd shop, they do exist, told them I wanted silence and lots of screens, and got a tiny Shuttle thing that Just Worked. I have three screens connected and the PC itself sits on a shelf, quite far from my ears.

                  The combination “linux/bsd shop” and “shuttle” has been great.

                  1. 2

                    Your link is broken btw

                    1. 2

                      I guessed a single, letter typo. Probably meant ixsoft.

                      1. 1

                        Right. Sorry.

                  2. 2
                    • GPU: Radeon RX 480/580. Even if it’s overkill (re: no heavy games), because these days they’re often as cheap as the lower tier cards :D
                    • Bluetooth: random usb dongle with “CSR V4.0” written on it here, works fine. (these dongles all use a standard protocol)
                    • Wi-Fi: I honestly haven’t used Wi-Fi in a desktop box… ever, so I have no idea about full PCIe cards. Realtek USB dongles are a (slow) thing. You can get mini-PCIe to full PCIe adapters (or a mainboard with a mini-PCIe slot) and use the laptop adapters — Intel 7260/8260, various old-ish Atheros ones, etc.
                    • Ethernet: I’m not sure what you mean by high speed — if you do want 10GbE, Mellanox ConnectX-2 or 3 is excellent, you can get bundles of two cards + DAC cables on eBay for like 50 bucks. Support is excellent, I run these between two FreeBSD boxes, easy to achieve line rate with jumbo frames.
                    • Storage: Kingston makes budget NVMe drives now, check them out. (I bought an expensive/fast WD Black one anyway :D)
                    • Sound card: lol nope, onboard Realtek whatever works fine. Modern not-dirt-cheap mainboards even have, like, high grade Japanese capacitors in an electrically isolated audio section of the board. Or whatever audiophile bullshit they claim.
                    • RAM: make sure to populate all channels (don’t buy one 16gb stick!), don’t forget to overclock it a bit. If you want to waste time and money for a little more performance, start here :)
                    1. 1

                      I recently built this Linux workstation I’m pretty happy with. It checks all of your boxes (edit: not sure about the open source network drivers, sorry), but you could scale down some things (e.g. RAM and SSD). I’m a Rails developer so I was looking for single-threaded performance and disk IO. The video card was just the cheapest thing I could find to drive 2x4k displays. https://pcpartpicker.com/list/xFm8sZ