I like my desktop but some things really drive me mad. I recently switched to an AM5 board (yeah yeah first world problems) which came with an integrated adapter. Which sucks. Badly. Dunno if it’s the driver or interference from the board itself or due to the case shielding the signal. I don’t really care as well. It can however not be deactivated in the UEFI settings.

I’m using a BT adapter plugged in via USB for years now and moved this over to my new system. It works _excellent_ even with multiple devices. I get clear sound without crackling on my headphones, which is what I really care for to stay “in the zone” for work.

Alas Gnome does not let you choose which BT adapter is used – unlike we know this e.g. from the NetworkManager. Apparently it even defaults to the _first_ adapter it finds, which is by design the integrated one – that I do not want in my case. I can basically only tell them apart by their addresses that I can obtain via the hcitool command:

$ hcitool dev
Devices:
	hci1	10:B1:DF:AA:63:50
	hci0	00:1A:7D:DA:71:06

The full details on this can be extracted from this [closed] 5 years old feature request: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/263 (let user choose one bluetooth device from several in gnome control center)

And everything mentioned there is still true and while I usually can understand Bastien’s reasoning in this case I can’t. Alas not all is lost. It’s a little tedious but the following example script was added to unbind an adapter:

#!/bin/sh

ADAPTER_TO_DISABLE=${1:-hci0}
SYSFS_PATH=/sys/class/bluetooth/$ADAPTER_TO_DISABLE

if [ ! -h $SYSFS_PATH ] ; then
	echo "Could not find adapter $ADAPTER_TO_DISABLE"
	echo "Usage: $0 [hciX]"
	exit 1
fi

USB_DEVICE_PATH=`realpath $SYSFS_PATH/device`
USB_DEVICE=`basename $USB_DEVICE_PATH`
echo $USB_DEVICE > $SYSFS_PATH/device/driver/unbind

The adapter will be back on the next reboot so it’s a little tedious but at least I can now kill the malfunctioning one. It’s a hammer to a nail but it works. Put in a script it may be called like this:

sudo unbind-bluetooth-driver.sh hci1

Oddly enough something in the gnome-shell extension acts up now and duplicates the device list.

BT quick selection modal of Gnome duplicating the list of known devices

I can live with that though and it may even be fixed with a more recent version already. I’m still on 44.9 and somewhat behind on this currently.

Visited the abandoned silver/copper/barite mine in Hallwangen, 72280 Germany. It’s a rather interesting one as it dates back to times and is still excavated by voluntary workers. The earliest record found dates back to 12C and the upper mining gallery “Himmlisch Heer” shows markings that are the result of hand tools while the second gallery “Irmgardsglück” has holes for explosives drilled with machines powered by compressed air. That part also has wider tunnels while the upper part is mostly crawl spaces.

The mine was abandoned and reopened several times for different reasons. The last activity was in 1912 and some stuff like an old rail for push carts and parts of electric installations can still be seen to this day.

I liked especially that we were allowed to walk through the mine at our own pace. I remember a visit to another mine where we were ushered along so fast that the children had trouble keeping up. Not so in this case. Our guide was very friendly and described everything in an exciting way so the children would even pay attention 😀

Speaking of, the guide noticed my interest in the medieval part of the mine and recommended me the De Re Metallica (yes, like the band 🤘) by Georg Agricola, which is apparently a treasure drove on historic mining operations (and myths) and lucky me: A translation in English is available on Project Gutenberg (as well as the original Latin text) – figures included.

I can totally recommend a tour. We got to see a lot of interesting stuff packaged with fascinating stories and explanations. Been to some mines in my life already but seldom did I get to see so many details in such tiny tunnels. Granted, most mines were rather modern and huge drilled exclusively with modern machines.

If you visit don’t forget to greet the tunnel at the entrance with the classic “Glück auf!” shout of the local miners for safe passage and fortune.

Links:

https://www.bergwerk-hallwangen.de/

https://en.wikipedia.org/wiki/De_re_metallica

https://gutenberg.org/ebooks/38015

https://echo.mpiwg-berlin.mpg.de/ECHOdocuView?url=/permanent/library/5CTEBAHQ/index.meta&tocMode=figures&viewMode=text&pn=308&viewLayer=dict

Yes, does only support one gamepad. Single digit. This gamer doesn’t care. Here have and in . Vanilla. No mods. Thanks , and ❤️

Mebbe I’ll do a proper recording someday:

No Man’s Sky with headtracking and HOTAS (on Linux PC)

