lnxsense, a system monitoring tool for Linux

Ever since I got my AMD Athlon XP 2500+, I’ve been into overclocking. While my overclocking activities were limited at the time (as a student I couldn’t risk burning up my CPU or motherboard), I made sure that ever since, none of my desktops ran at stock speeds. Even my trusty Intel 2500K that I’m writing this blog on still hums along at 4,4Ghz all core.

Overclocking has always been a Windows thing though, and for good reason; in 2009 the Linux market share was only 0,6%, while Windows dominated the market with a 95% market share. With such a dominating OS, motherboards manufacturers focused fully on (usually terrible) software which allowed you to overclock and monitor your system without leaving Windows. The overclocking community didn’t stop there either, tools like 8rdavcore (apparently ported from Linux), setfsb, MemSet, CPU-Tweaker and many more made it possible to overclock and tweak your system to the max. Combined with a lot of monitoring software like HWInfo, Aida64, SpeedFan, CPU-z and benchmarks like 3Dmark, Sisoft Sandra, Cinebench, and it was clear: overclocking belonged to Windows.

Fast forward to 2025, and things have changed; Linux has a market share of 3% while Windows has dropped to 66%. OCCT is now also available on Linux, GreenWithEnvy makes it easier to overclock NVIDIA gpu’s and benchmarks like y-cruncher, 7-zip and Geekbench run fine on Linux. But when it comes to graphical monitoring applications, we only have Psensor or xsensors. Both work fine but it can still be better.

A screenshot showing xsensors and psensor side by side
Xsensors and PSensor side by side

This is where I want to change a couple of things and after this years release of Java 25 and its Foreign Function and Memory API, I can finally work in a language I love while using C libraries like libsensors, libcpuid, the NVIDIA management API and many more.

After returning from Devoxx I decided to create a Linux alternative to Open Hardware Monitor, HWMonitor and HWInfo and that’s how lnxsense was born. It’s a still in early alpha stages and what it can show depends heavily on what the underlying libraries can return (e.g. NVIDIA’s nvml doesn’t even have an option to get the hotspot temperature or actual fan RPM). Even so, I’m already really happy with what it can do.

lnxsense showing different metrics like cpu usage, power draw, GPU frequency.

In it’s very early stage it supports (when running the back-end server as root)

  • CPU Frequencies (as reported by the Linux kernel)
  • CPU Utilization
  • Memory Utilization
  • Core temperatures
  • Intel requested VCore (the VID)
  • Intel Core multipliers
  • Intel Throttling reasons
  • Intel RAPL Power Management information like PP0, PP1 and Platform power limits and usage
  • NVIDIA Clocks, Utilization, Temperature and Fan speed (in % because why would nvml expose the actual fan speed), P-state and current PCIe speed
  • SMART and NVMe log
  • Blockdevice IOPS and read/write speed
  • Remote monitoring using sockets

If you want to try it out, you can download a release version from Codeberg. Just be sure to read the INSTALL.md, it’s still in early development, so it’s not a one-click experience and definitely not production-ready.

// 2025/12/15: I decided to rename the project from HWJinfo to lnxsense, it just makes more sense, doesn’t it ?

J-ExifTool v0.0.11

Today I’ve released version 0.0.11 of J-ExifTool. After more than 10 years this release does not add any new functionality but is mainly a long overdue maintenance release:

  • Java 17: this version is built with and for Java 17 [BREAKING CHANGE]
  • A lot of boilerplate code was replaced with Lombok
  • General code cleanup
  • Eclipse configuration removed from git

The jar is not yet on the maven repo due to it not supporting my Bitbucket username.

The new jar (+ sources) can be downloaded from BitBucket.

For the record only: v0.0.11 is commit c6d76be.

J-ExifTool v0.0.9

Today I’ve released version 0.0.9 of J-ExifTool. This release doesn’t add new features, but it’s more reliable so I highly suggest the upgrade:

  • Maven support ! It’s not in a public repository (yet), but it’s one step closer to using J-ExifTool in a maven project ;)
  • Buffers are more reliable
  • Some tests are re-written

The new jar can be downloaded from BitBucket.

For the record only: v0.0.9 is commit a780161.

J-ExifTool v0.0.8

Today I’ve released version 0.0.8 of J-ExifTool. This release adds new functionalities and provides some bug fixes:

  • #8: Delete all exif tags
  • #12: extract thumnail image
  • #15: it’s now possible to read exiftool path from environment variable
  • Improved reading out the command line buffer (no more lost/split/incorrect values, tests are more stable now)

Since release v0.0.5 you’ll need the Apache Commons Exec library in your classpath. I’ve added a new lib folder on BitBucket which includes this new library or you can download the new library from Apache.

The new jar can be downloaded from BitBucket.

For the record only: v0.0.8 is commit 2f4414f.

J-ExifTool v0.0.7

Today I’ve released version 0.0.7 of J-ExifTool. This only provides some bug fixes:

 

If you have encoding issues then try changing the System Property be.pw.jexif.internal.constants.ExecutionConstant.EXIFTOOLCLIENCODING

By default, UTF-8 will be used on Linux/Mac and Cp850 on Windows.

Since release v0.0.5 you’ll need the Apache Commons Exec library in your classpath. I’ve added a new lib folder on BitBucket which includes this new library or you can download the new library from Apache.

The new jar can be downloaded from BitBucket.

For the record only: v0.0.7 is commit af87078.