SegFault

Supermicro X10DRi-T NVMe Boot and Resizable Bar support

Jan 8 2024

The Supermicro X10DRi-T server mainboard is a dual-socket LGA 2011 board that supports Intel Xeon E5-2600 v3/v4. In 2016, when I built my home server, it supported all the bells and whistles I could need with a relatively affordable price tag. Therefore, it became my mainboard of choice and has since reliably powered my home network. As an enterprise-oriented product, it supports various features, like PCIe bifurcation, that only recently became standard on consumer products.

Despite getting regular BIOS upgrades until 2021, which included several bug fixes and new CPU microcodes, it never became support for booting NVMe disks or resizeable BAR. You can work around the first issue by providing a USB stick that chain loads to the NVMe drive, however, that's not a clean solution. The second issue can not be worked around but most devices don't require support for resizeable BAR.

This is where the modern UEFI standard comes into play, which in addition to specifying a new BIOS interface for the operating system, also defines APIs and an environment for modular BIOS environments. We can use this facility to manually add support for arbitrary new features to an existing firmware as long as there is space in the onboard flash chip and we have a UEFI module that is compatible with the hardware.

Reporting correct space usage for TrueNAS samba shares

Nov 19 2022

TrueNAS is a great and mature piece of software. By leveraging the ZFS filesystem and providing access to the data using various protocols along with a simple, easy to use webinterface, it has become the defacto standard for SOHO self built NAS systems. By default the windows shares exposed by samba on TrueNAS will show a correct, but unintuitive space estimate. The issue is that shares, even if they belong to the same pool, will report different volume sizes when mounted on a client.

SIM7000E | Converting Libraries

Dec 5 2021

As I already mentioned in a previous post, the simcom module allows you run your own code right inside the chip. This allows for some pretty interesting applications and reduces external components to a minimum. However the libraries which are used to interface to the kernel running inside the module are only provided as a ARMCC version which makes them quite hard to use with a more standard compiler like GCC. Because of this I developed an open source variant which allows compilation with gcc and can be modified as needed to add more features.

SIM7000E

An IoT module with potential

Oct 30 2021

SIM7000E is a Cellular module which supports 2G as well as LTE CAT-M1 and LTE NB-IoT produced by Simcom. In addition to a modem, the module integrates a GNSS receiver which allows it to find its position using GPS, Galileo, Beidou and Glonass. Unlike most other modules with similar features, however, it does not require a separate processor which allows smaller and cheaper devices.