Wondering about that button box? Didn’t use it in this demo but you can find plenty more examples on the channel and more details on my blog: https://beko.famkos.net/category/simpit/

How it’s done? NMS does support a gamepad but it also reads/maps all gamepads to a single device. It makes no difference between multiple gamepads!

This leaves me with a very limited amount of possible buttons on the HOTAS after mapping that to one virtual gamepad using MoltenGamepad (I usually split that one up into multiple gamepads for braindead games).

So for additional buttons I used AntiMicroX to map the rest as keyboard presses.

Doing so I noticed that NMS does “look-around” on the right stick and this is where OpenTrack comes into the play. It offers a joystick output (using evdev) and that is also just… a gamepad! Needs some remapping though to get pitch and jaw to the proper axis for NMS. This is done via SDL env (basically what Steam does under the hood but boy their GUI for that sucks): SDL_GAMECONTROLLERCONFIG="000022e86f70656e747261636b206800,opentrack-to-nms,rightx:a3,righty:a4,platform:Linux,crc:e822,"

And there you have it. NMS with my trusty old X52 Pro and a DIY headtracker for 5 bucks 🤓

PS: I’m aware that the recording quality sucks. This was very spontaneous with a webcam sitting on my chair. I basically just finished my happy dance that this started working properly and decided to smash that recording button. PC was not even in “gamemode”.

Originally I was going to replace a disk on my hardware controlled RAID 5. That didn’t work out well. The controller supports hot-plugging but the LED indicator stayed on faulty. To debug this I had to boot into the controller to check for the error message and lo and behold it appears my spare has an invalid block size and the controller is too dumb to format it with another, unlike e.g. sg_format.

And this should have been the end of the story until I can reformat this on another SAS capable PC. Alas grub rescue greeted me on reboot with “error: disk `lvmid/foo/bar` not found.

and I could not persuade it to boot the LVM member. The thing is that this disk is NOT under control of the hardware RAID controller. It’s plain SATA and it’s boot order is before the RAID controller so I really did not expect any trouble here.

Turns out I was running into this rare bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=987008 where the words “time-bomb” and “critical” are dropped. The gist is that grub has a bug that prevents it from reading LVM meta data sometimes and this results in a broken bootloader.

This is not fixed with the usual reinstall dance from another boot-able medium. The trick is to manipulate the LVM meta data in some way, e.g. by adding another volume temporary.

This means running a vgscan after booting from another medium and *in my case executing* e.g. lvcreate -L 4M pve -n foo

The name doesn’t matter as it can be removed afterwards. Updating the initramfs should run without errors now and is a good indicator if this worked. Now it’s possible to reboot again.

The two problems have basically nothing to do with each other. It was just my lucky day to run into this sequence of chained issues during my free Saturday night 😩

Oh yeah, meanwhile the RAID recovered also. Another spare was added until I have time to take a closer look at the block size issue.

Wir landen immer mal wieder mit unserem Mailserver bei der im Filter:

> refused to talk to me: 554 IP=$mailserverIP - None/bad reputation. Ask your postmaster for help or to contact tobr (at) rx.t-online.de for reset. (NOWL)

Darunter leidet vor allem mein Vater, der sich regelmäßig per Mail mit seiner Peer Group austauscht.

Beim letzten mal haben die ein Impressum gefordert, was ich lapidar mit WHOIS und der Rückfrage nach welcher RFC das bitte sein soll gekontert habe. “Ja, da kann ja jeder kommen”. Newsflash: Das ist der ganze Witz bei Mail. SPF, DKIM, rDNS… ist denen alles egal.

Jedenfalls ist hier der “Musterbrief”, mit dem er uns diesmal “freigekauft” hat, nachdem ich selbst einfach keinen Nerv hatte mich damit auseinander zu setzen und nur auf frühere Rants verwiesen habe:

Guten Tag.
Meine Mails werden nicht weiter geleitet an den Empfänger.
Dazu gibt es keinen Grund.

Dieses Problem hatten wir hier schon öfter und es sollte eigentlich
nicht vor kommen.

Beim letzten mal haben Sie uns glaub auf ne Whitelist gesetzt.

Wir sind nur auf eine andere IP umgezogen. Der Mailserver ist der
gleiche und früher ging das auch.

Das ist ein privater Server.

Wenn der Server wirklich Müll macht, und z.b. Spam verschickt,
sollen die bitte entsprechende Beweise beilegen.

Mail _ist_ dezentral, wir erfüllen alle technischen Anforderungen die
State Of The Art sind.

Einfach Blocken weil man die IP nicht kennt und den Anrufer
abweisen weil er nicht im eigenen Telefonbuch steht.
So funktioniert das Prinzip Mail nicht!

Als Beispiel hier eine abgewiesene Sendung, daraus ist ja für Sie alles
ersichtlich: […]

Gleiche Mails über z.B. GMX laufen ohne Beanstandung.

Warum sich die Telekom hier immer so anstellt kann man nur raten. Offenbar hat man es sich auf die Fahne geschrieben jeden einzelnen Mailserver da draußen persönlich zu überprüfen. Sind ja auch nicht mehr so viele übrig, die nicht zur gehören. Warum das ein echtes Problem ist kann man schön unter https://poolp.org/posts/2019-12-15/decentralised-smtp-is-for-the-greater-good/ nachlesen.

Es wäre besser wenn wieder mehr Menschen ihre eigenen Mailserver betreiben würden und diese Kommunikationsmöglichkeit nicht in dritte Hände geben würden. Das ist auch wirklich nicht mehr so schwer wie vor 20 Jahren, als so was noch als Königsdisziplin galt. Das kann heute jede NAS nebenher erledigen.

Did some space pew pew like it’s 1999. This is X: Beyond The Frontier. One of the very first space games using a “so called” 3D card. Haha, those crazy peeps at Egosoft updated it in 2021 to make it compatible with Win11 which means it’s basically running on Linux PC out of the box as well. Mapped my joystick and dived into it once more. Doubt I’ll play it much but that was a nice excursion down memory lane

I still have the original CD-Rom but when I noticed that it’s on a Steam sale for -,99ct I didn’t even bother to look for a CD reader. What a surprise that this runs at all.

I also have some short video footage. I’ll never forget that glorious intro. “Here is how the ship navigates… and action. Bam. Here are 1000Cr, the most basic shield and no weapons. Go! Trade! ‘Maps’? ‘Earth’? What’s that? Oh and you have to pay those Cr back. With interest.”

X: Beyond The Frontier (on Linux PC)

I hacked a mod for X4: Foundations to get ship telemetry and targeting data to my “Primary Buffer Panel” via a socket. This is a demonstration of my simulated cockpit made from cardboard on a budget usually used to play Elite Dangerous now also used for X4: Foundations. This is work in progress.

My DIY cockpit for X4: Foundations (on Linux PC)

In use:

  • A Linux PC
  • A DIY Headtracker
  • A DIY Joystick (My Primary Buffer Panel)
  • A X52 Pro HOTAS
  • An AMD RX6700XT
  • …a lot of plumbing in Node-Red xD

This is loosely based on the Python Pipe Server mod for X4 that is sadly Windows only using Named Pipes. I fixed that for Linux PC by side-loading the library LuaSocket and starting a socket server directly in X4. That’s right, the Python Server is simply not needed now and companion tools may directly connect to the socket. It’s a nice bonus that LuaSocket also allows a UDP or TCP server depending on how it is started. That was some piece of work though and I’m still wrapping things up to publish my code changes. I’m also still looking for testers so if you’re interested get in touch!

So you _still_ think you can’t space pew pew on Linux PC? Think again. I do it all the time: https://beko.famkos.net/2021/10/16/space-pew-pew-on-linux-pc/

Here are the humble beginnings[1] of a working example to read the ship status of in a format very similar to the Status File of

Both games are quite similar and by using a “well established” format it should be possible to use this with existing companion apps – like my own

It uses the “Named Pipe API” of “sn_mod_support_apis” – on PC 😁 This was not supported by this MOD so far but I made it work.

Well, at least on my machine 🤓

And yes, the pipe server works with some minor adjustments for other _existing_ apps as well. Here is a demo of with a data feed directly from X4: Foundations – it does not use the though, since that is not really needed, so I had to make some small adjustments in it’s connection routine but that was like 2 lines of code 🤷

[1] TBF the humble beginnings were back in 2021 (https://beko.famkos.net/2021/05/01/getting-into-x4-foundations-modding-on-linux/) but I kinda let it slide to tinker and build my Primary Buffer Panel (https://beko.famkos.net/category/simpit/) first. Other games made it easier to retrieve game data and I did learn a lot during that time but it was X4 that started it all.

Another night in the X4 sandbox: https://www.youtube.com/watch?v=665hXLKSfek / https://tube.tchncs.de/w/pHFP8jZf7PYLyLZSARZQ4T

This is heavily distilled early gameplay of X4: Foundations, where I started another play-through slowly expanding my little empire with trade, side missions, station building, border patrol (loosing the the “Misfit”, my good old starter-ship), a surprise Xenon attack on a station where I was just for shopping and eventually good old fashioned piracy with unexpected guest appearance of some Kha’ak trying to crash the party.

01:11 Setting up trade routes aboard The Law Abiding Windrunner
02:20 Switching over to the Misfit
03:05 Witnessing the death of a trading station (while escorting my own ships to safety)
03:50 Patrolling for money (and looting stuff)
05:48 Repairing satellites (in EVA suit)
07:32 Docking at the impressive Teladi ring station for shopping
08:45 Surprise attack on the ring station by a Xenon K (and it’s demise)
14:32 Extending my own station and buying more mining ships
11:26 Switching over to my frigate for border patrol (lots of pew pew)
14:30 Loosing the Misfit to Kha’ak (and avenging it)
16:07 Going for resupplies and preparing for piracy
16:39 Ambushing the prey, a fat water freighter looking for a new owner
17:59 Starting the boarding operation
18:40 Realizing I need more support to deal with surprises
18:58 Stumbling over mentioned surprises, Kha’ak trying to crash the party
19:51 Sending more boarders as the first group fails
20:22 Finally going home with the price, a “slightly banged up” L water freighter

I’m wondering how to present ultra wide screenshots for a while now, because most people will not have an ultra wide display at hand or not run their browser in fullscreen on such a device. A scaled down version with retained ratio also just don’t really cut it:

Now what if we could wrap this in some sort of 360° image? This isn’t really 360°, of course but you get the idea. A quick search usually yields JS libs like Pannellum (https://pannellum.org/), which look great for this use-case as well and yes we could also solve this in CSS by using an animation and go for a little camera ride.

What if we could optionally also make use of a gyroscope though? You know, that sensor every mobile phone, tablet and VR device comes along with. So the user could device where to look just by moving the device around?

This was when I stumbled over A-Frame (https://aframe.io), which is basically a library for building 3D AR or VR experiences and while I may only scratching it’s surface with my quick tests here it does deliver exactly what I was looking for.

I built demos for various games today and I don’t know how long I’ll host the files here but they all follow the very same code pattern that I’ll add in the end:

https://beko.famkos.net/aframe-elite-dangerous.html

https://beko.famkos.net/aframe-fly-dangerous.html

https://beko.famkos.net/aframe-nms.html

https://beko.famkos.net/aframe-rebel-galaxy-outlaw.html

https://beko.famkos.net/aframe-spacebourne2.html

https://beko.famkos.net/aframe-starcitizen.html

https://beko.famkos.net/aframe-x4-foundations.html

Please be aware that I’m loading a ~5mb blob of JS code directly from A-Frame in the demos so don’t check them out if that is a problem for you. The image asset adds another whopping MB so please be patient. The best experience is on a mobile phone where you should be able to look around by moving the phone left and right. It works on a desktop browser too where the mouse can be used to look around.

Here is a code snippet that shows hows it’s done:

<!DOCTYPE html>
<html>
<head>
  <script src="https://aframe.io/releases/1.4.1/aframe.min.js"></script>
</head>
<body>
  <a-scene loading-screen="dotsColor: #ff6a00; backgroundColor: black">
    <a-assets>
      <img id="sky" src="./wp-content/uploads/2023/03/elite_dangerous_odyssey_for_my_valentine.jpg">
    </a-assets>
    <a-entity id="rig" position="-8 0 0" rotation="0 90 0">
      <a-entity id="camera" camera="fov:45; zoom: 1" far=90 look-controls></a-entity>
    </a-entity>
    <a-text color="#fff" value="Elite Dangerous ...on a canvas" width="3" position="-10.5 -0.5 1.5"
      rotation="0 135 9"></a-text>
    <a-curvedimage src="#sky" height="20.0" radius="10" theta-length="180" rotation="0 180 0"
      scale="2.5 1 2.5"></a-curvedimage>
    <a-sky rotation="0 0 0" position="0 0 0" color="#000"></a-sky>
  </a-scene>
</body>
</html>

Feel free to copy this snippet and play around with it. Just keep in mind that you have to use _local_ assets too or they won’t show up. Make sure to read the documentation too and play with the built in inspector opened with the key combination ctrl + alt + i.

And yes I’ll happily take a CSS only variant too but I really doubt that’s possible without loosing features like gyroscope data usage.